diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 096af38dd..c7e935435 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,7 +9,7 @@ ] }, "csharpier": { - "version": "0.28.0", + "version": "0.28.2", "commands": [ "dotnet-csharpier" ] diff --git a/.csharpierignore b/.csharpierignore index c872553bb..ac7711a65 100644 --- a/.csharpierignore +++ b/.csharpierignore @@ -1 +1 @@ -DragaliaAPI/DragaliaAPI.Database/Migrations/* +DragaliaAPI/DragaliaAPI.Database/Migrations/* \ No newline at end of file diff --git a/.csharpierrc b/.csharpierrc deleted file mode 100644 index e4cb4480e..000000000 --- a/.csharpierrc +++ /dev/null @@ -1,3 +0,0 @@ -printWidth: 100 -useTabs: false -tabWidth: 4 \ No newline at end of file diff --git a/.editorconfig b/.editorconfig index cb1c9326b..adece24aa 100644 --- a/.editorconfig +++ b/.editorconfig @@ -107,7 +107,7 @@ csharp_preferred_modifier_order = public,private,protected,internal,static,exter csharp_style_prefer_readonly_struct = true # Code-block preferences -csharp_prefer_braces = when_multiline:warning +csharp_prefer_braces = true:warning csharp_prefer_simple_using_statement = true:warning csharp_style_namespace_declarations = file_scoped:warning csharp_style_prefer_method_group_conversion = true:warning diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 03155da42..95bc7c075 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,3 +13,18 @@ updates: directory: "/" schedule: interval: "weekly" + groups: + microsoft-extensions: + patterns: + - "Microsoft.Extensions*" + microsoft-entityframeworkcore: + patterns: + - "Microsoft.EntityFrameworkCore*" + - package-ecosystem: "docker" + directory: "/DragaliaAPI" + schedule: + interval: "weekly" + - package-ecosystem: "docker" + directory: "/PhotonStateManager" + schedule: + interval: "weekly" diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 332608112..c6f33fc51 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -78,9 +78,6 @@ jobs: context: . push: true file: ${{ inputs.dockerfile }} - build-args: | - CI=true - BASE_DOTNET_IMAGE=mcr.microsoft.com/dotnet/aspnet:8.0-jammy-chiseled tags: ghcr.io/sapiensanatis/${{ inputs.image-name }}:${{ steps.derive-tag.outputs.tag }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 04c96c4d6..184588ece 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -12,6 +12,9 @@ jobs: deploy: name: Deploy runs-on: ubuntu-latest + concurrency: + group: deploy + cancel-in-progress: false environment: name: ${{ inputs.github-environment }} url: https://dawnshard.co.uk diff --git a/.github/workflows/missiondesigner.yaml b/.github/workflows/missiondesigner.yaml deleted file mode 100644 index b65cdd611..000000000 --- a/.github/workflows/missiondesigner.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: MissionDesigner - -on: - pull_request: - paths: - - DragaliaAPI.MissionDesigner/**/* - -env: - HUSKY: 0 - CI_BUILD: true - -jobs: - missiondesigner: - name: Check MissionProgressionInfo.json - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup .NET Core SDK - uses: actions/setup-dotnet@v4 - with: - dotnet-version: "8.0.x" - - name: Run MissionDesigner - run: | - dotnet run --project DragaliaAPI/DragaliaAPI.MissionDesigner -- NewProgressionInfo.json - cmp NewProgressionInfo.json DragaliaAPI/DragaliaAPI.Shared/Resources/Missions/MissionProgressionInfo.json diff --git a/.github/workflows/publish-api.yaml b/.github/workflows/publish-api.yaml index dc594e5b5..850ef3dbf 100644 --- a/.github/workflows/publish-api.yaml +++ b/.github/workflows/publish-api.yaml @@ -7,7 +7,6 @@ on: paths: - DragaliaAPI/** - Shared/** - - Directory.Build.props - Directory.Packages.props env: diff --git a/.github/workflows/publish-statemanager.yaml b/.github/workflows/publish-statemanager.yaml index a05e023b8..5f612ccf0 100644 --- a/.github/workflows/publish-statemanager.yaml +++ b/.github/workflows/publish-statemanager.yaml @@ -7,7 +7,6 @@ on: paths: - PhotonStateManager/** - Shared/** - - Directory.Build.props - Directory.Packages.props env: diff --git a/.github/workflows/test-api.yaml b/.github/workflows/test-api.yaml index 99fc915a4..9fcf25528 100644 --- a/.github/workflows/test-api.yaml +++ b/.github/workflows/test-api.yaml @@ -10,7 +10,6 @@ on: paths: - DragaliaAPI/** - Shared/** - - Directory.Build.props - Directory.Packages.props jobs: @@ -32,11 +31,11 @@ jobs: "DragaliaAPI/DragaliaAPI.Test", "DragaliaAPI/DragaliaAPI.Database.Test", "DragaliaAPI/DragaliaAPI.Shared.Test", - "DragaliaAPI/DragaliaAPI.Shared.SourceGenerator.Test" + "DragaliaAPI/DragaliaAPI.Shared.SourceGenerator.Test", ] uses: ./.github/workflows/test.yaml with: project: ${{ matrix.project }} before-test: | dotnet restore DragaliaAPI/DragaliaAPI.MissionDesigner/DragaliaAPI.MissionDesigner.csproj - dotnet restore DragaliaAPI/DragaliaAPI.MasterAssetConverter/DragaliaAPI.MasterAssetConverter.csproj \ No newline at end of file + dotnet restore DragaliaAPI/DragaliaAPI.MasterAssetConverter/DragaliaAPI.MasterAssetConverter.csproj diff --git a/.gitignore b/.gitignore index 20b142bcd..eb3784921 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ PhotonRealtimeDotnetSdk/**/* .run .env test_coverage.json -launchSettings.json appsettings.Development.json test_coverage.json .run diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..5082cf607 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,17 @@ +# Contributing + +Dawnshard welcomes contributions from everyone! + +## Filing issues + +If you notice a bug with the server, or have a feature request, you can file an issue at https://github.com/SapiensAnatis/Dawnshard/issues, or make a thread in the `#dawnshard-support` channel on Discord. +Please be sure to include an appropriate amount of context and details so that your issue can be thorougly investigated. + +## Development + +Pull requests to add new features or fix issues are welcome. Check the issues page to see if the task you want to work on has been noted already - it may include some good information about how to get started. + +### Development environment + +To set up a development environment to work on DragaliaAPI, the main server component, see the guidance README file in the component folder: [README.md](./DragaliaAPI/README.md) + diff --git a/Directory.Build.props b/Directory.Build.props deleted file mode 100644 index ce7267d81..000000000 --- a/Directory.Build.props +++ /dev/null @@ -1,14 +0,0 @@ - - - net8.0 - latest - enable - enable - latest-minimum - - - - - TEST;$(DefineConstants) - - diff --git a/Directory.Build.targets b/Directory.Build.targets deleted file mode 100644 index c1df2220d..000000000 --- a/Directory.Build.targets +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 0e8dba8a0..24d082d9d 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,78 +3,80 @@ true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DragaliaAPI.sln b/DragaliaAPI.sln index 44ba5e2f2..73f951223 100644 --- a/DragaliaAPI.sln +++ b/DragaliaAPI.sln @@ -7,15 +7,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI", "DragaliaAPI\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Test", "DragaliaAPI\DragaliaAPI.Test\DragaliaAPI.Test.csproj", "{A1E6C76A-4D4F-427D-80AF-CF289CBBAF00}" EndProject -Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{6E4BCC4D-1998-4135-A474-681EC6E6AF57}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BC72B633-A158-4169-9B47-3CB9C689A57E}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig - .env = .env - .env.default = .env.default .gitignore = .gitignore - Directory.Build.props = Directory.Build.props Directory.Packages.props = Directory.Packages.props .config\dotnet-tools.json = .config\dotnet-tools.json global.json = global.json @@ -33,18 +28,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Database.Test", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{1A23D473-87C4-40FB-8DF0-43F4B0FE7414}" ProjectSection(SolutionItems) = preProject + .github\workflows\build-manual.yaml = .github\workflows\build-manual.yaml .github\workflows\build.yaml = .github\workflows\build.yaml .github\workflows\deploy.yaml = .github\workflows\deploy.yaml .github\workflows\integration-test.yaml = .github\workflows\integration-test.yaml .github\workflows\lint.yaml = .github\workflows\lint.yaml - .github\workflows\missiondesigner.yaml = .github\workflows\missiondesigner.yaml .github\workflows\publish-api.yaml = .github\workflows\publish-api.yaml .github\workflows\publish-statemanager.yaml = .github\workflows\publish-statemanager.yaml .github\workflows\test-api.yaml = .github\workflows\test-api.yaml .github\workflows\test-report.yaml = .github\workflows\test-report.yaml .github\workflows\test-statemanager.yaml = .github\workflows\test-statemanager.yaml .github\workflows\test.yaml = .github\workflows\test.yaml - .github\workflows\build-manual.yaml = .github\workflows\build-manual.yaml EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Test.Utils", "DragaliaAPI\DragaliaAPI.Test.Utils\DragaliaAPI.Test.Utils.csproj", "{41916B7C-6304-4504-99C0-B24D23982F7E}" @@ -54,6 +48,10 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Photon.Plugin", "PhotonPlugin\DragaliaAPI.Photon.Plugin\DragaliaAPI.Photon.Plugin.csproj", "{D9AC51A5-38F6-4DD1-8839-9FE881396A6B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PhotonStateManager", "PhotonStateManager", "{8B4B2FE9-B1FC-44FC-BC49-0E277731A68A}" + ProjectSection(SolutionItems) = preProject + PhotonStateManager\Directory.Build.props = PhotonStateManager\Directory.Build.props + PhotonStateManager\README.md = PhotonStateManager\README.md + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Integration.Test", "DragaliaAPI\DragaliaAPI.Integration.Test\DragaliaAPI.Integration.Test.csproj", "{CA0AE7C5-2742-4FC9-B668-BC7459E4BCE5}" EndProject @@ -63,7 +61,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Photon.StateMan EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".husky", ".husky", "{7D333F35-F74C-4A63-AB6E-5F0EE4590ADB}" ProjectSection(SolutionItems) = preProject - .husky\pre-commit = .husky\pre-commit .husky\task-runner.json = .husky\task-runner.json EndProjectSection EndProject @@ -74,10 +71,15 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{F6545B66-0303-4E4C-B872-7E89091885A8}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PhotonPlugin", "PhotonPlugin", "{5A97773C-C23E-4CFE-8B1F-15D8244D2134}" + ProjectSection(SolutionItems) = preProject + PhotonPlugin\Directory.Build.props = PhotonPlugin\Directory.Build.props + PhotonPlugin\README.md = PhotonPlugin\README.md + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DragaliaAPI", "DragaliaAPI", "{F0C76530-C14A-4601-829B-EE0F4C7E24E6}" ProjectSection(SolutionItems) = preProject DragaliaAPI\Directory.Build.props = DragaliaAPI\Directory.Build.props + DragaliaAPI\README.md = DragaliaAPI\README.md EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.MasterAssetConverter", "DragaliaAPI\DragaliaAPI.MasterAssetConverter\DragaliaAPI.MasterAssetConverter.csproj", "{F0DFB899-ADC2-407E-AB32-647BA1C4122C}" @@ -86,7 +88,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{18AB580B EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Shared.SourceGenerator", "DragaliaAPI\DragaliaAPI.Shared.SourceGenerator\DragaliaAPI.Shared.SourceGenerator.csproj", "{FD0F2BDF-715C-417D-9059-1F2EF8FA8901}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragaliaAPI.Shared.SourceGenerator.Test", "DragaliaAPI\DragaliaAPI.Shared.SourceGenerator.Test\DragaliaAPI.Shared.SourceGenerator.Test.csproj", "{517FBE68-58A1-48DB-A798-13D6BDECF623}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DragaliaAPI.Shared.SourceGenerator.Test", "DragaliaAPI\DragaliaAPI.Shared.SourceGenerator.Test\DragaliaAPI.Shared.SourceGenerator.Test.csproj", "{517FBE68-58A1-48DB-A798-13D6BDECF623}" +EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{AB163A1E-1339-4CFC-82AD-E59ECFADA3C2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -102,10 +106,6 @@ Global {A1E6C76A-4D4F-427D-80AF-CF289CBBAF00}.Debug|Any CPU.Build.0 = Debug|Any CPU {A1E6C76A-4D4F-427D-80AF-CF289CBBAF00}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1E6C76A-4D4F-427D-80AF-CF289CBBAF00}.Release|Any CPU.Build.0 = Release|Any CPU - {6E4BCC4D-1998-4135-A474-681EC6E6AF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E4BCC4D-1998-4135-A474-681EC6E6AF57}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E4BCC4D-1998-4135-A474-681EC6E6AF57}.Release|Any CPU.ActiveCfg = Debug|Any CPU - {6E4BCC4D-1998-4135-A474-681EC6E6AF57}.Release|Any CPU.Build.0 = Debug|Any CPU {3B1A86CE-A656-453B-BC3F-EA42DF9E3FC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3B1A86CE-A656-453B-BC3F-EA42DF9E3FC6}.Debug|Any CPU.Build.0 = Debug|Any CPU {3B1A86CE-A656-453B-BC3F-EA42DF9E3FC6}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -166,6 +166,10 @@ Global {517FBE68-58A1-48DB-A798-13D6BDECF623}.Debug|Any CPU.Build.0 = Debug|Any CPU {517FBE68-58A1-48DB-A798-13D6BDECF623}.Release|Any CPU.ActiveCfg = Release|Any CPU {517FBE68-58A1-48DB-A798-13D6BDECF623}.Release|Any CPU.Build.0 = Release|Any CPU + {AB163A1E-1339-4CFC-82AD-E59ECFADA3C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB163A1E-1339-4CFC-82AD-E59ECFADA3C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB163A1E-1339-4CFC-82AD-E59ECFADA3C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB163A1E-1339-4CFC-82AD-E59ECFADA3C2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/DragaliaAPI/Directory.Build.props b/DragaliaAPI/Directory.Build.props index 0213cded6..3d6a902d2 100644 --- a/DragaliaAPI/Directory.Build.props +++ b/DragaliaAPI/Directory.Build.props @@ -1,5 +1,16 @@ - + + net8.0 + enable + enable + latest-minimum + + + + + TEST;$(DefineConstants) + $(MSBuildThisFileDirectory)DragaliaAPI.Shared\Resources\ @@ -8,16 +19,16 @@ - + - + - + - + - + \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI.Database.Test/DbTestFixture.cs b/DragaliaAPI/DragaliaAPI.Database.Test/DbTestFixture.cs index 5a4a36fb0..000fa39f3 100644 --- a/DragaliaAPI/DragaliaAPI.Database.Test/DbTestFixture.cs +++ b/DragaliaAPI/DragaliaAPI.Database.Test/DbTestFixture.cs @@ -1,6 +1,4 @@ using AutoMapper; -using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Features.SavefileUpdate; using DragaliaAPI.Services.Game; using DragaliaAPI.Test.Utils; using Microsoft.EntityFrameworkCore; @@ -28,8 +26,6 @@ public DbTestFixture() // Unused for creating saves Mock> mockLogger = new(MockBehavior.Loose); Mock mockCache = new(MockBehavior.Loose); - // Used but we probably don't want it to actually add characters? - Mock mockUnitRepository = new(MockBehavior.Loose); SavefileService savefileService = new( @@ -40,8 +36,7 @@ public DbTestFixture() ).CreateMapper(), mockLogger.Object, IdentityTestUtils.MockPlayerDetailsService.Object, - Enumerable.Empty(), - mockUnitRepository.Object + [] ); savefileService.Create().Wait(); } diff --git a/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UserDataRepositoryTest.cs b/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UserDataRepositoryTest.cs index d686c195b..e114586ed 100644 --- a/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UserDataRepositoryTest.cs +++ b/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UserDataRepositoryTest.cs @@ -27,19 +27,6 @@ public UserDataRepositoryTest(DbTestFixture fixture) ); } - [Fact] - public async Task GetPlayerInfo_ValidId_ReturnsInfo() - { - (await this.userDataRepository.UserData.ToListAsync()).Should().NotBeEmpty(); - } - - [Fact] - public async Task GetPlayerInfo_InvalidId_ReturnsEmptyQueryable() - { - this.mockPlayerIdentityService.SetupGet(x => x.ViewerId).Returns(400); - (await this.userDataRepository.UserData.ToListAsync()).Should().BeEmpty(); - } - [Fact] public async Task UpdateName_UpdatesName() { diff --git a/DragaliaAPI/DragaliaAPI.Database/ApiContext.cs b/DragaliaAPI/DragaliaAPI.Database/ApiContext.cs index 6889bb554..cef7aa7c4 100644 --- a/DragaliaAPI/DragaliaAPI.Database/ApiContext.cs +++ b/DragaliaAPI/DragaliaAPI.Database/ApiContext.cs @@ -133,8 +133,16 @@ IPlayerIdentityService playerIdentityService public DbSet DataProtectionKeys { get; set; } = null!; + public DbSet WallRewardDates { get; set; } = null!; + protected override void OnModelCreating(ModelBuilder modelBuilder) { + modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApiContext).Assembly); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + modelBuilder .Entity() .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); @@ -158,5 +166,33 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder .Entity() .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); + + modelBuilder + .Entity() + .HasQueryFilter(x => x.ViewerId == this.playerIdentityService.ViewerId); } } diff --git a/DragaliaAPI/DragaliaAPI.Database/DatabaseConfiguration.cs b/DragaliaAPI/DragaliaAPI.Database/DatabaseConfiguration.cs index da4256e36..548ddc63b 100644 --- a/DragaliaAPI/DragaliaAPI.Database/DatabaseConfiguration.cs +++ b/DragaliaAPI/DragaliaAPI.Database/DatabaseConfiguration.cs @@ -3,9 +3,10 @@ using DragaliaAPI.Database.Repositories; using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Npgsql; +using Microsoft.Extensions.Options; [assembly: InternalsVisibleTo("DragaliaAPI.Database.Test")] [assembly: InternalsVisibleTo("DragaliaAPI.Test")] @@ -19,14 +20,22 @@ public static class DatabaseConfiguration public static IServiceCollection ConfigureDatabaseServices( this IServiceCollection services, - PostgresOptions postgresOptions + IConfiguration config ) { - services = services - .AddDbContext(options => - options - .UseNpgsql(postgresOptions.GetConnectionString("ApiContext")) - .EnableDetailedErrors() + services.Configure(config.GetRequiredSection(nameof(PostgresOptions))); + + services + .AddDbContext( + (serviceProvider, options) => + { + PostgresOptions postgresOptions = serviceProvider + .GetRequiredService>() + .Value; + options + .UseNpgsql(postgresOptions.GetConnectionString("ApiContext")) + .EnableDetailedErrors(); + } ) #pragma warning disable CS0618 // Type or member is obsolete .AddScoped() @@ -38,7 +47,6 @@ PostgresOptions postgresOptions .AddScoped() .AddScoped() .AddScoped() - .AddScoped() .AddScoped(); return services; diff --git a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayer.cs b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayer.cs index bf9793d5c..9d0bf9cf4 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayer.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayer.cs @@ -90,4 +90,6 @@ public class DbPlayer public List SummonTickets { get; set; } = []; public List Emblems { get; set; } = []; + + public DbWallRewardDate? WallRewardDate { get; set; } } diff --git a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonData.cs b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonData.cs index 77d567b64..994a38ec1 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonData.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonData.cs @@ -9,6 +9,15 @@ namespace DragaliaAPI.Database.Entities; [Table("PlayerDragonData")] public class DbPlayerDragonData : DbPlayerData, IHasXp { + public DbPlayerDragonData() { } + + public DbPlayerDragonData(long viewerId, Dragons id) + { + this.ViewerId = viewerId; + this.DragonId = id; + this.GetTime = DateTimeOffset.UtcNow; + } + [Column("DragonKeyId")] [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] diff --git a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonReliability.cs b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonReliability.cs index cad9be823..98c646b98 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonReliability.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Entities/DbPlayerDragonReliability.cs @@ -34,24 +34,19 @@ public class DbPlayerDragonReliability : DbPlayerData, IHasXp [Required] [TypeConverter(typeof(DateTimeOffsetConverter))] public DateTimeOffset GetTime { get; set; } -} -public static class DbPlayerDragonReliabilityFactory -{ - public static DbPlayerDragonReliability Create(long viewerId, Dragons id) + public DbPlayerDragonReliability() { } + + public DbPlayerDragonReliability(long viewerId, Dragons id) { byte defaultRelLevel = (byte)MasterAsset.DragonData.Get(id).DefaultReliabilityLevel; defaultRelLevel = defaultRelLevel == default ? (byte)1 : defaultRelLevel; - DbPlayerDragonReliability newReliability = - new() - { - ViewerId = (int)viewerId, - DragonId = id, - Level = defaultRelLevel, - Exp = DragonConstants.BondXpLimits[defaultRelLevel - 1], - GetTime = DateTimeOffset.UtcNow, - LastContactTime = DateTimeOffset.UtcNow - }; - return newReliability; + + this.ViewerId = (int)viewerId; + this.DragonId = id; + this.Level = defaultRelLevel; + this.Exp = DragonConstants.BondXpLimits[defaultRelLevel - 1]; + this.GetTime = DateTimeOffset.UtcNow; + this.LastContactTime = DateTimeOffset.UtcNow; } } diff --git a/DragaliaAPI/DragaliaAPI.Database/Entities/DbSummonTicket.cs b/DragaliaAPI/DragaliaAPI.Database/Entities/DbSummonTicket.cs index 48442aff7..021f1b817 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Entities/DbSummonTicket.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Entities/DbSummonTicket.cs @@ -1,7 +1,6 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using DragaliaAPI.Database.Entities.Abstract; -using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; namespace DragaliaAPI.Database.Entities; diff --git a/DragaliaAPI/DragaliaAPI.Database/Entities/DbWallRewardDate.cs b/DragaliaAPI/DragaliaAPI.Database/Entities/DbWallRewardDate.cs new file mode 100644 index 000000000..349ce878f --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Database/Entities/DbWallRewardDate.cs @@ -0,0 +1,22 @@ +using DragaliaAPI.Database.Entities.Abstract; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + +namespace DragaliaAPI.Database.Entities; + +/// +/// Entity for tracking Mercurial Gauntlet Victor's Trove claim information. +/// +public class DbWallRewardDate : DbPlayerData +{ + /// + /// Gets or sets the last time at which a player claimed their Mercurial Gauntlet trove. + /// + public DateTimeOffset LastClaimDate { get; set; } + + public class Configuration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) => + builder.HasKey(e => e.ViewerId); + } +} diff --git a/DragaliaAPI/DragaliaAPI.Database/Factories/DbPlayerDragonDataFactory.cs b/DragaliaAPI/DragaliaAPI.Database/Factories/DbPlayerDragonDataFactory.cs deleted file mode 100644 index 3decbf564..000000000 --- a/DragaliaAPI/DragaliaAPI.Database/Factories/DbPlayerDragonDataFactory.cs +++ /dev/null @@ -1,27 +0,0 @@ -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.Definitions.Enums; - -namespace DragaliaAPI.Database.Factories; - -public static class DbPlayerDragonDataFactory -{ - public static DbPlayerDragonData Create(long viewerId, Dragons id) - { - return new() - { - ViewerId = viewerId, - DragonId = id, - Exp = 0, - Level = 1, - HpPlusCount = 0, - AttackPlusCount = 0, - LimitBreakCount = 0, - IsLock = false, - IsNew = true, - Skill1Level = 1, - Ability1Level = 1, - Ability2Level = 1, - GetTime = DateTimeOffset.UtcNow - }; - } -} diff --git a/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.Designer.cs b/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.Designer.cs new file mode 100644 index 000000000..225c5f97c --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.Designer.cs @@ -0,0 +1,2634 @@ +// +using System; +using DragaliaAPI.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace DragaliaAPI.Database.Migrations +{ + [DbContext(typeof(ApiContext))] + [Migration("20240513202914_wall_rewards")] + partial class wall_rewards + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbAbilityCrest", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("AbilityCrestId") + .HasColumnType("integer"); + + b.Property("AttackPlusCount") + .HasColumnType("integer"); + + b.Property("BuildupCount") + .HasColumnType("integer"); + + b.Property("EquipableCount") + .HasColumnType("integer"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("HpPlusCount") + .HasColumnType("integer"); + + b.Property("IsFavorite") + .HasColumnType("boolean"); + + b.Property("IsNew") + .HasColumnType("boolean"); + + b.Property("LimitBreakCount") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "AbilityCrestId"); + + b.ToTable("PlayerAbilityCrests"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbAbilityCrestSet", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("AbilityCrestSetNo") + .HasColumnType("integer"); + + b.Property("AbilityCrestSetName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("character varying(32)"); + + b.Property("CrestSlotType1CrestId1") + .HasColumnType("integer"); + + b.Property("CrestSlotType1CrestId2") + .HasColumnType("integer"); + + b.Property("CrestSlotType1CrestId3") + .HasColumnType("integer"); + + b.Property("CrestSlotType2CrestId1") + .HasColumnType("integer"); + + b.Property("CrestSlotType2CrestId2") + .HasColumnType("integer"); + + b.Property("CrestSlotType3CrestId1") + .HasColumnType("integer"); + + b.Property("CrestSlotType3CrestId2") + .HasColumnType("integer"); + + b.Property("TalismanKeyId") + .HasColumnType("numeric(20,0)"); + + b.HasKey("ViewerId", "AbilityCrestSetNo"); + + b.ToTable("PlayerAbilityCrestSets"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbCompletedDailyMission", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Id") + .HasColumnType("integer"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Progress") + .HasColumnType("integer"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ViewerId", "Id", "Date"); + + b.ToTable("CompletedDailyMissions"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbDeviceAccount", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("HashedPassword") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("DeviceAccounts"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbEmblem", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("EmblemId") + .HasColumnType("integer") + .HasColumnName("EmblemId"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("GetTime"); + + b.Property("IsNew") + .HasColumnType("boolean") + .HasColumnName("IsNew"); + + b.HasKey("ViewerId", "EmblemId"); + + b.ToTable("Emblems"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbEquippedStamp", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Slot") + .HasColumnType("integer"); + + b.Property("StampId") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "Slot"); + + b.ToTable("EquippedStamps"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbFortBuild", b => + { + b.Property("BuildId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("BuildId")); + + b.Property("BuildEndDate") + .HasColumnType("timestamp with time zone"); + + b.Property("BuildStartDate") + .HasColumnType("timestamp with time zone"); + + b.Property("IsNew") + .HasColumnType("boolean"); + + b.Property("LastIncomeDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Level") + .HasColumnType("integer"); + + b.Property("PlantId") + .HasColumnType("integer"); + + b.Property("PositionX") + .HasColumnType("integer"); + + b.Property("PositionZ") + .HasColumnType("integer"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("BuildId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerFortBuilds"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbFortDetail", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CarpenterNum") + .HasColumnType("integer") + .HasColumnName("CarpenterNum"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerFortDetail"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbLoginBonus", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Id") + .HasColumnType("integer"); + + b.Property("CurrentDay") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.HasKey("ViewerId", "Id"); + + b.ToTable("LoginBonuses"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbNewsItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)"); + + b.Property("Headline") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Time") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.ToTable("NewsItems"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbParty", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("PartyNo") + .HasColumnType("integer"); + + b.Property("PartyName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("character varying(20)"); + + b.HasKey("ViewerId", "PartyNo"); + + b.ToTable("PartyData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPartyPower", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("MaxPartyPower") + .HasColumnType("integer") + .HasColumnName("MaxPartyPower"); + + b.HasKey("ViewerId"); + + b.ToTable("PartyPowers"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPartyUnit", b => + { + b.Property("Id") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill1CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill2CharaId") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId3") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId2") + .HasColumnType("integer"); + + b.Property("EquipDragonKeyId") + .HasColumnType("bigint"); + + b.Property("EquipTalismanKeyId") + .HasColumnType("bigint"); + + b.Property("EquipWeaponBodyId") + .HasColumnType("integer"); + + b.Property("EquipWeaponSkinId") + .HasColumnType("integer"); + + b.Property("PartyNo") + .HasColumnType("integer"); + + b.Property("UnitNo") + .HasColumnType("integer"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ViewerId", "PartyNo"); + + b.ToTable("PlayerPartyUnits"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayer", b => + { + b.Property("ViewerId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("ViewerId")); + + b.Property("AccountId") + .IsRequired() + .HasMaxLength(16) + .HasColumnType("character varying(16)"); + + b.Property("SavefileVersion") + .HasColumnType("integer"); + + b.HasKey("ViewerId"); + + b.HasIndex("AccountId"); + + b.ToTable("Players"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerBannerData", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("SummonBannerId") + .HasColumnType("integer") + .HasColumnName("SummonBannerId"); + + b.Property("ConsecutionSummonPoints") + .HasColumnType("integer") + .HasColumnName("CsSummonPoints"); + + b.Property("ConsecutionSummonPointsMaxDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("CsSummonPointsMaxDate"); + + b.Property("ConsecutionSummonPointsMinDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("CsSummonPointsMinDate"); + + b.Property("DailyLimitedSummonCount") + .HasColumnType("integer") + .HasColumnName("DailyLimitedSummons"); + + b.Property("IsBeginnerFreeSummonAvailable") + .HasColumnType("integer") + .HasColumnName("BeginnerSummonAvailable"); + + b.Property("IsConsecutionFreeSummonAvailable") + .HasColumnType("integer") + .HasColumnName("CsSummonAvailable"); + + b.Property("IsFreeSummonAvailable") + .HasColumnType("integer") + .HasColumnName("FreeSummonAvailable"); + + b.Property("PityRate") + .HasColumnType("smallint") + .HasColumnName("Pity"); + + b.Property("SummonCount") + .HasColumnType("integer") + .HasColumnName("SummonCount"); + + b.Property("SummonPoints") + .HasColumnType("integer") + .HasColumnName("SummonPoints"); + + b.HasKey("ViewerId", "SummonBannerId"); + + b.ToTable("PlayerBannerData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerCharaData", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CharaId") + .HasColumnType("integer") + .HasColumnName("CharaId"); + + b.Property("Ability1Level") + .HasColumnType("smallint") + .HasColumnName("Abil1Lvl"); + + b.Property("Ability2Level") + .HasColumnType("smallint") + .HasColumnName("Abil2Lvl"); + + b.Property("Ability3Level") + .HasColumnType("smallint") + .HasColumnName("Abil3Lvl"); + + b.Property("AttackBase") + .HasColumnType("integer") + .HasColumnName("AtkBase"); + + b.Property("AttackNode") + .HasColumnType("integer") + .HasColumnName("AtkNode"); + + b.Property("AttackPlusCount") + .HasColumnType("smallint") + .HasColumnName("AtkPlusCount"); + + b.Property("BurstAttackLevel") + .HasColumnType("smallint") + .HasColumnName("BurstAtkLvl"); + + b.Property("ComboBuildupCount") + .HasColumnType("integer") + .HasColumnName("ComboBuildupCount"); + + b.Property("ExAbility2Level") + .HasColumnType("smallint") + .HasColumnName("ExAbility2Lvl"); + + b.Property("ExAbilityLevel") + .HasColumnType("smallint") + .HasColumnName("ExAbility1Lvl"); + + b.Property("Exp") + .HasColumnType("integer") + .HasColumnName("Exp"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("GetTime"); + + b.Property("HpBase") + .HasColumnType("integer") + .HasColumnName("HpBase"); + + b.Property("HpNode") + .HasColumnType("integer") + .HasColumnName("HpNode"); + + b.Property("HpPlusCount") + .HasColumnType("smallint") + .HasColumnName("HpPlusCount"); + + b.Property("IsNew") + .HasColumnType("boolean") + .HasColumnName("IsNew"); + + b.Property("IsTemporary") + .HasColumnType("boolean") + .HasColumnName("IsTemp"); + + b.Property("IsUnlockEditSkill") + .HasColumnType("boolean") + .HasColumnName("IsUnlockEditSkill"); + + b.Property("Level") + .HasColumnType("smallint") + .HasColumnName("Level"); + + b.Property("ListViewFlag") + .HasColumnType("boolean") + .HasColumnName("ListViewFlag"); + + b.Property("ManaNodeUnlockCount") + .HasColumnType("integer") + .HasColumnName("ManaNodeUnlockCount"); + + b.Property("Rarity") + .HasColumnType("smallint") + .HasColumnName("Rarity"); + + b.Property("Skill1Level") + .HasColumnType("smallint") + .HasColumnName("Skill1Lvl"); + + b.Property("Skill2Level") + .HasColumnType("smallint") + .HasColumnName("Skill2Lvl"); + + b.HasKey("ViewerId", "CharaId"); + + b.ToTable("PlayerCharaData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeChara", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CharaId") + .HasColumnType("integer") + .HasColumnName("CharaId"); + + b.Property("MaxFloor") + .HasColumnType("integer") + .HasColumnName("MaxFloor"); + + b.Property("MaxScore") + .HasColumnType("integer") + .HasColumnName("MaxScore"); + + b.Property("SelectEditSkillCharaId1") + .HasColumnType("integer") + .HasColumnName("SelectEditSkillCharaId1"); + + b.Property("SelectEditSkillCharaId2") + .HasColumnType("integer") + .HasColumnName("SelectEditSkillCharaId2"); + + b.Property("SelectEditSkillCharaId3") + .HasColumnType("integer") + .HasColumnName("SelectEditSkillCharaId3"); + + b.Property("SelectedServitorId") + .HasColumnType("integer") + .HasColumnName("SelectedServitorId"); + + b.HasKey("ViewerId", "CharaId"); + + b.ToTable("PlayerDmodeCharas"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeDungeon", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CharaId") + .HasColumnType("integer") + .HasColumnName("CharaId"); + + b.Property("DungeonScore") + .HasColumnType("integer") + .HasColumnName("DungeonScore"); + + b.Property("Floor") + .HasColumnType("integer") + .HasColumnName("Floor"); + + b.Property("IsPlayEnd") + .HasColumnType("boolean") + .HasColumnName("IsPlayEnd"); + + b.Property("QuestTime") + .HasColumnType("integer") + .HasColumnName("QuestTime"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("State"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerDmodeDungeons"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeExpedition", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CharaId1") + .HasColumnType("integer") + .HasColumnName("CharaId1"); + + b.Property("CharaId2") + .HasColumnType("integer") + .HasColumnName("CharaId2"); + + b.Property("CharaId3") + .HasColumnType("integer") + .HasColumnName("CharaId3"); + + b.Property("CharaId4") + .HasColumnType("integer") + .HasColumnName("CharaId4"); + + b.Property("StartTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("StartTime"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("State"); + + b.Property("TargetFloor") + .HasColumnType("integer") + .HasColumnName("TargetFloor"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerDmodeExpeditions"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeInfo", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("FloorSkipCount") + .HasColumnType("integer") + .HasColumnName("FloorSkipCount"); + + b.Property("FloorSkipTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("FloorSkipTime"); + + b.Property("Point1Quantity") + .HasColumnType("integer") + .HasColumnName("Point1Quantity"); + + b.Property("Point2Quantity") + .HasColumnType("integer") + .HasColumnName("Point2Quantity"); + + b.Property("RecoveryCount") + .HasColumnType("integer") + .HasColumnName("RecoveryCount"); + + b.Property("RecoveryTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("RecoveryTime"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerDmodeInfos"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeServitorPassive", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("PassiveId") + .HasColumnType("integer") + .HasColumnName("PassiveId"); + + b.Property("Level") + .HasColumnType("integer") + .HasColumnName("Level"); + + b.HasKey("ViewerId", "PassiveId"); + + b.ToTable("PlayerDmodeServitorPassives"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonData", b => + { + b.Property("DragonKeyId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("DragonKeyId"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("DragonKeyId")); + + b.Property("Ability1Level") + .HasColumnType("smallint") + .HasColumnName("Abil1Level"); + + b.Property("Ability2Level") + .HasColumnType("smallint") + .HasColumnName("Abil2Level"); + + b.Property("AttackPlusCount") + .HasColumnType("smallint") + .HasColumnName("AttackPlusCount"); + + b.Property("DragonId") + .HasColumnType("integer") + .HasColumnName("DragonId"); + + b.Property("Exp") + .HasColumnType("integer") + .HasColumnName("Exp"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("GetTime"); + + b.Property("HpPlusCount") + .HasColumnType("smallint") + .HasColumnName("HpPlusCount"); + + b.Property("IsLock") + .HasColumnType("boolean") + .HasColumnName("IsLocked"); + + b.Property("IsNew") + .HasColumnType("boolean") + .HasColumnName("IsNew"); + + b.Property("Level") + .HasColumnType("smallint") + .HasColumnName("Level"); + + b.Property("LimitBreakCount") + .HasColumnType("smallint") + .HasColumnName("LimitBreakCount"); + + b.Property("Skill1Level") + .HasColumnType("smallint") + .HasColumnName("Skill1Level"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("DragonKeyId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerDragonData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonGift", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("DragonGiftId") + .HasColumnType("integer") + .HasColumnName("DragonGiftId"); + + b.Property("Quantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.HasKey("ViewerId", "DragonGiftId"); + + b.ToTable("PlayerDragonGift"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonReliability", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("DragonId") + .HasColumnType("integer") + .HasColumnName("DragonId"); + + b.Property("Exp") + .HasColumnType("integer") + .HasColumnName("TotalExp"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastContactTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastContactTime"); + + b.Property("Level") + .HasColumnType("smallint") + .HasColumnName("Level"); + + b.HasKey("ViewerId", "DragonId"); + + b.ToTable("PlayerDragonReliability"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventData", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("EventId") + .HasColumnType("integer") + .HasColumnName("EventId"); + + b.Property("CustomEventFlag") + .HasColumnType("boolean") + .HasColumnName("CustomEventFlag"); + + b.HasKey("ViewerId", "EventId"); + + b.ToTable("PlayerEventData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventItem", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("Id"); + + b.Property("EventId") + .HasColumnType("integer") + .HasColumnName("EventId"); + + b.Property("Quantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("Type"); + + b.HasKey("ViewerId", "Id"); + + b.HasIndex("ViewerId", "EventId"); + + b.ToTable("PlayerEventItems"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventPassive", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("EventId") + .HasColumnType("integer") + .HasColumnName("EventId"); + + b.Property("PassiveId") + .HasColumnType("integer") + .HasColumnName("PassiveId"); + + b.Property("Progress") + .HasColumnType("integer") + .HasColumnName("Progress"); + + b.HasKey("ViewerId", "EventId", "PassiveId"); + + b.ToTable("PlayerEventPassives"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventReward", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("EventId") + .HasColumnType("integer") + .HasColumnName("EventId"); + + b.Property("RewardId") + .HasColumnType("integer") + .HasColumnName("RewardId"); + + b.HasKey("ViewerId", "EventId", "RewardId"); + + b.ToTable("PlayerEventRewards"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerMaterial", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("MaterialId") + .HasColumnType("integer") + .HasColumnName("MaterialId"); + + b.Property("Quantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.HasKey("ViewerId", "MaterialId"); + + b.ToTable("PlayerMaterial"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerMission", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("MissionId"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("Type"); + + b.Property("End") + .HasColumnType("timestamp with time zone") + .HasColumnName("EndDate"); + + b.Property("GroupId") + .HasColumnType("integer") + .HasColumnName("GroupId"); + + b.Property("Pickup") + .HasColumnType("boolean") + .HasColumnName("Pickup"); + + b.Property("Progress") + .HasColumnType("integer") + .HasColumnName("Progress"); + + b.Property("Start") + .HasColumnType("timestamp with time zone") + .HasColumnName("StartDate"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("State"); + + b.HasKey("ViewerId", "Id", "Type"); + + b.ToTable("PlayerMissions"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerPresent", b => + { + b.Property("PresentId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("PresentId"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("PresentId")); + + b.Property("CreateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreateTime"); + + b.Property("EntityId") + .HasColumnType("integer") + .HasColumnName("EntityId"); + + b.Property("EntityLevel") + .HasColumnType("integer") + .HasColumnName("EntityLevel"); + + b.Property("EntityLimitBreakCount") + .HasColumnType("integer") + .HasColumnName("EntityLimitBreakCount"); + + b.Property("EntityQuantity") + .HasColumnType("integer") + .HasColumnName("EntityQuantity"); + + b.Property("EntityStatusPlusCount") + .HasColumnType("integer") + .HasColumnName("EntityStatusPlusCount"); + + b.Property("EntityType") + .HasColumnType("integer") + .HasColumnName("EntityType"); + + b.Property("MasterId") + .HasColumnType("bigint") + .HasColumnName("MasterId"); + + b.Property("MessageId") + .HasColumnType("integer") + .HasColumnName("MessageId"); + + b.Property("MessageParamValue1") + .HasColumnType("integer") + .HasColumnName("MessageParamValue1"); + + b.Property("MessageParamValue2") + .HasColumnType("integer") + .HasColumnName("MessageParamValue2"); + + b.Property("MessageParamValue3") + .HasColumnType("integer") + .HasColumnName("MessageParamValue3"); + + b.Property("MessageParamValue4") + .HasColumnType("integer") + .HasColumnName("MessageParamValue4"); + + b.Property("ReceiveLimitTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ReceiveLimitTime"); + + b.Property("State") + .HasColumnType("bigint") + .HasColumnName("State"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("PresentId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerPresent"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerPresentHistory", b => + { + b.Property("Id") + .HasColumnType("bigint"); + + b.Property("CreateTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("CreateTime"); + + b.Property("EntityId") + .HasColumnType("integer") + .HasColumnName("EntityId"); + + b.Property("EntityLevel") + .HasColumnType("integer") + .HasColumnName("EntityLevel"); + + b.Property("EntityLimitBreakCount") + .HasColumnType("integer") + .HasColumnName("EntityLimitBreakCount"); + + b.Property("EntityQuantity") + .HasColumnType("integer") + .HasColumnName("EntityQuantity"); + + b.Property("EntityStatusPlusCount") + .HasColumnType("integer") + .HasColumnName("EntityStatusPlusCount"); + + b.Property("EntityType") + .HasColumnType("integer") + .HasColumnName("EntityType"); + + b.Property("MessageId") + .HasColumnType("integer") + .HasColumnName("MessageId"); + + b.Property("MessageParamValue1") + .HasColumnType("integer") + .HasColumnName("MessageParamValue1"); + + b.Property("MessageParamValue2") + .HasColumnType("integer") + .HasColumnName("MessageParamValue2"); + + b.Property("MessageParamValue3") + .HasColumnType("integer") + .HasColumnName("MessageParamValue3"); + + b.Property("MessageParamValue4") + .HasColumnType("integer") + .HasColumnName("MessageParamValue4"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerPresentHistory"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerQuestWall", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("WallId") + .HasColumnType("integer"); + + b.Property("IsStartNextLevel") + .HasColumnType("boolean"); + + b.Property("WallLevel") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "WallId"); + + b.ToTable("PlayerQuestWalls"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerShopInfo", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("DailySummonCount") + .HasColumnType("integer"); + + b.Property("LastSummonTime") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerShopInfos"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerShopPurchase", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("GoodsId") + .HasColumnType("integer"); + + b.Property("BuyCount") + .HasColumnType("integer"); + + b.Property("EffectEndTime") + .HasColumnType("timestamp with time zone"); + + b.Property("EffectStartTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastBuyTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ShopType") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "GoodsId"); + + b.ToTable("PlayerPurchases"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerStoryState", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("StoryType") + .HasColumnType("integer") + .HasColumnName("StoryType"); + + b.Property("StoryId") + .HasColumnType("integer") + .HasColumnName("StoryId"); + + b.Property("State") + .HasColumnType("integer") + .HasColumnName("State"); + + b.HasKey("ViewerId", "StoryType", "StoryId"); + + b.ToTable("PlayerStoryState"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerSummonHistory", b => + { + b.Property("KeyId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("KeyId")); + + b.Property("EntityAttackPlusCount") + .HasColumnType("integer") + .HasColumnName("AtkPlusCount"); + + b.Property("EntityHpPlusCount") + .HasColumnType("integer") + .HasColumnName("HpPlusCount"); + + b.Property("EntityId") + .HasColumnType("integer") + .HasColumnName("EntityId"); + + b.Property("EntityLevel") + .HasColumnType("smallint") + .HasColumnName("Level"); + + b.Property("EntityLimitBreakCount") + .HasColumnType("smallint") + .HasColumnName("LimitBreakCount"); + + b.Property("EntityQuantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.Property("EntityRarity") + .HasColumnType("smallint") + .HasColumnName("Rarity"); + + b.Property("EntityType") + .HasColumnType("integer") + .HasColumnName("EntityType"); + + b.Property("ExecDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("SummonDate"); + + b.Property("GetDewPointQuantity") + .HasColumnType("integer") + .HasColumnName("DewPointGet"); + + b.Property("PaymentType") + .HasColumnType("integer") + .HasColumnName("PaymentType"); + + b.Property("SummonExecType") + .HasColumnType("smallint") + .HasColumnName("SummonExecType"); + + b.Property("SummonId") + .HasColumnType("integer") + .HasColumnName("BannerId"); + + b.Property("SummonPoint") + .HasColumnType("integer") + .HasColumnName("SummonPointGet"); + + b.Property("SummonPrizeRank") + .HasColumnType("integer") + .HasColumnName("SummonPrizeRank"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("KeyId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerSummonHistory"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerTrade", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("TradeId"); + + b.Property("Count") + .HasColumnType("integer") + .HasColumnName("TradeCount"); + + b.Property("LastTradeTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastTrade"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("TradeType"); + + b.HasKey("ViewerId", "Id"); + + b.HasIndex("ViewerId", "Type"); + + b.ToTable("PlayerTrades"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerUseItem", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("ItemId") + .HasColumnType("integer") + .HasColumnName("ItemId"); + + b.Property("Quantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.HasKey("ViewerId", "ItemId"); + + b.ToTable("PlayerUseItems"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerUserData", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("ActiveMemoryEventId") + .HasColumnType("integer"); + + b.Property("BuildTimePoint") + .HasColumnType("integer"); + + b.Property("Coin") + .HasColumnType("bigint"); + + b.Property("CreateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Crystal") + .HasColumnType("integer"); + + b.Property("DewPoint") + .HasColumnType("integer"); + + b.Property("EmblemId") + .HasColumnType("integer"); + + b.Property("Exp") + .HasColumnType("integer"); + + b.Property("FortOpenTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastLoginTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastSaveImportTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastStaminaMultiUpdateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastStaminaSingleUpdateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Level") + .HasColumnType("integer"); + + b.Property("MainPartyNo") + .HasColumnType("integer"); + + b.Property("ManaPoint") + .HasColumnType("integer"); + + b.Property("MaxDragonQuantity") + .HasColumnType("integer"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("character varying(10)"); + + b.Property("QuestSkipPoint") + .HasColumnType("integer"); + + b.Property("StaminaMulti") + .HasColumnType("integer"); + + b.Property("StaminaMultiSurplusSecond") + .HasColumnType("integer"); + + b.Property("StaminaSingle") + .HasColumnType("integer"); + + b.Property("StaminaSingleSurplusSecond") + .HasColumnType("integer"); + + b.Property("TutorialFlag") + .HasColumnType("integer"); + + b.Property("TutorialStatus") + .HasColumnType("integer"); + + b.HasKey("ViewerId"); + + b.ToTable("PlayerUserData"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuest", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("QuestId") + .HasColumnType("integer"); + + b.Property("BestClearTime") + .HasColumnType("real"); + + b.Property("DailyPlayCount") + .HasColumnType("integer"); + + b.Property("IsAppear") + .HasColumnType("boolean"); + + b.Property("IsMissionClear1") + .HasColumnType("boolean"); + + b.Property("IsMissionClear2") + .HasColumnType("boolean"); + + b.Property("IsMissionClear3") + .HasColumnType("boolean"); + + b.Property("LastDailyResetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("LastWeeklyResetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("PlayCount") + .HasColumnType("integer"); + + b.Property("State") + .HasColumnType("smallint"); + + b.Property("WeeklyPlayCount") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "QuestId"); + + b.ToTable("PlayerQuests"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestClearPartyUnit", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("QuestId") + .HasColumnType("integer"); + + b.Property("IsMulti") + .HasColumnType("boolean"); + + b.Property("UnitNo") + .HasColumnType("integer"); + + b.Property("CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill1CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill2CharaId") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId3") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId2") + .HasColumnType("integer"); + + b.Property("EquipDragonKeyId") + .HasColumnType("bigint"); + + b.Property("EquipTalismanKeyId") + .HasColumnType("bigint"); + + b.Property("EquipWeaponBodyId") + .HasColumnType("integer"); + + b.Property("EquipWeaponSkinId") + .HasColumnType("integer"); + + b.Property("EquippedDragonEntityId") + .HasColumnType("integer"); + + b.Property("EquippedTalismanEntityId") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "QuestId", "IsMulti", "UnitNo"); + + b.ToTable("QuestClearPartyUnits"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestEvent", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("QuestEventId") + .HasColumnType("integer") + .HasColumnName("QuestEventId"); + + b.Property("DailyPlayCount") + .HasColumnType("integer") + .HasColumnName("DailyPlayCount"); + + b.Property("LastDailyResetTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastDailyResetTime"); + + b.Property("LastWeeklyResetTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("LastWeeklyResetTime"); + + b.Property("QuestBonusReceiveCount") + .HasColumnType("integer") + .HasColumnName("QuestBonusReceiveCount"); + + b.Property("QuestBonusReserveCount") + .HasColumnType("integer") + .HasColumnName("QuestBonusReserveCount"); + + b.Property("QuestBonusReserveTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("QuestBonusReserveTime"); + + b.Property("QuestBonusStackCount") + .HasColumnType("integer") + .HasColumnName("QuestBonusStackCount"); + + b.Property("QuestBonusStackTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("QuestBonusStackTime"); + + b.Property("WeeklyPlayCount") + .HasColumnType("integer") + .HasColumnName("WeeklyPlayCount"); + + b.HasKey("ViewerId", "QuestEventId"); + + b.ToTable("QuestEvents"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestTreasureList", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("QuestTreasureId") + .HasColumnType("integer") + .HasColumnName("QuestTreasureId"); + + b.HasKey("ViewerId", "QuestTreasureId"); + + b.ToTable("QuestTreasureList"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbReceivedRankingTierReward", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("RewardId") + .HasColumnType("integer"); + + b.Property("QuestId") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "RewardId"); + + b.HasIndex("QuestId"); + + b.ToTable("ReceivedRankingTierRewards"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbSetUnit", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("CharaId") + .HasColumnType("integer"); + + b.Property("UnitSetNo") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId3") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId2") + .HasColumnType("integer"); + + b.Property("EquipDragonKeyId") + .HasColumnType("bigint"); + + b.Property("EquipTalismanKeyId") + .HasColumnType("bigint"); + + b.Property("EquipWeaponBodyId") + .HasColumnType("integer"); + + b.Property("UnitSetName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("character varying(32)"); + + b.HasKey("ViewerId", "CharaId", "UnitSetNo"); + + b.ToTable("PlayerSetUnit"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbSummonTicket", b => + { + b.Property("KeyId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("TicketKeyId"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("KeyId")); + + b.Property("Quantity") + .HasColumnType("integer") + .HasColumnName("Quantity"); + + b.Property("SummonTicketId") + .HasColumnType("integer") + .HasColumnName("Type"); + + b.Property("UseLimitTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ExpirationTime"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("KeyId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerSummonTickets"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTalisman", b => + { + b.Property("TalismanKeyId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("TalismanKeyId")); + + b.Property("AdditionalAttack") + .HasColumnType("integer"); + + b.Property("AdditionalHp") + .HasColumnType("integer"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsLock") + .HasColumnType("boolean"); + + b.Property("IsNew") + .HasColumnType("boolean"); + + b.Property("TalismanAbilityId1") + .HasColumnType("integer"); + + b.Property("TalismanAbilityId2") + .HasColumnType("integer"); + + b.Property("TalismanAbilityId3") + .HasColumnType("integer"); + + b.Property("TalismanId") + .HasColumnType("integer"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.HasKey("TalismanKeyId"); + + b.HasIndex("ViewerId"); + + b.ToTable("PlayerTalismans"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackClear", b => + { + b.Property("GameId") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("QuestId") + .HasColumnType("integer"); + + b.Property("Time") + .HasColumnType("real"); + + b.HasKey("GameId"); + + b.HasIndex("QuestId"); + + b.ToTable("TimeAttackClears"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackClearUnit", b => + { + b.Property("GameId") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("UnitNo") + .HasColumnType("integer"); + + b.Property("CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill1CharaId") + .HasColumnType("integer"); + + b.Property("EditSkill2CharaId") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType1CrestId3") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType2CrestId2") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId1") + .HasColumnType("integer"); + + b.Property("EquipCrestSlotType3CrestId2") + .HasColumnType("integer"); + + b.Property("EquipDragonKeyId") + .HasColumnType("bigint"); + + b.Property("EquipTalismanKeyId") + .HasColumnType("bigint"); + + b.Property("EquipWeaponBodyId") + .HasColumnType("integer"); + + b.Property("EquipWeaponSkinId") + .HasColumnType("integer"); + + b.Property("EquippedDragonEntityId") + .HasColumnType("integer"); + + b.Property("EquippedTalismanEntityId") + .HasColumnType("integer"); + + b.Property("TalismanAbility1") + .HasColumnType("integer"); + + b.Property("TalismanAbility2") + .HasColumnType("integer"); + + b.HasKey("GameId", "ViewerId", "UnitNo"); + + b.ToTable("TimeAttackClearUnits"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackPlayer", b => + { + b.Property("GameId") + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("PartyInfo") + .IsRequired() + .HasColumnType("jsonb"); + + b.HasKey("GameId", "ViewerId"); + + b.HasIndex("ViewerId"); + + b.ToTable("TimeAttackPlayers"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWallRewardDate", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("LastClaimDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ViewerId"); + + b.ToTable("WallRewardDates"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponBody", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("WeaponBodyId") + .HasColumnType("integer"); + + b.Property("AdditionalCrestSlotType1Count") + .HasColumnType("integer"); + + b.Property("AdditionalCrestSlotType2Count") + .HasColumnType("integer"); + + b.Property("AdditionalCrestSlotType3Count") + .HasColumnType("integer"); + + b.Property("BuildupCount") + .HasColumnType("integer"); + + b.Property("EquipableCount") + .HasColumnType("integer"); + + b.Property("FortPassiveCharaWeaponBuildupCount") + .HasColumnType("integer"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsNew") + .HasColumnType("boolean"); + + b.Property("LimitBreakCount") + .HasColumnType("integer"); + + b.Property("LimitOverCount") + .HasColumnType("integer"); + + b.Property("UnlockWeaponPassiveAbilityNoList") + .IsRequired() + .HasColumnType("integer[]"); + + b.HasKey("ViewerId", "WeaponBodyId"); + + b.ToTable("PlayerWeapons"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponPassiveAbility", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("WeaponPassiveAbilityId") + .HasColumnType("integer"); + + b.HasKey("ViewerId", "WeaponPassiveAbilityId"); + + b.ToTable("PlayerPassiveAbilities"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponSkin", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("WeaponSkinId") + .HasColumnType("integer"); + + b.Property("GetTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsNew") + .HasColumnType("boolean"); + + b.HasKey("ViewerId", "WeaponSkinId"); + + b.ToTable("PlayerWeaponSkins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FriendlyName") + .HasColumnType("text"); + + b.Property("Xml") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("DataProtectionKeys"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbAbilityCrest", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("AbilityCrestList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbAbilityCrestSet", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("AbilityCrestSetList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbCompletedDailyMission", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbEmblem", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("Emblems") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbEquippedStamp", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("EquippedStampList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbFortBuild", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("BuildList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbFortDetail", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("FortDetail") + .HasForeignKey("DragaliaAPI.Database.Entities.DbFortDetail", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbLoginBonus", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbParty", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("PartyList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPartyPower", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("PartyPower") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPartyPower", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPartyUnit", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbParty", "Party") + .WithMany("Units") + .HasForeignKey("ViewerId", "PartyNo") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Party"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerBannerData", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("BannerData") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerCharaData", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("CharaList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeChara", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("DmodeCharas") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeDungeon", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("DmodeDungeon") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPlayerDmodeDungeon", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeExpedition", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("DmodeExpedition") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPlayerDmodeExpedition", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeInfo", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("DmodeInfo") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPlayerDmodeInfo", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDmodeServitorPassive", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("DmodeServitorPassives") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonData", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("DragonList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonGift", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("DragonGiftList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerDragonReliability", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("DragonReliabilityList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventData", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventItem", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventPassive", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerEventReward", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerMaterial", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("MaterialList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerMission", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerPresent", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("Presents") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerPresentHistory", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("PresentHistory") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerQuestWall", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("QuestWalls") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerShopInfo", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("ShopInfo") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPlayerShopInfo", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerShopPurchase", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerStoryState", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("StoryStates") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerSummonHistory", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("SummonHistory") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerTrade", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("Trades") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerUseItem", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayerUserData", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("UserData") + .HasForeignKey("DragaliaAPI.Database.Entities.DbPlayerUserData", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuest", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("QuestList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestClearPartyUnit", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestEvent", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("QuestEvents") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbQuestTreasureList", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("QuestTreasureList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbReceivedRankingTierReward", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbSetUnit", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("UnitSets") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbSummonTicket", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("SummonTickets") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTalisman", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("TalismanList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackClearUnit", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbTimeAttackPlayer", "Player") + .WithMany("Units") + .HasForeignKey("GameId", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackPlayer", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbTimeAttackClear", "Clear") + .WithMany("Players") + .HasForeignKey("GameId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Player") + .WithMany() + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Clear"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWallRewardDate", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("WallRewardDate") + .HasForeignKey("DragaliaAPI.Database.Entities.DbWallRewardDate", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponBody", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("WeaponBodyList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponPassiveAbility", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("WeaponPassiveAbilityList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponSkin", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithMany("WeaponSkinList") + .HasForeignKey("ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbParty", b => + { + b.Navigation("Units"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbPlayer", b => + { + b.Navigation("AbilityCrestList"); + + b.Navigation("AbilityCrestSetList"); + + b.Navigation("BannerData"); + + b.Navigation("BuildList"); + + b.Navigation("CharaList"); + + b.Navigation("DmodeCharas"); + + b.Navigation("DmodeDungeon"); + + b.Navigation("DmodeExpedition"); + + b.Navigation("DmodeInfo"); + + b.Navigation("DmodeServitorPassives"); + + b.Navigation("DragonGiftList"); + + b.Navigation("DragonList"); + + b.Navigation("DragonReliabilityList"); + + b.Navigation("Emblems"); + + b.Navigation("EquippedStampList"); + + b.Navigation("FortDetail"); + + b.Navigation("MaterialList"); + + b.Navigation("PartyList"); + + b.Navigation("PartyPower"); + + b.Navigation("PresentHistory"); + + b.Navigation("Presents"); + + b.Navigation("QuestEvents"); + + b.Navigation("QuestList"); + + b.Navigation("QuestTreasureList"); + + b.Navigation("QuestWalls"); + + b.Navigation("ShopInfo"); + + b.Navigation("StoryStates"); + + b.Navigation("SummonHistory"); + + b.Navigation("SummonTickets"); + + b.Navigation("TalismanList"); + + b.Navigation("Trades"); + + b.Navigation("UnitSets"); + + b.Navigation("UserData"); + + b.Navigation("WallRewardDate"); + + b.Navigation("WeaponBodyList"); + + b.Navigation("WeaponPassiveAbilityList"); + + b.Navigation("WeaponSkinList"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackClear", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbTimeAttackPlayer", b => + { + b.Navigation("Units"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.cs b/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.cs new file mode 100644 index 000000000..8254c4fab --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Database/Migrations/20240513202914_wall_rewards.cs @@ -0,0 +1,40 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DragaliaAPI.Database.Migrations +{ + /// + public partial class wall_rewards : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "WallRewardDates", + columns: table => new + { + ViewerId = table.Column(type: "bigint", nullable: false), + LastClaimDate = table.Column(type: "timestamp with time zone", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WallRewardDates", x => x.ViewerId); + table.ForeignKey( + name: "FK_WallRewardDates_Players_ViewerId", + column: x => x.ViewerId, + principalTable: "Players", + principalColumn: "ViewerId", + onDelete: ReferentialAction.Cascade); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "WallRewardDates"); + } + } +} diff --git a/DragaliaAPI/DragaliaAPI.Database/Migrations/ApiContextModelSnapshot.cs b/DragaliaAPI/DragaliaAPI.Database/Migrations/ApiContextModelSnapshot.cs index 99ed8449f..c243981ad 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Migrations/ApiContextModelSnapshot.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Migrations/ApiContextModelSnapshot.cs @@ -1854,6 +1854,19 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("TimeAttackPlayers"); }); + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWallRewardDate", b => + { + b.Property("ViewerId") + .HasColumnType("bigint"); + + b.Property("LastClaimDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("ViewerId"); + + b.ToTable("WallRewardDates"); + }); + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponBody", b => { b.Property("ViewerId") @@ -2477,6 +2490,17 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Player"); }); + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWallRewardDate", b => + { + b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") + .WithOne("WallRewardDate") + .HasForeignKey("DragaliaAPI.Database.Entities.DbWallRewardDate", "ViewerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + modelBuilder.Entity("DragaliaAPI.Database.Entities.DbWeaponBody", b => { b.HasOne("DragaliaAPI.Database.Entities.DbPlayer", "Owner") @@ -2583,6 +2607,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("UserData"); + b.Navigation("WallRewardDate"); + b.Navigation("WeaponBodyList"); b.Navigation("WeaponPassiveAbilityList"); diff --git a/DragaliaAPI/DragaliaAPI.Database/Repositories/IUnitRepository.cs b/DragaliaAPI/DragaliaAPI.Database/Repositories/IUnitRepository.cs index 95e2db48b..a12f28d8b 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Repositories/IUnitRepository.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Repositories/IUnitRepository.cs @@ -11,14 +11,6 @@ public interface IUnitRepository IQueryable AbilityCrests { get; } IQueryable Talismans { get; } - Task> AddCharas(IEnumerable idList); - - Task AddCharas(Charas id); - - Task> AddDragons(IEnumerable idList); - - Task AddDragons(Dragons id); - Task RemoveDragons(IEnumerable keyIdList); Task GetCharaSetData(Charas charaId, int setNo); diff --git a/DragaliaAPI/DragaliaAPI.Database/Repositories/UnitRepository.cs b/DragaliaAPI/DragaliaAPI.Database/Repositories/UnitRepository.cs index 73b87fd21..ab2649caa 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Repositories/UnitRepository.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Repositories/UnitRepository.cs @@ -1,21 +1,7 @@ using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Factories; using DragaliaAPI.Shared.Definitions.Enums; -using DragaliaAPI.Shared.MasterAsset; -using DragaliaAPI.Shared.MasterAsset.Models.Story; using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -using CharaNewCheckResult = ( - DragaliaAPI.Shared.Definitions.Enums.Charas Id, - bool IsNew, - bool IsStoryNew -); -using DragonNewCheckResult = ( - DragaliaAPI.Shared.Definitions.Enums.Dragons Id, - bool IsNew, - bool IsStoryNew -); namespace DragaliaAPI.Database.Repositories; @@ -30,10 +16,7 @@ public UnitRepository(ApiContext apiContext, IPlayerIdentityService playerIdenti this.playerIdentityService = playerIdentityService; } - public IQueryable Dragons => - this.apiContext.PlayerDragonData.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - ); + public IQueryable Dragons => this.apiContext.PlayerDragonData; public IQueryable AbilityCrests => this.apiContext.PlayerAbilityCrests.Where(x => @@ -44,9 +27,7 @@ public UnitRepository(ApiContext apiContext, IPlayerIdentityService playerIdenti this.apiContext.PlayerWeapons.Where(x => x.ViewerId == this.playerIdentityService.ViewerId); public IQueryable DragonReliabilities => - this.apiContext.PlayerDragonReliability.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - ); + this.apiContext.PlayerDragonReliability; public IQueryable Talismans => this.apiContext.PlayerTalismans.Where(x => @@ -84,142 +65,6 @@ public UnitRepository(ApiContext apiContext, IPlayerIdentityService playerIdenti return await apiContext.PlayerWeapons.FindAsync(playerIdentityService.ViewerId, weaponBody); } - /// - /// Add a list of characters to the database. Will only add the first instance of any new character. - /// - /// A list of tuples which adds an additional dimension onto the input list, - /// where the second item shows whether the given character id was a duplicate. - public async Task> AddCharas(IEnumerable idList) - { - List enumeratedIdList = idList.ToList(); - IEnumerable storyIdList = GetFirstCharaStories(enumeratedIdList); - - // Generate result. The first occurrence of a character in the list should be new (if not in the DB) - // but subsequent results should then not be labelled as new. - List ownedCharas = await this - .apiContext.PlayerCharaData.Select(x => x.CharaId) - .Where(x => enumeratedIdList.Contains(x)) - .ToListAsync(); - - List ownedCharaStories = await this - .apiContext.PlayerStoryState.Where(x => - x.StoryType == StoryTypes.Chara && storyIdList.Contains(x.StoryId) - ) - .Select(x => x.StoryId) - .ToListAsync(); - - // We also mark which stories are new. Ordinarily it is fine to assume if a character is new, then its story - // should be new. However, this has encountered occasional primary key errors from players who import saves - // after removing characters but not their story, which is not possible under normal circumstances. - - List newMapping = MarkNewCharas( - ownedCharas, - ownedCharaStories, - enumeratedIdList - ); - - foreach (CharaNewCheckResult result in newMapping) - { - if (result.IsNew) - { - this.apiContext.PlayerCharaData.Add( - new DbPlayerCharaData(this.playerIdentityService.ViewerId, result.Id) - ); - } - - if ( - result.IsStoryNew - && MasterAsset.CharaStories.TryGetValue((int)result.Id, out StoryData? story) - ) - { - apiContext.PlayerStoryState.Add( - new DbPlayerStoryState - { - ViewerId = this.playerIdentityService.ViewerId, - StoryType = StoryTypes.Chara, - StoryId = story.StoryIds[0], - State = 0 - } - ); - } - } - - return newMapping.Select(x => (x.Id, x.IsNew)); - - static IEnumerable GetFirstCharaStories(IEnumerable charaIdList) - { - foreach (Charas c in charaIdList) - { - if (MasterAsset.CharaStories.TryGetValue((int)c, out StoryData? storyData)) - { - yield return storyData.StoryIds[0]; - } - } - } - } - - public async Task AddCharas(Charas id) - { - return (await this.AddCharas(new[] { id })).First().isNew; - } - - public async Task> AddDragons(IEnumerable idList) - { - List enumeratedIdList = idList.ToList(); - - List ownedDragons = await Dragons - .Select(x => x.DragonId) - .Where(x => enumeratedIdList.Contains(x)) - .ToListAsync(); - List ownedReliabilities = await DragonReliabilities - .Select(x => x.DragonId) - .Where(x => enumeratedIdList.Contains(x)) - .ToListAsync(); - - List newMapping = MarkNewDragons( - ownedDragons, - ownedReliabilities, - enumeratedIdList - ); - - foreach ((Dragons id, _, bool isReliabilityNew) in newMapping) - { - // Not being in the dragon table doesn't mean a reliability doesn't exist - // as the dragon could've been sold - if (isReliabilityNew) - { - this.apiContext.Add( - DbPlayerDragonReliabilityFactory.Create(this.playerIdentityService.ViewerId, id) - ); - } - } - - this.apiContext.AddRange( - enumeratedIdList.Select(id => - DbPlayerDragonDataFactory.Create(this.playerIdentityService.ViewerId, id) - ) - ); - - return newMapping.Select(x => (x.Id, x.IsNew)); - } - - public async Task AddDragons(Dragons id) - { - return (await this.AddDragons(new[] { id })).First().IsNew; - } - - public async Task RemoveDragons(IEnumerable keyIdList) - { - IEnumerable ownedDragons = await Dragons - .Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - && keyIdList.Contains(x.DragonKeyId) - ) - .ToListAsync(); - - apiContext.PlayerDragonData.RemoveRange(ownedDragons); - } - public async Task GetCharaSetData(Charas charaId, int setNo) { return await apiContext.PlayerSetUnits.FindAsync( @@ -289,47 +134,17 @@ int additionalAttack .Entity; } - public void RemoveTalisman(DbTalisman talisman) - { - apiContext.PlayerTalismans.Remove(talisman); - } - - private static List MarkNewCharas( - List owned, - List ownedStories, - List idList - ) + public async Task RemoveDragons(IEnumerable keyIdList) { - List result = new(); - foreach (Charas c in idList) - { - bool isCharaNew = !(result.Any(x => x.Id.Equals(c)) || owned.Contains(c)); - bool isStoryNew = - isCharaNew - && MasterAsset.CharaStories.TryGetValue((int)c, out StoryData? storyData) - && !ownedStories.Contains(storyData.StoryIds[0]); - - result.Add((c, isCharaNew, isStoryNew)); - } + List ownedDragons = await apiContext + .PlayerDragonData.Where(x => keyIdList.Contains(x.DragonKeyId)) + .ToListAsync(); - return result; + apiContext.PlayerDragonData.RemoveRange(ownedDragons); } - private static List MarkNewDragons( - List owned, - List ownedReliabilities, - List idList - ) + public void RemoveTalisman(DbTalisman talisman) { - List result = new(); - foreach (Dragons c in idList) - { - bool isDragonNew = !(result.Any(x => x.Id.Equals(c)) || owned.Contains(c)); - bool isReliabilityNew = isDragonNew && !ownedReliabilities.Contains(c); - - result.Add((c, isDragonNew, isReliabilityNew)); - } - - return result; + apiContext.PlayerTalismans.Remove(talisman); } } diff --git a/DragaliaAPI/DragaliaAPI.Database/Repositories/UserDataRepository.cs b/DragaliaAPI/DragaliaAPI.Database/Repositories/UserDataRepository.cs index 2f4556cb2..edd47350a 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Repositories/UserDataRepository.cs +++ b/DragaliaAPI/DragaliaAPI.Database/Repositories/UserDataRepository.cs @@ -27,10 +27,7 @@ ILogger logger this.logger = logger; } - public IQueryable UserData => - this.apiContext.PlayerUserData.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - ); + public IQueryable UserData => this.apiContext.PlayerUserData; public async Task GetUserDataAsync() { @@ -45,22 +42,19 @@ public async Task GetFortOpenTimeAsync() public IQueryable GetViewerData(long viewerId) { + // Ignore query filters as this is often used for dev controllers where IPlayerIdentityService may not be initialized return this - .apiContext.PlayerUserData.Where(x => x.ViewerId == viewerId) + .apiContext.PlayerUserData.IgnoreQueryFilters() + .Where(x => x.ViewerId == viewerId) .Include(x => x.Owner); } public IQueryable GetMultipleViewerData(IEnumerable viewerIds) { - return this.apiContext.PlayerUserData.Where(x => viewerIds.Contains(x.ViewerId)); - } - - public async Task> GetTutorialFlags() - { - DbPlayerUserData userData = await UserData.SingleAsync(); - - int flags = userData.TutorialFlag; - return TutorialFlagUtil.ConvertIntToFlagIntList(flags); + // Ignore query filters as this is used for getting user data of co-op teammates + return this + .apiContext.PlayerUserData.IgnoreQueryFilters() + .Where(x => viewerIds.Contains(x.ViewerId)); } public async Task UpdateName(string newName) diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/CustomWebApplicationFactory.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/CustomWebApplicationFactory.cs index 440dc3d27..ba0df3dfd 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/CustomWebApplicationFactory.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/CustomWebApplicationFactory.cs @@ -1,5 +1,4 @@ using DragaliaAPI.Database; -using DragaliaAPI.Helpers; using DragaliaAPI.Models.Options; using DragaliaAPI.Services.Api; using DragaliaAPI.Shared.MasterAsset; diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Data/savefile_excess_dragons.json b/DragaliaAPI/DragaliaAPI.Integration.Test/Data/savefile_excess_dragons.json new file mode 100644 index 000000000..9da4e74f8 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Data/savefile_excess_dragons.json @@ -0,0 +1,49040 @@ +{ + "data_headers": { + "result_code": 1 + }, + "data": { + "origin": "dawnshard", + "spec_upgrade_time": 0, + "user_data": { + "viewer_id": 7595, + "name": "Frostfox", + "level": 8, + "exp": 2140, + "coin": 13109467, + "crystal": 740, + "dew_point": 18827130, + "stamina_single": 982, + "last_stamina_single_update_time": 1712004292, + "stamina_single_surplus_second": 0, + "stamina_multi": 96, + "last_stamina_multi_update_time": 1710862249, + "stamina_multi_surplus_second": 0, + "max_dragon_quantity": 2000, + "quest_skip_point": 240, + "build_time_point": 2, + "age_group": 0, + "main_party_no": 5, + "emblem_id": 40000001, + "active_memory_event_id": 0, + "mana_point": 710756, + "last_login_time": 1712359617, + "tutorial_status": 50201, + "tutorial_flag_list": [ + 1001, + 1002, + 1004, + 1005, + 1009, + 1013, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1027 + ], + "fort_open_time": 1710529242, + "create_time": 1710521829, + "is_optin": 0, + "max_weapon_quantity": 0, + "max_amulet_quantity": 0, + "prologue_end_time": 0 + }, + "party_power_data": { + "max_party_power": 4384 + }, + "party_list": [ + { + "party_no": 1, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10550104, + "equip_dragon_key_id": 6348425, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10250104, + "equip_dragon_key_id": 6348822, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10450102, + "equip_dragon_key_id": 6348530, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10850102, + "equip_dragon_key_id": 6349214, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 2, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10650303, + "equip_dragon_key_id": 6348914, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10650304, + "equip_dragon_key_id": 6348798, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10450305, + "equip_dragon_key_id": 6349012, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10150302, + "equip_dragon_key_id": 6349050, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 3, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10550501, + "equip_dragon_key_id": 6347736, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10950501, + "equip_dragon_key_id": 6347767, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10350502, + "equip_dragon_key_id": 6349863, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10650504, + "equip_dragon_key_id": 6349823, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 4, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10350204, + "equip_dragon_key_id": 6348535, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10350203, + "equip_dragon_key_id": 6349199, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10650202, + "equip_dragon_key_id": 6347696, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10850202, + "equip_dragon_key_id": 6349169, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 5, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10250404, + "equip_dragon_key_id": 6348892, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10550405, + "equip_dragon_key_id": 6348796, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10750402, + "equip_dragon_key_id": 6349767, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10850402, + "equip_dragon_key_id": 6348938, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 6, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10550501, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 7, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10550104, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10450102, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10850102, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 8, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 9, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 10, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 11, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 12, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 13, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 14, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 15, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 16, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 17, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 18, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 19, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 20, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 21, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 22, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 23, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 24, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 25, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 26, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 27, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 28, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 29, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 30, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 31, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10550501, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 10950501, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 10350502, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10840501, + "edit_skill_2_chara_id": 10440301, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 10840501, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 10440301, + "edit_skill_2_chara_id": 10140101, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 32, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 33, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 34, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 35, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 36, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 37, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 38, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 39, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 40, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 41, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 42, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 43, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 44, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 45, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 46, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 47, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 48, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 49, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 50, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 51, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 52, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 53, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + }, + { + "party_no": 54, + "party_name": "Default", + "party_setting_list": [ + { + "unit_no": 1, + "chara_id": 10140101, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 2, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 3, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + }, + { + "unit_no": 4, + "chara_id": 0, + "equip_dragon_key_id": 0, + "equip_weapon_body_id": 0, + "equip_weapon_skin_id": 0, + "equip_crest_slot_type_1_crest_id_1": 0, + "equip_crest_slot_type_1_crest_id_2": 0, + "equip_crest_slot_type_1_crest_id_3": 0, + "equip_crest_slot_type_2_crest_id_1": 0, + "equip_crest_slot_type_2_crest_id_2": 0, + "equip_crest_slot_type_3_crest_id_1": 0, + "equip_crest_slot_type_3_crest_id_2": 0, + "equip_talisman_key_id": 0, + "edit_skill_1_chara_id": 0, + "edit_skill_2_chara_id": 0, + "equip_weapon_key_id": 0, + "equip_skin_weapon_id": 0, + "equip_amulet_key_id": 0, + "equip_amulet_2_key_id": 0 + } + ] + } + ], + "chara_list": [ + { + "chara_id": 10130102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 25, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10130103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10130201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 25, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10130401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 42, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10130501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 42, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140101, + "exp": 320, + "level": 5, + "additional_max_level": 0, + "hp": 79, + "attack": 53, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 1, + "gettime": 1710521829, + "mana_circle_piece_id_list": [ + 7 + ], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140102, + "exp": 320, + "level": 5, + "additional_max_level": 0, + "hp": 77, + "attack": 47, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529572, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530824, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529778, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 59, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587820, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529619, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10140501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711905686, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529753, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099570, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703546, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150105, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710780074, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150106, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712181309, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840300, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712058706, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712327723, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703012, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703196, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150302, + "exp": 480, + "level": 6, + "additional_max_level": 0, + "hp": 93, + "attack": 56, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587754, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 70, + "attack": 38, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840314, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779816, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150305, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711102339, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150306, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890591, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877378, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710860964, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692540, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150404, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878677, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150405, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840588, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878609, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530824, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711101770, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10150504, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099367, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10230101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 29, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10230201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 29, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10230301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 43, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10230401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10230501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 29, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10240202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530524, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10240301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 52, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10240302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 37, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878460, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10240401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 52, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10240502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 52, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529697, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530704, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 69, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712310588, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587478, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779611, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712184363, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711101822, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710798086, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711016127, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710780161, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890538, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250303, + "exp": 260, + "level": 5, + "additional_max_level": 0, + "hp": 87, + "attack": 54, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710584922, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100278, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711572544, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530572, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250404, + "exp": 2260, + "level": 12, + "additional_max_level": 0, + "hp": 117, + "attack": 81, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692433, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878361, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099196, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10250504, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878889, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10330101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10330301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10330401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10330501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10330502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529809, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530338, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530014, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530572, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529669, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 54, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530512, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10340501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 56, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529659, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710584677, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587568, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530433, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877330, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703240, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350203, + "exp": 840, + "level": 8, + "additional_max_level": 0, + "hp": 99, + "attack": 65, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710580343, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350204, + "exp": 840, + "level": 8, + "additional_max_level": 0, + "hp": 99, + "attack": 65, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710580396, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877780, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712058402, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712184289, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100861, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710531059, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350404, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712176324, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350405, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712324641, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350502, + "exp": 1320, + "level": 10, + "additional_max_level": 0, + "hp": 114, + "attack": 68, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692564, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712319739, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350504, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711102135, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10350505, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530184, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10430201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10430202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10430301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10430401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10430501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 29, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 52, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529731, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529659, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 1, + "gettime": 1710528498, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 52, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530406, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10440501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710799733, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530156, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530726, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712177297, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712275119, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712174439, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712232471, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587616, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712177120, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711103433, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710797944, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779182, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450305, + "exp": 740, + "level": 8, + "additional_max_level": 0, + "hp": 107, + "attack": 61, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710531109, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 70, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712274937, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712178747, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099137, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450405, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779347, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450406, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712308876, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710531195, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840666, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10450503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 62, + "attack": 44, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712312452, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10530101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 25, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10530201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 25, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10530202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 46, + "attack": 25, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10530401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10530501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530370, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 38, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 1, + "gettime": 1710528325, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530041, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530212, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529719, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530266, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710584747, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10540502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529507, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711571926, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710804948, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712176570, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587676, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877277, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529731, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712182580, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550205, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840615, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099076, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712233212, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712326083, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890722, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550306, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712262797, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703093, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587874, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550404, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 70, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711705406, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550405, + "exp": 2260, + "level": 12, + "additional_max_level": 0, + "hp": 130, + "attack": 72, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703428, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550501, + "exp": 1790, + "level": 11, + "additional_max_level": 0, + "hp": 112, + "attack": 77, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692715, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878238, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10550504, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710531109, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10630101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 42, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10630201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10630301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 42, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10630401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529945, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878944, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 54, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529867, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 54, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529945, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 1, + "gettime": 1710585239, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10640501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 35, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 71, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712319924, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878408, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712099537, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650202, + "exp": 840, + "level": 8, + "additional_max_level": 0, + "hp": 100, + "attack": 64, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529572, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 65, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710868398, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 71, + "attack": 37, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712175701, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877096, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100947, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650303, + "exp": 740, + "level": 8, + "additional_max_level": 0, + "hp": 105, + "attack": 61, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529669, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650304, + "exp": 740, + "level": 8, + "additional_max_level": 0, + "hp": 99, + "attack": 64, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530232, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712319569, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 65, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692515, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877378, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711101727, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779737, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650504, + "exp": 1320, + "level": 10, + "additional_max_level": 0, + "hp": 115, + "attack": 68, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779998, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10650505, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 40, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877307, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10730101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10730301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 41, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10730401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 44, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10730501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 43, + "attack": 27, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530802, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710692413, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 2, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529719, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529820, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530879, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 53, + "attack": 36, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529753, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 58, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710531048, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10740501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 34, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529640, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712183806, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878838, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750105, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711735453, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711102867, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712274447, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750204, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779969, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710868711, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710798143, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779243, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750304, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710780310, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529594, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750402, + "exp": 2260, + "level": 12, + "additional_max_level": 0, + "hp": 124, + "attack": 76, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529778, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 67, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711877912, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750404, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712182372, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750405, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779587, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529778, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 66, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712182679, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712177548, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10750505, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711102339, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10830501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 45, + "attack": 26, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529594, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779467, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840202, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529507, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 33, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710529495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530780, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 57, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530111, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10840501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 55, + "attack": 32, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 4, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 1, + "gettime": 1710529242, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850101, + "exp": 320, + "level": 5, + "additional_max_level": 0, + "hp": 89, + "attack": 52, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710525579, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710703066, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850104, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 65, + "attack": 41, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100467, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710868802, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850202, + "exp": 840, + "level": 8, + "additional_max_level": 0, + "hp": 105, + "attack": 61, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530901, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890591, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712233180, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712312218, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100326, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710584901, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850402, + "exp": 2260, + "level": 12, + "additional_max_level": 0, + "hp": 121, + "attack": 76, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710530928, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878434, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850501, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711102963, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711840397, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10850503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 68, + "attack": 39, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711735481, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10930401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 42, + "attack": 28, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 3, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710521829, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950101, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890620, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950102, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710890667, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950103, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710798229, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950201, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712176002, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950203, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711103518, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950301, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 0, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712059495, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950302, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712059403, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950303, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712100140, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950401, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710779303, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950402, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 71, + "attack": 38, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712182130, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950403, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 64, + "attack": 42, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 1, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587545, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950501, + "exp": 1320, + "level": 10, + "additional_max_level": 0, + "hp": 108, + "attack": 73, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1710587509, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950502, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1711878573, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + }, + { + "chara_id": 10950503, + "exp": 0, + "level": 1, + "additional_max_level": 0, + "hp": 63, + "attack": 43, + "ex_ability_level": 1, + "ex_ability_2_level": 1, + "ability_1_level": 1, + "ability_2_level": 0, + "ability_3_level": 0, + "is_new": 1, + "skill_1_level": 1, + "skill_2_level": 0, + "burst_attack_level": 0, + "rarity": 5, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "combo_buildup_count": 0, + "is_unlock_edit_skill": 0, + "gettime": 1712184517, + "mana_circle_piece_id_list": [], + "is_temporary": 0, + "list_view_flag": 0 + } + ], + "dragon_list": [ + { + "dragon_id": 20030302, + "dragon_key_id": 6361930, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322799 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6361931, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322799 + }, + { + "dragon_id": 20050416, + "dragon_key_id": 6361937, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322810 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6361938, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322810 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6361939, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322810 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6361944, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322819 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6361945, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322819 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6361946, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322819 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6361950, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322830 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6361951, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322830 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6361952, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322830 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6361953, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322830 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6361954, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322830 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6361958, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322840 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6361959, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322840 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6361960, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322840 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6361964, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6361965, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6361966, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6361967, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6361968, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6361969, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6361970, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322857 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6361971, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322868 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6361972, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322879 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6361973, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322879 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6361974, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322879 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6361975, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322890 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6361976, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322890 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6361977, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322890 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6361978, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322905 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6361979, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322905 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6361980, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322905 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6361981, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322905 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6361992, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322948 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6361993, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322948 + }, + { + "dragon_id": 20050210, + "dragon_key_id": 6361994, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322948 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6361995, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322948 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6361996, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322960 + }, + { + "dragon_id": 20050319, + "dragon_key_id": 6361997, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322960 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6361982, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322924 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6361983, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322924 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6361984, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322924 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6361985, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322924 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6361986, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322924 + }, + { + "dragon_id": 20050521, + "dragon_key_id": 6361987, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322938 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6361988, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322938 + }, + { + "dragon_id": 20050314, + "dragon_key_id": 6361989, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322938 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6361990, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322938 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6361991, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322938 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6361999, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322971 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362000, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322971 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362001, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322971 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6361998, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322960 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362002, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322985 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362003, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322985 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362004, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322985 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362005, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322985 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362006, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322996 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362007, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322996 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362008, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322996 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362009, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712322996 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362010, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323007 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362011, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323007 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362012, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323007 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362013, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323017 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362014, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323017 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362015, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323017 + }, + { + "dragon_id": 20050415, + "dragon_key_id": 6362016, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323017 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362017, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323017 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362018, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323027 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362019, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323027 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362020, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323027 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362021, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323027 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362022, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323038 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362023, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323038 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362024, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323038 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362025, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323038 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362026, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323038 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362027, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323049 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362028, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323049 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362029, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323049 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362030, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323049 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362031, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323049 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362032, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323059 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362033, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323059 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362034, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323059 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362035, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323059 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362036, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362037, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20050416, + "dragon_key_id": 6362038, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362039, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362040, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362041, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362042, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323069 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362043, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323079 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362044, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323079 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362050, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323122 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362051, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323122 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362052, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323122 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362053, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323122 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362054, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323132 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362055, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323132 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362056, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362057, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362058, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362059, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6362060, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362061, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323142 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362062, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323155 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362045, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323091 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362046, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323091 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362047, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323109 + }, + { + "dragon_id": 20050524, + "dragon_key_id": 6362048, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323109 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362049, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323109 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362066, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323166 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362067, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323166 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362068, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323166 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362069, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323166 + }, + { + "dragon_id": 20050306, + "dragon_key_id": 6362070, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323166 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362071, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362072, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362073, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362074, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362075, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362076, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323177 + }, + { + "dragon_id": 20050403, + "dragon_key_id": 6362077, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323187 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362078, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323187 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362079, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323199 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362080, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323199 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362081, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362082, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362083, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362084, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362085, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362086, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323210 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362093, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323253 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362094, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323253 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362095, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323253 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362096, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323253 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362097, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323264 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362098, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323264 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362063, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323155 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362064, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323155 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362065, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323155 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362087, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323233 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362088, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323233 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362089, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323233 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362090, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323242 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362091, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323242 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362092, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323242 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362102, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323287 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362103, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323287 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362099, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323277 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362100, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323277 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362101, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323277 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362104, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323311 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362105, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323311 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362106, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323311 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362107, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323311 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362108, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323311 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362109, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323321 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362110, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323321 + }, + { + "dragon_id": 20050110, + "dragon_key_id": 6362111, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323330 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362112, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323330 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362113, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323330 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362114, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323330 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362115, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323330 + }, + { + "dragon_id": 20050413, + "dragon_key_id": 6362116, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362117, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20050313, + "dragon_key_id": 6362118, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362119, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362120, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362121, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323345 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362122, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323361 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362123, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323361 + }, + { + "dragon_id": 20050304, + "dragon_key_id": 6362124, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323361 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362125, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323371 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362126, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323371 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362127, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323380 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362128, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323380 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362129, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323380 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362130, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323380 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362134, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323399 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362135, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323399 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362136, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323399 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362131, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323389 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362132, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323389 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362133, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323389 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362137, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323415 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362138, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323426 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362139, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323436 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362140, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323436 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362141, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323453 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362142, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323453 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362143, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323453 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362144, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323453 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362145, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362146, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362147, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362148, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362149, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362150, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323463 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362151, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323474 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362152, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323474 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362153, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323474 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362154, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323484 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362155, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323484 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362156, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323484 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362162, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323505 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362163, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323505 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362164, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323505 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362165, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323505 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362157, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323495 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362158, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323495 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362159, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323495 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362160, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323495 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362161, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323495 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362166, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323505 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362182, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323546 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362183, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323546 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362184, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323546 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362185, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323546 + }, + { + "dragon_id": 20050209, + "dragon_key_id": 6362167, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323515 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362168, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323515 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362169, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323515 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362170, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323515 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362171, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323515 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362172, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323526 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362173, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323526 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362174, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323526 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362175, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323526 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362176, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362177, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20050404, + "dragon_key_id": 6362178, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362179, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362180, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362181, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323535 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362186, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323557 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362187, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323557 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362188, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323557 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362189, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323557 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362190, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323557 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362191, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323673 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362192, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323673 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362193, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323673 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362194, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323673 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362195, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323673 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362196, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323683 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362197, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323683 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362198, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323683 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362199, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323683 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362200, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323683 + }, + { + "dragon_id": 20040503, + "dragon_key_id": 6362201, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323694 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362202, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323694 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362203, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323703 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362204, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323703 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362205, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323703 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362206, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323703 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362207, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323713 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362208, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323713 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362209, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323713 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362210, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323723 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362211, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323723 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362227, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323762 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362228, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323762 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362229, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323762 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362230, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323762 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362231, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323762 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362232, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323771 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362233, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323771 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362234, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323771 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362235, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323781 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362236, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323781 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362237, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323781 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362212, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323732 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362213, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323732 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362214, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323732 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362216, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362217, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362218, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362219, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362220, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362221, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323742 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362222, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323752 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362223, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323752 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362224, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323752 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362225, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323752 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362226, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323752 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362240, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323791 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362241, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323791 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362242, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323791 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362238, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323781 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362239, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323781 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362243, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323800 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362244, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323800 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362245, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323800 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362246, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323800 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362252, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362253, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20050114, + "dragon_key_id": 6362254, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362255, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362256, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20050212, + "dragon_key_id": 6362257, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20050217, + "dragon_key_id": 6362258, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323819 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362264, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323839 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362265, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323839 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362266, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323839 + }, + { + "dragon_id": 20050401, + "dragon_key_id": 6362267, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323839 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362268, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323839 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362269, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323865 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362270, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323865 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362271, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323865 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362272, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323865 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362247, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323809 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362248, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323809 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362249, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323809 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362250, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323809 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362251, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323809 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362259, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323829 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362260, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323829 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6362261, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323829 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362262, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323829 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362263, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323829 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362273, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323932 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362274, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323932 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362275, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323932 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362276, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323932 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362277, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323932 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362278, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323942 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362279, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323942 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362280, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362281, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362282, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362283, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362284, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20050201, + "dragon_key_id": 6362285, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323952 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362286, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323962 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362287, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323962 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362288, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323962 + }, + { + "dragon_id": 20050108, + "dragon_key_id": 6362289, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323971 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362290, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323971 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362291, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323971 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362292, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323971 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362293, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323981 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362294, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323981 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362295, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323981 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362296, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323981 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362297, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323990 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362298, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323990 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362299, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323990 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362300, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323999 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362301, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712323999 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362302, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324008 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362303, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324008 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362304, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324008 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362305, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324008 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362306, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324017 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362307, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324017 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362308, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324017 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362407, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324027 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362408, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324027 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362409, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324027 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362410, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324027 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362411, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362412, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362413, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362414, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362415, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362416, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324036 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362417, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324046 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362418, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324046 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362419, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324046 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362630, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324083 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362613, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324055 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362614, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324055 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362615, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324055 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362616, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324055 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362617, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324055 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362618, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324065 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6362619, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324065 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362620, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324065 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362621, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324065 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362622, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324065 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362623, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362624, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20050510, + "dragon_key_id": 6362625, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362626, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20050405, + "dragon_key_id": 6362627, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362628, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362629, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324074 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362631, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324092 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362632, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324092 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362633, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324102 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362634, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324102 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362635, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324102 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362636, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324102 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362637, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324102 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362638, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20050314, + "dragon_key_id": 6362639, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362640, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362641, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362642, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362643, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362644, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324111 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362645, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324121 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362646, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324121 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362647, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324121 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362648, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324121 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362653, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324131 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362654, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324131 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362655, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324131 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362656, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324131 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362657, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324131 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362662, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324140 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362663, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324140 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362668, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324150 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362669, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324150 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362670, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324150 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362671, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324168 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362680, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324187 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362684, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324196 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362685, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324196 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362686, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324196 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362687, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324205 + }, + { + "dragon_id": 20050301, + "dragon_key_id": 6362688, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324205 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362692, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324224 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362689, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324215 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362690, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324215 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362691, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324215 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362693, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324224 + }, + { + "dragon_id": 20050114, + "dragon_key_id": 6362694, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324224 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362695, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324224 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362696, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324224 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362697, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324234 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362698, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324234 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362699, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324234 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362700, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324234 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362701, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362702, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362703, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362704, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362705, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362706, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324244 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362707, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324253 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362708, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324253 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362709, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324253 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362710, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324253 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362711, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324263 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362712, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324263 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362713, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324263 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362714, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324263 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362715, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324272 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362716, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324272 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362717, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324272 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362718, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324281 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362719, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324281 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362720, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324281 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362732, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324341 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362733, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324341 + }, + { + "dragon_id": 20050119, + "dragon_key_id": 6362734, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324341 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362735, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324351 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362736, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324351 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362737, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324351 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6362738, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324351 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362721, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324314 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362722, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324314 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362723, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324314 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362724, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324314 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362725, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324323 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362726, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324323 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362727, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324323 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362728, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324323 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362729, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324332 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362730, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324332 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362731, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324332 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362739, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324361 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362740, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324361 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362743, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324380 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362744, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324380 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362745, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324380 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362746, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324380 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362741, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324371 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362742, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324371 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362763, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324408 + }, + { + "dragon_id": 20030502, + "dragon_key_id": 6362764, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324408 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362765, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324408 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362774, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324420 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362775, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324420 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362752, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324389 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362753, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324389 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362754, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324389 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362755, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324389 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362756, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324389 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362761, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324399 + }, + { + "dragon_id": 20040303, + "dragon_key_id": 6362762, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324399 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362776, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324420 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362777, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324420 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362778, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324429 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362779, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324429 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362784, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324441 + }, + { + "dragon_id": 20040403, + "dragon_key_id": 6362785, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324441 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362786, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324441 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362787, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324441 + }, + { + "dragon_id": 20040102, + "dragon_key_id": 6362788, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324441 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362793, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324452 + }, + { + "dragon_id": 20030101, + "dragon_key_id": 6362794, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324452 + }, + { + "dragon_id": 20040103, + "dragon_key_id": 6362795, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324452 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362821, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324503 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362822, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324503 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362823, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324503 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362824, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324503 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362796, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324466 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362797, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324466 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362798, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324466 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362799, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324466 + }, + { + "dragon_id": 20030401, + "dragon_key_id": 6362804, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324475 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362805, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324475 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362806, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324475 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362811, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362812, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362813, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030501, + "dragon_key_id": 6362814, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362815, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362816, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324484 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362835, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324525 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362836, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324525 + }, + { + "dragon_id": 20050110, + "dragon_key_id": 6362837, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324525 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362829, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324513 + }, + { + "dragon_id": 20040402, + "dragon_key_id": 6362830, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324513 + }, + { + "dragon_id": 20030201, + "dragon_key_id": 6362838, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324525 + }, + { + "dragon_id": 20040502, + "dragon_key_id": 6362839, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324525 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362844, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362845, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362846, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20040405, + "dragon_key_id": 6362847, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362848, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362849, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324540 + }, + { + "dragon_id": 20040202, + "dragon_key_id": 6362852, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324549 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362853, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324549 + }, + { + "dragon_id": 20030303, + "dragon_key_id": 6362854, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324549 + }, + { + "dragon_id": 20040302, + "dragon_key_id": 6362855, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324549 + }, + { + "dragon_id": 20030301, + "dragon_key_id": 6362867, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324579 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362868, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324579 + }, + { + "dragon_id": 20030103, + "dragon_key_id": 6362869, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324579 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362871, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324602 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362872, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324602 + }, + { + "dragon_id": 20040203, + "dragon_key_id": 6362873, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324602 + }, + { + "dragon_id": 20030202, + "dragon_key_id": 6362874, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324611 + }, + { + "dragon_id": 20030503, + "dragon_key_id": 6362875, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324611 + }, + { + "dragon_id": 20030403, + "dragon_key_id": 6362876, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324611 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362880, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324632 + }, + { + "dragon_id": 20030203, + "dragon_key_id": 6362881, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324632 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362890, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324666 + }, + { + "dragon_id": 20030302, + "dragon_key_id": 6362860, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324558 + }, + { + "dragon_id": 20030402, + "dragon_key_id": 6362861, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324558 + }, + { + "dragon_id": 20030102, + "dragon_key_id": 6362862, + "level": 1, + "exp": 0, + "is_lock": 0, + "is_new": 1, + "skill_1_level": 1, + "ability_1_level": 1, + "ability_2_level": 1, + "limit_break_count": 0, + "hp_plus_count": 0, + "attack_plus_count": 0, + "status_plus_count": 0, + "get_time": 1712324558 + } + ], + "quest_list": [ + { + "quest_id": 100010101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710528293, + "last_weekly_reset_time": 1710528293, + "is_appear": 1, + "best_clear_time": 42.730003 + }, + { + "quest_id": 100010102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710528468, + "last_weekly_reset_time": 1710528468, + "is_appear": 1, + "best_clear_time": 43.388 + }, + { + "quest_id": 100010103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710528608, + "last_weekly_reset_time": 1710528608, + "is_appear": 1, + "best_clear_time": 20.524 + }, + { + "quest_id": 100010104, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710528733, + "last_weekly_reset_time": 1710528733, + "is_appear": 1, + "best_clear_time": 70.984 + }, + { + "quest_id": 100010105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710528950, + "last_weekly_reset_time": 1710528950, + "is_appear": 1, + "best_clear_time": 91.022 + }, + { + "quest_id": 100010106, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710529202, + "last_weekly_reset_time": 1710529202, + "is_appear": 1, + "best_clear_time": 11.154 + }, + { + "quest_id": 100010107, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710529028, + "last_weekly_reset_time": 1710529028, + "is_appear": 1, + "best_clear_time": 34.256 + }, + { + "quest_id": 100010108, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710529137, + "last_weekly_reset_time": 1710529137, + "is_appear": 1, + "best_clear_time": 9.682 + }, + { + "quest_id": 100020101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710585084, + "last_weekly_reset_time": 1710585084, + "is_appear": 1, + "best_clear_time": 16.473 + }, + { + "quest_id": 100020102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710585150, + "last_weekly_reset_time": 1710585150, + "is_appear": 1, + "best_clear_time": 10.456 + }, + { + "quest_id": 100020103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710586964, + "last_weekly_reset_time": 1710586964, + "is_appear": 1, + "best_clear_time": 11.859 + }, + { + "quest_id": 100020104, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710600870, + "last_weekly_reset_time": 1710600870, + "is_appear": 1, + "best_clear_time": 15.415001 + }, + { + "quest_id": 100020105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710600938, + "last_weekly_reset_time": 1710600938, + "is_appear": 1, + "best_clear_time": 11.72 + }, + { + "quest_id": 100020106, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710601339, + "last_weekly_reset_time": 1710601339, + "is_appear": 1, + "best_clear_time": 79.84901 + }, + { + "quest_id": 100020107, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710603433, + "last_weekly_reset_time": 1710603433, + "is_appear": 1, + "best_clear_time": 16.985 + }, + { + "quest_id": 100020108, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710689744, + "last_weekly_reset_time": 1710689744, + "is_appear": 1, + "best_clear_time": 65.665 + }, + { + "quest_id": 100020151, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710587407, + "last_weekly_reset_time": 1710587407, + "is_appear": 1, + "best_clear_time": 78.031006 + }, + { + "quest_id": 100020152, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710689563, + "last_weekly_reset_time": 1710689563, + "is_appear": 1, + "best_clear_time": 32.897003 + }, + { + "quest_id": 100030101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710780867, + "last_weekly_reset_time": 1710780867, + "is_appear": 1, + "best_clear_time": 16.312 + }, + { + "quest_id": 100030102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710780940, + "last_weekly_reset_time": 1710780940, + "is_appear": 1, + "best_clear_time": 14.811001 + }, + { + "quest_id": 100030103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710781114, + "last_weekly_reset_time": 1710781114, + "is_appear": 1, + "best_clear_time": 16.735 + }, + { + "quest_id": 100030104, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710781243, + "last_weekly_reset_time": 1710781243, + "is_appear": 1, + "best_clear_time": 51.54 + }, + { + "quest_id": 100030105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710781369, + "last_weekly_reset_time": 1710781369, + "is_appear": 1, + "best_clear_time": 72.767006 + }, + { + "quest_id": 100030106, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710781707, + "last_weekly_reset_time": 1710781707, + "is_appear": 1, + "best_clear_time": 11.500001 + }, + { + "quest_id": 100030107, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710781991, + "last_weekly_reset_time": 1710781991, + "is_appear": 1, + "best_clear_time": 70.299 + }, + { + "quest_id": 100030108, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710782261, + "last_weekly_reset_time": 1710782261, + "is_appear": 1, + "best_clear_time": 11.089001 + }, + { + "quest_id": 100030109, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710782325, + "last_weekly_reset_time": 1710782325, + "is_appear": 1, + "best_clear_time": 13.117001 + }, + { + "quest_id": 100030110, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710782500, + "last_weekly_reset_time": 1710782500, + "is_appear": 1, + "best_clear_time": 55.978004 + }, + { + "quest_id": 100040101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792513, + "last_weekly_reset_time": 1710792513, + "is_appear": 1, + "best_clear_time": 13.406001 + }, + { + "quest_id": 100040102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792576, + "last_weekly_reset_time": 1710792576, + "is_appear": 1, + "best_clear_time": 15.712001 + }, + { + "quest_id": 100040103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792637, + "last_weekly_reset_time": 1710792637, + "is_appear": 1, + "best_clear_time": 12.044001 + }, + { + "quest_id": 100040104, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792820, + "last_weekly_reset_time": 1710792820, + "is_appear": 1, + "best_clear_time": 17.307001 + }, + { + "quest_id": 100040105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792896, + "last_weekly_reset_time": 1710792896, + "is_appear": 1, + "best_clear_time": 22.166 + }, + { + "quest_id": 100040106, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710792994, + "last_weekly_reset_time": 1710792994, + "is_appear": 1, + "best_clear_time": 15.643001 + }, + { + "quest_id": 100040107, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710793570, + "last_weekly_reset_time": 1710793570, + "is_appear": 1, + "best_clear_time": 55.915 + }, + { + "quest_id": 100040108, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710793734, + "last_weekly_reset_time": 1710793734, + "is_appear": 1, + "best_clear_time": 21.423 + }, + { + "quest_id": 100040109, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710793801, + "last_weekly_reset_time": 1710793801, + "is_appear": 1, + "best_clear_time": 12.991 + }, + { + "quest_id": 100040110, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710793878, + "last_weekly_reset_time": 1710793878, + "is_appear": 1, + "best_clear_time": 16.618 + }, + { + "quest_id": 100040111, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710794050, + "last_weekly_reset_time": 1710794050, + "is_appear": 1, + "best_clear_time": 105.038 + }, + { + "quest_id": 100040112, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710794657, + "last_weekly_reset_time": 1710794657, + "is_appear": 1, + "best_clear_time": 19.92 + }, + { + "quest_id": 100040113, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710794910, + "last_weekly_reset_time": 1710794910, + "is_appear": 1, + "best_clear_time": 145.362 + }, + { + "quest_id": 100040151, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710793237, + "last_weekly_reset_time": 1710793237, + "is_appear": 1, + "best_clear_time": 24.608002 + }, + { + "quest_id": 100040152, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710794575, + "last_weekly_reset_time": 1710794575, + "is_appear": 1, + "best_clear_time": 24.445002 + }, + { + "quest_id": 100050101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710861626, + "last_weekly_reset_time": 1710861626, + "is_appear": 1, + "best_clear_time": 19.488 + }, + { + "quest_id": 100050102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710861698, + "last_weekly_reset_time": 1710861698, + "is_appear": 1, + "best_clear_time": 18.401001 + }, + { + "quest_id": 100050103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710861891, + "last_weekly_reset_time": 1710861891, + "is_appear": 1, + "best_clear_time": 23.740002 + }, + { + "quest_id": 100050104, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710862249, + "last_weekly_reset_time": 1710862249, + "is_appear": 1, + "best_clear_time": 122.633 + }, + { + "quest_id": 100050105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710869167, + "last_weekly_reset_time": 1710869167, + "is_appear": 1, + "best_clear_time": 14.242001 + }, + { + "quest_id": 100050106, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710869242, + "last_weekly_reset_time": 1710869242, + "is_appear": 1, + "best_clear_time": 15.005001 + }, + { + "quest_id": 100050107, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710869410, + "last_weekly_reset_time": 1710869410, + "is_appear": 1, + "best_clear_time": 110.564 + }, + { + "quest_id": 100050108, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710869831, + "last_weekly_reset_time": 1710869831, + "is_appear": 1, + "best_clear_time": 24.619001 + }, + { + "quest_id": 100050109, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710870071, + "last_weekly_reset_time": 1710870071, + "is_appear": 1, + "best_clear_time": 142.94101 + }, + { + "quest_id": 214040101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710804742, + "last_weekly_reset_time": 1710804742, + "is_appear": 1, + "best_clear_time": 53.512 + }, + { + "quest_id": 214040105, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710840911, + "last_weekly_reset_time": 1710840911, + "is_appear": 1, + "best_clear_time": 46.872 + }, + { + "quest_id": 214040201, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1710860920, + "last_weekly_reset_time": 1710860920, + "is_appear": 1, + "best_clear_time": 36.242 + }, + { + "quest_id": 214040202, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1711573048, + "last_weekly_reset_time": 1711573048, + "is_appear": 1, + "best_clear_time": 52.855003 + }, + { + "quest_id": 214050101, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1711706189, + "last_weekly_reset_time": 1711706189, + "is_appear": 1, + "best_clear_time": 71.624 + }, + { + "quest_id": 214050102, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1711706816, + "last_weekly_reset_time": 1711706816, + "is_appear": 1, + "best_clear_time": 59.360004 + }, + { + "quest_id": 214050103, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 1, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1711707378, + "last_weekly_reset_time": 1711707378, + "is_appear": 1, + "best_clear_time": 40.702003 + }, + { + "quest_id": 214050604, + "state": 3, + "is_mission_clear_1": 1, + "is_mission_clear_2": 1, + "is_mission_clear_3": 0, + "daily_play_count": 1, + "weekly_play_count": 1, + "play_count": 1, + "last_daily_reset_time": 1711708445, + "last_weekly_reset_time": 1711708445, + "is_appear": 1, + "best_clear_time": 315.41702 + } + ], + "quest_event_list": [ + { + "quest_event_id": 22100, + "daily_play_count": 4, + "weekly_play_count": 5, + "quest_bonus_receive_count": 0, + "quest_bonus_stack_count": 0, + "quest_bonus_stack_time": 0, + "quest_bonus_reserve_count": 0, + "quest_bonus_reserve_time": 0, + "last_daily_reset_time": 1711706189, + "last_weekly_reset_time": 1711573048 + } + ], + "material_list": [ + { + "material_id": 101001001, + "quantity": 2603 + }, + { + "material_id": 101001002, + "quantity": 60 + }, + { + "material_id": 101001003, + "quantity": 200 + }, + { + "material_id": 102001001, + "quantity": 53 + }, + { + "material_id": 102001002, + "quantity": 36 + }, + { + "material_id": 102001003, + "quantity": 31 + }, + { + "material_id": 103001003, + "quantity": 96 + }, + { + "material_id": 104001011, + "quantity": 526 + }, + { + "material_id": 104001012, + "quantity": 518 + }, + { + "material_id": 104001013, + "quantity": 3 + }, + { + "material_id": 104001021, + "quantity": 517 + }, + { + "material_id": 104001022, + "quantity": 487 + }, + { + "material_id": 104001023, + "quantity": 1 + }, + { + "material_id": 104001031, + "quantity": 452 + }, + { + "material_id": 104001032, + "quantity": 408 + }, + { + "material_id": 104001033, + "quantity": 3 + }, + { + "material_id": 104001041, + "quantity": 786 + }, + { + "material_id": 104001042, + "quantity": 746 + }, + { + "material_id": 104001051, + "quantity": 501 + }, + { + "material_id": 104001052, + "quantity": 457 + }, + { + "material_id": 104001053, + "quantity": 4 + }, + { + "material_id": 104002011, + "quantity": 9 + }, + { + "material_id": 104002021, + "quantity": 15 + }, + { + "material_id": 104002031, + "quantity": 6 + }, + { + "material_id": 104002032, + "quantity": 3 + }, + { + "material_id": 104002041, + "quantity": 45 + }, + { + "material_id": 104002042, + "quantity": 3 + }, + { + "material_id": 104002051, + "quantity": 9 + }, + { + "material_id": 104002052, + "quantity": 6 + }, + { + "material_id": 104003001, + "quantity": 100 + }, + { + "material_id": 104003002, + "quantity": 100 + }, + { + "material_id": 113001001, + "quantity": 0 + }, + { + "material_id": 113001002, + "quantity": 80 + }, + { + "material_id": 113001003, + "quantity": 95 + }, + { + "material_id": 125001001, + "quantity": 20 + }, + { + "material_id": 201005001, + "quantity": 114 + }, + { + "material_id": 201019011, + "quantity": 100 + }, + { + "material_id": 201019021, + "quantity": 100 + }, + { + "material_id": 201019031, + "quantity": 100 + }, + { + "material_id": 201019041, + "quantity": 100 + }, + { + "material_id": 201019051, + "quantity": 100 + }, + { + "material_id": 202001001, + "quantity": 1183 + }, + { + "material_id": 202001003, + "quantity": 6 + }, + { + "material_id": 202002001, + "quantity": 1127 + }, + { + "material_id": 202002003, + "quantity": 6 + }, + { + "material_id": 202003001, + "quantity": 654 + }, + { + "material_id": 202003002, + "quantity": 70 + }, + { + "material_id": 202004001, + "quantity": 2601 + }, + { + "material_id": 202004002, + "quantity": 20 + }, + { + "material_id": 202004004, + "quantity": 200 + }, + { + "material_id": 202005041, + "quantity": 5 + }, + { + "material_id": 202005061, + "quantity": 5 + }, + { + "material_id": 202005081, + "quantity": 5 + } + ], + "astral_item_list": [], + "weapon_list": [], + "album_weapon_list": [], + "amulet_list": [], + "weapon_skin_list": [ + { + "weapon_skin_id": 30139901, + "is_new": 0, + "gettime": 1710690192 + }, + { + "weapon_skin_id": 30150403, + "is_new": 0, + "gettime": 1710804773 + }, + { + "weapon_skin_id": 30550411, + "is_new": 0, + "gettime": 1711706214 + } + ], + "weapon_body_list": [ + { + "weapon_body_id": 30139901, + "buildup_count": 0, + "limit_break_count": 0, + "limit_over_count": 0, + "equipable_count": 1, + "additional_crest_slot_type_1_count": 0, + "additional_crest_slot_type_2_count": 0, + "additional_crest_slot_type_3_count": 0, + "additional_effect_count": 0, + "unlock_weapon_passive_ability_no_list": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "fort_passive_chara_weapon_buildup_count": 0, + "is_new": 0, + "gettime": 1710690192, + "skill_no": 0, + "skill_level": 0, + "ability_1_level": 0, + "ability_2_levell": 0 + } + ], + "weapon_passive_ability_list": [], + "ability_crest_list": [ + { + "ability_crest_id": 40020001, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710781708, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40020002, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710780940, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40020003, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710585150, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40020004, + "buildup_count": 2, + "limit_break_count": 2, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528498, + "ability_1_level": 2, + "ability_2_level": 2 + }, + { + "ability_crest_id": 40020005, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528293, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030001, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528950, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030002, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710782325, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030003, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710600870, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030010, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710780867, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030011, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710585150, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030012, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710603433, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030020, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710600938, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030021, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710529202, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030022, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710529137, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030031, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528468, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40030033, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710600870, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40040001, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710529028, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40040013, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710529028, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40040033, + "buildup_count": 1, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528733, + "ability_1_level": 1, + "ability_2_level": 1 + }, + { + "ability_crest_id": 40050001, + "buildup_count": 2, + "limit_break_count": 0, + "equipable_count": 1, + "hp_plus_count": 0, + "attack_plus_count": 0, + "is_favorite": 0, + "is_new": 0, + "gettime": 1710528468, + "ability_1_level": 1, + "ability_2_level": 1 + } + ], + "talisman_list": [], + "dragon_reliability_list": [ + { + "dragon_id": 20030101, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030102, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030103, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529507, + "last_contact_time": 1710529507 + }, + { + "dragon_id": 20030201, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529572, + "last_contact_time": 1710529572 + }, + { + "dragon_id": 20030202, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030203, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030301, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529542, + "last_contact_time": 1710529542 + }, + { + "dragon_id": 20030302, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529520, + "last_contact_time": 1710529520 + }, + { + "dragon_id": 20030303, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030401, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529507, + "last_contact_time": 1710529507 + }, + { + "dragon_id": 20030402, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529619, + "last_contact_time": 1710529619 + }, + { + "dragon_id": 20030403, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529531, + "last_contact_time": 1710529531 + }, + { + "dragon_id": 20030501, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030502, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20030503, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20040101, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710782538, + "last_contact_time": 1710782538 + }, + { + "dragon_id": 20040102, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529731, + "last_contact_time": 1710529731 + }, + { + "dragon_id": 20040103, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529520, + "last_contact_time": 1710529520 + }, + { + "dragon_id": 20040201, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710689773, + "last_contact_time": 1710689773 + }, + { + "dragon_id": 20040202, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529619, + "last_contact_time": 1710529619 + }, + { + "dragon_id": 20040203, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529895, + "last_contact_time": 1710529895 + }, + { + "dragon_id": 20040301, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710528766, + "last_contact_time": 1710528766 + }, + { + "dragon_id": 20040302, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529531, + "last_contact_time": 1710529531 + }, + { + "dragon_id": 20040303, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20040401, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710795179, + "last_contact_time": 1710795179 + }, + { + "dragon_id": 20040402, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529482, + "last_contact_time": 1710529482 + }, + { + "dragon_id": 20040403, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20040405, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530768, + "last_contact_time": 1710530768 + }, + { + "dragon_id": 20040501, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710870104, + "last_contact_time": 1710870104 + }, + { + "dragon_id": 20040502, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529482, + "last_contact_time": 1710529482 + }, + { + "dragon_id": 20040503, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20050101, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710804856, + "last_contact_time": 1710804856 + }, + { + "dragon_id": 20050104, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712181375, + "last_contact_time": 1712181375 + }, + { + "dragon_id": 20050106, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711572039, + "last_contact_time": 1711572039 + }, + { + "dragon_id": 20050107, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710798113, + "last_contact_time": 1710798113 + }, + { + "dragon_id": 20050108, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710804948, + "last_contact_time": 1710804948 + }, + { + "dragon_id": 20050109, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530537, + "last_contact_time": 1710530537 + }, + { + "dragon_id": 20050110, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711016244, + "last_contact_time": 1711016244 + }, + { + "dragon_id": 20050112, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529542, + "last_contact_time": 1710529542 + }, + { + "dragon_id": 20050113, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711877121, + "last_contact_time": 1711877121 + }, + { + "dragon_id": 20050114, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712175867, + "last_contact_time": 1712175867 + }, + { + "dragon_id": 20050116, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710531151, + "last_contact_time": 1710531151 + }, + { + "dragon_id": 20050117, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529895, + "last_contact_time": 1710529895 + }, + { + "dragon_id": 20050118, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712100861, + "last_contact_time": 1712100861 + }, + { + "dragon_id": 20050119, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710692715, + "last_contact_time": 1710692715 + }, + { + "dragon_id": 20050201, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710692656, + "last_contact_time": 1710692656 + }, + { + "dragon_id": 20050203, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711735535, + "last_contact_time": 1711735535 + }, + { + "dragon_id": 20050204, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20050205, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711878747, + "last_contact_time": 1711878747 + }, + { + "dragon_id": 20050207, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711905686, + "last_contact_time": 1711905686 + }, + { + "dragon_id": 20050208, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530768, + "last_contact_time": 1710530768 + }, + { + "dragon_id": 20050209, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711572402, + "last_contact_time": 1711572402 + }, + { + "dragon_id": 20050210, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530928, + "last_contact_time": 1710530928 + }, + { + "dragon_id": 20050211, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711103369, + "last_contact_time": 1711103369 + }, + { + "dragon_id": 20050212, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1711102300, + "last_contact_time": 1712274410 + }, + { + "dragon_id": 20050213, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711101822, + "last_contact_time": 1711101822 + }, + { + "dragon_id": 20050214, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711103106, + "last_contact_time": 1711103106 + }, + { + "dragon_id": 20050216, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1710703113, + "last_contact_time": 1712312854 + }, + { + "dragon_id": 20050217, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530014, + "last_contact_time": 1710530014 + }, + { + "dragon_id": 20050301, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710868599, + "last_contact_time": 1710868599 + }, + { + "dragon_id": 20050304, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711572654, + "last_contact_time": 1711572654 + }, + { + "dragon_id": 20050305, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712175921, + "last_contact_time": 1712175921 + }, + { + "dragon_id": 20050306, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529919, + "last_contact_time": 1710529919 + }, + { + "dragon_id": 20050308, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710692280, + "last_contact_time": 1710692280 + }, + { + "dragon_id": 20050309, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530405, + "last_contact_time": 1710530405 + }, + { + "dragon_id": 20050311, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710703514, + "last_contact_time": 1710703514 + }, + { + "dragon_id": 20050312, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530490, + "last_contact_time": 1710530490 + }, + { + "dragon_id": 20050313, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712183244, + "last_contact_time": 1712183244 + }, + { + "dragon_id": 20050314, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710779425, + "last_contact_time": 1710779425 + }, + { + "dragon_id": 20050315, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710890538, + "last_contact_time": 1710890538 + }, + { + "dragon_id": 20050316, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529919, + "last_contact_time": 1710529919 + }, + { + "dragon_id": 20050317, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710525579, + "last_contact_time": 1710525579 + }, + { + "dragon_id": 20050318, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711877216, + "last_contact_time": 1711877216 + }, + { + "dragon_id": 20050319, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712177528, + "last_contact_time": 1712177528 + }, + { + "dragon_id": 20050320, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1710692280, + "last_contact_time": 1710861389 + }, + { + "dragon_id": 20050321, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712100409, + "last_contact_time": 1712100409 + }, + { + "dragon_id": 20050401, + "reliability_level": 16, + "reliability_total_exp": 8100, + "gettime": 1710525579, + "last_contact_time": 1711876919 + }, + { + "dragon_id": 20050403, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711905686, + "last_contact_time": 1711905686 + }, + { + "dragon_id": 20050404, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711102238, + "last_contact_time": 1711102238 + }, + { + "dragon_id": 20050405, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530062, + "last_contact_time": 1710530062 + }, + { + "dragon_id": 20050407, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1711103310, + "last_contact_time": 1711363645 + }, + { + "dragon_id": 20050408, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710584863, + "last_contact_time": 1710584863 + }, + { + "dragon_id": 20050409, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1710798229, + "last_contact_time": 1711574002 + }, + { + "dragon_id": 20050410, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710804991, + "last_contact_time": 1710804991 + }, + { + "dragon_id": 20050411, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530338, + "last_contact_time": 1710530338 + }, + { + "dragon_id": 20050412, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712099655, + "last_contact_time": 1712099655 + }, + { + "dragon_id": 20050413, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711878460, + "last_contact_time": 1711878460 + }, + { + "dragon_id": 20050414, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711878154, + "last_contact_time": 1711878154 + }, + { + "dragon_id": 20050415, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1711735453, + "last_contact_time": 1712057253 + }, + { + "dragon_id": 20050416, + "reliability_level": 9, + "reliability_total_exp": 2000, + "gettime": 1710868370, + "last_contact_time": 1711672169 + }, + { + "dragon_id": 20050418, + "reliability_level": 12, + "reliability_total_exp": 3800, + "gettime": 1710529867, + "last_contact_time": 1711704880 + }, + { + "dragon_id": 20050419, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712176080, + "last_contact_time": 1712176080 + }, + { + "dragon_id": 20050501, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712308858, + "last_contact_time": 1712308858 + }, + { + "dragon_id": 20050508, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710702984, + "last_contact_time": 1710702984 + }, + { + "dragon_id": 20050509, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712059359, + "last_contact_time": 1712059359 + }, + { + "dragon_id": 20050510, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711015973, + "last_contact_time": 1711015973 + }, + { + "dragon_id": 20050513, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710587874, + "last_contact_time": 1710587874 + }, + { + "dragon_id": 20050514, + "reliability_level": 12, + "reliability_total_exp": 4000, + "gettime": 1710530370, + "last_contact_time": 1710586572 + }, + { + "dragon_id": 20050516, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710530994, + "last_contact_time": 1710530994 + }, + { + "dragon_id": 20050518, + "reliability_level": 11, + "reliability_total_exp": 3200, + "gettime": 1710779360, + "last_contact_time": 1710782910 + }, + { + "dragon_id": 20050519, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710779360, + "last_contact_time": 1710779360 + }, + { + "dragon_id": 20050520, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710798189, + "last_contact_time": 1710798189 + }, + { + "dragon_id": 20050521, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712100730, + "last_contact_time": 1712100730 + }, + { + "dragon_id": 20050522, + "reliability_level": 30, + "reliability_total_exp": 36300, + "gettime": 1710530123, + "last_contact_time": 1710530123 + }, + { + "dragon_id": 20050523, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1712100558, + "last_contact_time": 1712100558 + }, + { + "dragon_id": 20050524, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1711735549, + "last_contact_time": 1711735549 + }, + { + "dragon_id": 20050525, + "reliability_level": 1, + "reliability_total_exp": 0, + "gettime": 1710529838, + "last_contact_time": 1710529838 + } + ], + "dragon_gift_list": [ + { + "dragon_gift_id": 30001, + "quantity": 6 + } + ], + "album_dragon_list": [], + "equip_stamp_list": [ + { + "slot": 1, + "stamp_id": 0 + }, + { + "slot": 2, + "stamp_id": 0 + }, + { + "slot": 3, + "stamp_id": 0 + }, + { + "slot": 4, + "stamp_id": 0 + }, + { + "slot": 5, + "stamp_id": 0 + }, + { + "slot": 6, + "stamp_id": 0 + }, + { + "slot": 7, + "stamp_id": 0 + }, + { + "slot": 8, + "stamp_id": 0 + }, + { + "slot": 9, + "stamp_id": 0 + }, + { + "slot": 10, + "stamp_id": 0 + }, + { + "slot": 11, + "stamp_id": 0 + }, + { + "slot": 12, + "stamp_id": 0 + }, + { + "slot": 13, + "stamp_id": 0 + }, + { + "slot": 14, + "stamp_id": 0 + }, + { + "slot": 15, + "stamp_id": 0 + }, + { + "slot": 16, + "stamp_id": 0 + }, + { + "slot": 17, + "stamp_id": 0 + }, + { + "slot": 18, + "stamp_id": 0 + }, + { + "slot": 19, + "stamp_id": 0 + }, + { + "slot": 20, + "stamp_id": 0 + }, + { + "slot": 21, + "stamp_id": 0 + }, + { + "slot": 22, + "stamp_id": 0 + }, + { + "slot": 23, + "stamp_id": 0 + }, + { + "slot": 24, + "stamp_id": 0 + }, + { + "slot": 25, + "stamp_id": 0 + }, + { + "slot": 26, + "stamp_id": 0 + }, + { + "slot": 27, + "stamp_id": 0 + }, + { + "slot": 28, + "stamp_id": 0 + }, + { + "slot": 29, + "stamp_id": 0 + }, + { + "slot": 30, + "stamp_id": 0 + }, + { + "slot": 31, + "stamp_id": 0 + }, + { + "slot": 32, + "stamp_id": 0 + } + ], + "unit_story_list": [ + { + "unit_story_id": 100001081, + "is_read": 0 + }, + { + "unit_story_id": 100001141, + "is_read": 0 + }, + { + "unit_story_id": 100002011, + "is_read": 0 + }, + { + "unit_story_id": 100002061, + "is_read": 0 + }, + { + "unit_story_id": 100002131, + "is_read": 0 + }, + { + "unit_story_id": 100002151, + "is_read": 0 + }, + { + "unit_story_id": 100003011, + "is_read": 0 + }, + { + "unit_story_id": 100003021, + "is_read": 0 + }, + { + "unit_story_id": 100003071, + "is_read": 0 + }, + { + "unit_story_id": 100003101, + "is_read": 0 + }, + { + "unit_story_id": 100004011, + "is_read": 0 + }, + { + "unit_story_id": 100004041, + "is_read": 0 + }, + { + "unit_story_id": 100004101, + "is_read": 0 + }, + { + "unit_story_id": 100004191, + "is_read": 0 + }, + { + "unit_story_id": 100005021, + "is_read": 0 + }, + { + "unit_story_id": 100005081, + "is_read": 0 + }, + { + "unit_story_id": 100006011, + "is_read": 0 + }, + { + "unit_story_id": 100006031, + "is_read": 0 + }, + { + "unit_story_id": 100006091, + "is_read": 0 + }, + { + "unit_story_id": 100006111, + "is_read": 0 + }, + { + "unit_story_id": 100007071, + "is_read": 0 + }, + { + "unit_story_id": 100007101, + "is_read": 0 + }, + { + "unit_story_id": 100008041, + "is_read": 0 + }, + { + "unit_story_id": 100009081, + "is_read": 0 + }, + { + "unit_story_id": 100010041, + "is_read": 0 + }, + { + "unit_story_id": 100010071, + "is_read": 0 + }, + { + "unit_story_id": 100010101, + "is_read": 0 + }, + { + "unit_story_id": 100013041, + "is_read": 0 + }, + { + "unit_story_id": 100013061, + "is_read": 0 + }, + { + "unit_story_id": 100014031, + "is_read": 0 + }, + { + "unit_story_id": 100015051, + "is_read": 0 + }, + { + "unit_story_id": 100015081, + "is_read": 0 + }, + { + "unit_story_id": 100016031, + "is_read": 0 + }, + { + "unit_story_id": 100017031, + "is_read": 0 + }, + { + "unit_story_id": 100018021, + "is_read": 0 + }, + { + "unit_story_id": 100018071, + "is_read": 0 + }, + { + "unit_story_id": 100029021, + "is_read": 0 + }, + { + "unit_story_id": 100029031, + "is_read": 0 + }, + { + "unit_story_id": 100029041, + "is_read": 0 + }, + { + "unit_story_id": 100031031, + "is_read": 0 + }, + { + "unit_story_id": 100032041, + "is_read": 0 + }, + { + "unit_story_id": 100032071, + "is_read": 0 + }, + { + "unit_story_id": 100039031, + "is_read": 0 + }, + { + "unit_story_id": 100042021, + "is_read": 0 + }, + { + "unit_story_id": 100044021, + "is_read": 0 + }, + { + "unit_story_id": 100045011, + "is_read": 0 + }, + { + "unit_story_id": 100054011, + "is_read": 0 + }, + { + "unit_story_id": 100054021, + "is_read": 0 + }, + { + "unit_story_id": 110001011, + "is_read": 0 + }, + { + "unit_story_id": 110002011, + "is_read": 0 + }, + { + "unit_story_id": 110002021, + "is_read": 0 + }, + { + "unit_story_id": 110003011, + "is_read": 0 + }, + { + "unit_story_id": 110003021, + "is_read": 0 + }, + { + "unit_story_id": 110004011, + "is_read": 0 + }, + { + "unit_story_id": 110004021, + "is_read": 0 + }, + { + "unit_story_id": 110005011, + "is_read": 0 + }, + { + "unit_story_id": 110006011, + "is_read": 0 + }, + { + "unit_story_id": 110007011, + "is_read": 0 + }, + { + "unit_story_id": 110007021, + "is_read": 0 + }, + { + "unit_story_id": 110008011, + "is_read": 0 + }, + { + "unit_story_id": 110009011, + "is_read": 0 + }, + { + "unit_story_id": 110009021, + "is_read": 0 + }, + { + "unit_story_id": 110010011, + "is_read": 0 + }, + { + "unit_story_id": 110010021, + "is_read": 0 + }, + { + "unit_story_id": 110011011, + "is_read": 0 + }, + { + "unit_story_id": 110011021, + "is_read": 0 + }, + { + "unit_story_id": 110012011, + "is_read": 0 + }, + { + "unit_story_id": 110013011, + "is_read": 0 + }, + { + "unit_story_id": 110014011, + "is_read": 0 + }, + { + "unit_story_id": 110015011, + "is_read": 0 + }, + { + "unit_story_id": 110015021, + "is_read": 0 + }, + { + "unit_story_id": 110016011, + "is_read": 0 + }, + { + "unit_story_id": 110017011, + "is_read": 0 + }, + { + "unit_story_id": 110018011, + "is_read": 0 + }, + { + "unit_story_id": 110018021, + "is_read": 0 + }, + { + "unit_story_id": 110019011, + "is_read": 0 + }, + { + "unit_story_id": 110020011, + "is_read": 0 + }, + { + "unit_story_id": 110021011, + "is_read": 0 + }, + { + "unit_story_id": 110021031, + "is_read": 0 + }, + { + "unit_story_id": 110022011, + "is_read": 0 + }, + { + "unit_story_id": 110022021, + "is_read": 0 + }, + { + "unit_story_id": 110023011, + "is_read": 0 + }, + { + "unit_story_id": 110024011, + "is_read": 0 + }, + { + "unit_story_id": 110025011, + "is_read": 0 + }, + { + "unit_story_id": 110026011, + "is_read": 0 + }, + { + "unit_story_id": 110027011, + "is_read": 0 + }, + { + "unit_story_id": 110027021, + "is_read": 0 + }, + { + "unit_story_id": 110028011, + "is_read": 0 + }, + { + "unit_story_id": 110029011, + "is_read": 0 + }, + { + "unit_story_id": 110029021, + "is_read": 0 + }, + { + "unit_story_id": 110030011, + "is_read": 0 + }, + { + "unit_story_id": 110031011, + "is_read": 0 + }, + { + "unit_story_id": 110032011, + "is_read": 0 + }, + { + "unit_story_id": 110032021, + "is_read": 0 + }, + { + "unit_story_id": 110033011, + "is_read": 0 + }, + { + "unit_story_id": 110034011, + "is_read": 0 + }, + { + "unit_story_id": 110035011, + "is_read": 0 + }, + { + "unit_story_id": 110036011, + "is_read": 0 + }, + { + "unit_story_id": 110036031, + "is_read": 0 + }, + { + "unit_story_id": 110037011, + "is_read": 0 + }, + { + "unit_story_id": 110038011, + "is_read": 0 + }, + { + "unit_story_id": 110038021, + "is_read": 0 + }, + { + "unit_story_id": 110039011, + "is_read": 0 + }, + { + "unit_story_id": 110040011, + "is_read": 0 + }, + { + "unit_story_id": 110041011, + "is_read": 0 + }, + { + "unit_story_id": 110042011, + "is_read": 0 + }, + { + "unit_story_id": 110042021, + "is_read": 0 + }, + { + "unit_story_id": 110043011, + "is_read": 0 + }, + { + "unit_story_id": 110043021, + "is_read": 0 + }, + { + "unit_story_id": 110044011, + "is_read": 0 + }, + { + "unit_story_id": 110045011, + "is_read": 0 + }, + { + "unit_story_id": 110046011, + "is_read": 0 + }, + { + "unit_story_id": 110047011, + "is_read": 0 + }, + { + "unit_story_id": 110047021, + "is_read": 0 + }, + { + "unit_story_id": 110048011, + "is_read": 0 + }, + { + "unit_story_id": 110049011, + "is_read": 0 + }, + { + "unit_story_id": 110049021, + "is_read": 0 + }, + { + "unit_story_id": 110050011, + "is_read": 0 + }, + { + "unit_story_id": 110050021, + "is_read": 0 + }, + { + "unit_story_id": 110051011, + "is_read": 0 + }, + { + "unit_story_id": 110052011, + "is_read": 0 + }, + { + "unit_story_id": 110052031, + "is_read": 0 + }, + { + "unit_story_id": 110053011, + "is_read": 0 + }, + { + "unit_story_id": 110053021, + "is_read": 0 + }, + { + "unit_story_id": 110053031, + "is_read": 0 + }, + { + "unit_story_id": 110054011, + "is_read": 0 + }, + { + "unit_story_id": 110056011, + "is_read": 0 + }, + { + "unit_story_id": 110058011, + "is_read": 0 + }, + { + "unit_story_id": 110059011, + "is_read": 0 + }, + { + "unit_story_id": 110059021, + "is_read": 0 + }, + { + "unit_story_id": 110063011, + "is_read": 0 + }, + { + "unit_story_id": 110064011, + "is_read": 0 + }, + { + "unit_story_id": 110064021, + "is_read": 0 + }, + { + "unit_story_id": 110066011, + "is_read": 0 + }, + { + "unit_story_id": 110066021, + "is_read": 0 + }, + { + "unit_story_id": 110067011, + "is_read": 0 + }, + { + "unit_story_id": 110252011, + "is_read": 0 + }, + { + "unit_story_id": 110252021, + "is_read": 0 + }, + { + "unit_story_id": 110253011, + "is_read": 0 + }, + { + "unit_story_id": 110254011, + "is_read": 0 + }, + { + "unit_story_id": 110255021, + "is_read": 0 + }, + { + "unit_story_id": 110256011, + "is_read": 0 + }, + { + "unit_story_id": 110257011, + "is_read": 0 + }, + { + "unit_story_id": 110257021, + "is_read": 0 + }, + { + "unit_story_id": 110258011, + "is_read": 0 + }, + { + "unit_story_id": 110259011, + "is_read": 0 + }, + { + "unit_story_id": 110260011, + "is_read": 0 + }, + { + "unit_story_id": 110261011, + "is_read": 0 + }, + { + "unit_story_id": 110263011, + "is_read": 0 + }, + { + "unit_story_id": 110264011, + "is_read": 0 + }, + { + "unit_story_id": 110265011, + "is_read": 0 + }, + { + "unit_story_id": 110266011, + "is_read": 0 + }, + { + "unit_story_id": 110267011, + "is_read": 0 + }, + { + "unit_story_id": 110268011, + "is_read": 0 + }, + { + "unit_story_id": 110269011, + "is_read": 0 + }, + { + "unit_story_id": 110269021, + "is_read": 0 + }, + { + "unit_story_id": 110270021, + "is_read": 0 + }, + { + "unit_story_id": 110271011, + "is_read": 0 + }, + { + "unit_story_id": 110272011, + "is_read": 0 + }, + { + "unit_story_id": 110274011, + "is_read": 0 + }, + { + "unit_story_id": 110275011, + "is_read": 0 + }, + { + "unit_story_id": 110276011, + "is_read": 0 + }, + { + "unit_story_id": 110280011, + "is_read": 0 + }, + { + "unit_story_id": 110281011, + "is_read": 0 + }, + { + "unit_story_id": 110281021, + "is_read": 0 + }, + { + "unit_story_id": 110285011, + "is_read": 0 + }, + { + "unit_story_id": 110291011, + "is_read": 0 + }, + { + "unit_story_id": 110295011, + "is_read": 0 + }, + { + "unit_story_id": 110296011, + "is_read": 0 + }, + { + "unit_story_id": 110296021, + "is_read": 0 + }, + { + "unit_story_id": 110299021, + "is_read": 0 + }, + { + "unit_story_id": 110300011, + "is_read": 0 + }, + { + "unit_story_id": 110301011, + "is_read": 0 + }, + { + "unit_story_id": 110301021, + "is_read": 0 + }, + { + "unit_story_id": 110302011, + "is_read": 0 + }, + { + "unit_story_id": 110302041, + "is_read": 0 + }, + { + "unit_story_id": 110304011, + "is_read": 0 + }, + { + "unit_story_id": 110305011, + "is_read": 0 + }, + { + "unit_story_id": 110306011, + "is_read": 0 + }, + { + "unit_story_id": 110307011, + "is_read": 0 + }, + { + "unit_story_id": 110307021, + "is_read": 0 + }, + { + "unit_story_id": 110310011, + "is_read": 0 + }, + { + "unit_story_id": 110310021, + "is_read": 0 + }, + { + "unit_story_id": 110311011, + "is_read": 0 + }, + { + "unit_story_id": 110313031, + "is_read": 0 + }, + { + "unit_story_id": 110315011, + "is_read": 0 + }, + { + "unit_story_id": 110316011, + "is_read": 0 + }, + { + "unit_story_id": 110317011, + "is_read": 0 + }, + { + "unit_story_id": 110318011, + "is_read": 0 + }, + { + "unit_story_id": 110318021, + "is_read": 0 + }, + { + "unit_story_id": 110319011, + "is_read": 0 + }, + { + "unit_story_id": 110322011, + "is_read": 0 + }, + { + "unit_story_id": 110323011, + "is_read": 0 + }, + { + "unit_story_id": 110325011, + "is_read": 0 + }, + { + "unit_story_id": 110326011, + "is_read": 0 + }, + { + "unit_story_id": 110327011, + "is_read": 0 + }, + { + "unit_story_id": 110328011, + "is_read": 0 + }, + { + "unit_story_id": 110333011, + "is_read": 0 + }, + { + "unit_story_id": 110334021, + "is_read": 0 + }, + { + "unit_story_id": 110335011, + "is_read": 0 + }, + { + "unit_story_id": 110335021, + "is_read": 0 + }, + { + "unit_story_id": 110336011, + "is_read": 0 + }, + { + "unit_story_id": 110337011, + "is_read": 0 + }, + { + "unit_story_id": 110337031, + "is_read": 0 + }, + { + "unit_story_id": 110340011, + "is_read": 0 + }, + { + "unit_story_id": 110340021, + "is_read": 0 + }, + { + "unit_story_id": 110341011, + "is_read": 0 + }, + { + "unit_story_id": 110341031, + "is_read": 0 + }, + { + "unit_story_id": 110342031, + "is_read": 0 + }, + { + "unit_story_id": 110343011, + "is_read": 0 + }, + { + "unit_story_id": 110344011, + "is_read": 0 + }, + { + "unit_story_id": 110345011, + "is_read": 0 + }, + { + "unit_story_id": 110345031, + "is_read": 0 + }, + { + "unit_story_id": 110346011, + "is_read": 0 + }, + { + "unit_story_id": 110347011, + "is_read": 0 + }, + { + "unit_story_id": 110349011, + "is_read": 0 + }, + { + "unit_story_id": 110349041, + "is_read": 0 + }, + { + "unit_story_id": 110350011, + "is_read": 0 + }, + { + "unit_story_id": 110350021, + "is_read": 0 + }, + { + "unit_story_id": 110351011, + "is_read": 0 + }, + { + "unit_story_id": 110352011, + "is_read": 0 + }, + { + "unit_story_id": 110352031, + "is_read": 0 + }, + { + "unit_story_id": 110353011, + "is_read": 0 + }, + { + "unit_story_id": 110355011, + "is_read": 0 + }, + { + "unit_story_id": 110356011, + "is_read": 0 + }, + { + "unit_story_id": 110357011, + "is_read": 0 + }, + { + "unit_story_id": 110358011, + "is_read": 0 + }, + { + "unit_story_id": 110359011, + "is_read": 0 + }, + { + "unit_story_id": 110360011, + "is_read": 0 + }, + { + "unit_story_id": 110361011, + "is_read": 0 + }, + { + "unit_story_id": 110362011, + "is_read": 0 + }, + { + "unit_story_id": 110363011, + "is_read": 0 + }, + { + "unit_story_id": 110364011, + "is_read": 0 + }, + { + "unit_story_id": 110365011, + "is_read": 0 + }, + { + "unit_story_id": 110365031, + "is_read": 0 + }, + { + "unit_story_id": 110366011, + "is_read": 0 + }, + { + "unit_story_id": 110367011, + "is_read": 0 + }, + { + "unit_story_id": 110367031, + "is_read": 0 + }, + { + "unit_story_id": 110368011, + "is_read": 0 + }, + { + "unit_story_id": 110370011, + "is_read": 0 + }, + { + "unit_story_id": 110371011, + "is_read": 0 + }, + { + "unit_story_id": 110377011, + "is_read": 0 + }, + { + "unit_story_id": 110378011, + "is_read": 0 + }, + { + "unit_story_id": 110379011, + "is_read": 0 + }, + { + "unit_story_id": 110381011, + "is_read": 0 + }, + { + "unit_story_id": 110382011, + "is_read": 0 + }, + { + "unit_story_id": 110383011, + "is_read": 0 + }, + { + "unit_story_id": 110384011, + "is_read": 0 + }, + { + "unit_story_id": 110385011, + "is_read": 0 + }, + { + "unit_story_id": 110386011, + "is_read": 0 + }, + { + "unit_story_id": 110388011, + "is_read": 0 + }, + { + "unit_story_id": 110389011, + "is_read": 0 + }, + { + "unit_story_id": 110391011, + "is_read": 0 + }, + { + "unit_story_id": 110392011, + "is_read": 0 + }, + { + "unit_story_id": 110393011, + "is_read": 0 + }, + { + "unit_story_id": 110394011, + "is_read": 0 + }, + { + "unit_story_id": 110395011, + "is_read": 0 + }, + { + "unit_story_id": 110396011, + "is_read": 0 + }, + { + "unit_story_id": 110397011, + "is_read": 0 + }, + { + "unit_story_id": 110398011, + "is_read": 0 + }, + { + "unit_story_id": 110399011, + "is_read": 0 + }, + { + "unit_story_id": 110401011, + "is_read": 0 + }, + { + "unit_story_id": 110402011, + "is_read": 0 + }, + { + "unit_story_id": 110404011, + "is_read": 0 + }, + { + "unit_story_id": 210020011, + "is_read": 0 + }, + { + "unit_story_id": 210020012, + "is_read": 0 + }, + { + "unit_story_id": 210043011, + "is_read": 0 + }, + { + "unit_story_id": 210094011, + "is_read": 0 + }, + { + "unit_story_id": 210112011, + "is_read": 0 + }, + { + "unit_story_id": 210126011, + "is_read": 0 + }, + { + "unit_story_id": 210130011, + "is_read": 0 + }, + { + "unit_story_id": 210154011, + "is_read": 0 + }, + { + "unit_story_id": 210156011, + "is_read": 0 + }, + { + "unit_story_id": 210158011, + "is_read": 0 + }, + { + "unit_story_id": 210164011, + "is_read": 0 + }, + { + "unit_story_id": 210169011, + "is_read": 0 + } + ], + "castle_story_list": [], + "quest_story_list": [ + { + "quest_story_id": 1000100, + "state": 1 + }, + { + "quest_story_id": 1000101, + "state": 1 + }, + { + "quest_story_id": 1000103, + "state": 1 + }, + { + "quest_story_id": 1000104, + "state": 1 + }, + { + "quest_story_id": 1000106, + "state": 1 + }, + { + "quest_story_id": 1000107, + "state": 1 + }, + { + "quest_story_id": 1000109, + "state": 1 + }, + { + "quest_story_id": 1000110, + "state": 1 + }, + { + "quest_story_id": 1000111, + "state": 1 + }, + { + "quest_story_id": 1000201, + "state": 1 + }, + { + "quest_story_id": 1000202, + "state": 1 + }, + { + "quest_story_id": 1000203, + "state": 1 + }, + { + "quest_story_id": 1000204, + "state": 1 + }, + { + "quest_story_id": 1000205, + "state": 1 + }, + { + "quest_story_id": 1000206, + "state": 1 + }, + { + "quest_story_id": 1000207, + "state": 1 + }, + { + "quest_story_id": 1000208, + "state": 1 + }, + { + "quest_story_id": 1000210, + "state": 1 + }, + { + "quest_story_id": 1000301, + "state": 1 + }, + { + "quest_story_id": 1000302, + "state": 1 + }, + { + "quest_story_id": 1000305, + "state": 1 + }, + { + "quest_story_id": 1000306, + "state": 1 + }, + { + "quest_story_id": 1000309, + "state": 1 + }, + { + "quest_story_id": 1000311, + "state": 1 + }, + { + "quest_story_id": 1000401, + "state": 1 + }, + { + "quest_story_id": 1000402, + "state": 1 + }, + { + "quest_story_id": 1000403, + "state": 1 + }, + { + "quest_story_id": 1000404, + "state": 1 + }, + { + "quest_story_id": 1000406, + "state": 1 + }, + { + "quest_story_id": 1000408, + "state": 1 + }, + { + "quest_story_id": 1000409, + "state": 1 + }, + { + "quest_story_id": 1000411, + "state": 1 + }, + { + "quest_story_id": 1000412, + "state": 1 + }, + { + "quest_story_id": 1000501, + "state": 1 + }, + { + "quest_story_id": 1000502, + "state": 1 + }, + { + "quest_story_id": 1000503, + "state": 1 + }, + { + "quest_story_id": 1000505, + "state": 1 + }, + { + "quest_story_id": 1000507, + "state": 1 + }, + { + "quest_story_id": 1000509, + "state": 1 + }, + { + "quest_story_id": 2081601, + "state": 1 + }, + { + "quest_story_id": 2140401, + "state": 1 + }, + { + "quest_story_id": 2140402, + "state": 1 + }, + { + "quest_story_id": 2140403, + "state": 1 + }, + { + "quest_story_id": 2140404, + "state": 1 + }, + { + "quest_story_id": 2140405, + "state": 1 + }, + { + "quest_story_id": 2140406, + "state": 1 + }, + { + "quest_story_id": 2140407, + "state": 1 + }, + { + "quest_story_id": 2140408, + "state": 1 + }, + { + "quest_story_id": 2140409, + "state": 1 + }, + { + "quest_story_id": 2140501, + "state": 1 + }, + { + "quest_story_id": 2140502, + "state": 1 + }, + { + "quest_story_id": 2140503, + "state": 1 + }, + { + "quest_story_id": 2140504, + "state": 1 + }, + { + "quest_story_id": 2140505, + "state": 1 + }, + { + "quest_story_id": 2140506, + "state": 1 + }, + { + "quest_story_id": 2140507, + "state": 1 + }, + { + "quest_story_id": 2140508, + "state": 1 + }, + { + "quest_story_id": 2140509, + "state": 1 + }, + { + "quest_story_id": 2140510, + "state": 1 + }, + { + "quest_story_id": 2140511, + "state": 1 + }, + { + "quest_story_id": 2140512, + "state": 1 + }, + { + "quest_story_id": 2160101, + "state": 1 + } + ], + "quest_treasure_list": [ + { + "quest_treasure_id": 102101 + }, + { + "quest_treasure_id": 102102 + }, + { + "quest_treasure_id": 104101 + }, + { + "quest_treasure_id": 104102 + } + ], + "quest_wall_list": [ + { + "wall_id": 216010001, + "wall_level": 0, + "is_start_next_level": 0 + }, + { + "wall_id": 216010002, + "wall_level": 0, + "is_start_next_level": 0 + }, + { + "wall_id": 216010003, + "wall_level": 0, + "is_start_next_level": 0 + }, + { + "wall_id": 216010004, + "wall_level": 0, + "is_start_next_level": 0 + }, + { + "wall_id": 216010005, + "wall_level": 0, + "is_start_next_level": 0 + } + ], + "quest_carry_list": [], + "quest_entry_condition_list": [], + "fort_bonus_list": { + "param_bonus": [ + { + "weapon_type": 1, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 2, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 3, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 4, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 5, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 6, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 7, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 8, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 9, + "hp": 0, + "attack": 0 + } + ], + "param_bonus_by_weapon": [ + { + "weapon_type": 1, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 2, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 3, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 4, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 5, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 6, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 7, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 8, + "hp": 0, + "attack": 0 + }, + { + "weapon_type": 9, + "hp": 0, + "attack": 0 + } + ], + "element_bonus": [ + { + "elemental_type": 1, + "hp": 2, + "attack": 1 + }, + { + "elemental_type": 2, + "hp": 3, + "attack": 2.5 + }, + { + "elemental_type": 3, + "hp": 2.5, + "attack": 2 + }, + { + "elemental_type": 4, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 5, + "hp": 3, + "attack": 2.5 + }, + { + "elemental_type": 99, + "hp": 0, + "attack": 0 + } + ], + "all_bonus": { + "hp": 0, + "attack": 0 + }, + "chara_bonus_by_album": [ + { + "elemental_type": 1, + "hp": 14.1, + "attack": 14.1 + }, + { + "elemental_type": 2, + "hp": 13.8, + "attack": 13.8 + }, + { + "elemental_type": 3, + "hp": 13.9, + "attack": 13.9 + }, + { + "elemental_type": 4, + "hp": 14.5, + "attack": 14.5 + }, + { + "elemental_type": 5, + "hp": 13.3, + "attack": 13.3 + } + ], + "dragon_bonus": [ + { + "elemental_type": 1, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 2, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 3, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 4, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 5, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + }, + { + "elemental_type": 99, + "dragon_bonus": 0, + "hp": 0, + "attack": 0 + } + ], + "dragon_time_bonus": { + "dragon_time_bonus": 0 + }, + "dragon_bonus_by_album": [ + { + "elemental_type": 1, + "hp": 5.8, + "attack": 5 + }, + { + "elemental_type": 2, + "hp": 5.4, + "attack": 4.6 + }, + { + "elemental_type": 3, + "hp": 6.3, + "attack": 5.4 + }, + { + "elemental_type": 4, + "hp": 6, + "attack": 5.2 + }, + { + "elemental_type": 5, + "hp": 7.3, + "attack": 6.4 + } + ] + }, + "build_list": [ + { + "build_id": 986938, + "plant_id": 101401, + "level": 3, + "fort_plant_detail_id": 10140103, + "position_x": 21, + "position_z": 3, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.6785653, + "is_new": 0 + }, + { + "build_id": 986939, + "plant_id": 100201, + "level": 5, + "fort_plant_detail_id": 10020105, + "position_x": 24, + "position_z": 15, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 53308.2389468, + "is_new": 0 + }, + { + "build_id": 986940, + "plant_id": 100401, + "level": 3, + "fort_plant_detail_id": 10040103, + "position_x": 25, + "position_z": 20, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.6785724, + "is_new": 0 + }, + { + "build_id": 986941, + "plant_id": 100403, + "level": 8, + "fort_plant_detail_id": 10040309, + "position_x": 25, + "position_z": 23, + "build_status": 2, + "build_start_date": 1712339546, + "build_end_date": 1712341346, + "remain_time": 0, + "last_income_time": 1712392848.678575, + "is_new": 0 + }, + { + "build_id": 986942, + "plant_id": 100402, + "level": 10, + "fort_plant_detail_id": 10040210, + "position_x": 28, + "position_z": 20, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.6785777, + "is_new": 0 + }, + { + "build_id": 986943, + "plant_id": 100301, + "level": 1, + "fort_plant_detail_id": 10030101, + "position_x": -1, + "position_z": -1, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.678583, + "is_new": 0 + }, + { + "build_id": 986944, + "plant_id": 102001, + "level": 1, + "fort_plant_detail_id": 10200101, + "position_x": 33, + "position_z": 6, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.6785853, + "is_new": 0 + }, + { + "build_id": 986945, + "plant_id": 100405, + "level": 10, + "fort_plant_detail_id": 10040510, + "position_x": 30, + "position_z": 15, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.678588, + "is_new": 0 + }, + { + "build_id": 986946, + "plant_id": 100201, + "level": 22, + "fort_plant_detail_id": 10020123, + "position_x": 24, + "position_z": 11, + "build_status": 2, + "build_start_date": 1712312833, + "build_end_date": 1712352433, + "remain_time": 0, + "last_income_time": 53308.2389674, + "is_new": 0 + }, + { + "build_id": 986947, + "plant_id": 100101, + "level": 3, + "fort_plant_detail_id": 10010103, + "position_x": 16, + "position_z": 17, + "build_status": 0, + "build_start_date": 0, + "build_end_date": 0, + "remain_time": 0, + "last_income_time": 1712392848.6785939, + "is_new": 0 + } + ], + "craft_list": [], + "user_summon_list": [], + "summon_ticket_list": [ + { + "key_id": 60668, + "summon_ticket_id": 10102, + "quantity": 0, + "use_limit_time": 0 + }, + { + "key_id": 60669, + "summon_ticket_id": 10101, + "quantity": 4, + "use_limit_time": 0 + } + ], + "summon_point_list": [], + "lottery_ticket_list": [], + "exchange_ticket_list": [], + "gather_item_list": [], + "fort_plant_list": [], + "present_notice": { + "present_limit_count": 0, + "present_count": 0 + }, + "friend_notice": { + "friend_new_count": 0, + "apply_new_count": 0 + }, + "mission_notice": { + "normal_mission_notice": { + "is_update": 1, + "all_mission_count": 7, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "daily_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "period_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "beginner_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "special_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "main_story_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "memory_event_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + }, + "drill_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 100100, + "new_complete_mission_id_list": [] + }, + "album_mission_notice": { + "is_update": 1, + "all_mission_count": 0, + "completed_mission_count": 0, + "receivable_reward_count": 0, + "pickup_mission_count": 0, + "current_mission_id": 0, + "new_complete_mission_id_list": [] + } + }, + "guild_notice": { + "guild_apply_count": 0, + "is_update_guild_board": 0, + "is_update_guild_apply_reply": 0, + "is_update_guild": 0, + "is_update_guild_invite": 0 + }, + "shop_notice": { + "is_shop_notification": 1 + }, + "functional_maintenance_list": [], + "treasure_trade_all_list": [ + { + "priority": 10122501, + "treasure_trade_id": 10122501, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122502, + "treasure_trade_id": 10122502, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130601, + "treasure_trade_id": 10130601, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122503, + "treasure_trade_id": 10122503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017053, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130602, + "treasure_trade_id": 10130602, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122504, + "treasure_trade_id": 10122504, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017054, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130603, + "treasure_trade_id": 10130603, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130604, + "treasure_trade_id": 10130604, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130605, + "treasure_trade_id": 10130605, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110401, + "treasure_trade_id": 10110401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110402, + "treasure_trade_id": 10110402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 3, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130701, + "treasure_trade_id": 10130701, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130702, + "treasure_trade_id": 10130702, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130703, + "treasure_trade_id": 10130703, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130704, + "treasure_trade_id": 10130704, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130705, + "treasure_trade_id": 10130705, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110501, + "treasure_trade_id": 10110501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 15, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010061, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130801, + "treasure_trade_id": 10130801, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 118001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130802, + "treasure_trade_id": 10130802, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 118001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130803, + "treasure_trade_id": 10130803, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 118001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130804, + "treasure_trade_id": 10130804, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 118001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130805, + "treasure_trade_id": 10130805, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 118001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110601, + "treasure_trade_id": 10110601, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110602, + "treasure_trade_id": 10110602, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110603, + "treasure_trade_id": 10110603, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110604, + "treasure_trade_id": 10110604, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110605, + "treasure_trade_id": 10110605, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130901, + "treasure_trade_id": 10130901, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 119001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130902, + "treasure_trade_id": 10130902, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 119001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130903, + "treasure_trade_id": 10130903, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 119001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130904, + "treasure_trade_id": 10130904, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 119001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130905, + "treasure_trade_id": 10130905, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 25, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 119001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110701, + "treasure_trade_id": 10110701, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110702, + "treasure_trade_id": 10110702, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110703, + "treasure_trade_id": 10110703, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110704, + "treasure_trade_id": 10110704, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110705, + "treasure_trade_id": 10110705, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131001, + "treasure_trade_id": 10131001, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131002, + "treasure_trade_id": 10131002, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131003, + "treasure_trade_id": 10131003, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131004, + "treasure_trade_id": 10131004, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131005, + "treasure_trade_id": 10131005, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110801, + "treasure_trade_id": 10110801, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110802, + "treasure_trade_id": 10110802, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110803, + "treasure_trade_id": 10110803, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110804, + "treasure_trade_id": 10110804, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110805, + "treasure_trade_id": 10110805, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042001, + "treasure_trade_id": 10042001, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010011, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050101, + "treasure_trade_id": 10050101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 18, + "destination_entity_id": 0, + "destination_entity_quantity": 5000, + "destination_limit_break_count": 0 + }, + { + "priority": 10050103, + "treasure_trade_id": 10050103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 2, + "destination_entity_id": 100601, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050104, + "treasure_trade_id": 10050104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 2, + "destination_entity_id": 100701, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050105, + "treasure_trade_id": 10050105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 15, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 112001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050106, + "treasure_trade_id": 10050106, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201007001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050107, + "treasure_trade_id": 10050107, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 25, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 111001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050111, + "treasure_trade_id": 10050108, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 15, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050112, + "treasure_trade_id": 10050109, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050113, + "treasure_trade_id": 10050110, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 3, + "limit": 100, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050115, + "treasure_trade_id": 10050111, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 3, + "limit": 100, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 102001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050108, + "treasure_trade_id": 10050112, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 25, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 114001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050109, + "treasure_trade_id": 10050113, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201012001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050114, + "treasure_trade_id": 10050114, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 3, + "limit": 100, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050102, + "treasure_trade_id": 10050115, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1575180000, + "complete_date": 0, + "reset_type": 3, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10050110, + "treasure_trade_id": 10050116, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1576476000, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131101, + "treasure_trade_id": 10131101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131102, + "treasure_trade_id": 10131102, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131103, + "treasure_trade_id": 10131103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131104, + "treasure_trade_id": 10131104, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131105, + "treasure_trade_id": 10131105, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131106, + "treasure_trade_id": 10131106, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131107, + "treasure_trade_id": 10131107, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131108, + "treasure_trade_id": 10131108, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131109, + "treasure_trade_id": 10131109, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131110, + "treasure_trade_id": 10131110, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110901, + "treasure_trade_id": 10110901, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001013, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110902, + "treasure_trade_id": 10110902, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001023, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110903, + "treasure_trade_id": 10110903, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001033, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110904, + "treasure_trade_id": 10110904, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001043, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110905, + "treasure_trade_id": 10110905, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001053, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042101, + "treasure_trade_id": 10042101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010021, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050201, + "treasure_trade_id": 10050201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040504, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050211, + "treasure_trade_id": 10050211, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040505, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123101, + "treasure_trade_id": 10123101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123102, + "treasure_trade_id": 10123102, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 120, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131201, + "treasure_trade_id": 10131201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123103, + "treasure_trade_id": 10123103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1658728800, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022013, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050221, + "treasure_trade_id": 10050221, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1555048800, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 4, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050507, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131202, + "treasure_trade_id": 10131202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131203, + "treasure_trade_id": 10131203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131204, + "treasure_trade_id": 10131204, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131205, + "treasure_trade_id": 10131205, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131206, + "treasure_trade_id": 10131206, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131207, + "treasure_trade_id": 10131207, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131208, + "treasure_trade_id": 10131208, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131209, + "treasure_trade_id": 10131209, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131210, + "treasure_trade_id": 10131210, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111001, + "treasure_trade_id": 10111001, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042201, + "treasure_trade_id": 10042201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010031, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050301, + "treasure_trade_id": 10050301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101901, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050302, + "treasure_trade_id": 10050302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1555048800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101902, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050303, + "treasure_trade_id": 10050303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1560319200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101903, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050304, + "treasure_trade_id": 10050304, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101904, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050305, + "treasure_trade_id": 10050305, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1563861600, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101905, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050306, + "treasure_trade_id": 10050306, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1568872800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014004, + "entity_quantity": 4, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 11, + "destination_entity_id": 10401, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123201, + "treasure_trade_id": 10123201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123202, + "treasure_trade_id": 10123202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 120, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131301, + "treasure_trade_id": 10131301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030061, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123203, + "treasure_trade_id": 10123203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1646028000, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022023, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131302, + "treasure_trade_id": 10131302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030062, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131303, + "treasure_trade_id": 10131303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131304, + "treasure_trade_id": 10131304, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131305, + "treasure_trade_id": 10131305, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131306, + "treasure_trade_id": 10131306, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131307, + "treasure_trade_id": 10131307, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131308, + "treasure_trade_id": 10131308, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131309, + "treasure_trade_id": 10131309, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131310, + "treasure_trade_id": 10131310, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131311, + "treasure_trade_id": 10131311, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131312, + "treasure_trade_id": 10131312, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030101, + "treasure_trade_id": 10030101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002032, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050302, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030102, + "treasure_trade_id": 10030102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 19, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002032, + "entity_quantity": 120, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201002031, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050302, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030103, + "treasure_trade_id": 10030103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002032, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201005001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111101, + "treasure_trade_id": 10111101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001014, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111102, + "treasure_trade_id": 10111102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001024, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111103, + "treasure_trade_id": 10111103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001034, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111104, + "treasure_trade_id": 10111104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001044, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111105, + "treasure_trade_id": 10111105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001054, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042301, + "treasure_trade_id": 10042301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010041, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050401, + "treasure_trade_id": 10050401, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201014001, + "destination_entity_quantity": 80, + "destination_limit_break_count": 0 + }, + { + "priority": 10050402, + "treasure_trade_id": 10050402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 18, + "destination_entity_id": 0, + "destination_entity_quantity": 2500, + "destination_limit_break_count": 0 + }, + { + "priority": 10050403, + "treasure_trade_id": 10050404, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1575180000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201014001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10123301, + "treasure_trade_id": 10123301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123302, + "treasure_trade_id": 10123302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 120, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131401, + "treasure_trade_id": 10131401, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123303, + "treasure_trade_id": 10123303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022033, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131402, + "treasure_trade_id": 10131402, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131403, + "treasure_trade_id": 10131403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131404, + "treasure_trade_id": 10131404, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208050042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131405, + "treasure_trade_id": 10131405, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131406, + "treasure_trade_id": 10131406, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131407, + "treasure_trade_id": 10131407, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131408, + "treasure_trade_id": 10131408, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131409, + "treasure_trade_id": 10131409, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131410, + "treasure_trade_id": 10131410, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208010052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030201, + "treasure_trade_id": 10030201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1555567200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002022, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050202, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030202, + "treasure_trade_id": 10030202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1555567200, + "complete_date": 0, + "reset_type": 0, + "limit": 19, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002022, + "entity_quantity": 120, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201002021, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050202, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030203, + "treasure_trade_id": 10030203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1555567200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002022, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201005001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10111201, + "treasure_trade_id": 10111201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1610604000, + "complete_date": 0, + "reset_type": 3, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201021001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042401, + "treasure_trade_id": 10042401, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010051, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050501, + "treasure_trade_id": 10050501, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202010061, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050502, + "treasure_trade_id": 10050502, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202010061, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050503, + "treasure_trade_id": 10050503, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202010061, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050504, + "treasure_trade_id": 10050504, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202010061, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10050505, + "treasure_trade_id": 10050505, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202010061, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123401, + "treasure_trade_id": 10123401, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123402, + "treasure_trade_id": 10123402, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 120, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131501, + "treasure_trade_id": 10131501, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10123403, + "treasure_trade_id": 10123403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1643090400, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022043, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131502, + "treasure_trade_id": 10131502, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208040012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131503, + "treasure_trade_id": 10131503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131504, + "treasure_trade_id": 10131504, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131505, + "treasure_trade_id": 10131505, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131506, + "treasure_trade_id": 10131506, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131507, + "treasure_trade_id": 10131507, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131508, + "treasure_trade_id": 10131508, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208020022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131509, + "treasure_trade_id": 10131509, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10131510, + "treasure_trade_id": 10131510, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 208030042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030301, + "treasure_trade_id": 10030301, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002012, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050102, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030302, + "treasure_trade_id": 10030302, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 19, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002012, + "entity_quantity": 120, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201002011, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050102, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030303, + "treasure_trade_id": 10030303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002012, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201005001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10070801, + "treasure_trade_id": 10070801, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 101001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10070802, + "treasure_trade_id": 10070802, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 102001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10070803, + "treasure_trade_id": 10070803, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10070804, + "treasure_trade_id": 10070804, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 1000, + "treasure_trade_id": 10010101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201007001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 112002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 2000, + "treasure_trade_id": 10010102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201011001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 111002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 3000, + "treasure_trade_id": 10010103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201012001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 114002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 4000, + "treasure_trade_id": 10010104, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001012, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001013, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 5000, + "treasure_trade_id": 10010105, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001011, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 6000, + "treasure_trade_id": 10010106, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001022, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001023, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 7000, + "treasure_trade_id": 10010107, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001021, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 8000, + "treasure_trade_id": 10010108, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001032, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001033, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042501, + "treasure_trade_id": 10042501, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010012, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010011, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 9000, + "treasure_trade_id": 10010109, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001031, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10000, + "treasure_trade_id": 10010110, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001042, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001043, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 11000, + "treasure_trade_id": 10010111, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001041, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 12000, + "treasure_trade_id": 10010112, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001052, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001053, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 13000, + "treasure_trade_id": 10010113, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001051, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 14000, + "treasure_trade_id": 10010114, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202001002, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 15000, + "treasure_trade_id": 10010115, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202001001, + "entity_quantity": 12, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202001002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 16000, + "treasure_trade_id": 10010116, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202002002, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202002003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 17000, + "treasure_trade_id": 10010117, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202002001, + "entity_quantity": 12, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202002002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 18000, + "treasure_trade_id": 10010118, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202003002, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202003003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 19000, + "treasure_trade_id": 10010119, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202003001, + "entity_quantity": 12, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 20000, + "treasure_trade_id": 10010120, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001012, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 21000, + "treasure_trade_id": 10010121, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001012, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001011, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 22000, + "treasure_trade_id": 10010122, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001022, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 23000, + "treasure_trade_id": 10010123, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001022, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001021, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 24000, + "treasure_trade_id": 10010124, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001032, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 25000, + "treasure_trade_id": 10010125, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001032, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001031, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 26000, + "treasure_trade_id": 10010126, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001042, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 27000, + "treasure_trade_id": 10010127, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001042, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001041, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 28000, + "treasure_trade_id": 10010128, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001052, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10123501, + "treasure_trade_id": 10123501, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 29000, + "treasure_trade_id": 10010129, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104001052, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104001051, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10123502, + "treasure_trade_id": 10123502, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 120, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 30000, + "treasure_trade_id": 10010130, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202001003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202001002, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10123503, + "treasure_trade_id": 10123503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201022053, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 31000, + "treasure_trade_id": 10010131, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202001002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202001001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 32000, + "treasure_trade_id": 10010132, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202002003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202002002, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 33000, + "treasure_trade_id": 10010133, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202002002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202002001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 34000, + "treasure_trade_id": 10010134, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202003003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202003002, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 35000, + "treasure_trade_id": 10010135, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 202003002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202003001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10030401, + "treasure_trade_id": 10030401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1564120800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002042, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050402, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030402, + "treasure_trade_id": 10030402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1564120800, + "complete_date": 0, + "reset_type": 0, + "limit": 19, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002042, + "entity_quantity": 120, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201002041, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050402, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030403, + "treasure_trade_id": 10030403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1564120800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002042, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201005001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10070901, + "treasure_trade_id": 10070901, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10070902, + "treasure_trade_id": 10070902, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10070903, + "treasure_trade_id": 10070903, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 122001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10070904, + "treasure_trade_id": 10070904, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 123001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 3010, + "treasure_trade_id": 10010201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1556258400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201015001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042601, + "treasure_trade_id": 10042601, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010022, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010021, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10030501, + "treasure_trade_id": 10030501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1568872800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002052, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050502, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030502, + "treasure_trade_id": 10030502, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1568872800, + "complete_date": 0, + "reset_type": 0, + "limit": 19, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002052, + "entity_quantity": 120, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201002051, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050502, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10030503, + "treasure_trade_id": 10030503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1568872800, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002052, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201005001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 101005, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10071001, + "treasure_trade_id": 10071001, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 3, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10071002, + "treasure_trade_id": 10071002, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 19040, + "treasure_trade_id": 10010300, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001001, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 19010, + "treasure_trade_id": 10010301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001002, + "entity_quantity": 7, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 19015, + "treasure_trade_id": 10010302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001001, + "entity_quantity": 7, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 19020, + "treasure_trade_id": 10010303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001001, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 19030, + "treasure_trade_id": 10010304, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001002, + "entity_quantity": 7, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 19035, + "treasure_trade_id": 10010305, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001001, + "entity_quantity": 7, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 35010, + "treasure_trade_id": 10010307, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001003, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001002, + "destination_entity_quantity": 7, + "destination_limit_break_count": 0 + }, + { + "priority": 35015, + "treasure_trade_id": 10010308, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001001, + "destination_entity_quantity": 7, + "destination_limit_break_count": 0 + }, + { + "priority": 10042701, + "treasure_trade_id": 10042701, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010032, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010031, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 35020, + "treasure_trade_id": 10010309, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 103001002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001001, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 35030, + "treasure_trade_id": 10010310, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001003, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001002, + "destination_entity_quantity": 7, + "destination_limit_break_count": 0 + }, + { + "priority": 35035, + "treasure_trade_id": 10010311, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001001, + "destination_entity_quantity": 7, + "destination_limit_break_count": 0 + }, + { + "priority": 35040, + "treasure_trade_id": 10010312, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 113001002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001001, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10071101, + "treasure_trade_id": 10071101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005011, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071102, + "treasure_trade_id": 10071102, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005021, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071103, + "treasure_trade_id": 10071103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005031, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071104, + "treasure_trade_id": 10071104, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005041, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071105, + "treasure_trade_id": 10071105, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005051, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071106, + "treasure_trade_id": 10071106, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005061, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071107, + "treasure_trade_id": 10071107, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005071, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071108, + "treasure_trade_id": 10071108, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005081, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071109, + "treasure_trade_id": 10071109, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202005091, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 3020, + "treasure_trade_id": 10010401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1619589600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201008001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004003, + "destination_entity_quantity": 6, + "destination_limit_break_count": 0 + }, + { + "priority": 3030, + "treasure_trade_id": 10010402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1619589600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201008001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004005, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 3040, + "treasure_trade_id": 10010403, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1619589600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201008001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201021001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 3050, + "treasure_trade_id": 10010404, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1619589600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201008001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 2, + "destination_entity_id": 100603, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 3060, + "treasure_trade_id": 10010405, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1619589600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201008001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 2, + "destination_entity_id": 100702, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10042801, + "treasure_trade_id": 10042801, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010042, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010041, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10071201, + "treasure_trade_id": 10071201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010011, + "destination_entity_quantity": 15, + "destination_limit_break_count": 0 + }, + { + "priority": 10071202, + "treasure_trade_id": 10071202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010012, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071203, + "treasure_trade_id": 10071203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010021, + "destination_entity_quantity": 15, + "destination_limit_break_count": 0 + }, + { + "priority": 10071204, + "treasure_trade_id": 10071204, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010022, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071205, + "treasure_trade_id": 10071205, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010031, + "destination_entity_quantity": 15, + "destination_limit_break_count": 0 + }, + { + "priority": 10071206, + "treasure_trade_id": 10071206, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010032, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071207, + "treasure_trade_id": 10071207, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010041, + "destination_entity_quantity": 15, + "destination_limit_break_count": 0 + }, + { + "priority": 10071208, + "treasure_trade_id": 10071208, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010042, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10071209, + "treasure_trade_id": 10071209, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010051, + "destination_entity_quantity": 15, + "destination_limit_break_count": 0 + }, + { + "priority": 10071210, + "treasure_trade_id": 10071210, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 3, + "limit": 30, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010052, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10010501, + "treasure_trade_id": 10010501, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1623996000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10010502, + "treasure_trade_id": 10010502, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1629093600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10010504, + "treasure_trade_id": 10010504, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1639548000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001005, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10010505, + "treasure_trade_id": 10010505, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1642744800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001004, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10010507, + "treasure_trade_id": 10010507, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1658296800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001008, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10042901, + "treasure_trade_id": 10042901, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1551331800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010052, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010051, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10010509, + "treasure_trade_id": 10010509, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1664517600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001007, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10010510, + "treasure_trade_id": 10010510, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1668060000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 205001010, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 30000, + "destination_limit_break_count": 0 + }, + { + "priority": 10071301, + "treasure_trade_id": 10071301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1601532000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201016001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 10000, + "destination_limit_break_count": 0 + }, + { + "priority": 1100, + "treasure_trade_id": 10010601, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1627365600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 112001001, + "entity_quantity": 15, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201007001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 2100, + "treasure_trade_id": 10010602, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1627365600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 111001001, + "entity_quantity": 15, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 3015, + "treasure_trade_id": 10010603, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1627365600, + "complete_date": 0, + "reset_type": 3, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 18, + "entity_id": 0, + "entity_quantity": 10000, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 2, + "destination_entity_id": 100601, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10043001, + "treasure_trade_id": 10043001, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1561701600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201009002, + "entity_quantity": 3, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201009003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10043101, + "treasure_trade_id": 10043101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1561701600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201009001, + "entity_quantity": 4, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201009002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124101, + "treasure_trade_id": 10124101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30159921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124201, + "treasure_trade_id": 10124102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30259921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124301, + "treasure_trade_id": 10124103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30359921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124401, + "treasure_trade_id": 10124104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30459921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124501, + "treasure_trade_id": 10124105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30559921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124601, + "treasure_trade_id": 10124106, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30659921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124701, + "treasure_trade_id": 10124107, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30759921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124702, + "treasure_trade_id": 10124108, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30859921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124901, + "treasure_trade_id": 10124109, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30959921, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124801, + "treasure_trade_id": 10124110, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1643090400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30859922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120101, + "treasure_trade_id": 10120101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 5000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 112002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120102, + "treasure_trade_id": 10120102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 5000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 114002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120103, + "treasure_trade_id": 10120103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 5000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 111002001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120104, + "treasure_trade_id": 10120104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 3, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 5000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120105, + "treasure_trade_id": 10120105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 3, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 1500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 200, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120106, + "treasure_trade_id": 10120106, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 5000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 112003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120107, + "treasure_trade_id": 10120107, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 2, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 15000, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 1500, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 125001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10043201, + "treasure_trade_id": 10043201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1561701600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201009003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201009002, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10124103, + "treasure_trade_id": 10124201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30159922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124203, + "treasure_trade_id": 10124202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30259922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124303, + "treasure_trade_id": 10124203, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30359922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124403, + "treasure_trade_id": 10124204, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30459922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124503, + "treasure_trade_id": 10124205, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30559922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124603, + "treasure_trade_id": 10124206, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30659922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124703, + "treasure_trade_id": 10124207, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30759922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124803, + "treasure_trade_id": 10124208, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30859923, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10124903, + "treasure_trade_id": 10124209, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1650866400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 3500, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 350, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 37, + "destination_entity_id": 30959922, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120201, + "treasure_trade_id": 10120201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 101001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120202, + "treasure_trade_id": 10120202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 102001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120203, + "treasure_trade_id": 10120203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10120204, + "treasure_trade_id": 10120204, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10043301, + "treasure_trade_id": 10043301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 1561701600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201009002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201009001, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10129901, + "treasure_trade_id": 10120301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 100, + "destination_limit_break_count": 0 + }, + { + "priority": 10129902, + "treasure_trade_id": 10120302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 2, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 4, + "destination_entity_id": 0, + "destination_entity_quantity": 100, + "destination_limit_break_count": 0 + }, + { + "priority": 10040901, + "treasure_trade_id": 10043401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010031, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40040023, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041001, + "treasure_trade_id": 10043402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010021, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40040024, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041101, + "treasure_trade_id": 10043403, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010011, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40040025, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041201, + "treasure_trade_id": 10043404, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010041, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40040026, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041301, + "treasure_trade_id": 10043405, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010051, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40040027, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100101, + "treasure_trade_id": 10100101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100102, + "treasure_trade_id": 10100102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100103, + "treasure_trade_id": 10100103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100104, + "treasure_trade_id": 10100104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100105, + "treasure_trade_id": 10100105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041401, + "treasure_trade_id": 10043501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010031, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201010032, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40050011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041501, + "treasure_trade_id": 10043502, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010021, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201010022, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40050056, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041601, + "treasure_trade_id": 10043503, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010011, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201010012, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40050024, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041701, + "treasure_trade_id": 10043504, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010041, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201010042, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40050065, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10041801, + "treasure_trade_id": 10043505, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1600963200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201010051, + "entity_quantity": 100, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 201010052, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 39, + "destination_entity_id": 40050071, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100201, + "treasure_trade_id": 10100201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100202, + "treasure_trade_id": 10100202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100203, + "treasure_trade_id": 10100203, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100204, + "treasure_trade_id": 10100204, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100205, + "treasure_trade_id": 10100205, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 20, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100301, + "treasure_trade_id": 10100301, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204008002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100302, + "treasure_trade_id": 10100302, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204012002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100303, + "treasure_trade_id": 10100303, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204004002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100304, + "treasure_trade_id": 10100304, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204013002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100305, + "treasure_trade_id": 10100305, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204018002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100401, + "treasure_trade_id": 10100401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100402, + "treasure_trade_id": 10100402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100403, + "treasure_trade_id": 10100403, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100404, + "treasure_trade_id": 10100404, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100405, + "treasure_trade_id": 10100405, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100501, + "treasure_trade_id": 10100501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202010061, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060015, + "treasure_trade_id": 10060011, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204001001, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204001002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060016, + "treasure_trade_id": 10060012, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204001002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204001001, + "destination_entity_quantity": 25, + "destination_limit_break_count": 0 + }, + { + "priority": 10060031, + "treasure_trade_id": 10060021, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204002001, + "entity_quantity": 35, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204002002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060032, + "treasure_trade_id": 10060022, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204002002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204002001, + "destination_entity_quantity": 30, + "destination_limit_break_count": 0 + }, + { + "priority": 10060041, + "treasure_trade_id": 10060031, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204003001, + "entity_quantity": 35, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060042, + "treasure_trade_id": 10060032, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204003002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204003001, + "destination_entity_quantity": 30, + "destination_limit_break_count": 0 + }, + { + "priority": 10060081, + "treasure_trade_id": 10060041, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204004001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204004002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060082, + "treasure_trade_id": 10060042, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204004002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204004001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060077, + "treasure_trade_id": 10060051, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204005001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204005002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060078, + "treasure_trade_id": 10060052, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204005002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204005001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060021, + "treasure_trade_id": 10060061, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204006002, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204006003, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060022, + "treasure_trade_id": 10060062, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204006003, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204006002, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060023, + "treasure_trade_id": 10060063, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204006001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204006002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060024, + "treasure_trade_id": 10060064, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204006002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204006001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060045, + "treasure_trade_id": 10060071, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204007001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204007002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060046, + "treasure_trade_id": 10060072, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1553061600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204007002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204007001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060089, + "treasure_trade_id": 10060081, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1555048800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204008001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204008002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060090, + "treasure_trade_id": 10060082, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1555048800, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204008002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204008001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060013, + "treasure_trade_id": 10060091, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204009001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204009002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060014, + "treasure_trade_id": 10060092, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204009002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204009001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060029, + "treasure_trade_id": 10060101, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204010001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204010002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060030, + "treasure_trade_id": 10060102, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204010002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204010001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10100601, + "treasure_trade_id": 10100601, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060043, + "treasure_trade_id": 10060111, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204011001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204011002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100602, + "treasure_trade_id": 10100602, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104003001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060044, + "treasure_trade_id": 10060112, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1558332000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204011002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204011001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060083, + "treasure_trade_id": 10060121, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1560319200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204012001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204012002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060084, + "treasure_trade_id": 10060122, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1560319200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204012002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204012001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060085, + "treasure_trade_id": 10060131, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1563861600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204013001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204013002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060086, + "treasure_trade_id": 10060132, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1563861600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204013002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204013001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060073, + "treasure_trade_id": 10060141, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1563861600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204005001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204014001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060074, + "treasure_trade_id": 10060142, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1563861600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204014001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204005001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060011, + "treasure_trade_id": 10060151, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1566453600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204015001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204015002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060012, + "treasure_trade_id": 10060152, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1566453600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204015002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204015001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060033, + "treasure_trade_id": 10060161, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1566453600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204016001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204016002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060034, + "treasure_trade_id": 10060162, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1566453600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204016002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204016001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060053, + "treasure_trade_id": 10060171, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204017001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204017002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060054, + "treasure_trade_id": 10060172, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204017002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204017001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060087, + "treasure_trade_id": 10060181, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204018001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204018002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060088, + "treasure_trade_id": 10060182, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1568268000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204018002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204018001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060027, + "treasure_trade_id": 10060191, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204019001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204019002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060028, + "treasure_trade_id": 10060192, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1570773600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204019002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204019001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060064, + "treasure_trade_id": 10060201, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204020001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204020002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060065, + "treasure_trade_id": 10060202, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204020002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204020001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10100701, + "treasure_trade_id": 10100701, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004005, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060071, + "treasure_trade_id": 10060211, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204005001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204021001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060072, + "treasure_trade_id": 10060212, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204021001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204005001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060091, + "treasure_trade_id": 10060221, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204022001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204022002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060092, + "treasure_trade_id": 10060222, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1574316000, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204022002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204022001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060075, + "treasure_trade_id": 10060231, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1579586400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204005001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204023001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060076, + "treasure_trade_id": 10060232, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1579586400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204023001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204005001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060099, + "treasure_trade_id": 10060241, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1582178400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204024001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204024002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060100, + "treasure_trade_id": 10060242, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1582178400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204024002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204024001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060025, + "treasure_trade_id": 10060251, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204025001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204025002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060026, + "treasure_trade_id": 10060252, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204025002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204025001, + "destination_entity_quantity": 4, + "destination_limit_break_count": 0 + }, + { + "priority": 10060051, + "treasure_trade_id": 10060261, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204017001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204026001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060052, + "treasure_trade_id": 10060262, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204026001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204017001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060061, + "treasure_trade_id": 10060271, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204027001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204020001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060060, + "treasure_trade_id": 10060272, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204020001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204027001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060096, + "treasure_trade_id": 10060281, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204028002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204028001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060095, + "treasure_trade_id": 10060282, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204028001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204028002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060057, + "treasure_trade_id": 10060291, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204017001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204029001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060058, + "treasure_trade_id": 10060292, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1584943200, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204029001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204017001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10060062, + "treasure_trade_id": 10060301, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204020001, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204030001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060063, + "treasure_trade_id": 10060302, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1587362400, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204030001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204020001, + "destination_entity_quantity": 35, + "destination_limit_break_count": 0 + }, + { + "priority": 10100801, + "treasure_trade_id": 10100801, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 100, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 18, + "destination_entity_id": 0, + "destination_entity_quantity": 10000, + "destination_limit_break_count": 0 + }, + { + "priority": 10060094, + "treasure_trade_id": 10060311, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1592805600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204031002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204031001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060093, + "treasure_trade_id": 10060312, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1592805600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204031001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204031002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10060098, + "treasure_trade_id": 10060321, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1595397600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204032002, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204032001, + "destination_entity_quantity": 5, + "destination_limit_break_count": 0 + }, + { + "priority": 10060097, + "treasure_trade_id": 10060322, + "tab_group_id": 3, + "is_lock_view": 0, + "commence_date": 1595397600, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 204032001, + "entity_quantity": 6, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 204032002, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121101, + "treasure_trade_id": 10121101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121102, + "treasure_trade_id": 10121102, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121103, + "treasure_trade_id": 10121103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202009011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100901, + "treasure_trade_id": 10100901, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601186400, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050310, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100902, + "treasure_trade_id": 10100902, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1601186400, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050515, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100903, + "treasure_trade_id": 10100903, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1616824800, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050115, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100904, + "treasure_trade_id": 10100904, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1632722400, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050215, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10100905, + "treasure_trade_id": 10100905, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1648360800, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 33, + "entity_id": 10001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20050417, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121201, + "treasure_trade_id": 10121201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121202, + "treasure_trade_id": 10121202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121203, + "treasure_trade_id": 10121203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202009021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121301, + "treasure_trade_id": 10121301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121302, + "treasure_trade_id": 10121302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121303, + "treasure_trade_id": 10121303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202009031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020101, + "treasure_trade_id": 10020101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002031, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040301, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020102, + "treasure_trade_id": 10020102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 15, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002031, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 104002031, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040301, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020103, + "treasure_trade_id": 10020103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002031, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020104, + "treasure_trade_id": 10020104, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002032, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002031, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10121401, + "treasure_trade_id": 10121401, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121402, + "treasure_trade_id": 10121402, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121403, + "treasure_trade_id": 10121403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202009041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020201, + "treasure_trade_id": 10020201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002021, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040201, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020202, + "treasure_trade_id": 10020202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 15, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002021, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 104002021, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040201, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020203, + "treasure_trade_id": 10020203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002021, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020204, + "treasure_trade_id": 10020204, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002022, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002021, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10121501, + "treasure_trade_id": 10121501, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201002052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121502, + "treasure_trade_id": 10121502, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202008051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10121503, + "treasure_trade_id": 10121503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202009051, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020301, + "treasure_trade_id": 10020301, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002011, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020302, + "treasure_trade_id": 10020302, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 15, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002011, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 104002011, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020303, + "treasure_trade_id": 10020303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002011, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020304, + "treasure_trade_id": 10020304, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002012, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002011, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10020401, + "treasure_trade_id": 10020401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002041, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040401, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020402, + "treasure_trade_id": 10020402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 15, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002041, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 104002041, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040401, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020403, + "treasure_trade_id": 10020403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002041, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020404, + "treasure_trade_id": 10020404, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002042, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002041, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10020501, + "treasure_trade_id": 10020501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 4, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002051, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040501, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020502, + "treasure_trade_id": 10020502, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 15, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201002051, + "entity_quantity": 30, + "limit_break_count": 0 + }, + { + "entity_type": 8, + "entity_id": 104002051, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 7, + "destination_entity_id": 20040501, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020503, + "treasure_trade_id": 10020503, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002051, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10020504, + "treasure_trade_id": 10020504, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 104002052, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002051, + "destination_entity_quantity": 2, + "destination_limit_break_count": 0 + }, + { + "priority": 10130101, + "treasure_trade_id": 10130101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130102, + "treasure_trade_id": 10130102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130103, + "treasure_trade_id": 10130103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130104, + "treasure_trade_id": 10130104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130105, + "treasure_trade_id": 10130105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 10, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201011001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122101, + "treasure_trade_id": 10122101, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017011, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122102, + "treasure_trade_id": 10122102, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130201, + "treasure_trade_id": 10130201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122103, + "treasure_trade_id": 10122103, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017013, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130202, + "treasure_trade_id": 10130202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122104, + "treasure_trade_id": 10122104, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017014, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130203, + "treasure_trade_id": 10130203, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130204, + "treasure_trade_id": 10130204, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130205, + "treasure_trade_id": 10130205, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 5, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 202004004, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122201, + "treasure_trade_id": 10122201, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017021, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122202, + "treasure_trade_id": 10122202, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130301, + "treasure_trade_id": 10130301, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 17, + "destination_entity_id": 10101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122203, + "treasure_trade_id": 10122203, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017023, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130302, + "treasure_trade_id": 10130302, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 17, + "destination_entity_id": 10101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122204, + "treasure_trade_id": 10122204, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017024, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130303, + "treasure_trade_id": 10130303, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 17, + "destination_entity_id": 10101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130304, + "treasure_trade_id": 10130304, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 17, + "destination_entity_id": 10101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130305, + "treasure_trade_id": 10130305, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 17, + "destination_entity_id": 10101, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110101, + "treasure_trade_id": 10110101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 101001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10110102, + "treasure_trade_id": 10110102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 102001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10110103, + "treasure_trade_id": 10110103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 103001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10110104, + "treasure_trade_id": 10110104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 113001003, + "destination_entity_quantity": 3, + "destination_limit_break_count": 0 + }, + { + "priority": 10122301, + "treasure_trade_id": 10122301, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017031, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122302, + "treasure_trade_id": 10122302, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130401, + "treasure_trade_id": 10130401, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122303, + "treasure_trade_id": 10122303, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017033, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130402, + "treasure_trade_id": 10130402, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122304, + "treasure_trade_id": 10122304, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017034, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130403, + "treasure_trade_id": 10130403, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130404, + "treasure_trade_id": 10130404, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130405, + "treasure_trade_id": 10130405, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 116001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110201, + "treasure_trade_id": 10110201, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110202, + "treasure_trade_id": 10110202, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110203, + "treasure_trade_id": 10110203, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110204, + "treasure_trade_id": 10110204, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110205, + "treasure_trade_id": 10110205, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 5, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 104002052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122401, + "treasure_trade_id": 10122401, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 50, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017041, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122402, + "treasure_trade_id": 10122402, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 250, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130501, + "treasure_trade_id": 10130501, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022033, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122403, + "treasure_trade_id": 10122403, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 200, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 400, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 40, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017043, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130502, + "treasure_trade_id": 10130502, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022023, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10122404, + "treasure_trade_id": 10122404, + "tab_group_id": 2, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 3, + "limit": 10, + "need_trade_entity_list": [ + { + "entity_type": 42, + "entity_id": 10001, + "entity_quantity": 800, + "limit_break_count": 0 + }, + { + "entity_type": 42, + "entity_id": 10002, + "entity_quantity": 80, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201017044, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130503, + "treasure_trade_id": 10130503, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022013, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130504, + "treasure_trade_id": 10130504, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1636956000, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022043, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10130505, + "treasure_trade_id": 10130505, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 50, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201022053, + "entity_quantity": 1, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 117001001, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110301, + "treasure_trade_id": 10110301, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010012, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110302, + "treasure_trade_id": 10110302, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010022, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110303, + "treasure_trade_id": 10110303, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010032, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110304, + "treasure_trade_id": 10110304, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010042, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10110305, + "treasure_trade_id": 10110305, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 0, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 124001001, + "entity_quantity": 8, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 8, + "destination_entity_id": 201010052, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10090101, + "treasure_trade_id": 10090101, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 0, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201017031, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 102301, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10090102, + "treasure_trade_id": 10090102, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1593151200, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201017011, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 102302, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10090103, + "treasure_trade_id": 10090103, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1588053600, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201017021, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 102303, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10090104, + "treasure_trade_id": 10090104, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1598594400, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201017051, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 102304, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + }, + { + "priority": 10090105, + "treasure_trade_id": 10090105, + "tab_group_id": 1, + "is_lock_view": 0, + "commence_date": 1582869600, + "complete_date": 0, + "reset_type": 0, + "limit": 1, + "need_trade_entity_list": [ + { + "entity_type": 8, + "entity_id": 201017041, + "entity_quantity": 20, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + }, + { + "entity_type": 0, + "entity_id": 0, + "entity_quantity": 0, + "limit_break_count": 0 + } + ], + "destination_entity_type": 9, + "destination_entity_id": 102305, + "destination_entity_quantity": 1, + "destination_limit_break_count": 0 + } + ], + "user_treasure_trade_list": [], + "special_shop_purchase": [], + "stamina_single_recover_second": 0, + "stamina_multi_user_max": 12, + "stamina_multi_system_max": 99, + "quest_skip_point_system_max": 400, + "quest_skip_point_use_limit_max": 30, + "server_time": 1712392848, + "quest_bonus_stack_base_time": 1617775200, + "quest_bonus": [] + } +} \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/DragonTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/DragonTest.cs index 4eb4f8a6f..ed1d3573c 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/DragonTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/DragonTest.cs @@ -1,12 +1,9 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Factories; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Utils; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.MasterAsset.Models.Missions; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; namespace DragaliaAPI.Integration.Test.Dragalia; @@ -37,9 +34,9 @@ public DragonBuildUpTheoryData() #region GarudaDragonSacrifice List setupDragons = new List { - DbPlayerDragonDataFactory.Create(0, Dragons.Garuda) + new DbPlayerDragonData(0, Dragons.Garuda) }; - DbPlayerDragonData dragon = DbPlayerDragonDataFactory.Create(0, Dragons.Garuda); + DbPlayerDragonData dragon = new DbPlayerDragonData(0, Dragons.Garuda); dragon.AttackPlusCount = 25; dragon.HpPlusCount = 25; setupDragons.Add(dragon); @@ -48,10 +45,7 @@ public DragonBuildUpTheoryData() #region FubukiFruit Add( new DragonBuildUpTestCase( - new List() - { - DbPlayerDragonDataFactory.Create(0, Dragons.Fubuki) - }, + new List() { new DbPlayerDragonData(0, Dragons.Fubuki) }, EntityTypes.Material, (int)Materials.Dragonfruit, 30, @@ -67,8 +61,6 @@ public DragonBuildUpTheoryData() [ClassData(typeof(DragonBuildUpTheoryData))] public async Task DragonBuildUp_ReturnsUpgradedDragonData(DragonBuildUpTestCase testCase) { - ApiContext context = this.Services.GetRequiredService(); - DbPlayerDragonData dbDragon = await this.AddToDatabase(testCase.SetupDragons[0]); DbPlayerDragonData dbDragonSacrifice = null!; @@ -77,7 +69,7 @@ public async Task DragonBuildUp_ReturnsUpgradedDragonData(DragonBuildUpTestCase dbDragonSacrifice = await this.AddToDatabase(testCase.SetupDragons[1]); } - await context.SaveChangesAsync(); + await this.ApiContext.SaveChangesAsync(); DragonBuildupRequest request = new DragonBuildupRequest() { @@ -118,13 +110,11 @@ await this.Client.PostMsgpack("dragon/buildup", request) [Fact] public async Task DragonBuildUp_ReturnsDragonDataWithAugments() { - ApiContext context = this.Services.GetRequiredService(); - - DbPlayerDragonData dbDragon = context - .PlayerDragonData.Add(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Liger)) + DbPlayerDragonData dbDragon = this + .ApiContext.PlayerDragonData.Add(new DbPlayerDragonData(ViewerId, Dragons.Liger)) .Entity; - await context.SaveChangesAsync(); + await this.ApiContext.SaveChangesAsync(); DragonBuildupRequest request = new DragonBuildupRequest() { @@ -156,23 +146,24 @@ await this.Client.PostMsgpack("dragon/buildup", request) [Fact] public async Task DragonResetPlusCount_ResetsAugments() { - ApiContext context = this.Services.GetRequiredService(); - - DbPlayerDragonData dragon = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Maritimus); + DbPlayerDragonData dragon = new DbPlayerDragonData(ViewerId, Dragons.Maritimus); dragon.AttackPlusCount = 50; - dragon = context.PlayerDragonData.Add(dragon).Entity; + dragon = this.ApiContext.PlayerDragonData.Add(dragon).Entity; - await context.SaveChangesAsync(); + await this.ApiContext.SaveChangesAsync(); - context.ChangeTracker.Clear(); - DbPlayerUserData userData = await context - .PlayerUserData.Where(x => x.ViewerId == ViewerId) + this.ApiContext.ChangeTracker.Clear(); + DbPlayerUserData userData = await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == ViewerId) .FirstAsync(); long startCoin = userData.Coin; int augmentCount = ( - await context.PlayerMaterials.FindAsync(ViewerId, Materials.AmplifyingDragonscale) + await this.ApiContext.PlayerMaterials.FindAsync( + ViewerId, + Materials.AmplifyingDragonscale + ) )!.Quantity; DragonResetPlusCountRequest request = new DragonResetPlusCountRequest() @@ -219,7 +210,7 @@ await this.Client.PostMsgpack("dragon/get_contact_ public async Task DragonBuyGiftToSendMultiple_IncreasesReliabilityAndReturnsGifts() { this.ApiContext.PlayerDragonReliability.Add( - DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.HighChthonius) + new DbPlayerDragonReliability(ViewerId, Dragons.HighChthonius) ); await this.ApiContext.SaveChangesAsync(); @@ -310,9 +301,7 @@ await this.Client.PostMsgpack( [Fact] public async Task DragonSendGiftMultiple_IncreasesReliabilityAndReturnsGifts() { - await this.AddToDatabase( - DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.HighMercury) - ); + await this.AddToDatabase(new DbPlayerDragonReliability(ViewerId, Dragons.HighMercury)); DragonSendGiftMultipleRequest request = new DragonSendGiftMultipleRequest() { @@ -340,9 +329,7 @@ await this.Client.PostMsgpack( [Fact] public async Task DragonGiftSendMultiple_ReachLevel5_ReturnsExpectedRewardReliabilityList() { - await this.AddToDatabase( - DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.HighMercury) - ); + await this.AddToDatabase(new DbPlayerDragonReliability(ViewerId, Dragons.HighMercury)); DragonSendGiftMultipleRequest request = new DragonSendGiftMultipleRequest() { @@ -458,7 +445,7 @@ await this.Client.PostMsgpack( [Fact] public async Task DragonSendGift_IncreasesReliabilityAndReturnsGifts() { - await this.AddToDatabase(DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.Puppy)); + await this.AddToDatabase(new DbPlayerDragonReliability(ViewerId, Dragons.Puppy)); DragonSendGiftRequest request = new DragonSendGiftRequest() { @@ -481,9 +468,7 @@ await this.Client.PostMsgpack("dragon/send_gift", reques [Fact] public async Task DragonSendGift_AllStoriesUnlocked_DoesNotThrow() { - await this.AddToDatabase( - DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.MidgardsormrZero) - ); + await this.AddToDatabase(new DbPlayerDragonReliability(ViewerId, Dragons.MidgardsormrZero)); foreach (int storyId in MasterAsset.DragonStories[(int)Dragons.MidgardsormrZero].StoryIds) { @@ -531,8 +516,8 @@ public DragonLimitBreakTheoryData() new DragonLimitBreakTestCase( new List() { - DbPlayerDragonDataFactory.Create(0, Dragons.Juggernaut), - DbPlayerDragonDataFactory.Create(0, Dragons.Juggernaut) + new DbPlayerDragonData(0, Dragons.Juggernaut), + new DbPlayerDragonData(0, Dragons.Juggernaut) }, 1, DragonLimitBreakMatTypes.Dupe @@ -544,7 +529,7 @@ public DragonLimitBreakTheoryData() new DragonLimitBreakTestCase( new List() { - DbPlayerDragonDataFactory.Create(0, Dragons.Midgardsormr) + new DbPlayerDragonData(0, Dragons.Midgardsormr) }, 1, DragonLimitBreakMatTypes.Stone @@ -554,10 +539,7 @@ public DragonLimitBreakTheoryData() #region CupidSpheres Add( new DragonLimitBreakTestCase( - new List() - { - DbPlayerDragonDataFactory.Create(0, Dragons.Cupid) - }, + new List() { new DbPlayerDragonData(0, Dragons.Cupid) }, 1, DragonLimitBreakMatTypes.Spheres ) @@ -568,7 +550,7 @@ public DragonLimitBreakTheoryData() new DragonLimitBreakTestCase( new List() { - DbPlayerDragonDataFactory.Create(0, Dragons.HighBrunhilda) + new DbPlayerDragonData(0, Dragons.HighBrunhilda) }, 5, DragonLimitBreakMatTypes.SpheresLB5 @@ -636,7 +618,7 @@ await this.Client.PostMsgpack("dragon/limit_break", reque public async Task DragonSetLock_ReturnsLockDragonData() { DbPlayerDragonData dragon = await this.AddToDatabase( - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.HighZodiark) + new DbPlayerDragonData(ViewerId, Dragons.HighZodiark) ); DragonSetLockRequest request = new DragonSetLockRequest() @@ -662,7 +644,7 @@ await this.Client.PostMsgpack("dragon/set_lock", request) public async Task DragonSell_SuccessfulSale() { DbPlayerDragonData dragon = await this.AddToDatabase( - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.GaibhneCreidhne) + new DbPlayerDragonData(ViewerId, Dragons.GaibhneCreidhne) ); DragonData dragonData = MasterAsset.DragonData.Get(Dragons.GaibhneCreidhne); @@ -696,25 +678,23 @@ await this.Client.PostMsgpack("dragon/sell", request) [Fact] public async Task DragonSell_Multi_SuccessfulSale() { - ApiContext context = this.Services.GetRequiredService(); - - DbPlayerDragonData dragonSimurgh = context - .PlayerDragonData.Add(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Simurgh)) + DbPlayerDragonData dragonSimurgh = this + .ApiContext.PlayerDragonData.Add(new DbPlayerDragonData(ViewerId, Dragons.Simurgh)) .Entity; - DbPlayerDragonData dragonStribog = context - .PlayerDragonData.Add(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Stribog)) + DbPlayerDragonData dragonStribog = this + .ApiContext.PlayerDragonData.Add(new DbPlayerDragonData(ViewerId, Dragons.Stribog)) .Entity; dragonStribog.LimitBreakCount = 4; - await context.SaveChangesAsync(); + await this.ApiContext.SaveChangesAsync(); DragonData dragonDataSimurgh = MasterAsset.DragonData.Get(Dragons.Simurgh); DragonData dragonDataStribog = MasterAsset.DragonData.Get(Dragons.Stribog); - context.ChangeTracker.Clear(); - DbPlayerUserData uData = await context - .PlayerUserData.Where(x => x.ViewerId == ViewerId) + this.ApiContext.ChangeTracker.Clear(); + DbPlayerUserData uData = await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == ViewerId) .FirstAsync(); long startCoin = uData.Coin; diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/PartyTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/PartyTest.cs index 2c59b8054..d013ee865 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/PartyTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/PartyTest.cs @@ -198,9 +198,8 @@ await this.Client.PostMsgpack( new PartySetMainPartyNoRequest(2) ); - ApiContext apiContext = this.Services.GetRequiredService(); - DbPlayerUserData userData = await apiContext - .PlayerUserData.Where(x => x.ViewerId == ViewerId) + DbPlayerUserData userData = await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == ViewerId) .SingleAsync(); userData.MainPartyNo.Should().Be(2); diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestReadStoryTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestReadStoryTest.cs deleted file mode 100644 index 12d44a5dd..000000000 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestReadStoryTest.cs +++ /dev/null @@ -1,100 +0,0 @@ -using DragaliaAPI.Database.Entities; -using Microsoft.EntityFrameworkCore; - -namespace DragaliaAPI.Integration.Test.Dragalia; - -public class QuestReadStoryTest : TestFixture -{ - public QuestReadStoryTest(CustomWebApplicationFactory factory, ITestOutputHelper outputHelper) - : base(factory, outputHelper) { } - - [Fact] - public async Task ReadStory_ReturnCorrectResponse() - { - QuestReadStoryResponse response = ( - await this.Client.PostMsgpack( - "/quest/read_story", - new QuestReadStoryRequest() { QuestStoryId = 1000106 } - ) - ).Data; - - response.UpdateDataList.UserData.Should().NotBeNull(); - response - .UpdateDataList.CharaList.Should() - .ContainSingle() - .And.Subject.Any(x => x.CharaId == Charas.Ranzal) - .Should() - .BeTrue(); - - response - .UpdateDataList.QuestStoryList.Should() - .ContainEquivalentOf( - new QuestStoryList() { QuestStoryId = 1000106, State = StoryState.Read } - ); - } - - [Fact] - public async Task ReadStory_UpdatesDatabase() - { - QuestReadStoryResponse response = ( - await this.Client.PostMsgpack( - "/quest/read_story", - new QuestReadStoryRequest() { QuestStoryId = 1001410 } - ) - ).Data; - - this.ApiContext.PlayerStoryState.First(x => x.ViewerId == ViewerId && x.StoryId == 1001410) - .State.Should() - .Be(StoryState.Read); - - List storyStates = await this - .ApiContext.PlayerStoryState.Where(x => x.ViewerId == ViewerId) - .ToListAsync(); - - storyStates.Should().Contain(x => x.StoryId == 1001410 && x.State == StoryState.Read); - this.ApiContext.PlayerCharaData.Any(x => x.CharaId == Charas.Zena).Should().BeTrue(); - } - - [Fact] - public async Task ReadStory_TheLonePaladyn_SetsTutorialStatus() - { - /* https://github.com/SapiensAnatis/Dawnshard/issues/533 */ - - int theLonePaladynStoryId = 1000103; - - QuestReadStoryResponse response = ( - await this.Client.PostMsgpack( - "/quest/read_story", - new QuestReadStoryRequest() { QuestStoryId = theLonePaladynStoryId } - ) - ).Data; - - response - .UpdateDataList.QuestStoryList.Should() - .ContainEquivalentOf( - new QuestStoryList() - { - QuestStoryId = theLonePaladynStoryId, - State = StoryState.Read - } - ); - - response.UpdateDataList.UserData.TutorialStatus.Should().Be(10600); - } - - [Theory] - [InlineData(2044303, Charas.Harle)] - [InlineData(2046203, Charas.Origa)] - [InlineData(2042704, Charas.Audric)] - public async Task ReadCompendiumStory_GrantsCharacter(int storyId, Charas expectedChara) - { - QuestReadStoryResponse response = ( - await this.Client.PostMsgpack( - "/quest/read_story", - new QuestReadStoryRequest() { QuestStoryId = storyId } - ) - ).Data; - - response.UpdateDataList.CharaList.Should().Contain(x => x.CharaId == expectedChara); - } -} diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/WeaponBodyTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/WeaponBodyTest.cs index 5ad62f3f3..db443c97e 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/WeaponBodyTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/WeaponBodyTest.cs @@ -1,9 +1,7 @@ using System.Diagnostics.CodeAnalysis; -using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Mapping.Mapperly; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; namespace DragaliaAPI.Integration.Test.Dragalia; @@ -104,8 +102,7 @@ WeaponUpgradeTestCase testCase { await this.AddToDatabase(testCase.InitialState); - ApiContext apiContext = this.Services.GetRequiredService(); - apiContext.ChangeTracker.Clear(); + this.ApiContext.ChangeTracker.Clear(); long oldCoin = this.GetRupies(); Dictionary oldMaterials = testCase.ExpMaterialLoss.ToDictionary( @@ -128,8 +125,8 @@ await this.Client.PostMsgpack( ).Data; // Check coin - DbPlayerUserData userData = (await apiContext.PlayerUserData.FindAsync(ViewerId))!; - await apiContext.Entry(userData).ReloadAsync(); + DbPlayerUserData userData = (await this.ApiContext.PlayerUserData.FindAsync(ViewerId))!; + await this.ApiContext.Entry(userData).ReloadAsync(); if (testCase.ExpCoinLoss != 0) response.UpdateDataList.UserData.Coin.Should().Be(oldCoin - testCase.ExpCoinLoss); @@ -140,9 +137,12 @@ await this.Client.PostMsgpack( // Check weapon DbWeaponBody weaponBody = ( - await apiContext.PlayerWeapons.FindAsync(ViewerId, testCase.InitialState.WeaponBodyId) + await this.ApiContext.PlayerWeapons.FindAsync( + ViewerId, + testCase.InitialState.WeaponBodyId + ) )!; - await apiContext.Entry(weaponBody).ReloadAsync(); + await this.ApiContext.Entry(weaponBody).ReloadAsync(); weaponBody .Should() @@ -165,7 +165,7 @@ await apiContext.PlayerWeapons.FindAsync(ViewerId, testCase.InitialState.WeaponB ); DbPlayerMaterial dbEntry = ( - await apiContext.PlayerMaterials.FindAsync(ViewerId, material) + await this.ApiContext.PlayerMaterials.FindAsync(ViewerId, material) )!; dbEntry.Quantity.Should().Be(expQuantity); @@ -181,8 +181,7 @@ DbWeaponPassiveAbility expPassive in testCase.ExpPassiveAbilities .UpdateDataList.WeaponPassiveAbilityList.Should() .ContainEquivalentOf(this.Mapper.Map(expPassive)); - apiContext - .PlayerPassiveAbilities.Should() + this.ApiContext.PlayerPassiveAbilities.Should() .ContainEquivalentOf(expPassive, opts => opts.Excluding(x => x.ViewerId)); } @@ -196,8 +195,7 @@ DbWeaponPassiveAbility expPassive in testCase.ExpPassiveAbilities opts => opts.Excluding(x => x.GetTime) ); - apiContext - .PlayerWeaponSkins.Should() + this.ApiContext.PlayerWeaponSkins.Should() .ContainEquivalentOf( expPassive, opts => opts.Excluding(x => x.GetTime).Excluding(x => x.ViewerId) diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/DragaliaAPI.Integration.Test.csproj b/DragaliaAPI/DragaliaAPI.Integration.Test/DragaliaAPI.Integration.Test.csproj index b89f9fd70..885db7a73 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/DragaliaAPI.Integration.Test.csproj +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/DragaliaAPI.Integration.Test.csproj @@ -28,6 +28,9 @@ PreserveNewest + + PreserveNewest + diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonRecordTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonRecordTest.cs index 1dff72e5b..07a75ba25 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonRecordTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonRecordTest.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using System.Net.Http.Headers; -using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Dungeon; using DragaliaAPI.Models; diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonSkipTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonSkipTest.cs index f361a1371..ad51518e0 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonSkipTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Dungeon/DungeonSkipTest.cs @@ -1,4 +1,6 @@ using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Utils; +using DragaliaAPI.Shared.MasterAsset.Models.Missions; using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Integration.Test.Features.Dungeon; @@ -268,4 +270,45 @@ await this.Client.PostMsgpack( } ); } + + [Fact] + public async Task DungeonSkipStart_CompletesDailyMissions() + { + int questId = 100010201; // Save the Paladyn (Hard) + int playCount = 5; + int clear5QuestsMission = 15070501; + + await this.AddRangeToDatabase( + [ + new DbQuest() + { + ViewerId = ViewerId, + QuestId = questId, + State = 3 + }, + new DbPlayerMission() + { + Id = clear5QuestsMission, + Type = MissionType.Daily, + State = MissionState.InProgress, + } + ] + ); + + DragaliaResponse response = + await this.Client.PostMsgpack( + $"{Endpoint}/start", + new DungeonSkipStartRequest() + { + PartyNo = 1, + PlayCount = playCount, + SupportViewerId = 1000, + QuestId = questId + } + ); + + response + .Data.UpdateDataList.MissionNotice.DailyMissionNotice.NewCompleteMissionIdList.Should() + .Contain(clear5QuestsMission); + } } diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Login/LoginTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Login/LoginTest.cs index 339eb7137..4af942831 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Login/LoginTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Login/LoginTest.cs @@ -1,5 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Login; +using DragaliaAPI.Features.Login.Actions; +using DragaliaAPI.Features.Wall; using DragaliaAPI.Shared.MasterAsset.Models.Missions; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; @@ -448,6 +450,79 @@ await this.Client.PostMsgpack( .NotContain(x => x.GroupId == starryDragonyuleEventId); } + [Fact] + public async Task LoginIndex_WallNotInitialized_SendsEmptyWallRewardList() + { + LoginIndexResponse response = ( + await this.Client.PostMsgpack( + "login/index", + new LoginIndexRequest() { JwsResult = string.Empty } + ) + ).Data; + + response.MonthlyWallReceiveList.Should().BeEmpty(); + } + + [Fact] + public async Task LoginIndex_WallInitialized_Eligible_SendsRewardAvailable() + { + await this.AddRangeToDatabase( + [ + new DbPlayerQuestWall() { WallId = WallService.FlameWallId, WallLevel = 10, }, + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UnixEpoch } + ] + ); + + LoginIndexResponse response = ( + await this.Client.PostMsgpack( + "login/index", + new LoginIndexRequest() { JwsResult = string.Empty } + ) + ).Data; + + response + .MonthlyWallReceiveList.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new AtgenMonthlyWallReceiveList() + { + QuestGroupId = WallService.WallQuestGroupId, + IsReceiveReward = RewardStatus.Available, + } + ); + } + + [Fact] + public async Task LoginIndex_WallInitialized_Claimed_SendsRewardReceived() + { + await this.AddRangeToDatabase( + [ + new DbPlayerQuestWall() { WallId = WallService.FlameWallId, WallLevel = 10, }, + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UtcNow } + ] + ); + + LoginIndexResponse response = ( + await this.Client.PostMsgpack( + "login/index", + new LoginIndexRequest() { JwsResult = string.Empty } + ) + ).Data; + + response + .MonthlyWallReceiveList.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new AtgenMonthlyWallReceiveList() + { + QuestGroupId = WallService.WallQuestGroupId, + IsReceiveReward = RewardStatus.Received, + } + ); + } + [Fact] public async Task LoginVerifyJws_ReturnsOK() { diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Missions/MissionTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Missions/MissionTest.cs index 5d22bec01..45462e851 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Missions/MissionTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Missions/MissionTest.cs @@ -1,7 +1,7 @@ using System.Diagnostics.CodeAnalysis; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Utils; -using DragaliaAPI.Helpers; +using DragaliaAPI.Extensions; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Missions; @@ -185,9 +185,9 @@ public async Task ReceiveReward_Daily_ClaimsReward() int missionId1 = 15070301; // Clear a Quest int missionId2 = 15070401; // Clear Three Quests - ResetHelper resetHelper = new(TimeProvider.System); + TimeProvider timeProvider = TimeProvider.System; - DateOnly today = DateOnly.FromDateTime(resetHelper.LastDailyReset.Date); + DateOnly today = DateOnly.FromDateTime(timeProvider.GetLastDailyReset().Date); DateOnly yesterday = today.AddDays(-1); await this.AddToDatabase( @@ -227,8 +227,8 @@ await this.AddToDatabase( Id = missionId1, Type = MissionType.Daily, State = MissionState.Completed, - Start = resetHelper.LastDailyReset, - End = resetHelper.LastDailyReset.AddDays(1) + Start = timeProvider.GetLastDailyReset(), + End = timeProvider.GetLastDailyReset().AddDays(1) }, new DbPlayerMission() { @@ -236,8 +236,8 @@ await this.AddToDatabase( Id = missionId2, Type = MissionType.Daily, State = MissionState.Completed, - Start = resetHelper.LastDailyReset, - End = resetHelper.LastDailyReset.AddDays(1) + Start = timeProvider.GetLastDailyReset(), + End = timeProvider.GetLastDailyReset().AddDays(1) } ] ); diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Present/PresentTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Present/PresentTest.cs index 1c3ff1c45..76016b7ff 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Present/PresentTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Present/PresentTest.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Shared.Definitions.Enums.Summon; using DragaliaAPI.Shared.Features.Presents; -using DragaliaAPI.Shared.MasterAsset.Models.Summon; +using DragaliaAPI.Shared.MasterAsset; using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Integration.Test.Features.Present; @@ -81,7 +81,7 @@ await this.Client.PostMsgpack( } ); - response.Data.PresentList.Should().BeInAscendingOrder(x => x.PresentId); + response.Data.PresentList.Should().BeInDescendingOrder(x => x.PresentId); } [Fact] @@ -139,7 +139,7 @@ await this.Client.PostMsgpack( } ); - response.Data.PresentLimitList.Should().BeInAscendingOrder(x => x.PresentId); + response.Data.PresentLimitList.Should().BeInDescendingOrder(x => x.PresentId); } [Fact] @@ -174,7 +174,7 @@ await this.Client.PostMsgpack( new PresentGetPresentListRequest() { IsLimit = false, - PresentId = (ulong)presents[0].PresentId + PresentId = firstResponse.Data.PresentList.Last().PresentId } ); @@ -455,6 +455,52 @@ await this.Client.PostMsgpack( .Data.UpdateDataList.CharaList.Should() .ContainSingle() .And.Contain(x => x.CharaId == Charas.Addis); + response + .Data.UpdateDataList.UnitStoryList.Should() + .ContainSingle() + .And.Contain(x => + x.UnitStoryId == MasterAsset.CharaStories[(int)Charas.Addis].StoryIds[0] + ); + } + + [Fact] + public async Task Receive_DuplicateDragon_GrantsBoth() + { + List presents = + new() + { + new() + { + ViewerId = ViewerId, + EntityType = EntityTypes.Dragon, + EntityId = (int)Dragons.Homura, + }, + new() + { + ViewerId = ViewerId, + EntityType = EntityTypes.Dragon, + EntityId = (int)Dragons.Homura, + }, + }; + + await this.AddRangeToDatabase(presents); + + IEnumerable presentIdList = presents.Select(x => (ulong)x.PresentId).ToList(); + + DragaliaResponse response = + await this.Client.PostMsgpack( + $"{Controller}/receive", + new PresentReceiveRequest() { PresentIdList = presentIdList } + ); + + response.Data.ReceivePresentIdList.Should().BeEquivalentTo(presentIdList); + + response.Data.UpdateDataList.DragonList.Should().HaveCount(2); + + response + .Data.UpdateDataList.DragonReliabilityList.Should() + .ContainSingle() + .And.Contain(x => x.DragonId == Dragons.Homura); } [Fact] @@ -610,7 +656,7 @@ await this.Client.PostMsgpack( $"{Controller}/get_history_list", new PresentGetHistoryListRequest() { - PresentHistoryId = (ulong)presentHistories[0].Id + PresentHistoryId = (ulong)presentHistories[99].Id } ); diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestClearPartyTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestClearPartyTest.cs similarity index 84% rename from DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestClearPartyTest.cs rename to DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestClearPartyTest.cs index 2421061fa..cae92ff35 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestClearPartyTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestClearPartyTest.cs @@ -2,7 +2,7 @@ using DragaliaAPI.Features.Quest; using Microsoft.EntityFrameworkCore; -namespace DragaliaAPI.Integration.Test.Dragalia; +namespace DragaliaAPI.Integration.Test.Features.Quest; /// /// Tests @@ -20,7 +20,7 @@ public async Task GetQuestClearParty_ReturnsSetClearParty() { await this.ImportSave(); - await this.AddRangeToDatabase(SoloDbEntities); + await this.AddRangeToDatabase(this.SoloDbEntities); DragaliaResponse response = await this.Client.PostMsgpack( @@ -28,7 +28,9 @@ await this.Client.PostMsgpack( new QuestGetQuestClearPartyRequest() { QuestId = 1 } ); - response.Data.QuestClearPartySettingList.Should().BeEquivalentTo(SoloPartySettingLists); + response + .Data.QuestClearPartySettingList.Should() + .BeEquivalentTo(this.SoloPartySettingLists); response.Data.LostUnitList.Should().BeEmpty(); } @@ -37,7 +39,7 @@ public async Task GetQuestClearPartyMulti_ReturnsSetClearParty() { await this.ImportSave(); - await this.AddRangeToDatabase(MultiDbEntities); + await this.AddRangeToDatabase(this.MultiDbEntities); DragaliaResponse response = await this.Client.PostMsgpack( @@ -47,7 +49,7 @@ await this.Client.PostMsgpack( response .Data.QuestMultiClearPartySettingList.Should() - .BeEquivalentTo(MultiPartySettingLists); + .BeEquivalentTo(this.MultiPartySettingLists); response.Data.LostUnitList.Should().BeEmpty(); } @@ -61,7 +63,7 @@ await this.Client.PostMsgpack( new QuestSetQuestClearPartyRequest() { QuestId = questId, - RequestPartySettingList = MultiPartySettingLists + RequestPartySettingList = this.MultiPartySettingLists } ); @@ -79,9 +81,9 @@ public async Task GetQuestClearParty_HandlesMissingEntities() { await this.ImportSave(); - int questId = MissingItemDbEntities[0].QuestId; + int questId = this.MissingItemDbEntities[0].QuestId; - await this.AddRangeToDatabase(MissingItemDbEntities); + await this.AddRangeToDatabase(this.MissingItemDbEntities); DragaliaResponse response = await this.Client.PostMsgpack( @@ -156,7 +158,7 @@ await this.Client.PostMsgpack( new QuestSetQuestClearPartyRequest() { QuestId = 3, - RequestPartySettingList = SoloPartySettingLists + RequestPartySettingList = this.SoloPartySettingLists } ); @@ -164,11 +166,13 @@ await this.Client.PostMsgpack( List storedList = await this .ApiContext.QuestClearPartyUnits.Where(x => - x.QuestId == 3 && x.ViewerId == ViewerId && x.IsMulti == false + x.QuestId == 3 && x.ViewerId == this.ViewerId && x.IsMulti == false ) .ToListAsync(); - storedList.Should().BeEquivalentTo(SoloDbEntities, opts => opts.Excluding(x => x.QuestId)); + storedList + .Should() + .BeEquivalentTo(this.SoloDbEntities, opts => opts.Excluding(x => x.QuestId)); storedList.Should().AllSatisfy(x => x.QuestId.Should().Be(3)); } @@ -183,7 +187,7 @@ await this.Client.PostMsgpack( new QuestSetQuestClearPartyRequest() { QuestId = 4, - RequestPartySettingList = MultiPartySettingLists + RequestPartySettingList = this.MultiPartySettingLists } ); @@ -191,11 +195,13 @@ await this.Client.PostMsgpack( List storedList = await this .ApiContext.QuestClearPartyUnits.Where(x => - x.QuestId == 4 && x.ViewerId == ViewerId && x.IsMulti == true + x.QuestId == 4 && x.ViewerId == this.ViewerId && x.IsMulti == true ) .ToListAsync(); - storedList.Should().BeEquivalentTo(MultiDbEntities, opts => opts.Excluding(x => x.QuestId)); + storedList + .Should() + .BeEquivalentTo(this.MultiDbEntities, opts => opts.Excluding(x => x.QuestId)); storedList.Should().AllSatisfy(x => x.QuestId.Should().Be(4)); } @@ -204,12 +210,12 @@ await this.Client.PostMsgpack( { new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, IsMulti = false, QuestId = 1, UnitNo = 1, CharaId = Charas.GalaNedrick, - EquipDragonKeyId = GetDragonKeyId(Dragons.Cerberus), + EquipDragonKeyId = this.GetDragonKeyId(Dragons.Cerberus), EquipWeaponBodyId = WeaponBodies.YitianJian, EquipCrestSlotType1CrestId1 = AbilityCrests.PrimalCrisis, EquipCrestSlotType1CrestId2 = AbilityCrests.WelcometotheOpera, @@ -218,7 +224,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.TotheExtreme, EquipCrestSlotType3CrestId1 = AbilityCrests.CrownofLightSerpentsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.TutelarysDestinyWolfsBoon, - EquipTalismanKeyId = GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 30129901, EditSkill1CharaId = Charas.Empty, EditSkill2CharaId = Charas.GalaMym, @@ -227,12 +233,12 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, IsMulti = false, QuestId = 1, UnitNo = 2, CharaId = Charas.Patia, - EquipDragonKeyId = GetDragonKeyId(Dragons.Pazuzu), + EquipDragonKeyId = this.GetDragonKeyId(Dragons.Pazuzu), EquipWeaponBodyId = WeaponBodies.QinglongYanyuedao, EquipCrestSlotType1CrestId1 = AbilityCrests.AHalloweenSpectacular, EquipCrestSlotType1CrestId2 = AbilityCrests.CastawaysJournal, @@ -241,7 +247,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.LuckoftheDraw, EquipCrestSlotType3CrestId1 = AbilityCrests.RavenousFireCrownsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.PromisedPietyStaffsBoon, - EquipTalismanKeyId = GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 30129901, EditSkill1CharaId = Charas.TemplarHope, EditSkill2CharaId = Charas.Zena, @@ -257,7 +263,7 @@ await this.Client.PostMsgpack( { UnitNo = 1, CharaId = Charas.GalaNedrick, - EquipDragonKeyId = (ulong)GetDragonKeyId(Dragons.Cerberus), + EquipDragonKeyId = (ulong)this.GetDragonKeyId(Dragons.Cerberus), EquipWeaponBodyId = WeaponBodies.YitianJian, EquipCrestSlotType1CrestId1 = AbilityCrests.PrimalCrisis, EquipCrestSlotType1CrestId2 = AbilityCrests.WelcometotheOpera, @@ -266,7 +272,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.TotheExtreme, EquipCrestSlotType3CrestId1 = AbilityCrests.CrownofLightSerpentsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.TutelarysDestinyWolfsBoon, - EquipTalismanKeyId = (ulong)GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = (ulong)this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 30129901, EditSkill1CharaId = Charas.Empty, EditSkill2CharaId = Charas.GalaMym, @@ -275,7 +281,7 @@ await this.Client.PostMsgpack( { UnitNo = 2, CharaId = Charas.Patia, - EquipDragonKeyId = (ulong)GetDragonKeyId(Dragons.Pazuzu), + EquipDragonKeyId = (ulong)this.GetDragonKeyId(Dragons.Pazuzu), EquipWeaponBodyId = WeaponBodies.QinglongYanyuedao, EquipCrestSlotType1CrestId1 = AbilityCrests.AHalloweenSpectacular, EquipCrestSlotType1CrestId2 = AbilityCrests.CastawaysJournal, @@ -284,7 +290,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.LuckoftheDraw, EquipCrestSlotType3CrestId1 = AbilityCrests.RavenousFireCrownsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.PromisedPietyStaffsBoon, - EquipTalismanKeyId = (ulong)GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = (ulong)this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 30129901, EditSkill1CharaId = Charas.TemplarHope, EditSkill2CharaId = Charas.Zena, @@ -296,12 +302,12 @@ await this.Client.PostMsgpack( { new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, IsMulti = true, QuestId = 2, UnitNo = 1, CharaId = Charas.GalaNotte, - EquipDragonKeyId = GetDragonKeyId(Dragons.Leviathan), + EquipDragonKeyId = this.GetDragonKeyId(Dragons.Leviathan), EquipWeaponBodyId = WeaponBodies.WindrulersFang, EquipCrestSlotType1CrestId1 = AbilityCrests.BondsBetweenWorlds, EquipCrestSlotType1CrestId2 = AbilityCrests.AManUnchanging, @@ -310,7 +316,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.DragonsNest, EquipCrestSlotType3CrestId1 = AbilityCrests.TutelarysDestinyWolfsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.CrownofLightSerpentsBoon, - EquipTalismanKeyId = GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 0, EditSkill1CharaId = Charas.Empty, EditSkill2CharaId = Charas.GalaMym, @@ -319,12 +325,12 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, IsMulti = true, QuestId = 2, UnitNo = 2, CharaId = Charas.GalaLeif, - EquipDragonKeyId = GetDragonKeyId(Dragons.Phoenix), + EquipDragonKeyId = this.GetDragonKeyId(Dragons.Phoenix), EquipWeaponBodyId = WeaponBodies.PrimalTempest, EquipCrestSlotType1CrestId1 = AbilityCrests.AdventureinthePast, EquipCrestSlotType1CrestId2 = AbilityCrests.PrimalCrisis, @@ -333,7 +339,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.ThePlaguebringer, EquipCrestSlotType3CrestId1 = AbilityCrests.AKnightsDreamAxesBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.CrownofLightSerpentsBoon, - EquipTalismanKeyId = GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 0, EditSkill1CharaId = Charas.ShaWujing, EditSkill2CharaId = Charas.Ranzal, @@ -349,7 +355,7 @@ await this.Client.PostMsgpack( { UnitNo = 1, CharaId = Charas.GalaNotte, - EquipDragonKeyId = (ulong)GetDragonKeyId(Dragons.Leviathan), + EquipDragonKeyId = (ulong)this.GetDragonKeyId(Dragons.Leviathan), EquipWeaponBodyId = WeaponBodies.WindrulersFang, EquipCrestSlotType1CrestId1 = AbilityCrests.BondsBetweenWorlds, EquipCrestSlotType1CrestId2 = AbilityCrests.AManUnchanging, @@ -358,7 +364,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.DragonsNest, EquipCrestSlotType3CrestId1 = AbilityCrests.TutelarysDestinyWolfsBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.CrownofLightSerpentsBoon, - EquipTalismanKeyId = (ulong)GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = (ulong)this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 0, EditSkill1CharaId = Charas.Empty, EditSkill2CharaId = Charas.GalaMym, @@ -367,7 +373,7 @@ await this.Client.PostMsgpack( { UnitNo = 2, CharaId = Charas.GalaLeif, - EquipDragonKeyId = (ulong)GetDragonKeyId(Dragons.Phoenix), + EquipDragonKeyId = (ulong)this.GetDragonKeyId(Dragons.Phoenix), EquipWeaponBodyId = WeaponBodies.PrimalTempest, EquipCrestSlotType1CrestId1 = AbilityCrests.AdventureinthePast, EquipCrestSlotType1CrestId2 = AbilityCrests.PrimalCrisis, @@ -376,7 +382,7 @@ await this.Client.PostMsgpack( EquipCrestSlotType2CrestId2 = AbilityCrests.ThePlaguebringer, EquipCrestSlotType3CrestId1 = AbilityCrests.AKnightsDreamAxesBoon, EquipCrestSlotType3CrestId2 = AbilityCrests.CrownofLightSerpentsBoon, - EquipTalismanKeyId = (ulong)GetTalismanKeyId(Talismans.GalaMym), + EquipTalismanKeyId = (ulong)this.GetTalismanKeyId(Talismans.GalaMym), EquipWeaponSkinId = 0, EditSkill1CharaId = Charas.ShaWujing, EditSkill2CharaId = Charas.Ranzal, @@ -388,7 +394,7 @@ await this.Client.PostMsgpack( { new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 1, QuestId = 6, IsMulti = false, @@ -396,7 +402,7 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 2, QuestId = 6, IsMulti = false, @@ -405,7 +411,7 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 3, QuestId = 6, IsMulti = false, @@ -414,7 +420,7 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 4, QuestId = 6, IsMulti = false, @@ -423,17 +429,17 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 5, QuestId = 6, IsMulti = false, - EquipDragonKeyId = 2000, + EquipDragonKeyId = long.MaxValue, CharaId = Charas.Emma, EquippedDragonEntityId = Dragons.Ifrit, }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 6, QuestId = 6, IsMulti = false, @@ -443,7 +449,7 @@ await this.Client.PostMsgpack( }, new() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, UnitNo = 7, QuestId = 6, IsMulti = false, diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestOpenTreasureTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestOpenTreasureTest.cs similarity index 94% rename from DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestOpenTreasureTest.cs rename to DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestOpenTreasureTest.cs index 6bd3d78dc..06cf6f5ef 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/QuestOpenTreasureTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestOpenTreasureTest.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Database.Entities; using Microsoft.EntityFrameworkCore; -namespace DragaliaAPI.Integration.Test.Dragalia; +namespace DragaliaAPI.Integration.Test.Features.Quest; public class QuestOpenTreasureTest : TestFixture { @@ -37,7 +37,7 @@ await this.Client.PostMsgpack( ).Data; List questTreasureList = await this - .ApiContext.QuestTreasureList.Where(x => x.ViewerId == ViewerId) + .ApiContext.QuestTreasureList.Where(x => x.ViewerId == this.ViewerId) .ToListAsync(); questTreasureList.Should().Contain(x => x.QuestTreasureId == 126201); diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestReadStoryTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestReadStoryTest.cs new file mode 100644 index 000000000..f7e6c55d8 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Quest/QuestReadStoryTest.cs @@ -0,0 +1,223 @@ +using DragaliaAPI.Database.Entities; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Integration.Test.Features.Quest; + +public class QuestReadStoryTest : TestFixture +{ + public QuestReadStoryTest(CustomWebApplicationFactory factory, ITestOutputHelper outputHelper) + : base(factory, outputHelper) { } + + [Fact] + public async Task ReadStory_ReturnCorrectResponse() + { + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = 1000106 } + ) + ).Data; + + response.UpdateDataList.UserData.Should().NotBeNull(); + response + .UpdateDataList.CharaList.Should() + .ContainSingle() + .And.Subject.Any(x => x.CharaId == Charas.Ranzal) + .Should() + .BeTrue(); + + response + .UpdateDataList.QuestStoryList.Should() + .ContainEquivalentOf( + new QuestStoryList() { QuestStoryId = 1000106, State = StoryState.Read } + ); + } + + [Fact] + public async Task ReadStory_GrantsReward_InventoryFull_SendsToGiftBox() + { + int midgardStoryId = 1000109; + this.ApiContext.PlayerUserData.ExecuteUpdate(x => + x.SetProperty(e => e.MaxDragonQuantity, 0) + ); + + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = midgardStoryId } + ) + ).Data; + + response.UpdateDataList.UserData.Should().NotBeNull(); + + // Tutorial hack - only for Midgardsormr + response + .UpdateDataList.DragonReliabilityList.Should() + .ContainSingle() + .Which.DragonId.Should() + .Be(Dragons.Midgardsormr); + + response + .EntityResult.OverPresentEntityList.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new AtgenBuildEventRewardEntityList() + { + EntityType = EntityTypes.Dragon, + EntityId = (int)Dragons.Midgardsormr, + EntityQuantity = 1, + } + ); + + response + .UpdateDataList.QuestStoryList.Should() + .ContainEquivalentOf( + new QuestStoryList() { QuestStoryId = midgardStoryId, State = StoryState.Read } + ); + } + + [Fact] + public async Task ReadStory_Midgardsormr_DoesNotAddReliabilityIfOwned() + { + int midgardStoryId = 1000109; + this.ApiContext.PlayerUserData.ExecuteUpdate(x => + x.SetProperty(e => e.MaxDragonQuantity, 0) + ); + + await this.AddToDatabase( + new DbPlayerDragonReliability() { DragonId = Dragons.Midgardsormr } + ); + + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = midgardStoryId } + ) + ).Data; + + response.UpdateDataList.UserData.Should().NotBeNull(); + + response.UpdateDataList.DragonReliabilityList.Should().BeNull(); + + response + .EntityResult.OverPresentEntityList.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new AtgenBuildEventRewardEntityList() + { + EntityType = EntityTypes.Dragon, + EntityId = (int)Dragons.Midgardsormr, + EntityQuantity = 1, + } + ); + + response + .UpdateDataList.QuestStoryList.Should() + .ContainEquivalentOf( + new QuestStoryList() { QuestStoryId = midgardStoryId, State = StoryState.Read } + ); + } + + [Fact] + public async Task ReadStory_UpdatesDatabase() + { + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = 1001410 } + ) + ).Data; + + this.ApiContext.PlayerStoryState.First(x => + x.ViewerId == this.ViewerId && x.StoryId == 1001410 + ) + .State.Should() + .Be(StoryState.Read); + + List storyStates = await this + .ApiContext.PlayerStoryState.Where(x => x.ViewerId == this.ViewerId) + .ToListAsync(); + + storyStates.Should().Contain(x => x.StoryId == 1001410 && x.State == StoryState.Read); + this.ApiContext.PlayerCharaData.Any(x => x.CharaId == Charas.Zena).Should().BeTrue(); + } + + [Fact] + public async Task ReadStory_TheLonePaladyn_SetsTutorialStatus() + { + /* https://github.com/SapiensAnatis/Dawnshard/issues/533 */ + + int theLonePaladynStoryId = 1000103; + + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = theLonePaladynStoryId } + ) + ).Data; + + response + .UpdateDataList.QuestStoryList.Should() + .ContainEquivalentOf( + new QuestStoryList() + { + QuestStoryId = theLonePaladynStoryId, + State = StoryState.Read + } + ); + + response.UpdateDataList.UserData.TutorialStatus.Should().Be(10600); + } + + [Fact] + public async Task ReadStory_Chapter10Completion_GrantsRewards() + { + await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == this.ViewerId) + .ExecuteUpdateAsync(u => + u.SetProperty(e => e.Level, 30).SetProperty(e => e.Exp, 18990) + ); + + StoryReadResponse data = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = 1001009 } + ) + ).Data; + + data.UpdateDataList.UserData.Should().NotBeNull(); + data.UpdateDataList.QuestStoryList.Should() + .BeEquivalentTo( + new List() + { + new() { QuestStoryId = 1001009, State = StoryState.Read } + } + ); + data.UpdateDataList.UserData.Exp.Should().BeGreaterThanOrEqualTo(88980); + data.UpdateDataList.UserData.Level.Should().BeGreaterThanOrEqualTo(65); + this.ApiContext.PlayerPresents.Where(x => + x.ViewerId == this.ViewerId && x.EntityType == EntityTypes.HustleHammer + ) + .First() + .EntityQuantity.Should() + .Be(350); + } + + [Theory] + [InlineData(2044303, Charas.Harle)] + [InlineData(2046203, Charas.Origa)] + [InlineData(2042704, Charas.Audric)] + public async Task ReadCompendiumStory_GrantsCharacter(int storyId, Charas expectedChara) + { + QuestReadStoryResponse response = ( + await this.Client.PostMsgpack( + "/quest/read_story", + new QuestReadStoryRequest() { QuestStoryId = storyId } + ) + ).Data; + + response.UpdateDataList.CharaList.Should().Contain(x => x.CharaId == expectedChara); + } +} diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Reward/RewardServiceTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Reward/RewardServiceTest.cs index 62e10f3a6..3f6b8a7aa 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Reward/RewardServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Reward/RewardServiceTest.cs @@ -1,5 +1,7 @@ using DragaliaAPI.Database.Entities; +using DragaliaAPI.Features.Reward.Handlers; using DragaliaAPI.Shared.Definitions.Enums.Summon; +using Microsoft.Extensions.DependencyInjection; namespace DragaliaAPI.Integration.Test.Features.Reward; @@ -89,4 +91,14 @@ await this.Client.PostMsgpack( opts => opts.Excluding(x => x.KeyId) ); } + + [Fact] + public void NoDuplicateSupportedTypes() + { + IEnumerable supportedTypes = this + .Services.GetServices() + .SelectMany(x => x.SupportedTypes); + + supportedTypes.Should().OnlyHaveUniqueItems(); + } } diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/ISavefileUpdateTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/ISavefileUpdateTest.cs index e8f5f513b..6432c5bd1 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/ISavefileUpdateTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/ISavefileUpdateTest.cs @@ -17,7 +17,7 @@ public ISavefileUpdateTest(CustomWebApplicationFactory factory, ITestOutputHelpe public void ISavefileUpdate_HasExpectedCount() { // Update this test when adding a new update. - this.updates.Should().HaveCount(20); + this.updates.Should().HaveCount(22); } [Fact] diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V21UpdateTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V21UpdateTest.cs new file mode 100644 index 000000000..750f03abc --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V21UpdateTest.cs @@ -0,0 +1,63 @@ +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Features.Wall; + +namespace DragaliaAPI.Integration.Test.Features.SavefileUpdate; + +public class V21UpdateTest : SavefileUpdateTestFixture +{ + public V21UpdateTest(CustomWebApplicationFactory factory, ITestOutputHelper outputHelper) + : base(factory, outputHelper) { } + + [Fact] + public async Task V21Update_WallNotInitialized_DoesNotAddRewardDate() + { + await this.LoadIndex(); + + this.ApiContext.WallRewardDates.Should().BeEmpty(); + } + + [Fact] + public async Task V21Update_WallInitialized_DoesNotAddRewardDate() + { + await this.AddToDatabase( + new DbPlayerQuestWall() { WallId = WallService.FlameWallId, WallLevel = 2 } + ); + + await this.LoadIndex(); + + this.ApiContext.WallRewardDates.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new DbWallRewardDate() + { + ViewerId = this.ViewerId, + LastClaimDate = DateTimeOffset.UnixEpoch, + } + ); + } + + [Fact] + public async Task V21Update_WallInitialized_AlreadyHasRewardDate_DoesNotAddRewardDate() + { + await this.AddRangeToDatabase( + [ + new DbPlayerQuestWall() { WallId = WallService.FlameWallId, WallLevel = 2 }, + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UnixEpoch.AddDays(1) } + ] + ); + + await this.LoadIndex(); + + this.ApiContext.WallRewardDates.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new DbWallRewardDate() + { + ViewerId = this.ViewerId, + LastClaimDate = DateTimeOffset.UnixEpoch.AddDays(1), + } + ); + } +} diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V22UpdateTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V22UpdateTest.cs new file mode 100644 index 000000000..ea82c6074 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/SavefileUpdate/V22UpdateTest.cs @@ -0,0 +1,101 @@ +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models.Story; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Integration.Test.Features.SavefileUpdate; + +public class V22UpdateTest : SavefileUpdateTestFixture +{ + protected override int StartingVersion => 21; + private const int Chapter10LastStoryId = 1001009; + + public V22UpdateTest(CustomWebApplicationFactory factory, ITestOutputHelper outputHelper) + : base(factory, outputHelper) { } + + [Fact] + public async Task V22Update_Chapter10Completed_GrantsRewards() + { + await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == this.ViewerId) + .ExecuteUpdateAsync(u => + u.SetProperty(e => e.Level, 30).SetProperty(e => e.Exp, 18990) + ); + + await this + .ApiContext.PlayerPresents.Where(x => x.ViewerId == this.ViewerId) + .ExecuteDeleteAsync(); + + await this.AddToDatabase( + new DbPlayerStoryState() + { + ViewerId = this.ViewerId, + StoryId = Chapter10LastStoryId, + StoryType = StoryTypes.Quest, + State = StoryState.Read + } + ); + + await this.LoadIndex(); + + DbPlayerUserData userData = await this.ApiContext.PlayerUserData.FirstAsync(x => + x.ViewerId == this.ViewerId + ); + + userData.Level.Should().Be(65); + userData.Exp.Should().Be(88980); + + List presentData = await this + .ApiContext.PlayerPresents.Where(x => x.ViewerId == this.ViewerId) + .ToListAsync(); + + List rewards = MasterAsset + .QuestStoryRewardInfo.Enumerable.Where(x => x.Id == Chapter10LastStoryId) + .First() + .Rewards.Where(x => x.Type is EntityTypes.Material or EntityTypes.HustleHammer) + .ToList(); + + presentData.Count.Should().Be(rewards.Count); + + foreach (QuestStoryReward reward in rewards) + { + DbPlayerPresent present = presentData.First(x => x.EntityType == reward.Type); + present.EntityQuantity.Should().Be(present.EntityQuantity); + } + } + + [Fact] + public async Task V22Update_Chapter10NotCompleted_DoesNotGrantRewards() + { + await this + .ApiContext.PlayerUserData.Where(x => x.ViewerId == this.ViewerId) + .ExecuteUpdateAsync(u => + u.SetProperty(e => e.Level, 30).SetProperty(e => e.Exp, 18990) + ); + + await this + .ApiContext.PlayerStoryState.Where(x => + x.ViewerId == this.ViewerId && x.StoryId == Chapter10LastStoryId + ) + .ExecuteDeleteAsync(); + + await this + .ApiContext.PlayerPresents.Where(x => x.ViewerId == this.ViewerId) + .ExecuteDeleteAsync(); + + await this.LoadIndex(); + + DbPlayerUserData userData = await this.ApiContext.PlayerUserData.FirstAsync(x => + x.ViewerId == this.ViewerId + ); + + userData.Level.Should().Be(30); + userData.Exp.Should().Be(18990); + + List presentData = await this + .ApiContext.PlayerPresents.Where(x => x.ViewerId == this.ViewerId) + .ToListAsync(); + + presentData.Count.Should().Be(0); + } +} diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/StoryTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Story/StoryTest.cs similarity index 91% rename from DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/StoryTest.cs rename to DragaliaAPI/DragaliaAPI.Integration.Test/Features/Story/StoryTest.cs index a232c3eb8..4ce4fb026 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Dragalia/StoryTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Story/StoryTest.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Database.Entities; using Microsoft.EntityFrameworkCore; -namespace DragaliaAPI.Integration.Test.Dragalia; +namespace DragaliaAPI.Integration.Test.Features.Story; public class StoryTest : TestFixture { @@ -51,14 +51,14 @@ public async Task ReadStory_StoryRead_ResponseHasNoRewards() await this.AddToDatabase( new DbPlayerStoryState() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, State = StoryState.Read, StoryId = 100001121, StoryType = StoryTypes.Chara }, new DbPlayerStoryState() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, State = StoryState.Read, StoryId = 100001122, StoryType = StoryTypes.Chara @@ -84,7 +84,7 @@ public async Task ReadStory_StoryNotRead_UpdatesDatabase() { int oldCrystal = await this .ApiContext.PlayerUserData.AsNoTracking() - .Where(x => x.ViewerId == ViewerId) + .Where(x => x.ViewerId == this.ViewerId) .Select(x => x.Crystal) .SingleAsync(); @@ -97,14 +97,14 @@ await this.Client.PostMsgpack( int newCrystal = await this .ApiContext.PlayerUserData.AsNoTracking() - .Where(x => x.ViewerId == ViewerId) + .Where(x => x.ViewerId == this.ViewerId) .Select(x => x.Crystal) .SingleAsync(); newCrystal.Should().Be(oldCrystal + 25); IEnumerable stories = this.ApiContext.PlayerStoryState.Where(x => - x.ViewerId == ViewerId + x.ViewerId == this.ViewerId ); stories @@ -112,7 +112,7 @@ await this.Client.PostMsgpack( .ContainEquivalentOf( new DbPlayerStoryState() { - ViewerId = ViewerId, + ViewerId = this.ViewerId, State = StoryState.Read, StoryId = 100002011, StoryType = StoryTypes.Chara diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/StorySkip/StorySkipTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/StorySkip/StorySkipTest.cs index e2b0dfa03..99cea7465 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/StorySkip/StorySkipTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/StorySkip/StorySkipTest.cs @@ -1,6 +1,8 @@ using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Utils; using DragaliaAPI.Features.StorySkip; using DragaliaAPI.Shared.Features.StorySkip; +using DragaliaAPI.Shared.MasterAsset.Models.Missions; using Microsoft.EntityFrameworkCore; using static DragaliaAPI.Shared.Features.StorySkip.StorySkipRewards; @@ -57,6 +59,11 @@ await this .ApiContext.PlayerFortBuilds.Where(x => x.ViewerId == this.ViewerId) .ExecuteDeleteAsync(); + await this.Client.PostMsgpack( + "mission/unlock_drill_mission_group", + new MissionUnlockDrillMissionGroupRequest(1) + ); + StorySkipSkipResponse data = ( await this.Client.PostMsgpack("story_skip/skip") ).Data; @@ -98,5 +105,17 @@ await this.Client.PostMsgpack("story_skip/skip") fort.Level.Should().Be(fortConfig.Level); } } + + int clearCh1Quest23Mission = 100200; + this.ApiContext.PlayerMissions.Should() + .Contain(x => x.Id == clearCh1Quest23Mission) + .Which.State.Should() + .Be(MissionState.Completed); + + int upgradeHalidomToLv3Mission = 105500; + this.ApiContext.PlayerMissions.Should() + .Contain(x => x.Id == upgradeHalidomToLv3Mission) + .Which.State.Should() + .Be(MissionState.Completed); } } diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Trade/TreasureTradeTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Trade/TreasureTradeTest.cs index ec0a9353f..774b7b0a0 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Trade/TreasureTradeTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Trade/TreasureTradeTest.cs @@ -113,4 +113,38 @@ await Client.PostMsgpack( response.UpdateDataList.Should().NotBeNull(); response.UpdateDataList.WeaponSkinList.Should().Contain(x => x.WeaponSkinId == 30159921); } + + [Fact] + public async Task Trade_MultiDragon_AlmostFull_Trades() + { + this.ApiContext.PlayerDragonData.ExecuteDelete(); + this.ApiContext.PlayerUserData.ExecuteUpdate(e => + e.SetProperty(x => x.MaxDragonQuantity, 2) + ); + + int highBrunhildaTrade = 10030302; + + TreasureTradeTradeResponse response = ( + await Client.PostMsgpack( + "treasure_trade/trade", + new TreasureTradeTradeRequest(1003, highBrunhildaTrade, null, 4) + ) + ).Data; + + response.UpdateDataList.DragonList.Should().HaveCount(2); + response.EntityResult.OverPresentEntityList.Should().HaveCount(2); + + this.ApiContext.PlayerDragonData.ToList() + .Should() + .HaveCount(2) + .And.AllSatisfy(x => x.DragonId.Should().Be(Dragons.HighBrunhilda)); + this.ApiContext.PlayerPresents.ToList() + .Should() + .HaveCount(2) + .And.AllSatisfy(x => + { + x.EntityType.Should().Be(EntityTypes.Dragon); + x.EntityId.Should().Be((int)Dragons.HighBrunhilda); + }); + } } diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Version/VersionTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Version/VersionTest.cs index 01b293b49..4e7f379ea 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Version/VersionTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Version/VersionTest.cs @@ -1,6 +1,6 @@ using DragaliaAPI.Features.Version; -namespace DragaliaAPI.Integration.Test.Dragalia; +namespace DragaliaAPI.Integration.Test.Features.Version; /// /// Tests diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Wall/WallTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Wall/WallTest.cs index 736bf3ef2..92a8759fe 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Wall/WallTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Features/Wall/WallTest.cs @@ -63,39 +63,39 @@ await Client.PostMsgpack( public async Task GetMonthlyReward_ReturnsExpectedResponse() { await this.AddRangeToDatabase( - new List() - { - new() + [ + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UnixEpoch, }, + new DbPlayerQuestWall() { ViewerId = ViewerId, WallId = 216010001, WallLevel = 1, }, - new() + new DbPlayerQuestWall() { ViewerId = ViewerId, WallId = 216010002, WallLevel = 2, }, - new() + new DbPlayerQuestWall() { ViewerId = ViewerId, WallId = 216010003, WallLevel = 3, }, - new() + new DbPlayerQuestWall() { ViewerId = ViewerId, WallId = 216010004, WallLevel = 4, }, - new() + new DbPlayerQuestWall() { ViewerId = ViewerId, WallId = 216010005, WallLevel = 5, } - } + ] ); WallGetMonthlyRewardResponse response = ( @@ -112,8 +112,8 @@ await this.Client.PostMsgpack( { QuestGroupId = 21601, SumWallLevel = 1 + 2 + 3 + 4 + 5, - LastRewardDate = DateTimeOffset.UtcNow, - RewardStatus = RewardStatus.Received + LastRewardDate = DateTimeOffset.UnixEpoch, + RewardStatus = RewardStatus.Available } ); } @@ -121,13 +121,23 @@ await this.Client.PostMsgpack( [Fact] public async Task ReceiveMonthlyRewards_ReceivesRewards() { + await this.AddToDatabase( + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UnixEpoch } + ); + DbPlayerUserData oldUserData = this .ApiContext.PlayerUserData.AsNoTracking() .First(x => x.ViewerId == ViewerId); - int expectedMana = 15_000; - int expectedCoin = 20_000; - int expectedDewPoint = 5_400; + int oldTwinklingSand = this + .ApiContext.PlayerMaterials.AsNoTracking() + .First(x => x.MaterialId == Materials.TwinklingSand) + .Quantity; + + int expectedMana = 25_000; + int expectedCoin = 40_000; + int expectedDewPoint = 9_000; + int expectedTwinklingSand = 1; await this.AddRangeToDatabase( new List() @@ -136,31 +146,31 @@ await this.AddRangeToDatabase( { ViewerId = ViewerId, WallId = 216010001, - WallLevel = 6, + WallLevel = 5, }, new() { ViewerId = ViewerId, WallId = 216010002, - WallLevel = 2, + WallLevel = 5, }, new() { ViewerId = ViewerId, WallId = 216010003, - WallLevel = 3, + WallLevel = 5, }, new() { ViewerId = ViewerId, WallId = 216010004, - WallLevel = 2, + WallLevel = 5, }, new() { ViewerId = ViewerId, WallId = 216010005, - WallLevel = 1, + WallLevel = 5, } } ); @@ -178,9 +188,9 @@ await this.Client.PostMsgpack( new AtgenUserWallRewardList() { QuestGroupId = 21601, - SumWallLevel = 6 + 2 + 3 + 2 + 1, - LastRewardDate = DateTimeOffset.UtcNow, - RewardStatus = RewardStatus.Received + SumWallLevel = 5 * 5, + LastRewardDate = DateTimeOffset.UnixEpoch, + RewardStatus = RewardStatus.Available } ); @@ -193,5 +203,57 @@ await this.Client.PostMsgpack( response .UpdateDataList.UserData.ManaPoint.Should() .Be(oldUserData.ManaPoint + expectedMana); + + response + .UpdateDataList.MaterialList.Should() + .ContainSingle() + .Which.Should() + .BeEquivalentTo( + new MaterialList() + { + MaterialId = Materials.TwinklingSand, + Quantity = oldTwinklingSand + expectedTwinklingSand + } + ); + } + + [Fact] + public async Task ReceiveMonthlyRewawrds_NotInitialized_ReturnsInvalidArgument() + { + DragaliaResponse response = ( + await this.Client.PostMsgpack( + "wall/receive_monthly_reward", + new WallGetMonthlyRewardRequest() { QuestGroupId = 21601 }, + ensureSuccessHeader: false + ) + ); + + response.DataHeaders.ResultCode.Should().Be(ResultCode.CommonInvalidArgument); + } + + [Fact] + public async Task ReceiveMonthlyRewawrds_NotEligible_ReturnsInvalidArgument() + { + await this.AddRangeToDatabase( + [ + new DbWallRewardDate() { LastClaimDate = DateTimeOffset.UtcNow }, + new DbPlayerQuestWall() + { + ViewerId = ViewerId, + WallId = 216010001, + WallLevel = 5, + }, + ] + ); + + DragaliaResponse response = ( + await this.Client.PostMsgpack( + "wall/receive_monthly_reward", + new WallGetMonthlyRewardRequest() { QuestGroupId = 21601 }, + ensureSuccessHeader: false + ) + ); + + response.DataHeaders.ResultCode.Should().Be(ResultCode.CommonInvalidArgument); } } diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Other/GlobalQueryFilterTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Other/GlobalQueryFilterTest.cs index 101747fa1..1620573b1 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Other/GlobalQueryFilterTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Other/GlobalQueryFilterTest.cs @@ -1,7 +1,6 @@ using System.Reflection; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Abstract; -using DragaliaAPI.Shared.MasterAsset.Models; using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Integration.Test.Other; @@ -34,10 +33,70 @@ public async Task DbPlayerDragonGift_HasGlobalQueryFilter() => public async Task DbPlayerBannerData_HasGlobalQueryFilter() => await TestGlobalQueryFilter(); + [Fact] + public async Task DbPlayerUserData_HasGlobalQueryFilter() + { + // We will already have an instance for our own Viewer ID thanks to TestFixture + this.ApiContext.Players.Add(new() { ViewerId = this.ViewerId + 1, AccountId = "other" }); + this.ApiContext.PlayerUserData.Add(new() { ViewerId = this.ViewerId + 1 }); + await this.ApiContext.SaveChangesAsync(); + + (await this.ApiContext.PlayerUserData.AsNoTracking().ToListAsync()) + .Should() + .HaveCount(1) + .And.AllSatisfy(x => x.ViewerId.Should().Be(this.ViewerId)); + } + + [Fact] + public async Task DbPlayerDragonData_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + + [Fact] + public async Task DbPlayerDragonReliability_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + [Fact] public async Task DbPlayerSummonHistory_HasGlobalQueryFilter() => await TestGlobalQueryFilter(); + [Fact] + public async Task DbLoginBonus_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + + [Fact] + public async Task DbPlayerQuestWall_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + + [Fact] + public async Task DbWallRewardDate_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + + [Fact] + public async Task DbPlayerPresent_HasGlobalQueryFilter() => + await TestGlobalQueryFilter(); + + [Fact] + public async Task DbPlayerPresentHistory_HasGlobalQueryFilter() + { + // This entity uses a non-auto-incrementing integer primary key :/ + this.ApiContext.PlayerPresentHistory.AddRange( + [ + new() { Id = 1, ViewerId = this.ViewerId, }, + new() + { + Id = 2, + Owner = new() { ViewerId = this.ViewerId + 1, AccountId = "otherhist" } + } + ] + ); + await this.ApiContext.SaveChangesAsync(); + + this.ApiContext.PlayerPresentHistory.Should() + .ContainSingle() + .Which.ViewerId.Should() + .Be(this.ViewerId); + } + private async Task TestGlobalQueryFilter() where TEntity : class, IDbPlayerData { diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/Other/SavefileImportTest.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/Other/SavefileImportTest.cs index d46a95965..585badc22 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/Other/SavefileImportTest.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/Other/SavefileImportTest.cs @@ -78,6 +78,9 @@ public async Task Import_LoadIndexReturnsImportedSavefile() await this.Client.PostMsgpack("load/index") ).Data; + storedSavefile.UserData.Exp.Should().Be(savefile.UserData.Exp + 69990); // Exp rewarded from V22Update + storedSavefile.UserData.Level.Should().Be(savefile.UserData.Level + 1); // Level diffenece due to exp rewarded from V22Update + storedSavefile .Should() .BeEquivalentTo( @@ -107,6 +110,9 @@ await this.Client.PostMsgpack("load/index") ); opts.Excluding(x => x.UserData!.Level); opts.Excluding(x => x.UserData!.Crystal); + opts.Excluding(x => x.UserData!.Exp); + opts.Excluding(x => x.UserData!.LastStaminaSingleUpdateTime); + opts.Excluding(x => x.UserData!.LastStaminaMultiUpdateTime); opts.Excluding(x => x.TreasureTradeAllList); opts.Excluding(x => x.MultiServer); opts.Excluding(x => x.MissionNotice); @@ -152,7 +158,7 @@ await this.Client.PostMsgpack("load/index") [Fact] public async Task Import_PropertiesMappedCorrectly() { - HttpContent content = PrepareSavefileRequest(); + HttpContent content = PrepareSavefileRequest("endgame_savefile.json"); await this.Client.PostAsync($"savefile/import/{this.ViewerId}", content); this.ApiContext.PlayerStoryState.Single(x => @@ -177,7 +183,7 @@ await this.AddToDatabase( this.ApiContext.ChangeTracker.Clear(); - HttpContent content = PrepareSavefileRequest(); + HttpContent content = PrepareSavefileRequest("endgame_savefile.json"); await this.Client.PostAsync($"savefile/import/{this.ViewerId}", content); this.ApiContext.Emblems.AsNoTracking() @@ -195,7 +201,7 @@ public async Task Import_DoesNotDeleteBuyableDragonGifts() x.ViewerId == this.ViewerId && x.DragonGiftId == DragonGifts.CompellingBook ); - HttpContent content = PrepareSavefileRequest(); + HttpContent content = PrepareSavefileRequest("endgame_savefile.json"); await this.Client.PostAsync($"savefile/import/{this.ViewerId}", content); this.ApiContext.PlayerDragonGifts.Should() @@ -211,7 +217,7 @@ public async Task Import_DeletesDailyMissions() new() { ViewerId = this.ViewerId, Progress = 1, } ); - HttpContent content = PrepareSavefileRequest(); + HttpContent content = PrepareSavefileRequest("endgame_savefile.json"); await this.Client.PostAsync($"savefile/import/{this.ViewerId}", content); this.ApiContext.CompletedDailyMissions.Should() @@ -221,33 +227,42 @@ public async Task Import_DeletesDailyMissions() [Fact] public async Task Import_IsIdempotent() { - long viewerId = this.ApiContext.PlayerUserData.Single(x => x.ViewerId == ViewerId).ViewerId; - - HttpContent content = PrepareSavefileRequest(); + HttpContent content = PrepareSavefileRequest("endgame_savefile.json"); HttpResponseMessage importResponse = await this.Client.PostAsync( - $"savefile/import/{viewerId}", + $"savefile/import/{this.ViewerId}", content ); importResponse.StatusCode.Should().Be(HttpStatusCode.NoContent); HttpResponseMessage importResponse2 = await this.Client.PostAsync( - $"savefile/import/{viewerId}", + $"savefile/import/{this.ViewerId}", content ); importResponse2.StatusCode.Should().Be(HttpStatusCode.NoContent); } - private static HttpContent PrepareSavefileRequest() + [Fact] + public async Task Import_ExcessDragonCount_LimitsToPlayerDragonStorage() { - string savefileJson = File.ReadAllText(Path.Join("Data", "endgame_savefile.json")); + // Savefile has 556 dragons and a (manipulated) max storage of 2000. Tests hard cap of 500. + HttpContent content = PrepareSavefileRequest("savefile_excess_dragons.json"); - LoadIndexResponse savefile = JsonSerializer - .Deserialize>( - savefileJson, - ApiJsonOptions.Instance - )! - .Data; + HttpResponseMessage importResponse = await this.Client.PostAsync( + $"savefile/import/{this.ViewerId}", + content + ); + importResponse.StatusCode.Should().Be(HttpStatusCode.NoContent); + + this.ApiContext.PlayerDragonData.Count(x => x.ViewerId == this.ViewerId).Should().Be(500); + this.ApiContext.PlayerUserData.First(x => x.ViewerId == this.ViewerId) + .MaxDragonQuantity.Should() + .Be(500); + } + + private static HttpContent PrepareSavefileRequest(string path) + { + string savefileJson = File.ReadAllText(Path.Join("Data", path)); HttpContent content = new StringContent(savefileJson); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); diff --git a/DragaliaAPI/DragaliaAPI.Integration.Test/TestFixture.cs b/DragaliaAPI/DragaliaAPI.Integration.Test/TestFixture.cs index 04f26e4a2..9e7283c0a 100644 --- a/DragaliaAPI/DragaliaAPI.Integration.Test/TestFixture.cs +++ b/DragaliaAPI/DragaliaAPI.Integration.Test/TestFixture.cs @@ -2,8 +2,8 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Abstract; +using DragaliaAPI.Extensions; using DragaliaAPI.Features.Fort; -using DragaliaAPI.Helpers; using DragaliaAPI.Models; using DragaliaAPI.Services; using DragaliaAPI.Services.Api; @@ -47,7 +47,7 @@ protected TestFixture(CustomWebApplicationFactory factory, ITestOutputHelper tes this.Services = factory.Services.CreateScope().ServiceProvider; this.Mapper = this.Services.GetRequiredService(); - this.LastDailyReset = this.Services.GetRequiredService().LastDailyReset; + this.LastDailyReset = TimeProvider.System.GetLastDailyReset(); this.SeedDatabase().Wait(); this.SeedCache().Wait(); @@ -182,7 +182,10 @@ protected HttpClient CreateClient(Action? extraBuilderConfig = .CreateClient( new WebApplicationFactoryClientOptions() { - BaseAddress = new Uri("http://localhost/api/", UriKind.Absolute), + BaseAddress = new Uri( + "http://localhost/2.19.0_20220714193707/", + UriKind.Absolute + ), } ); diff --git a/DragaliaAPI/DragaliaAPI.MasterAssetConverter/AttributeHelper.cs b/DragaliaAPI/DragaliaAPI.MasterAssetConverter/AttributeHelper.cs index 6419e40e1..6729913cc 100644 --- a/DragaliaAPI/DragaliaAPI.MasterAssetConverter/AttributeHelper.cs +++ b/DragaliaAPI/DragaliaAPI.MasterAssetConverter/AttributeHelper.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; -namespace DragaliaAPI.MemoryPack; +namespace DragaliaAPI.MasterAssetConverter; public static class AttributeHelper { diff --git a/DragaliaAPI/DragaliaAPI.MasterAssetConverter/Program.cs b/DragaliaAPI/DragaliaAPI.MasterAssetConverter/Program.cs index 6630c0e15..578e43681 100644 --- a/DragaliaAPI/DragaliaAPI.MasterAssetConverter/Program.cs +++ b/DragaliaAPI/DragaliaAPI.MasterAssetConverter/Program.cs @@ -1,12 +1,10 @@ using System.Diagnostics; using System.Reflection; using System.Text.Json; -using DragaliaAPI.MemoryPack; +using DragaliaAPI.MasterAssetConverter; using DragaliaAPI.Shared.MasterAsset; -using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.Serialization; using MessagePack; -using MessagePack.Resolvers; string resourcesPath = args[^2]; string outputDir = args[^1]; diff --git a/DragaliaAPI/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.csproj b/DragaliaAPI/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.csproj index 931c31ed2..f2aa8797d 100644 --- a/DragaliaAPI/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.csproj +++ b/DragaliaAPI/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.csproj @@ -2,6 +2,7 @@ netstandard2.0 + 12 false true true diff --git a/DragaliaAPI/DragaliaAPI.Shared/Features/Presents/PresentMessage.cs b/DragaliaAPI/DragaliaAPI.Shared/Features/Presents/PresentMessage.cs index fd0c37520..63bf55a33 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/Features/Presents/PresentMessage.cs +++ b/DragaliaAPI/DragaliaAPI.Shared/Features/Presents/PresentMessage.cs @@ -167,6 +167,13 @@ public enum PresentMessage /// PuppyGiftReturn = 2031002, + /// + /// Title: Treasure Trade Item + ///
+ /// Description: Your earnings from the treasure trade. + ///
+ TreasureTrade = 2040004, + /// /// Title: Shop Purchase ///
@@ -174,6 +181,20 @@ public enum PresentMessage ///
ShopPurchase = 2040005, + /// + /// Title: Summon Showcase Reward + ///
+ /// Description: A reward from the Summon Showcase. + ///
+ SummonShowcase = 2070001, + + /// + /// Title: Wyrmsigil Reward + ///
+ /// Description: A reward obtained by trading in wyrmsigils.. + ///
+ WyrmsigilReward = 2070004, + /// /// Title: Mana Node Unlocking Reward ///
diff --git a/DragaliaAPI/DragaliaAPI.Shared/Generated/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.MasterAssetGenerator/MasterAsset.g.cs b/DragaliaAPI/DragaliaAPI.Shared/Generated/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.MasterAssetGenerator/MasterAsset.g.cs index 2b5ee179d..8d43b54b3 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/Generated/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.MasterAssetGenerator/MasterAsset.g.cs +++ b/DragaliaAPI/DragaliaAPI.Shared/Generated/DragaliaAPI.Shared.SourceGenerator/DragaliaAPI.Shared.SourceGenerator.MasterAssetGenerator/MasterAsset.g.cs @@ -88,6 +88,9 @@ public static partial class MasterAsset private static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData? useItem; public static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData UseItem => useItem ?? throw new InvalidOperationException(ErrorUninitialized); + private static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData? emblemData; + public static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData EmblemData => emblemData ?? throw new InvalidOperationException(ErrorUninitialized); + private static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData? missionAlbumData; public static global::DragaliaAPI.Shared.MasterAsset.MasterAssetData MissionAlbumData => missionAlbumData ?? throw new InvalidOperationException(ErrorUninitialized); @@ -472,6 +475,11 @@ public static async Task LoadAsync() "UseItem.msgpack", x => x.Id ); + global::System.Threading.Tasks.ValueTask> emblemDataTask = + global::DragaliaAPI.Shared.MasterAsset.MasterAssetData.LoadAsync( + "EmblemData.msgpack", + x => x.Id + ); global::System.Threading.Tasks.ValueTask> missionAlbumDataTask = global::DragaliaAPI.Shared.MasterAsset.MasterAssetData.LoadAsync( "Missions/MissionAlbumData.msgpack", @@ -914,6 +922,7 @@ public static async Task LoadAsync() skillData = await skillDataTask; stampData = await stampDataTask; useItem = await useItemTask; + emblemData = await emblemDataTask; missionAlbumData = await missionAlbumDataTask; missionBeginnerData = await missionBeginnerDataTask; missionDailyData = await missionDailyDataTask; diff --git a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/MasterAsset.cs b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/MasterAsset.cs index 43c8afd58..b3ceedd11 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/MasterAsset.cs +++ b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/MasterAsset.cs @@ -50,6 +50,7 @@ namespace DragaliaAPI.Shared.MasterAsset; [GenerateMasterAsset("SkillData.json")] [GenerateMasterAsset("StampData.json")] [GenerateMasterAsset("UseItem.json")] +[GenerateMasterAsset("EmblemData.json")] [GenerateMasterAsset("Missions/MissionAlbumData.json")] [GenerateMasterAsset("Missions/MissionBeginnerData.json")] [GenerateMasterAsset("Missions/MissionDailyData.json")] diff --git a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/EmblemData.cs b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/EmblemData.cs new file mode 100644 index 000000000..3e0242714 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/EmblemData.cs @@ -0,0 +1,17 @@ +using DragaliaAPI.Shared.Definitions.Enums; + +namespace DragaliaAPI.Shared.MasterAsset.Models; + +/// +/// Represents data about an epithet. +/// +/// The ID of the epithet. +/// The entity type of the epithet's duplicate reward. +/// The ID of the epithet's duplicate reward. +/// The quantity of the epithet's duplicate reward. +public record EmblemData( + Emblems Id, + EntityTypes DuplicateEntityType, + int DuplicateEntityId, + int DuplicateEntityQuantity +); diff --git a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonData.cs b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonData.cs index 1c5f9a938..374e86603 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonData.cs +++ b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonData.cs @@ -1,4 +1,3 @@ -using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; namespace DragaliaAPI.Shared.MasterAsset.Models.Summon; diff --git a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonTicket.cs b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonTicket.cs index 80801a1c6..f4f628a35 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonTicket.cs +++ b/DragaliaAPI/DragaliaAPI.Shared/MasterAsset/Models/Summon/SummonTicket.cs @@ -1,4 +1,3 @@ -using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; namespace DragaliaAPI.Shared.MasterAsset.Models.Summon; diff --git a/DragaliaAPI/DragaliaAPI.Shared/Resources/EmblemData.json b/DragaliaAPI/DragaliaAPI.Shared/Resources/EmblemData.json new file mode 100644 index 000000000..dc1abd242 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Shared/Resources/EmblemData.json @@ -0,0 +1,15482 @@ +[ + { + "_Id": 0, + "_Title": "EMBLEM_NAME_00000000", + "_Ruby": "EMBLEM_PHONETIC_00000000", + "_Rarity": 0, + "_EmblemType": 0, + "_Sortid": 0, + "_Gettext": "EMBLEM_DETAIL_00000000", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10130102, + "_Title": "EMBLEM_NAME_10130102", + "_Ruby": "EMBLEM_PHONETIC_10130102", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10130102, + "_Gettext": "EMBLEM_DETAIL_10130102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10130103, + "_Title": "EMBLEM_NAME_10130103", + "_Ruby": "EMBLEM_PHONETIC_10130103", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10130103, + "_Gettext": "EMBLEM_DETAIL_10130103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10130201, + "_Title": "EMBLEM_NAME_10130201", + "_Ruby": "EMBLEM_PHONETIC_10130201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10130201, + "_Gettext": "EMBLEM_DETAIL_10130201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10130401, + "_Title": "EMBLEM_NAME_10130401", + "_Ruby": "EMBLEM_PHONETIC_10130401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10130401, + "_Gettext": "EMBLEM_DETAIL_10130401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10130501, + "_Title": "EMBLEM_NAME_10130501", + "_Ruby": "EMBLEM_PHONETIC_10130501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10130501, + "_Gettext": "EMBLEM_DETAIL_10130501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140102, + "_Title": "EMBLEM_NAME_10140102", + "_Ruby": "EMBLEM_PHONETIC_10140102", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140102, + "_Gettext": "EMBLEM_DETAIL_10140102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140103, + "_Title": "EMBLEM_NAME_10140103", + "_Ruby": "EMBLEM_PHONETIC_10140103", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140103, + "_Gettext": "EMBLEM_DETAIL_10140103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140201, + "_Title": "EMBLEM_NAME_10140201", + "_Ruby": "EMBLEM_PHONETIC_10140201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140201, + "_Gettext": "EMBLEM_DETAIL_10140201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140301, + "_Title": "EMBLEM_NAME_10140301", + "_Ruby": "EMBLEM_PHONETIC_10140301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140301, + "_Gettext": "EMBLEM_DETAIL_10140301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140302, + "_Title": "EMBLEM_NAME_10140302", + "_Ruby": "EMBLEM_PHONETIC_10140302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140302, + "_Gettext": "EMBLEM_DETAIL_10140302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140401, + "_Title": "EMBLEM_NAME_10140401", + "_Ruby": "EMBLEM_PHONETIC_10140401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140401, + "_Gettext": "EMBLEM_DETAIL_10140401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140501, + "_Title": "EMBLEM_NAME_10140501", + "_Ruby": "EMBLEM_PHONETIC_10140501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140501, + "_Gettext": "EMBLEM_DETAIL_10140501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10140503, + "_Title": "EMBLEM_NAME_10140503", + "_Ruby": "EMBLEM_PHONETIC_10140503", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10140503, + "_Gettext": "EMBLEM_DETAIL_10140503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150101, + "_Title": "EMBLEM_NAME_10150101", + "_Ruby": "EMBLEM_PHONETIC_10150101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150101, + "_Gettext": "EMBLEM_DETAIL_10150101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150102, + "_Title": "EMBLEM_NAME_10150102", + "_Ruby": "EMBLEM_PHONETIC_10150102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150102, + "_Gettext": "EMBLEM_DETAIL_10150102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150103, + "_Title": "EMBLEM_NAME_10150103", + "_Ruby": "EMBLEM_PHONETIC_10150103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150103, + "_Gettext": "EMBLEM_DETAIL_10150103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150104, + "_Title": "EMBLEM_NAME_10150104", + "_Ruby": "EMBLEM_PHONETIC_10150104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150104, + "_Gettext": "EMBLEM_DETAIL_10150104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150105, + "_Title": "EMBLEM_NAME_10150105", + "_Ruby": "EMBLEM_PHONETIC_10150105", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150105, + "_Gettext": "EMBLEM_DETAIL_10150105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150106, + "_Title": "EMBLEM_NAME_10150106", + "_Ruby": "EMBLEM_PHONETIC_10150106", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150106, + "_Gettext": "EMBLEM_DETAIL_10150106", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150201, + "_Title": "EMBLEM_NAME_10150201", + "_Ruby": "EMBLEM_PHONETIC_10150201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150201, + "_Gettext": "EMBLEM_DETAIL_10150201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150202, + "_Title": "EMBLEM_NAME_10150202", + "_Ruby": "EMBLEM_PHONETIC_10150202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150202, + "_Gettext": "EMBLEM_DETAIL_10150202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150203, + "_Title": "EMBLEM_NAME_10150203", + "_Ruby": "EMBLEM_PHONETIC_10150203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150203, + "_Gettext": "EMBLEM_DETAIL_10150203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150204, + "_Title": "EMBLEM_NAME_10150204", + "_Ruby": "EMBLEM_PHONETIC_10150204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150204, + "_Gettext": "EMBLEM_DETAIL_10150204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150301, + "_Title": "EMBLEM_NAME_10150301", + "_Ruby": "EMBLEM_PHONETIC_10150301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150301, + "_Gettext": "EMBLEM_DETAIL_10150301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150302, + "_Title": "EMBLEM_NAME_10150302", + "_Ruby": "EMBLEM_PHONETIC_10150302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150302, + "_Gettext": "EMBLEM_DETAIL_10150302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150303, + "_Title": "EMBLEM_NAME_10150303", + "_Ruby": "EMBLEM_PHONETIC_10150303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150303, + "_Gettext": "EMBLEM_DETAIL_10150303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150304, + "_Title": "EMBLEM_NAME_10150304", + "_Ruby": "EMBLEM_PHONETIC_10150304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150304, + "_Gettext": "EMBLEM_DETAIL_10150304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150305, + "_Title": "EMBLEM_NAME_10150305", + "_Ruby": "EMBLEM_PHONETIC_10150305", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150305, + "_Gettext": "EMBLEM_DETAIL_10150305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150306, + "_Title": "EMBLEM_NAME_10150306", + "_Ruby": "EMBLEM_PHONETIC_10150306", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150306, + "_Gettext": "EMBLEM_DETAIL_10150306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150401, + "_Title": "EMBLEM_NAME_10150401", + "_Ruby": "EMBLEM_PHONETIC_10150401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150401, + "_Gettext": "EMBLEM_DETAIL_10150401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150402, + "_Title": "EMBLEM_NAME_10150402", + "_Ruby": "EMBLEM_PHONETIC_10150402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150402, + "_Gettext": "EMBLEM_DETAIL_10150402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150403, + "_Title": "EMBLEM_NAME_10150403", + "_Ruby": "EMBLEM_PHONETIC_10150403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150403, + "_Gettext": "EMBLEM_DETAIL_10150403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150404, + "_Title": "EMBLEM_NAME_10150404", + "_Ruby": "EMBLEM_PHONETIC_10150404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150404, + "_Gettext": "EMBLEM_DETAIL_10150404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150405, + "_Title": "EMBLEM_NAME_10150405", + "_Ruby": "EMBLEM_PHONETIC_10150405", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150405, + "_Gettext": "EMBLEM_DETAIL_10150405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150501, + "_Title": "EMBLEM_NAME_10150501", + "_Ruby": "EMBLEM_PHONETIC_10150501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150501, + "_Gettext": "EMBLEM_DETAIL_10150501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150502, + "_Title": "EMBLEM_NAME_10150502", + "_Ruby": "EMBLEM_PHONETIC_10150502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150502, + "_Gettext": "EMBLEM_DETAIL_10150502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150503, + "_Title": "EMBLEM_NAME_10150503", + "_Ruby": "EMBLEM_PHONETIC_10150503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150503, + "_Gettext": "EMBLEM_DETAIL_10150503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10150504, + "_Title": "EMBLEM_NAME_10150504", + "_Ruby": "EMBLEM_PHONETIC_10150504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10150504, + "_Gettext": "EMBLEM_DETAIL_10150504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10230101, + "_Title": "EMBLEM_NAME_10230101", + "_Ruby": "EMBLEM_PHONETIC_10230101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10230101, + "_Gettext": "EMBLEM_DETAIL_10230101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10230201, + "_Title": "EMBLEM_NAME_10230201", + "_Ruby": "EMBLEM_PHONETIC_10230201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10230201, + "_Gettext": "EMBLEM_DETAIL_10230201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10230301, + "_Title": "EMBLEM_NAME_10230301", + "_Ruby": "EMBLEM_PHONETIC_10230301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10230301, + "_Gettext": "EMBLEM_DETAIL_10230301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10230401, + "_Title": "EMBLEM_NAME_10230401", + "_Ruby": "EMBLEM_PHONETIC_10230401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10230401, + "_Gettext": "EMBLEM_DETAIL_10230401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10230501, + "_Title": "EMBLEM_NAME_10230501", + "_Ruby": "EMBLEM_PHONETIC_10230501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10230501, + "_Gettext": "EMBLEM_DETAIL_10230501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240101, + "_Title": "EMBLEM_NAME_10240101", + "_Ruby": "EMBLEM_PHONETIC_10240101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240101, + "_Gettext": "EMBLEM_DETAIL_10240101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240201, + "_Title": "EMBLEM_NAME_10240201", + "_Ruby": "EMBLEM_PHONETIC_10240201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240201, + "_Gettext": "EMBLEM_DETAIL_10240201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240202, + "_Title": "EMBLEM_NAME_10240202", + "_Ruby": "EMBLEM_PHONETIC_10240202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240202, + "_Gettext": "EMBLEM_DETAIL_10240202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240301, + "_Title": "EMBLEM_NAME_10240301", + "_Ruby": "EMBLEM_PHONETIC_10240301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240301, + "_Gettext": "EMBLEM_DETAIL_10240301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240302, + "_Title": "EMBLEM_NAME_10240302", + "_Ruby": "EMBLEM_PHONETIC_10240302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240302, + "_Gettext": "EMBLEM_DETAIL_10240302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240401, + "_Title": "EMBLEM_NAME_10240401", + "_Ruby": "EMBLEM_PHONETIC_10240401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240401, + "_Gettext": "EMBLEM_DETAIL_10240401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240402, + "_Title": "EMBLEM_NAME_10240402", + "_Ruby": "EMBLEM_PHONETIC_10240402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240402, + "_Gettext": "EMBLEM_DETAIL_10240402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240502, + "_Title": "EMBLEM_NAME_10240502", + "_Ruby": "EMBLEM_PHONETIC_10240502", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240502, + "_Gettext": "EMBLEM_DETAIL_10240502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10240503, + "_Title": "EMBLEM_NAME_10240503", + "_Ruby": "EMBLEM_PHONETIC_10240503", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10240503, + "_Gettext": "EMBLEM_DETAIL_10240503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250101, + "_Title": "EMBLEM_NAME_10250101", + "_Ruby": "EMBLEM_PHONETIC_10250101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250101, + "_Gettext": "EMBLEM_DETAIL_10250101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250102, + "_Title": "EMBLEM_NAME_10250102", + "_Ruby": "EMBLEM_PHONETIC_10250102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250102, + "_Gettext": "EMBLEM_DETAIL_10250102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250103, + "_Title": "EMBLEM_NAME_10250103", + "_Ruby": "EMBLEM_PHONETIC_10250103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250103, + "_Gettext": "EMBLEM_DETAIL_10250103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250104, + "_Title": "EMBLEM_NAME_10250104", + "_Ruby": "EMBLEM_PHONETIC_10250104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250104, + "_Gettext": "EMBLEM_DETAIL_10250104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250201, + "_Title": "EMBLEM_NAME_10250201", + "_Ruby": "EMBLEM_PHONETIC_10250201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250201, + "_Gettext": "EMBLEM_DETAIL_10250201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250202, + "_Title": "EMBLEM_NAME_10250202", + "_Ruby": "EMBLEM_PHONETIC_10250202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250202, + "_Gettext": "EMBLEM_DETAIL_10250202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250203, + "_Title": "EMBLEM_NAME_10250203", + "_Ruby": "EMBLEM_PHONETIC_10250203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250203, + "_Gettext": "EMBLEM_DETAIL_10250203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250204, + "_Title": "EMBLEM_NAME_10250204", + "_Ruby": "EMBLEM_PHONETIC_10250204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250204, + "_Gettext": "EMBLEM_DETAIL_10250204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250301, + "_Title": "EMBLEM_NAME_10250301", + "_Ruby": "EMBLEM_PHONETIC_10250301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250301, + "_Gettext": "EMBLEM_DETAIL_10250301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250302, + "_Title": "EMBLEM_NAME_10250302", + "_Ruby": "EMBLEM_PHONETIC_10250302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250302, + "_Gettext": "EMBLEM_DETAIL_10250302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250303, + "_Title": "EMBLEM_NAME_10250303", + "_Ruby": "EMBLEM_PHONETIC_10250303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250303, + "_Gettext": "EMBLEM_DETAIL_10250303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250304, + "_Title": "EMBLEM_NAME_10250304", + "_Ruby": "EMBLEM_PHONETIC_10250304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250304, + "_Gettext": "EMBLEM_DETAIL_10250304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250305, + "_Title": "EMBLEM_NAME_10250305", + "_Ruby": "EMBLEM_PHONETIC_10250305", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250305, + "_Gettext": "EMBLEM_DETAIL_10250305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250401, + "_Title": "EMBLEM_NAME_10250401", + "_Ruby": "EMBLEM_PHONETIC_10250401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250401, + "_Gettext": "EMBLEM_DETAIL_10250401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250402, + "_Title": "EMBLEM_NAME_10250402", + "_Ruby": "EMBLEM_PHONETIC_10250402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250402, + "_Gettext": "EMBLEM_DETAIL_10250402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250403, + "_Title": "EMBLEM_NAME_10250403", + "_Ruby": "EMBLEM_PHONETIC_10250403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250403, + "_Gettext": "EMBLEM_DETAIL_10250403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250404, + "_Title": "EMBLEM_NAME_10250404", + "_Ruby": "EMBLEM_PHONETIC_10250404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250404, + "_Gettext": "EMBLEM_DETAIL_10250404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250501, + "_Title": "EMBLEM_NAME_10250501", + "_Ruby": "EMBLEM_PHONETIC_10250501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250501, + "_Gettext": "EMBLEM_DETAIL_10250501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250502, + "_Title": "EMBLEM_NAME_10250502", + "_Ruby": "EMBLEM_PHONETIC_10250502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250502, + "_Gettext": "EMBLEM_DETAIL_10250502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250503, + "_Title": "EMBLEM_NAME_10250503", + "_Ruby": "EMBLEM_PHONETIC_10250503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250503, + "_Gettext": "EMBLEM_DETAIL_10250503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10250504, + "_Title": "EMBLEM_NAME_10250504", + "_Ruby": "EMBLEM_PHONETIC_10250504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10250504, + "_Gettext": "EMBLEM_DETAIL_10250504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10330101, + "_Title": "EMBLEM_NAME_10330101", + "_Ruby": "EMBLEM_PHONETIC_10330101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10330101, + "_Gettext": "EMBLEM_DETAIL_10330101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10330301, + "_Title": "EMBLEM_NAME_10330301", + "_Ruby": "EMBLEM_PHONETIC_10330301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10330301, + "_Gettext": "EMBLEM_DETAIL_10330301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10330401, + "_Title": "EMBLEM_NAME_10330401", + "_Ruby": "EMBLEM_PHONETIC_10330401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10330401, + "_Gettext": "EMBLEM_DETAIL_10330401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10330501, + "_Title": "EMBLEM_NAME_10330501", + "_Ruby": "EMBLEM_PHONETIC_10330501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10330501, + "_Gettext": "EMBLEM_DETAIL_10330501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10330502, + "_Title": "EMBLEM_NAME_10330502", + "_Ruby": "EMBLEM_PHONETIC_10330502", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10330502, + "_Gettext": "EMBLEM_DETAIL_10330502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340101, + "_Title": "EMBLEM_NAME_10340101", + "_Ruby": "EMBLEM_PHONETIC_10340101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340101, + "_Gettext": "EMBLEM_DETAIL_10340101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340102, + "_Title": "EMBLEM_NAME_10340102", + "_Ruby": "EMBLEM_PHONETIC_10340102", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340102, + "_Gettext": "EMBLEM_DETAIL_10340102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340201, + "_Title": "EMBLEM_NAME_10340201", + "_Ruby": "EMBLEM_PHONETIC_10340201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340201, + "_Gettext": "EMBLEM_DETAIL_10340201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340202, + "_Title": "EMBLEM_NAME_10340202", + "_Ruby": "EMBLEM_PHONETIC_10340202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340202, + "_Gettext": "EMBLEM_DETAIL_10340202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340203, + "_Title": "EMBLEM_NAME_10340203", + "_Ruby": "EMBLEM_PHONETIC_10340203", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340203, + "_Gettext": "EMBLEM_DETAIL_10340203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340301, + "_Title": "EMBLEM_NAME_10340301", + "_Ruby": "EMBLEM_PHONETIC_10340301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340301, + "_Gettext": "EMBLEM_DETAIL_10340301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340401, + "_Title": "EMBLEM_NAME_10340401", + "_Ruby": "EMBLEM_PHONETIC_10340401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340401, + "_Gettext": "EMBLEM_DETAIL_10340401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340402, + "_Title": "EMBLEM_NAME_10340402", + "_Ruby": "EMBLEM_PHONETIC_10340402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340402, + "_Gettext": "EMBLEM_DETAIL_10340402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340501, + "_Title": "EMBLEM_NAME_10340501", + "_Ruby": "EMBLEM_PHONETIC_10340501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340501, + "_Gettext": "EMBLEM_DETAIL_10340501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10340502, + "_Title": "EMBLEM_NAME_10340502", + "_Ruby": "EMBLEM_PHONETIC_10340502", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10340502, + "_Gettext": "EMBLEM_DETAIL_10340502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350101, + "_Title": "EMBLEM_NAME_10350101", + "_Ruby": "EMBLEM_PHONETIC_10350101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350101, + "_Gettext": "EMBLEM_DETAIL_10350101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350102, + "_Title": "EMBLEM_NAME_10350102", + "_Ruby": "EMBLEM_PHONETIC_10350102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350102, + "_Gettext": "EMBLEM_DETAIL_10350102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350103, + "_Title": "EMBLEM_NAME_10350103", + "_Ruby": "EMBLEM_PHONETIC_10350103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350103, + "_Gettext": "EMBLEM_DETAIL_10350103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350104, + "_Title": "EMBLEM_NAME_10350104", + "_Ruby": "EMBLEM_PHONETIC_10350104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350104, + "_Gettext": "EMBLEM_DETAIL_10350104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350201, + "_Title": "EMBLEM_NAME_10350201", + "_Ruby": "EMBLEM_PHONETIC_10350201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350201, + "_Gettext": "EMBLEM_DETAIL_10350201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350202, + "_Title": "EMBLEM_NAME_10350202", + "_Ruby": "EMBLEM_PHONETIC_10350202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350202, + "_Gettext": "EMBLEM_DETAIL_10350202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350203, + "_Title": "EMBLEM_NAME_10350203", + "_Ruby": "EMBLEM_PHONETIC_10350203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350203, + "_Gettext": "EMBLEM_DETAIL_10350203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350204, + "_Title": "EMBLEM_NAME_10350204", + "_Ruby": "EMBLEM_PHONETIC_10350204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350204, + "_Gettext": "EMBLEM_DETAIL_10350204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350301, + "_Title": "EMBLEM_NAME_10350301", + "_Ruby": "EMBLEM_PHONETIC_10350301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350301, + "_Gettext": "EMBLEM_DETAIL_10350301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350302, + "_Title": "EMBLEM_NAME_10350302", + "_Ruby": "EMBLEM_PHONETIC_10350302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350302, + "_Gettext": "EMBLEM_DETAIL_10350302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350303, + "_Title": "EMBLEM_NAME_10350303", + "_Ruby": "EMBLEM_PHONETIC_10350303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350303, + "_Gettext": "EMBLEM_DETAIL_10350303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350304, + "_Title": "EMBLEM_NAME_10350304", + "_Ruby": "EMBLEM_PHONETIC_10350304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350304, + "_Gettext": "EMBLEM_DETAIL_10350304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350402, + "_Title": "EMBLEM_NAME_10350402", + "_Ruby": "EMBLEM_PHONETIC_10350402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350402, + "_Gettext": "EMBLEM_DETAIL_10350402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350403, + "_Title": "EMBLEM_NAME_10350403", + "_Ruby": "EMBLEM_PHONETIC_10350403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350403, + "_Gettext": "EMBLEM_DETAIL_10350403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350404, + "_Title": "EMBLEM_NAME_10350404", + "_Ruby": "EMBLEM_PHONETIC_10350404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350404, + "_Gettext": "EMBLEM_DETAIL_10350404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350405, + "_Title": "EMBLEM_NAME_10350405", + "_Ruby": "EMBLEM_PHONETIC_10350405", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350405, + "_Gettext": "EMBLEM_DETAIL_10350405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350502, + "_Title": "EMBLEM_NAME_10350502", + "_Ruby": "EMBLEM_PHONETIC_10350502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350502, + "_Gettext": "EMBLEM_DETAIL_10350502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350503, + "_Title": "EMBLEM_NAME_10350503", + "_Ruby": "EMBLEM_PHONETIC_10350503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350503, + "_Gettext": "EMBLEM_DETAIL_10350503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350504, + "_Title": "EMBLEM_NAME_10350504", + "_Ruby": "EMBLEM_PHONETIC_10350504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350504, + "_Gettext": "EMBLEM_DETAIL_10350504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350505, + "_Title": "EMBLEM_NAME_10350505", + "_Ruby": "EMBLEM_PHONETIC_10350505", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350505, + "_Gettext": "EMBLEM_DETAIL_10350505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10350506, + "_Title": "EMBLEM_NAME_10350506", + "_Ruby": "EMBLEM_PHONETIC_10350506", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10350506, + "_Gettext": "EMBLEM_DETAIL_10350506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10430201, + "_Title": "EMBLEM_NAME_10430201", + "_Ruby": "EMBLEM_PHONETIC_10430201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10430201, + "_Gettext": "EMBLEM_DETAIL_10430201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10430202, + "_Title": "EMBLEM_NAME_10430202", + "_Ruby": "EMBLEM_PHONETIC_10430202", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10430202, + "_Gettext": "EMBLEM_DETAIL_10430202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10430301, + "_Title": "EMBLEM_NAME_10430301", + "_Ruby": "EMBLEM_PHONETIC_10430301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10430301, + "_Gettext": "EMBLEM_DETAIL_10430301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10430401, + "_Title": "EMBLEM_NAME_10430401", + "_Ruby": "EMBLEM_PHONETIC_10430401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10430401, + "_Gettext": "EMBLEM_DETAIL_10430401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10430501, + "_Title": "EMBLEM_NAME_10430501", + "_Ruby": "EMBLEM_PHONETIC_10430501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10430501, + "_Gettext": "EMBLEM_DETAIL_10430501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440101, + "_Title": "EMBLEM_NAME_10440101", + "_Ruby": "EMBLEM_PHONETIC_10440101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440101, + "_Gettext": "EMBLEM_DETAIL_10440101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440102, + "_Title": "EMBLEM_NAME_10440102", + "_Ruby": "EMBLEM_PHONETIC_10440102", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440102, + "_Gettext": "EMBLEM_DETAIL_10440102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440201, + "_Title": "EMBLEM_NAME_10440201", + "_Ruby": "EMBLEM_PHONETIC_10440201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440201, + "_Gettext": "EMBLEM_DETAIL_10440201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440301, + "_Title": "EMBLEM_NAME_10440301", + "_Ruby": "EMBLEM_PHONETIC_10440301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440301, + "_Gettext": "EMBLEM_DETAIL_10440301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440401, + "_Title": "EMBLEM_NAME_10440401", + "_Ruby": "EMBLEM_PHONETIC_10440401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440401, + "_Gettext": "EMBLEM_DETAIL_10440401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10440501, + "_Title": "EMBLEM_NAME_10440501", + "_Ruby": "EMBLEM_PHONETIC_10440501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10440501, + "_Gettext": "EMBLEM_DETAIL_10440501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450101, + "_Title": "EMBLEM_NAME_10450101", + "_Ruby": "EMBLEM_PHONETIC_10450101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450101, + "_Gettext": "EMBLEM_DETAIL_10450101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450102, + "_Title": "EMBLEM_NAME_10450102", + "_Ruby": "EMBLEM_PHONETIC_10450102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450102, + "_Gettext": "EMBLEM_DETAIL_10450102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450103, + "_Title": "EMBLEM_NAME_10450103", + "_Ruby": "EMBLEM_PHONETIC_10450103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450103, + "_Gettext": "EMBLEM_DETAIL_10450103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450104, + "_Title": "EMBLEM_NAME_10450104", + "_Ruby": "EMBLEM_PHONETIC_10450104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450104, + "_Gettext": "EMBLEM_DETAIL_10450104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450201, + "_Title": "EMBLEM_NAME_10450201", + "_Ruby": "EMBLEM_PHONETIC_10450201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450201, + "_Gettext": "EMBLEM_DETAIL_10450201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450202, + "_Title": "EMBLEM_NAME_10450202", + "_Ruby": "EMBLEM_PHONETIC_10450202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450202, + "_Gettext": "EMBLEM_DETAIL_10450202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450203, + "_Title": "EMBLEM_NAME_10450203", + "_Ruby": "EMBLEM_PHONETIC_10450203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450203, + "_Gettext": "EMBLEM_DETAIL_10450203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450204, + "_Title": "EMBLEM_NAME_10450204", + "_Ruby": "EMBLEM_PHONETIC_10450204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450204, + "_Gettext": "EMBLEM_DETAIL_10450204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450301, + "_Title": "EMBLEM_NAME_10450301", + "_Ruby": "EMBLEM_PHONETIC_10450301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450301, + "_Gettext": "EMBLEM_DETAIL_10450301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450302, + "_Title": "EMBLEM_NAME_10450302", + "_Ruby": "EMBLEM_PHONETIC_10450302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450302, + "_Gettext": "EMBLEM_DETAIL_10450302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450303, + "_Title": "EMBLEM_NAME_10450303", + "_Ruby": "EMBLEM_PHONETIC_10450303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450303, + "_Gettext": "EMBLEM_DETAIL_10450303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450304, + "_Title": "EMBLEM_NAME_10450304", + "_Ruby": "EMBLEM_PHONETIC_10450304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450304, + "_Gettext": "EMBLEM_DETAIL_10450304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450305, + "_Title": "EMBLEM_NAME_10450305", + "_Ruby": "EMBLEM_PHONETIC_10450305", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450305, + "_Gettext": "EMBLEM_DETAIL_10450305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450401, + "_Title": "EMBLEM_NAME_10450401", + "_Ruby": "EMBLEM_PHONETIC_10450401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450401, + "_Gettext": "EMBLEM_DETAIL_10450401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450402, + "_Title": "EMBLEM_NAME_10450402", + "_Ruby": "EMBLEM_PHONETIC_10450402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450402, + "_Gettext": "EMBLEM_DETAIL_10450402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450403, + "_Title": "EMBLEM_NAME_10450403", + "_Ruby": "EMBLEM_PHONETIC_10450403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450403, + "_Gettext": "EMBLEM_DETAIL_10450403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450404, + "_Title": "EMBLEM_NAME_10450404", + "_Ruby": "EMBLEM_PHONETIC_10450404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450404, + "_Gettext": "EMBLEM_DETAIL_10450404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450405, + "_Title": "EMBLEM_NAME_10450405", + "_Ruby": "EMBLEM_PHONETIC_10450405", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450405, + "_Gettext": "EMBLEM_DETAIL_10450405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450406, + "_Title": "EMBLEM_NAME_10450406", + "_Ruby": "EMBLEM_PHONETIC_10450406", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450406, + "_Gettext": "EMBLEM_DETAIL_10450406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450501, + "_Title": "EMBLEM_NAME_10450501", + "_Ruby": "EMBLEM_PHONETIC_10450501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450501, + "_Gettext": "EMBLEM_DETAIL_10450501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450502, + "_Title": "EMBLEM_NAME_10450502", + "_Ruby": "EMBLEM_PHONETIC_10450502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450502, + "_Gettext": "EMBLEM_DETAIL_10450502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10450503, + "_Title": "EMBLEM_NAME_10450503", + "_Ruby": "EMBLEM_PHONETIC_10450503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10450503, + "_Gettext": "EMBLEM_DETAIL_10450503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10530101, + "_Title": "EMBLEM_NAME_10530101", + "_Ruby": "EMBLEM_PHONETIC_10530101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10530101, + "_Gettext": "EMBLEM_DETAIL_10530101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10530201, + "_Title": "EMBLEM_NAME_10530201", + "_Ruby": "EMBLEM_PHONETIC_10530201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10530201, + "_Gettext": "EMBLEM_DETAIL_10530201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10530202, + "_Title": "EMBLEM_NAME_10530202", + "_Ruby": "EMBLEM_PHONETIC_10530202", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10530202, + "_Gettext": "EMBLEM_DETAIL_10530202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10530401, + "_Title": "EMBLEM_NAME_10530401", + "_Ruby": "EMBLEM_PHONETIC_10530401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10530401, + "_Gettext": "EMBLEM_DETAIL_10530401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10530501, + "_Title": "EMBLEM_NAME_10530501", + "_Ruby": "EMBLEM_PHONETIC_10530501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10530501, + "_Gettext": "EMBLEM_DETAIL_10530501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540102, + "_Title": "EMBLEM_NAME_10540102", + "_Ruby": "EMBLEM_PHONETIC_10540102", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540102, + "_Gettext": "EMBLEM_DETAIL_10540102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540103, + "_Title": "EMBLEM_NAME_10540103", + "_Ruby": "EMBLEM_PHONETIC_10540103", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540103, + "_Gettext": "EMBLEM_DETAIL_10540103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540201, + "_Title": "EMBLEM_NAME_10540201", + "_Ruby": "EMBLEM_PHONETIC_10540201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540201, + "_Gettext": "EMBLEM_DETAIL_10540201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540202, + "_Title": "EMBLEM_NAME_10540202", + "_Ruby": "EMBLEM_PHONETIC_10540202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540202, + "_Gettext": "EMBLEM_DETAIL_10540202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540301, + "_Title": "EMBLEM_NAME_10540301", + "_Ruby": "EMBLEM_PHONETIC_10540301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540301, + "_Gettext": "EMBLEM_DETAIL_10540301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540302, + "_Title": "EMBLEM_NAME_10540302", + "_Ruby": "EMBLEM_PHONETIC_10540302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540302, + "_Gettext": "EMBLEM_DETAIL_10540302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540401, + "_Title": "EMBLEM_NAME_10540401", + "_Ruby": "EMBLEM_PHONETIC_10540401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540401, + "_Gettext": "EMBLEM_DETAIL_10540401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540402, + "_Title": "EMBLEM_NAME_10540402", + "_Ruby": "EMBLEM_PHONETIC_10540402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540402, + "_Gettext": "EMBLEM_DETAIL_10540402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540501, + "_Title": "EMBLEM_NAME_10540501", + "_Ruby": "EMBLEM_PHONETIC_10540501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540501, + "_Gettext": "EMBLEM_DETAIL_10540501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10540502, + "_Title": "EMBLEM_NAME_10540502", + "_Ruby": "EMBLEM_PHONETIC_10540502", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10540502, + "_Gettext": "EMBLEM_DETAIL_10540502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550101, + "_Title": "EMBLEM_NAME_10550101", + "_Ruby": "EMBLEM_PHONETIC_10550101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550101, + "_Gettext": "EMBLEM_DETAIL_10550101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550102, + "_Title": "EMBLEM_NAME_10550102", + "_Ruby": "EMBLEM_PHONETIC_10550102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550102, + "_Gettext": "EMBLEM_DETAIL_10550102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550103, + "_Title": "EMBLEM_NAME_10550103", + "_Ruby": "EMBLEM_PHONETIC_10550103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550103, + "_Gettext": "EMBLEM_DETAIL_10550103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550104, + "_Title": "EMBLEM_NAME_10550104", + "_Ruby": "EMBLEM_PHONETIC_10550104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550104, + "_Gettext": "EMBLEM_DETAIL_10550104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550201, + "_Title": "EMBLEM_NAME_10550201", + "_Ruby": "EMBLEM_PHONETIC_10550201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550201, + "_Gettext": "EMBLEM_DETAIL_10550201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550203, + "_Title": "EMBLEM_NAME_10550203", + "_Ruby": "EMBLEM_PHONETIC_10550203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550203, + "_Gettext": "EMBLEM_DETAIL_10550203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550204, + "_Title": "EMBLEM_NAME_10550204", + "_Ruby": "EMBLEM_PHONETIC_10550204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550204, + "_Gettext": "EMBLEM_DETAIL_10550204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550205, + "_Title": "EMBLEM_NAME_10550205", + "_Ruby": "EMBLEM_PHONETIC_10550205", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550205, + "_Gettext": "EMBLEM_DETAIL_10550205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550301, + "_Title": "EMBLEM_NAME_10550301", + "_Ruby": "EMBLEM_PHONETIC_10550301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550301, + "_Gettext": "EMBLEM_DETAIL_10550301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550302, + "_Title": "EMBLEM_NAME_10550302", + "_Ruby": "EMBLEM_PHONETIC_10550302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550302, + "_Gettext": "EMBLEM_DETAIL_10550302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550303, + "_Title": "EMBLEM_NAME_10550303", + "_Ruby": "EMBLEM_PHONETIC_10550303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550303, + "_Gettext": "EMBLEM_DETAIL_10550303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550304, + "_Title": "EMBLEM_NAME_10550304", + "_Ruby": "EMBLEM_PHONETIC_10550304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550304, + "_Gettext": "EMBLEM_DETAIL_10550304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550305, + "_Title": "EMBLEM_NAME_10550305", + "_Ruby": "EMBLEM_PHONETIC_10550305", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550305, + "_Gettext": "EMBLEM_DETAIL_10550305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550306, + "_Title": "EMBLEM_NAME_10550306", + "_Ruby": "EMBLEM_PHONETIC_10550306", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550306, + "_Gettext": "EMBLEM_DETAIL_10550306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550401, + "_Title": "EMBLEM_NAME_10550401", + "_Ruby": "EMBLEM_PHONETIC_10550401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550401, + "_Gettext": "EMBLEM_DETAIL_10550401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550402, + "_Title": "EMBLEM_NAME_10550402", + "_Ruby": "EMBLEM_PHONETIC_10550402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550402, + "_Gettext": "EMBLEM_DETAIL_10550402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550403, + "_Title": "EMBLEM_NAME_10550403", + "_Ruby": "EMBLEM_PHONETIC_10550403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550403, + "_Gettext": "EMBLEM_DETAIL_10550403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550404, + "_Title": "EMBLEM_NAME_10550404", + "_Ruby": "EMBLEM_PHONETIC_10550404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550404, + "_Gettext": "EMBLEM_DETAIL_10550404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550405, + "_Title": "EMBLEM_NAME_10550405", + "_Ruby": "EMBLEM_PHONETIC_10550405", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550405, + "_Gettext": "EMBLEM_DETAIL_10550405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550501, + "_Title": "EMBLEM_NAME_10550501", + "_Ruby": "EMBLEM_PHONETIC_10550501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550501, + "_Gettext": "EMBLEM_DETAIL_10550501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550502, + "_Title": "EMBLEM_NAME_10550502", + "_Ruby": "EMBLEM_PHONETIC_10550502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550502, + "_Gettext": "EMBLEM_DETAIL_10550502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550503, + "_Title": "EMBLEM_NAME_10550503", + "_Ruby": "EMBLEM_PHONETIC_10550503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550503, + "_Gettext": "EMBLEM_DETAIL_10550503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10550504, + "_Title": "EMBLEM_NAME_10550504", + "_Ruby": "EMBLEM_PHONETIC_10550504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10550504, + "_Gettext": "EMBLEM_DETAIL_10550504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10630101, + "_Title": "EMBLEM_NAME_10630101", + "_Ruby": "EMBLEM_PHONETIC_10630101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10630101, + "_Gettext": "EMBLEM_DETAIL_10630101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10630201, + "_Title": "EMBLEM_NAME_10630201", + "_Ruby": "EMBLEM_PHONETIC_10630201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10630201, + "_Gettext": "EMBLEM_DETAIL_10630201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10630301, + "_Title": "EMBLEM_NAME_10630301", + "_Ruby": "EMBLEM_PHONETIC_10630301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10630301, + "_Gettext": "EMBLEM_DETAIL_10630301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10630401, + "_Title": "EMBLEM_NAME_10630401", + "_Ruby": "EMBLEM_PHONETIC_10630401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10630401, + "_Gettext": "EMBLEM_DETAIL_10630401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640101, + "_Title": "EMBLEM_NAME_10640101", + "_Ruby": "EMBLEM_PHONETIC_10640101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640101, + "_Gettext": "EMBLEM_DETAIL_10640101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640202, + "_Title": "EMBLEM_NAME_10640202", + "_Ruby": "EMBLEM_PHONETIC_10640202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640202, + "_Gettext": "EMBLEM_DETAIL_10640202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640301, + "_Title": "EMBLEM_NAME_10640301", + "_Ruby": "EMBLEM_PHONETIC_10640301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640301, + "_Gettext": "EMBLEM_DETAIL_10640301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640302, + "_Title": "EMBLEM_NAME_10640302", + "_Ruby": "EMBLEM_PHONETIC_10640302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640302, + "_Gettext": "EMBLEM_DETAIL_10640302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640401, + "_Title": "EMBLEM_NAME_10640401", + "_Ruby": "EMBLEM_PHONETIC_10640401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640401, + "_Gettext": "EMBLEM_DETAIL_10640401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640402, + "_Title": "EMBLEM_NAME_10640402", + "_Ruby": "EMBLEM_PHONETIC_10640402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640402, + "_Gettext": "EMBLEM_DETAIL_10640402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640403, + "_Title": "EMBLEM_NAME_10640403", + "_Ruby": "EMBLEM_PHONETIC_10640403", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640403, + "_Gettext": "EMBLEM_DETAIL_10640403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10640501, + "_Title": "EMBLEM_NAME_10640501", + "_Ruby": "EMBLEM_PHONETIC_10640501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10640501, + "_Gettext": "EMBLEM_DETAIL_10640501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650101, + "_Title": "EMBLEM_NAME_10650101", + "_Ruby": "EMBLEM_PHONETIC_10650101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650101, + "_Gettext": "EMBLEM_DETAIL_10650101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650102, + "_Title": "EMBLEM_NAME_10650102", + "_Ruby": "EMBLEM_PHONETIC_10650102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650102, + "_Gettext": "EMBLEM_DETAIL_10650102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650103, + "_Title": "EMBLEM_NAME_10650103", + "_Ruby": "EMBLEM_PHONETIC_10650103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650103, + "_Gettext": "EMBLEM_DETAIL_10650103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650201, + "_Title": "EMBLEM_NAME_10650201", + "_Ruby": "EMBLEM_PHONETIC_10650201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650201, + "_Gettext": "EMBLEM_DETAIL_10650201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650202, + "_Title": "EMBLEM_NAME_10650202", + "_Ruby": "EMBLEM_PHONETIC_10650202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650202, + "_Gettext": "EMBLEM_DETAIL_10650202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650203, + "_Title": "EMBLEM_NAME_10650203", + "_Ruby": "EMBLEM_PHONETIC_10650203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650203, + "_Gettext": "EMBLEM_DETAIL_10650203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650204, + "_Title": "EMBLEM_NAME_10650204", + "_Ruby": "EMBLEM_PHONETIC_10650204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650204, + "_Gettext": "EMBLEM_DETAIL_10650204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650301, + "_Title": "EMBLEM_NAME_10650301", + "_Ruby": "EMBLEM_PHONETIC_10650301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650301, + "_Gettext": "EMBLEM_DETAIL_10650301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650302, + "_Title": "EMBLEM_NAME_10650302", + "_Ruby": "EMBLEM_PHONETIC_10650302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650302, + "_Gettext": "EMBLEM_DETAIL_10650302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650303, + "_Title": "EMBLEM_NAME_10650303", + "_Ruby": "EMBLEM_PHONETIC_10650303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650303, + "_Gettext": "EMBLEM_DETAIL_10650303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650304, + "_Title": "EMBLEM_NAME_10650304", + "_Ruby": "EMBLEM_PHONETIC_10650304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650304, + "_Gettext": "EMBLEM_DETAIL_10650304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650305, + "_Title": "EMBLEM_NAME_10650305", + "_Ruby": "EMBLEM_PHONETIC_10650305", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650305, + "_Gettext": "EMBLEM_DETAIL_10650305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650401, + "_Title": "EMBLEM_NAME_10650401", + "_Ruby": "EMBLEM_PHONETIC_10650401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650401, + "_Gettext": "EMBLEM_DETAIL_10650401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650402, + "_Title": "EMBLEM_NAME_10650402", + "_Ruby": "EMBLEM_PHONETIC_10650402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650402, + "_Gettext": "EMBLEM_DETAIL_10650402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650403, + "_Title": "EMBLEM_NAME_10650403", + "_Ruby": "EMBLEM_PHONETIC_10650403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650403, + "_Gettext": "EMBLEM_DETAIL_10650403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650501, + "_Title": "EMBLEM_NAME_10650501", + "_Ruby": "EMBLEM_PHONETIC_10650501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650501, + "_Gettext": "EMBLEM_DETAIL_10650501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650502, + "_Title": "EMBLEM_NAME_10650502", + "_Ruby": "EMBLEM_PHONETIC_10650502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650502, + "_Gettext": "EMBLEM_DETAIL_10650502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650503, + "_Title": "EMBLEM_NAME_10650503", + "_Ruby": "EMBLEM_PHONETIC_10650503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650503, + "_Gettext": "EMBLEM_DETAIL_10650503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650504, + "_Title": "EMBLEM_NAME_10650504", + "_Ruby": "EMBLEM_PHONETIC_10650504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650504, + "_Gettext": "EMBLEM_DETAIL_10650504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10650505, + "_Title": "EMBLEM_NAME_10650505", + "_Ruby": "EMBLEM_PHONETIC_10650505", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10650505, + "_Gettext": "EMBLEM_DETAIL_10650505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10730101, + "_Title": "EMBLEM_NAME_10730101", + "_Ruby": "EMBLEM_PHONETIC_10730101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10730101, + "_Gettext": "EMBLEM_DETAIL_10730101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10730301, + "_Title": "EMBLEM_NAME_10730301", + "_Ruby": "EMBLEM_PHONETIC_10730301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10730301, + "_Gettext": "EMBLEM_DETAIL_10730301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10730401, + "_Title": "EMBLEM_NAME_10730401", + "_Ruby": "EMBLEM_PHONETIC_10730401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10730401, + "_Gettext": "EMBLEM_DETAIL_10730401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10730501, + "_Title": "EMBLEM_NAME_10730501", + "_Ruby": "EMBLEM_PHONETIC_10730501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10730501, + "_Gettext": "EMBLEM_DETAIL_10730501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740101, + "_Title": "EMBLEM_NAME_10740101", + "_Ruby": "EMBLEM_PHONETIC_10740101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740101, + "_Gettext": "EMBLEM_DETAIL_10740101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740201, + "_Title": "EMBLEM_NAME_10740201", + "_Ruby": "EMBLEM_PHONETIC_10740201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740201, + "_Gettext": "EMBLEM_DETAIL_10740201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740202, + "_Title": "EMBLEM_NAME_10740202", + "_Ruby": "EMBLEM_PHONETIC_10740202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740202, + "_Gettext": "EMBLEM_DETAIL_10740202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740203, + "_Title": "EMBLEM_NAME_10740203", + "_Ruby": "EMBLEM_PHONETIC_10740203", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740203, + "_Gettext": "EMBLEM_DETAIL_10740203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740301, + "_Title": "EMBLEM_NAME_10740301", + "_Ruby": "EMBLEM_PHONETIC_10740301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740301, + "_Gettext": "EMBLEM_DETAIL_10740301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740302, + "_Title": "EMBLEM_NAME_10740302", + "_Ruby": "EMBLEM_PHONETIC_10740302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740302, + "_Gettext": "EMBLEM_DETAIL_10740302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740401, + "_Title": "EMBLEM_NAME_10740401", + "_Ruby": "EMBLEM_PHONETIC_10740401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740401, + "_Gettext": "EMBLEM_DETAIL_10740401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740402, + "_Title": "EMBLEM_NAME_10740402", + "_Ruby": "EMBLEM_PHONETIC_10740402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740402, + "_Gettext": "EMBLEM_DETAIL_10740402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10740501, + "_Title": "EMBLEM_NAME_10740501", + "_Ruby": "EMBLEM_PHONETIC_10740501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10740501, + "_Gettext": "EMBLEM_DETAIL_10740501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750101, + "_Title": "EMBLEM_NAME_10750101", + "_Ruby": "EMBLEM_PHONETIC_10750101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750101, + "_Gettext": "EMBLEM_DETAIL_10750101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750102, + "_Title": "EMBLEM_NAME_10750102", + "_Ruby": "EMBLEM_PHONETIC_10750102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750102, + "_Gettext": "EMBLEM_DETAIL_10750102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750103, + "_Title": "EMBLEM_NAME_10750103", + "_Ruby": "EMBLEM_PHONETIC_10750103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750103, + "_Gettext": "EMBLEM_DETAIL_10750103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750104, + "_Title": "EMBLEM_NAME_10750104", + "_Ruby": "EMBLEM_PHONETIC_10750104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750104, + "_Gettext": "EMBLEM_DETAIL_10750104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750105, + "_Title": "EMBLEM_NAME_10750105", + "_Ruby": "EMBLEM_PHONETIC_10750105", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750105, + "_Gettext": "EMBLEM_DETAIL_10750105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750201, + "_Title": "EMBLEM_NAME_10750201", + "_Ruby": "EMBLEM_PHONETIC_10750201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750201, + "_Gettext": "EMBLEM_DETAIL_10750201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750202, + "_Title": "EMBLEM_NAME_10750202", + "_Ruby": "EMBLEM_PHONETIC_10750202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750202, + "_Gettext": "EMBLEM_DETAIL_10750202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750203, + "_Title": "EMBLEM_NAME_10750203", + "_Ruby": "EMBLEM_PHONETIC_10750203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750203, + "_Gettext": "EMBLEM_DETAIL_10750203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750204, + "_Title": "EMBLEM_NAME_10750204", + "_Ruby": "EMBLEM_PHONETIC_10750204", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750204, + "_Gettext": "EMBLEM_DETAIL_10750204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750205, + "_Title": "EMBLEM_NAME_10750205", + "_Ruby": "EMBLEM_PHONETIC_10750205", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750205, + "_Gettext": "EMBLEM_DETAIL_10750205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750301, + "_Title": "EMBLEM_NAME_10750301", + "_Ruby": "EMBLEM_PHONETIC_10750301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750301, + "_Gettext": "EMBLEM_DETAIL_10750301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750302, + "_Title": "EMBLEM_NAME_10750302", + "_Ruby": "EMBLEM_PHONETIC_10750302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750302, + "_Gettext": "EMBLEM_DETAIL_10750302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750303, + "_Title": "EMBLEM_NAME_10750303", + "_Ruby": "EMBLEM_PHONETIC_10750303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750303, + "_Gettext": "EMBLEM_DETAIL_10750303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750304, + "_Title": "EMBLEM_NAME_10750304", + "_Ruby": "EMBLEM_PHONETIC_10750304", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750304, + "_Gettext": "EMBLEM_DETAIL_10750304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750401, + "_Title": "EMBLEM_NAME_10750401", + "_Ruby": "EMBLEM_PHONETIC_10750401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750401, + "_Gettext": "EMBLEM_DETAIL_10750401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750402, + "_Title": "EMBLEM_NAME_10750402", + "_Ruby": "EMBLEM_PHONETIC_10750402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750402, + "_Gettext": "EMBLEM_DETAIL_10750402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750403, + "_Title": "EMBLEM_NAME_10750403", + "_Ruby": "EMBLEM_PHONETIC_10750403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750403, + "_Gettext": "EMBLEM_DETAIL_10750403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750404, + "_Title": "EMBLEM_NAME_10750404", + "_Ruby": "EMBLEM_PHONETIC_10750404", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750404, + "_Gettext": "EMBLEM_DETAIL_10750404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750405, + "_Title": "EMBLEM_NAME_10750405", + "_Ruby": "EMBLEM_PHONETIC_10750405", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750405, + "_Gettext": "EMBLEM_DETAIL_10750405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750501, + "_Title": "EMBLEM_NAME_10750501", + "_Ruby": "EMBLEM_PHONETIC_10750501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750501, + "_Gettext": "EMBLEM_DETAIL_10750501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750502, + "_Title": "EMBLEM_NAME_10750502", + "_Ruby": "EMBLEM_PHONETIC_10750502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750502, + "_Gettext": "EMBLEM_DETAIL_10750502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750503, + "_Title": "EMBLEM_NAME_10750503", + "_Ruby": "EMBLEM_PHONETIC_10750503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750503, + "_Gettext": "EMBLEM_DETAIL_10750503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750504, + "_Title": "EMBLEM_NAME_10750504", + "_Ruby": "EMBLEM_PHONETIC_10750504", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750504, + "_Gettext": "EMBLEM_DETAIL_10750504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10750505, + "_Title": "EMBLEM_NAME_10750505", + "_Ruby": "EMBLEM_PHONETIC_10750505", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10750505, + "_Gettext": "EMBLEM_DETAIL_10750505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830101, + "_Title": "EMBLEM_NAME_10830101", + "_Ruby": "EMBLEM_PHONETIC_10830101", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830101, + "_Gettext": "EMBLEM_DETAIL_10830101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830201, + "_Title": "EMBLEM_NAME_10830201", + "_Ruby": "EMBLEM_PHONETIC_10830201", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830201, + "_Gettext": "EMBLEM_DETAIL_10830201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830301, + "_Title": "EMBLEM_NAME_10830301", + "_Ruby": "EMBLEM_PHONETIC_10830301", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830301, + "_Gettext": "EMBLEM_DETAIL_10830301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830401, + "_Title": "EMBLEM_NAME_10830401", + "_Ruby": "EMBLEM_PHONETIC_10830401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830401, + "_Gettext": "EMBLEM_DETAIL_10830401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830402, + "_Title": "EMBLEM_NAME_10830402", + "_Ruby": "EMBLEM_PHONETIC_10830402", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830402, + "_Gettext": "EMBLEM_DETAIL_10830402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10830501, + "_Title": "EMBLEM_NAME_10830501", + "_Ruby": "EMBLEM_PHONETIC_10830501", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10830501, + "_Gettext": "EMBLEM_DETAIL_10830501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840101, + "_Title": "EMBLEM_NAME_10840101", + "_Ruby": "EMBLEM_PHONETIC_10840101", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840101, + "_Gettext": "EMBLEM_DETAIL_10840101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840102, + "_Title": "EMBLEM_NAME_10840102", + "_Ruby": "EMBLEM_PHONETIC_10840102", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840102, + "_Gettext": "EMBLEM_DETAIL_10840102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840201, + "_Title": "EMBLEM_NAME_10840201", + "_Ruby": "EMBLEM_PHONETIC_10840201", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840201, + "_Gettext": "EMBLEM_DETAIL_10840201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840202, + "_Title": "EMBLEM_NAME_10840202", + "_Ruby": "EMBLEM_PHONETIC_10840202", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840202, + "_Gettext": "EMBLEM_DETAIL_10840202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840301, + "_Title": "EMBLEM_NAME_10840301", + "_Ruby": "EMBLEM_PHONETIC_10840301", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840301, + "_Gettext": "EMBLEM_DETAIL_10840301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840302, + "_Title": "EMBLEM_NAME_10840302", + "_Ruby": "EMBLEM_PHONETIC_10840302", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840302, + "_Gettext": "EMBLEM_DETAIL_10840302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840401, + "_Title": "EMBLEM_NAME_10840401", + "_Ruby": "EMBLEM_PHONETIC_10840401", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840401, + "_Gettext": "EMBLEM_DETAIL_10840401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840402, + "_Title": "EMBLEM_NAME_10840402", + "_Ruby": "EMBLEM_PHONETIC_10840402", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840402, + "_Gettext": "EMBLEM_DETAIL_10840402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840403, + "_Title": "EMBLEM_NAME_10840403", + "_Ruby": "EMBLEM_PHONETIC_10840403", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840403, + "_Gettext": "EMBLEM_DETAIL_10840403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10840501, + "_Title": "EMBLEM_NAME_10840501", + "_Ruby": "EMBLEM_PHONETIC_10840501", + "_Rarity": 2, + "_EmblemType": 1, + "_Sortid": 10840501, + "_Gettext": "EMBLEM_DETAIL_10840501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850101, + "_Title": "EMBLEM_NAME_10850101", + "_Ruby": "EMBLEM_PHONETIC_10850101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850101, + "_Gettext": "EMBLEM_DETAIL_10850101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850102, + "_Title": "EMBLEM_NAME_10850102", + "_Ruby": "EMBLEM_PHONETIC_10850102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850102, + "_Gettext": "EMBLEM_DETAIL_10850102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850103, + "_Title": "EMBLEM_NAME_10850103", + "_Ruby": "EMBLEM_PHONETIC_10850103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850103, + "_Gettext": "EMBLEM_DETAIL_10850103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850104, + "_Title": "EMBLEM_NAME_10850104", + "_Ruby": "EMBLEM_PHONETIC_10850104", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850104, + "_Gettext": "EMBLEM_DETAIL_10850104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850201, + "_Title": "EMBLEM_NAME_10850201", + "_Ruby": "EMBLEM_PHONETIC_10850201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850201, + "_Gettext": "EMBLEM_DETAIL_10850201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850202, + "_Title": "EMBLEM_NAME_10850202", + "_Ruby": "EMBLEM_PHONETIC_10850202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850202, + "_Gettext": "EMBLEM_DETAIL_10850202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850203, + "_Title": "EMBLEM_NAME_10850203", + "_Ruby": "EMBLEM_PHONETIC_10850203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850203, + "_Gettext": "EMBLEM_DETAIL_10850203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850301, + "_Title": "EMBLEM_NAME_10850301", + "_Ruby": "EMBLEM_PHONETIC_10850301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850301, + "_Gettext": "EMBLEM_DETAIL_10850301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850302, + "_Title": "EMBLEM_NAME_10850302", + "_Ruby": "EMBLEM_PHONETIC_10850302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850302, + "_Gettext": "EMBLEM_DETAIL_10850302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850303, + "_Title": "EMBLEM_NAME_10850303", + "_Ruby": "EMBLEM_PHONETIC_10850303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850303, + "_Gettext": "EMBLEM_DETAIL_10850303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850401, + "_Title": "EMBLEM_NAME_10850401", + "_Ruby": "EMBLEM_PHONETIC_10850401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850401, + "_Gettext": "EMBLEM_DETAIL_10850401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850402, + "_Title": "EMBLEM_NAME_10850402", + "_Ruby": "EMBLEM_PHONETIC_10850402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850402, + "_Gettext": "EMBLEM_DETAIL_10850402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850403, + "_Title": "EMBLEM_NAME_10850403", + "_Ruby": "EMBLEM_PHONETIC_10850403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850403, + "_Gettext": "EMBLEM_DETAIL_10850403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850501, + "_Title": "EMBLEM_NAME_10850501", + "_Ruby": "EMBLEM_PHONETIC_10850501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850501, + "_Gettext": "EMBLEM_DETAIL_10850501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850502, + "_Title": "EMBLEM_NAME_10850502", + "_Ruby": "EMBLEM_PHONETIC_10850502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850502, + "_Gettext": "EMBLEM_DETAIL_10850502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10850503, + "_Title": "EMBLEM_NAME_10850503", + "_Ruby": "EMBLEM_PHONETIC_10850503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10850503, + "_Gettext": "EMBLEM_DETAIL_10850503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10930401, + "_Title": "EMBLEM_NAME_10930401", + "_Ruby": "EMBLEM_PHONETIC_10930401", + "_Rarity": 1, + "_EmblemType": 1, + "_Sortid": 10930401, + "_Gettext": "EMBLEM_DETAIL_10930401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950101, + "_Title": "EMBLEM_NAME_10950101", + "_Ruby": "EMBLEM_PHONETIC_10950101", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950101, + "_Gettext": "EMBLEM_DETAIL_10950101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950102, + "_Title": "EMBLEM_NAME_10950102", + "_Ruby": "EMBLEM_PHONETIC_10950102", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950102, + "_Gettext": "EMBLEM_DETAIL_10950102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950103, + "_Title": "EMBLEM_NAME_10950103", + "_Ruby": "EMBLEM_PHONETIC_10950103", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950103, + "_Gettext": "EMBLEM_DETAIL_10950103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950201, + "_Title": "EMBLEM_NAME_10950201", + "_Ruby": "EMBLEM_PHONETIC_10950201", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950201, + "_Gettext": "EMBLEM_DETAIL_10950201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950202, + "_Title": "EMBLEM_NAME_10950202", + "_Ruby": "EMBLEM_PHONETIC_10950202", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950202, + "_Gettext": "EMBLEM_DETAIL_10950202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950203, + "_Title": "EMBLEM_NAME_10950203", + "_Ruby": "EMBLEM_PHONETIC_10950203", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950203, + "_Gettext": "EMBLEM_DETAIL_10950203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950301, + "_Title": "EMBLEM_NAME_10950301", + "_Ruby": "EMBLEM_PHONETIC_10950301", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950301, + "_Gettext": "EMBLEM_DETAIL_10950301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950302, + "_Title": "EMBLEM_NAME_10950302", + "_Ruby": "EMBLEM_PHONETIC_10950302", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950302, + "_Gettext": "EMBLEM_DETAIL_10950302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950303, + "_Title": "EMBLEM_NAME_10950303", + "_Ruby": "EMBLEM_PHONETIC_10950303", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950303, + "_Gettext": "EMBLEM_DETAIL_10950303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950401, + "_Title": "EMBLEM_NAME_10950401", + "_Ruby": "EMBLEM_PHONETIC_10950401", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950401, + "_Gettext": "EMBLEM_DETAIL_10950401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950402, + "_Title": "EMBLEM_NAME_10950402", + "_Ruby": "EMBLEM_PHONETIC_10950402", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950402, + "_Gettext": "EMBLEM_DETAIL_10950402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950403, + "_Title": "EMBLEM_NAME_10950403", + "_Ruby": "EMBLEM_PHONETIC_10950403", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950403, + "_Gettext": "EMBLEM_DETAIL_10950403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950501, + "_Title": "EMBLEM_NAME_10950501", + "_Ruby": "EMBLEM_PHONETIC_10950501", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950501, + "_Gettext": "EMBLEM_DETAIL_10950501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950502, + "_Title": "EMBLEM_NAME_10950502", + "_Ruby": "EMBLEM_PHONETIC_10950502", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950502, + "_Gettext": "EMBLEM_DETAIL_10950502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 10950503, + "_Title": "EMBLEM_NAME_10950503", + "_Ruby": "EMBLEM_PHONETIC_10950503", + "_Rarity": 3, + "_EmblemType": 1, + "_Sortid": 10950503, + "_Gettext": "EMBLEM_DETAIL_10950503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040101, + "_Title": "EMBLEM_NAME_20040101", + "_Ruby": "EMBLEM_PHONETIC_20040101", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040101, + "_Gettext": "EMBLEM_DETAIL_20040101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040102, + "_Title": "EMBLEM_NAME_20040102", + "_Ruby": "EMBLEM_PHONETIC_20040102", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040102, + "_Gettext": "EMBLEM_DETAIL_20040102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040103, + "_Title": "EMBLEM_NAME_20040103", + "_Ruby": "EMBLEM_PHONETIC_20040103", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040103, + "_Gettext": "EMBLEM_DETAIL_20040103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040201, + "_Title": "EMBLEM_NAME_20040201", + "_Ruby": "EMBLEM_PHONETIC_20040201", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040201, + "_Gettext": "EMBLEM_DETAIL_20040201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040202, + "_Title": "EMBLEM_NAME_20040202", + "_Ruby": "EMBLEM_PHONETIC_20040202", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040202, + "_Gettext": "EMBLEM_DETAIL_20040202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040203, + "_Title": "EMBLEM_NAME_20040203", + "_Ruby": "EMBLEM_PHONETIC_20040203", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040203, + "_Gettext": "EMBLEM_DETAIL_20040203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040301, + "_Title": "EMBLEM_NAME_20040301", + "_Ruby": "EMBLEM_PHONETIC_20040301", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040301, + "_Gettext": "EMBLEM_DETAIL_20040301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040302, + "_Title": "EMBLEM_NAME_20040302", + "_Ruby": "EMBLEM_PHONETIC_20040302", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040302, + "_Gettext": "EMBLEM_DETAIL_20040302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040303, + "_Title": "EMBLEM_NAME_20040303", + "_Ruby": "EMBLEM_PHONETIC_20040303", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040303, + "_Gettext": "EMBLEM_DETAIL_20040303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040401, + "_Title": "EMBLEM_NAME_20040401", + "_Ruby": "EMBLEM_PHONETIC_20040401", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040401, + "_Gettext": "EMBLEM_DETAIL_20040401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040402, + "_Title": "EMBLEM_NAME_20040402", + "_Ruby": "EMBLEM_PHONETIC_20040402", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040402, + "_Gettext": "EMBLEM_DETAIL_20040402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040403, + "_Title": "EMBLEM_NAME_20040403", + "_Ruby": "EMBLEM_PHONETIC_20040403", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040403, + "_Gettext": "EMBLEM_DETAIL_20040403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040405, + "_Title": "EMBLEM_NAME_20040405", + "_Ruby": "EMBLEM_PHONETIC_20040405", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040405, + "_Gettext": "EMBLEM_DETAIL_20040405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040501, + "_Title": "EMBLEM_NAME_20040501", + "_Ruby": "EMBLEM_PHONETIC_20040501", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040501, + "_Gettext": "EMBLEM_DETAIL_20040501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040502, + "_Title": "EMBLEM_NAME_20040502", + "_Ruby": "EMBLEM_PHONETIC_20040502", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040502, + "_Gettext": "EMBLEM_DETAIL_20040502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040503, + "_Title": "EMBLEM_NAME_20040503", + "_Ruby": "EMBLEM_PHONETIC_20040503", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040503, + "_Gettext": "EMBLEM_DETAIL_20040503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040504, + "_Title": "EMBLEM_NAME_20040504", + "_Ruby": "EMBLEM_PHONETIC_20040504", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040504, + "_Gettext": "EMBLEM_DETAIL_20040504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20040505, + "_Title": "EMBLEM_NAME_20040505", + "_Ruby": "EMBLEM_PHONETIC_20040505", + "_Rarity": 2, + "_EmblemType": 2, + "_Sortid": 20040505, + "_Gettext": "EMBLEM_DETAIL_20040505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050101, + "_Title": "EMBLEM_NAME_20050101", + "_Ruby": "EMBLEM_PHONETIC_20050101", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050101, + "_Gettext": "EMBLEM_DETAIL_20050101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050102, + "_Title": "EMBLEM_NAME_20050102", + "_Ruby": "EMBLEM_PHONETIC_20050102", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050102, + "_Gettext": "EMBLEM_DETAIL_20050102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050103, + "_Title": "EMBLEM_NAME_20050103", + "_Ruby": "EMBLEM_PHONETIC_20050103", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050103, + "_Gettext": "EMBLEM_DETAIL_20050103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050104, + "_Title": "EMBLEM_NAME_20050104", + "_Ruby": "EMBLEM_PHONETIC_20050104", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050104, + "_Gettext": "EMBLEM_DETAIL_20050104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050105, + "_Title": "EMBLEM_NAME_20050105", + "_Ruby": "EMBLEM_PHONETIC_20050105", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050105, + "_Gettext": "EMBLEM_DETAIL_20050105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050106, + "_Title": "EMBLEM_NAME_20050106", + "_Ruby": "EMBLEM_PHONETIC_20050106", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050106, + "_Gettext": "EMBLEM_DETAIL_20050106", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050107, + "_Title": "EMBLEM_NAME_20050107", + "_Ruby": "EMBLEM_PHONETIC_20050107", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050107, + "_Gettext": "EMBLEM_DETAIL_20050107", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050108, + "_Title": "EMBLEM_NAME_20050108", + "_Ruby": "EMBLEM_PHONETIC_20050108", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050108, + "_Gettext": "EMBLEM_DETAIL_20050108", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050109, + "_Title": "EMBLEM_NAME_20050109", + "_Ruby": "EMBLEM_PHONETIC_20050109", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050109, + "_Gettext": "EMBLEM_DETAIL_20050109", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050110, + "_Title": "EMBLEM_NAME_20050110", + "_Ruby": "EMBLEM_PHONETIC_20050110", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050110, + "_Gettext": "EMBLEM_DETAIL_20050110", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050111, + "_Title": "EMBLEM_NAME_20050111", + "_Ruby": "EMBLEM_PHONETIC_20050111", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050111, + "_Gettext": "EMBLEM_DETAIL_20050111", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050112, + "_Title": "EMBLEM_NAME_20050112", + "_Ruby": "EMBLEM_PHONETIC_20050112", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050112, + "_Gettext": "EMBLEM_DETAIL_20050112", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050113, + "_Title": "EMBLEM_NAME_20050113", + "_Ruby": "EMBLEM_PHONETIC_20050113", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050113, + "_Gettext": "EMBLEM_DETAIL_20050113", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050114, + "_Title": "EMBLEM_NAME_20050114", + "_Ruby": "EMBLEM_PHONETIC_20050114", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050114, + "_Gettext": "EMBLEM_DETAIL_20050114", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050115, + "_Title": "EMBLEM_NAME_20050115", + "_Ruby": "EMBLEM_PHONETIC_20050115", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050115, + "_Gettext": "EMBLEM_DETAIL_20050115", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050116, + "_Title": "EMBLEM_NAME_20050116", + "_Ruby": "EMBLEM_PHONETIC_20050116", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050116, + "_Gettext": "EMBLEM_DETAIL_20050116", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050117, + "_Title": "EMBLEM_NAME_20050117", + "_Ruby": "EMBLEM_PHONETIC_20050117", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050117, + "_Gettext": "EMBLEM_DETAIL_20050117", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050118, + "_Title": "EMBLEM_NAME_20050118", + "_Ruby": "EMBLEM_PHONETIC_20050118", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050118, + "_Gettext": "EMBLEM_DETAIL_20050118", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050119, + "_Title": "EMBLEM_NAME_20050119", + "_Ruby": "EMBLEM_PHONETIC_20050119", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050119, + "_Gettext": "EMBLEM_DETAIL_20050119", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050201, + "_Title": "EMBLEM_NAME_20050201", + "_Ruby": "EMBLEM_PHONETIC_20050201", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050201, + "_Gettext": "EMBLEM_DETAIL_20050201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050202, + "_Title": "EMBLEM_NAME_20050202", + "_Ruby": "EMBLEM_PHONETIC_20050202", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050202, + "_Gettext": "EMBLEM_DETAIL_20050202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050203, + "_Title": "EMBLEM_NAME_20050203", + "_Ruby": "EMBLEM_PHONETIC_20050203", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050203, + "_Gettext": "EMBLEM_DETAIL_20050203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050204, + "_Title": "EMBLEM_NAME_20050204", + "_Ruby": "EMBLEM_PHONETIC_20050204", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050204, + "_Gettext": "EMBLEM_DETAIL_20050204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050205, + "_Title": "EMBLEM_NAME_20050205", + "_Ruby": "EMBLEM_PHONETIC_20050205", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050205, + "_Gettext": "EMBLEM_DETAIL_20050205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050206, + "_Title": "EMBLEM_NAME_20050206", + "_Ruby": "EMBLEM_PHONETIC_20050206", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050206, + "_Gettext": "EMBLEM_DETAIL_20050206", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050207, + "_Title": "EMBLEM_NAME_20050207", + "_Ruby": "EMBLEM_PHONETIC_20050207", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050207, + "_Gettext": "EMBLEM_DETAIL_20050207", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050208, + "_Title": "EMBLEM_NAME_20050208", + "_Ruby": "EMBLEM_PHONETIC_20050208", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050208, + "_Gettext": "EMBLEM_DETAIL_20050208", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050209, + "_Title": "EMBLEM_NAME_20050209", + "_Ruby": "EMBLEM_PHONETIC_20050209", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050209, + "_Gettext": "EMBLEM_DETAIL_20050209", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050210, + "_Title": "EMBLEM_NAME_20050210", + "_Ruby": "EMBLEM_PHONETIC_20050210", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050210, + "_Gettext": "EMBLEM_DETAIL_20050210", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050211, + "_Title": "EMBLEM_NAME_20050211", + "_Ruby": "EMBLEM_PHONETIC_20050211", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050211, + "_Gettext": "EMBLEM_DETAIL_20050211", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050212, + "_Title": "EMBLEM_NAME_20050212", + "_Ruby": "EMBLEM_PHONETIC_20050212", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050212, + "_Gettext": "EMBLEM_DETAIL_20050212", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050213, + "_Title": "EMBLEM_NAME_20050213", + "_Ruby": "EMBLEM_PHONETIC_20050213", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050213, + "_Gettext": "EMBLEM_DETAIL_20050213", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050214, + "_Title": "EMBLEM_NAME_20050214", + "_Ruby": "EMBLEM_PHONETIC_20050214", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050214, + "_Gettext": "EMBLEM_DETAIL_20050214", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050215, + "_Title": "EMBLEM_NAME_20050215", + "_Ruby": "EMBLEM_PHONETIC_20050215", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050215, + "_Gettext": "EMBLEM_DETAIL_20050215", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050216, + "_Title": "EMBLEM_NAME_20050216", + "_Ruby": "EMBLEM_PHONETIC_20050216", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050216, + "_Gettext": "EMBLEM_DETAIL_20050216", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050217, + "_Title": "EMBLEM_NAME_20050217", + "_Ruby": "EMBLEM_PHONETIC_20050217", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050217, + "_Gettext": "EMBLEM_DETAIL_20050217", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050301, + "_Title": "EMBLEM_NAME_20050301", + "_Ruby": "EMBLEM_PHONETIC_20050301", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050301, + "_Gettext": "EMBLEM_DETAIL_20050301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050302, + "_Title": "EMBLEM_NAME_20050302", + "_Ruby": "EMBLEM_PHONETIC_20050302", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050302, + "_Gettext": "EMBLEM_DETAIL_20050302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050303, + "_Title": "EMBLEM_NAME_20050303", + "_Ruby": "EMBLEM_PHONETIC_20050303", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050303, + "_Gettext": "EMBLEM_DETAIL_20050303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050304, + "_Title": "EMBLEM_NAME_20050304", + "_Ruby": "EMBLEM_PHONETIC_20050304", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050304, + "_Gettext": "EMBLEM_DETAIL_20050304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050305, + "_Title": "EMBLEM_NAME_20050305", + "_Ruby": "EMBLEM_PHONETIC_20050305", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050305, + "_Gettext": "EMBLEM_DETAIL_20050305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050306, + "_Title": "EMBLEM_NAME_20050306", + "_Ruby": "EMBLEM_PHONETIC_20050306", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050306, + "_Gettext": "EMBLEM_DETAIL_20050306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050307, + "_Title": "EMBLEM_NAME_20050307", + "_Ruby": "EMBLEM_PHONETIC_20050307", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050307, + "_Gettext": "EMBLEM_DETAIL_20050307", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050308, + "_Title": "EMBLEM_NAME_20050308", + "_Ruby": "EMBLEM_PHONETIC_20050308", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050308, + "_Gettext": "EMBLEM_DETAIL_20050308", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050309, + "_Title": "EMBLEM_NAME_20050309", + "_Ruby": "EMBLEM_PHONETIC_20050309", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050309, + "_Gettext": "EMBLEM_DETAIL_20050309", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050310, + "_Title": "EMBLEM_NAME_20050310", + "_Ruby": "EMBLEM_PHONETIC_20050310", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050310, + "_Gettext": "EMBLEM_DETAIL_20050310", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050311, + "_Title": "EMBLEM_NAME_20050311", + "_Ruby": "EMBLEM_PHONETIC_20050311", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050311, + "_Gettext": "EMBLEM_DETAIL_20050311", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050312, + "_Title": "EMBLEM_NAME_20050312", + "_Ruby": "EMBLEM_PHONETIC_20050312", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050312, + "_Gettext": "EMBLEM_DETAIL_20050312", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050313, + "_Title": "EMBLEM_NAME_20050313", + "_Ruby": "EMBLEM_PHONETIC_20050313", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050313, + "_Gettext": "EMBLEM_DETAIL_20050313", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050314, + "_Title": "EMBLEM_NAME_20050314", + "_Ruby": "EMBLEM_PHONETIC_20050314", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050314, + "_Gettext": "EMBLEM_DETAIL_20050314", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050315, + "_Title": "EMBLEM_NAME_20050315", + "_Ruby": "EMBLEM_PHONETIC_20050315", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050315, + "_Gettext": "EMBLEM_DETAIL_20050315", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050316, + "_Title": "EMBLEM_NAME_20050316", + "_Ruby": "EMBLEM_PHONETIC_20050316", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050316, + "_Gettext": "EMBLEM_DETAIL_20050316", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050317, + "_Title": "EMBLEM_NAME_20050317", + "_Ruby": "EMBLEM_PHONETIC_20050317", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050317, + "_Gettext": "EMBLEM_DETAIL_20050317", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050318, + "_Title": "EMBLEM_NAME_20050318", + "_Ruby": "EMBLEM_PHONETIC_20050318", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050318, + "_Gettext": "EMBLEM_DETAIL_20050318", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050319, + "_Title": "EMBLEM_NAME_20050319", + "_Ruby": "EMBLEM_PHONETIC_20050319", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050319, + "_Gettext": "EMBLEM_DETAIL_20050319", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050320, + "_Title": "EMBLEM_NAME_20050320", + "_Ruby": "EMBLEM_PHONETIC_20050320", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050320, + "_Gettext": "EMBLEM_DETAIL_20050320", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050321, + "_Title": "EMBLEM_NAME_20050321", + "_Ruby": "EMBLEM_PHONETIC_20050321", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050321, + "_Gettext": "EMBLEM_DETAIL_20050321", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050401, + "_Title": "EMBLEM_NAME_20050401", + "_Ruby": "EMBLEM_PHONETIC_20050401", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050401, + "_Gettext": "EMBLEM_DETAIL_20050401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050402, + "_Title": "EMBLEM_NAME_20050402", + "_Ruby": "EMBLEM_PHONETIC_20050402", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050402, + "_Gettext": "EMBLEM_DETAIL_20050402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050403, + "_Title": "EMBLEM_NAME_20050403", + "_Ruby": "EMBLEM_PHONETIC_20050403", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050403, + "_Gettext": "EMBLEM_DETAIL_20050403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050404, + "_Title": "EMBLEM_NAME_20050404", + "_Ruby": "EMBLEM_PHONETIC_20050404", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050404, + "_Gettext": "EMBLEM_DETAIL_20050404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050405, + "_Title": "EMBLEM_NAME_20050405", + "_Ruby": "EMBLEM_PHONETIC_20050405", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050405, + "_Gettext": "EMBLEM_DETAIL_20050405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050406, + "_Title": "EMBLEM_NAME_20050406", + "_Ruby": "EMBLEM_PHONETIC_20050406", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050406, + "_Gettext": "EMBLEM_DETAIL_20050406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050407, + "_Title": "EMBLEM_NAME_20050407", + "_Ruby": "EMBLEM_PHONETIC_20050407", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050407, + "_Gettext": "EMBLEM_DETAIL_20050407", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050408, + "_Title": "EMBLEM_NAME_20050408", + "_Ruby": "EMBLEM_PHONETIC_20050408", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050408, + "_Gettext": "EMBLEM_DETAIL_20050408", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050409, + "_Title": "EMBLEM_NAME_20050409", + "_Ruby": "EMBLEM_PHONETIC_20050409", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050409, + "_Gettext": "EMBLEM_DETAIL_20050409", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050410, + "_Title": "EMBLEM_NAME_20050410", + "_Ruby": "EMBLEM_PHONETIC_20050410", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050410, + "_Gettext": "EMBLEM_DETAIL_20050410", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050411, + "_Title": "EMBLEM_NAME_20050411", + "_Ruby": "EMBLEM_PHONETIC_20050411", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050411, + "_Gettext": "EMBLEM_DETAIL_20050411", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050412, + "_Title": "EMBLEM_NAME_20050412", + "_Ruby": "EMBLEM_PHONETIC_20050412", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050412, + "_Gettext": "EMBLEM_DETAIL_20050412", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050413, + "_Title": "EMBLEM_NAME_20050413", + "_Ruby": "EMBLEM_PHONETIC_20050413", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050413, + "_Gettext": "EMBLEM_DETAIL_20050413", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050414, + "_Title": "EMBLEM_NAME_20050414", + "_Ruby": "EMBLEM_PHONETIC_20050414", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050414, + "_Gettext": "EMBLEM_DETAIL_20050414", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050415, + "_Title": "EMBLEM_NAME_20050415", + "_Ruby": "EMBLEM_PHONETIC_20050415", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050415, + "_Gettext": "EMBLEM_DETAIL_20050415", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050416, + "_Title": "EMBLEM_NAME_20050416", + "_Ruby": "EMBLEM_PHONETIC_20050416", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050416, + "_Gettext": "EMBLEM_DETAIL_20050416", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050417, + "_Title": "EMBLEM_NAME_20050417", + "_Ruby": "EMBLEM_PHONETIC_20050417", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050417, + "_Gettext": "EMBLEM_DETAIL_20050417", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050418, + "_Title": "EMBLEM_NAME_20050418", + "_Ruby": "EMBLEM_PHONETIC_20050418", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050418, + "_Gettext": "EMBLEM_DETAIL_20050418", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050419, + "_Title": "EMBLEM_NAME_20050419", + "_Ruby": "EMBLEM_PHONETIC_20050419", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050419, + "_Gettext": "EMBLEM_DETAIL_20050419", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050501, + "_Title": "EMBLEM_NAME_20050501", + "_Ruby": "EMBLEM_PHONETIC_20050501", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050501, + "_Gettext": "EMBLEM_DETAIL_20050501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050502, + "_Title": "EMBLEM_NAME_20050502", + "_Ruby": "EMBLEM_PHONETIC_20050502", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050502, + "_Gettext": "EMBLEM_DETAIL_20050502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050504, + "_Title": "EMBLEM_NAME_20050504", + "_Ruby": "EMBLEM_PHONETIC_20050504", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050504, + "_Gettext": "EMBLEM_DETAIL_20050504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050505, + "_Title": "EMBLEM_NAME_20050505", + "_Ruby": "EMBLEM_PHONETIC_20050505", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050505, + "_Gettext": "EMBLEM_DETAIL_20050505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050506, + "_Title": "EMBLEM_NAME_20050506", + "_Ruby": "EMBLEM_PHONETIC_20050506", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050506, + "_Gettext": "EMBLEM_DETAIL_20050506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050507, + "_Title": "EMBLEM_NAME_20050507", + "_Ruby": "EMBLEM_PHONETIC_20050507", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050507, + "_Gettext": "EMBLEM_DETAIL_20050507", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050508, + "_Title": "EMBLEM_NAME_20050508", + "_Ruby": "EMBLEM_PHONETIC_20050508", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050508, + "_Gettext": "EMBLEM_DETAIL_20050508", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050509, + "_Title": "EMBLEM_NAME_20050509", + "_Ruby": "EMBLEM_PHONETIC_20050509", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050509, + "_Gettext": "EMBLEM_DETAIL_20050509", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050510, + "_Title": "EMBLEM_NAME_20050510", + "_Ruby": "EMBLEM_PHONETIC_20050510", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050510, + "_Gettext": "EMBLEM_DETAIL_20050510", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050511, + "_Title": "EMBLEM_NAME_20050511", + "_Ruby": "EMBLEM_PHONETIC_20050511", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050511, + "_Gettext": "EMBLEM_DETAIL_20050511", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050512, + "_Title": "EMBLEM_NAME_20050512", + "_Ruby": "EMBLEM_PHONETIC_20050512", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050512, + "_Gettext": "EMBLEM_DETAIL_20050512", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050513, + "_Title": "EMBLEM_NAME_20050513", + "_Ruby": "EMBLEM_PHONETIC_20050513", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050513, + "_Gettext": "EMBLEM_DETAIL_20050513", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050514, + "_Title": "EMBLEM_NAME_20050514", + "_Ruby": "EMBLEM_PHONETIC_20050514", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050514, + "_Gettext": "EMBLEM_DETAIL_20050514", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050515, + "_Title": "EMBLEM_NAME_20050515", + "_Ruby": "EMBLEM_PHONETIC_20050515", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050515, + "_Gettext": "EMBLEM_DETAIL_20050515", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050516, + "_Title": "EMBLEM_NAME_20050516", + "_Ruby": "EMBLEM_PHONETIC_20050516", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050516, + "_Gettext": "EMBLEM_DETAIL_20050516", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050517, + "_Title": "EMBLEM_NAME_20050517", + "_Ruby": "EMBLEM_PHONETIC_20050517", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050517, + "_Gettext": "EMBLEM_DETAIL_20050517", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050518, + "_Title": "EMBLEM_NAME_20050518", + "_Ruby": "EMBLEM_PHONETIC_20050518", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050518, + "_Gettext": "EMBLEM_DETAIL_20050518", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050519, + "_Title": "EMBLEM_NAME_20050519", + "_Ruby": "EMBLEM_PHONETIC_20050519", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050519, + "_Gettext": "EMBLEM_DETAIL_20050519", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050520, + "_Title": "EMBLEM_NAME_20050520", + "_Ruby": "EMBLEM_PHONETIC_20050520", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050520, + "_Gettext": "EMBLEM_DETAIL_20050520", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050521, + "_Title": "EMBLEM_NAME_20050521", + "_Ruby": "EMBLEM_PHONETIC_20050521", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050521, + "_Gettext": "EMBLEM_DETAIL_20050521", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050522, + "_Title": "EMBLEM_NAME_20050522", + "_Ruby": "EMBLEM_PHONETIC_20050522", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050522, + "_Gettext": "EMBLEM_DETAIL_20050522", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050523, + "_Title": "EMBLEM_NAME_20050523", + "_Ruby": "EMBLEM_PHONETIC_20050523", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050523, + "_Gettext": "EMBLEM_DETAIL_20050523", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050524, + "_Title": "EMBLEM_NAME_20050524", + "_Ruby": "EMBLEM_PHONETIC_20050524", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050524, + "_Gettext": "EMBLEM_DETAIL_20050524", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 20050525, + "_Title": "EMBLEM_NAME_20050525", + "_Ruby": "EMBLEM_PHONETIC_20050525", + "_Rarity": 3, + "_EmblemType": 2, + "_Sortid": 20050525, + "_Gettext": "EMBLEM_DETAIL_20050525", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 40000001, + "_Title": "EMBLEM_NAME_40000001", + "_Ruby": "EMBLEM_PHONETIC_40000001", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000001, + "_Gettext": "EMBLEM_DETAIL_40000001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 40000002, + "_Title": "EMBLEM_NAME_40000002", + "_Ruby": "EMBLEM_PHONETIC_40000002", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000002, + "_Gettext": "EMBLEM_DETAIL_40000002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 40000003, + "_Title": "EMBLEM_NAME_40000003", + "_Ruby": "EMBLEM_PHONETIC_40000003", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40000003, + "_Gettext": "EMBLEM_DETAIL_40000003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 40000101, + "_Title": "EMBLEM_NAME_40000101", + "_Ruby": "EMBLEM_PHONETIC_40000101", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000101, + "_Gettext": "EMBLEM_DETAIL_40000101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40000102, + "_Title": "EMBLEM_NAME_40000102", + "_Ruby": "EMBLEM_PHONETIC_40000102", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40000102, + "_Gettext": "EMBLEM_DETAIL_40000102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40000103, + "_Title": "EMBLEM_NAME_40000103", + "_Ruby": "EMBLEM_PHONETIC_40000103", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40000103, + "_Gettext": "EMBLEM_DETAIL_40000103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40000104, + "_Title": "EMBLEM_NAME_40000104", + "_Ruby": "EMBLEM_PHONETIC_40000104", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40000104, + "_Gettext": "EMBLEM_DETAIL_40000104", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40001401, + "_Title": "EMBLEM_NAME_40001401", + "_Ruby": "EMBLEM_PHONETIC_40001401", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001401, + "_Gettext": "EMBLEM_DETAIL_40001401", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001402, + "_Title": "EMBLEM_NAME_40001402", + "_Ruby": "EMBLEM_PHONETIC_40001402", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001402, + "_Gettext": "EMBLEM_DETAIL_40001402", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001403, + "_Title": "EMBLEM_NAME_40001403", + "_Ruby": "EMBLEM_PHONETIC_40001403", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001403, + "_Gettext": "EMBLEM_DETAIL_40001403", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001404, + "_Title": "EMBLEM_NAME_40001404", + "_Ruby": "EMBLEM_PHONETIC_40001404", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001404, + "_Gettext": "EMBLEM_DETAIL_40001404", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40000204, + "_Title": "EMBLEM_NAME_40000204", + "_Ruby": "EMBLEM_PHONETIC_40000204", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000204, + "_Gettext": "EMBLEM_DETAIL_40000204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40000205, + "_Title": "EMBLEM_NAME_40000205", + "_Ruby": "EMBLEM_PHONETIC_40000205", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40000205, + "_Gettext": "EMBLEM_DETAIL_40000205", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40000206, + "_Title": "EMBLEM_NAME_40000206", + "_Ruby": "EMBLEM_PHONETIC_40000206", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40000206, + "_Gettext": "EMBLEM_DETAIL_40000206", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40000207, + "_Title": "EMBLEM_NAME_40000207", + "_Ruby": "EMBLEM_PHONETIC_40000207", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40000207, + "_Gettext": "EMBLEM_DETAIL_40000207", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001201, + "_Title": "EMBLEM_NAME_40001201", + "_Ruby": "EMBLEM_PHONETIC_40001201", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001201, + "_Gettext": "EMBLEM_DETAIL_40001201", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001202, + "_Title": "EMBLEM_NAME_40001202", + "_Ruby": "EMBLEM_PHONETIC_40001202", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001202, + "_Gettext": "EMBLEM_DETAIL_40001202", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001203, + "_Title": "EMBLEM_NAME_40001203", + "_Ruby": "EMBLEM_PHONETIC_40001203", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001203, + "_Gettext": "EMBLEM_DETAIL_40001203", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001204, + "_Title": "EMBLEM_NAME_40001204", + "_Ruby": "EMBLEM_PHONETIC_40001204", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001204, + "_Gettext": "EMBLEM_DETAIL_40001204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001301, + "_Title": "EMBLEM_NAME_40001301", + "_Ruby": "EMBLEM_PHONETIC_40001303", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001301, + "_Gettext": "EMBLEM_DETAIL_40001301", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001302, + "_Title": "EMBLEM_NAME_40001302", + "_Ruby": "EMBLEM_PHONETIC_40001302", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001302, + "_Gettext": "EMBLEM_DETAIL_40001302", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001303, + "_Title": "EMBLEM_NAME_40001303", + "_Ruby": "EMBLEM_PHONETIC_40001301", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001303, + "_Gettext": "EMBLEM_DETAIL_40001303", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001304, + "_Title": "EMBLEM_NAME_40001304", + "_Ruby": "EMBLEM_PHONETIC_40001304", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001304, + "_Gettext": "EMBLEM_DETAIL_40001304", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40000801, + "_Title": "EMBLEM_NAME_40000801", + "_Ruby": "EMBLEM_PHONETIC_40000801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000801, + "_Gettext": "EMBLEM_DETAIL_40000801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40000802, + "_Title": "EMBLEM_NAME_40000802", + "_Ruby": "EMBLEM_PHONETIC_40000802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40000802, + "_Gettext": "EMBLEM_DETAIL_40000802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40000803, + "_Title": "EMBLEM_NAME_40000803", + "_Ruby": "EMBLEM_PHONETIC_40000803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40000803, + "_Gettext": "EMBLEM_DETAIL_40000803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40000804, + "_Title": "EMBLEM_NAME_40000804", + "_Ruby": "EMBLEM_PHONETIC_40000804", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40000804, + "_Gettext": "EMBLEM_DETAIL_40000804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40000901, + "_Title": "EMBLEM_NAME_40000901", + "_Ruby": "EMBLEM_PHONETIC_40000901", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40000901, + "_Gettext": "EMBLEM_DETAIL_40000901", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40000902, + "_Title": "EMBLEM_NAME_40000902", + "_Ruby": "EMBLEM_PHONETIC_40000902", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40000902, + "_Gettext": "EMBLEM_DETAIL_40000902", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40000903, + "_Title": "EMBLEM_NAME_40000903", + "_Ruby": "EMBLEM_PHONETIC_40000903", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40000903, + "_Gettext": "EMBLEM_DETAIL_40000903", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001001, + "_Title": "EMBLEM_NAME_40001001", + "_Ruby": "EMBLEM_PHONETIC_40001001", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001001, + "_Gettext": "EMBLEM_DETAIL_40001001", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001002, + "_Title": "EMBLEM_NAME_40001002", + "_Ruby": "EMBLEM_PHONETIC_40001002", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001002, + "_Gettext": "EMBLEM_DETAIL_40001002", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001003, + "_Title": "EMBLEM_NAME_40001003", + "_Ruby": "EMBLEM_PHONETIC_40001003", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001003, + "_Gettext": "EMBLEM_DETAIL_40001003", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001101, + "_Title": "EMBLEM_NAME_40001101", + "_Ruby": "EMBLEM_PHONETIC_40001101", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001101, + "_Gettext": "EMBLEM_DETAIL_40001101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001102, + "_Title": "EMBLEM_NAME_40001102", + "_Ruby": "EMBLEM_PHONETIC_40001102", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001102, + "_Gettext": "EMBLEM_DETAIL_40001102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001103, + "_Title": "EMBLEM_NAME_40001103", + "_Ruby": "EMBLEM_PHONETIC_40001103", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001103, + "_Gettext": "EMBLEM_DETAIL_40001103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001104, + "_Title": "EMBLEM_NAME_40001104", + "_Ruby": "EMBLEM_PHONETIC_40001104", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40001104, + "_Gettext": "EMBLEM_DETAIL_40001103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40001501, + "_Title": "EMBLEM_NAME_40001501", + "_Ruby": "EMBLEM_PHONETIC_40001501", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001501, + "_Gettext": "EMBLEM_DETAIL_40001501", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001502, + "_Title": "EMBLEM_NAME_40001502", + "_Ruby": "EMBLEM_PHONETIC_40001502", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001502, + "_Gettext": "EMBLEM_DETAIL_40001502", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001503, + "_Title": "EMBLEM_NAME_40001503", + "_Ruby": "EMBLEM_PHONETIC_40001503", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001503, + "_Gettext": "EMBLEM_DETAIL_40001503", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001504, + "_Title": "EMBLEM_NAME_40001504", + "_Ruby": "EMBLEM_PHONETIC_40001504", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40001504, + "_Gettext": "EMBLEM_DETAIL_40001504", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40001601, + "_Title": "EMBLEM_NAME_40001601", + "_Ruby": "EMBLEM_PHONETIC_40001601", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001601, + "_Gettext": "EMBLEM_DETAIL_40001601", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001602, + "_Title": "EMBLEM_NAME_40001602", + "_Ruby": "EMBLEM_PHONETIC_40001602", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001602, + "_Gettext": "EMBLEM_DETAIL_40001602", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001603, + "_Title": "EMBLEM_NAME_40001603", + "_Ruby": "EMBLEM_PHONETIC_40001603", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001603, + "_Gettext": "EMBLEM_DETAIL_40001603", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001701, + "_Title": "EMBLEM_NAME_40001701", + "_Ruby": "EMBLEM_PHONETIC_40001701", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001701, + "_Gettext": "EMBLEM_DETAIL_40001701", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001702, + "_Title": "EMBLEM_NAME_40001702", + "_Ruby": "EMBLEM_PHONETIC_40001702", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001702, + "_Gettext": "EMBLEM_DETAIL_40001702", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001703, + "_Title": "EMBLEM_NAME_40001703", + "_Ruby": "EMBLEM_PHONETIC_40001703", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001703, + "_Gettext": "EMBLEM_DETAIL_40001703", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001704, + "_Title": "EMBLEM_NAME_40001704", + "_Ruby": "EMBLEM_PHONETIC_40001704", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001704, + "_Gettext": "EMBLEM_DETAIL_40001704", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001801, + "_Title": "EMBLEM_NAME_40001801", + "_Ruby": "EMBLEM_PHONETIC_40001801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001801, + "_Gettext": "EMBLEM_DETAIL_40001801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001802, + "_Title": "EMBLEM_NAME_40001802", + "_Ruby": "EMBLEM_PHONETIC_40001802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001802, + "_Gettext": "EMBLEM_DETAIL_40001802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001803, + "_Title": "EMBLEM_NAME_40001803", + "_Ruby": "EMBLEM_PHONETIC_40001803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001803, + "_Gettext": "EMBLEM_DETAIL_40001803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001804, + "_Title": "EMBLEM_NAME_40001804", + "_Ruby": "EMBLEM_PHONETIC_40001804", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001804, + "_Gettext": "EMBLEM_DETAIL_40001804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001901, + "_Title": "EMBLEM_NAME_40001901", + "_Ruby": "EMBLEM_PHONETIC_40001901", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40001901, + "_Gettext": "EMBLEM_DETAIL_40001901", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40001902, + "_Title": "EMBLEM_NAME_40001902", + "_Ruby": "EMBLEM_PHONETIC_40001902", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40001902, + "_Gettext": "EMBLEM_DETAIL_40001902", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40001903, + "_Title": "EMBLEM_NAME_40001903", + "_Ruby": "EMBLEM_PHONETIC_40001903", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40001903, + "_Gettext": "EMBLEM_DETAIL_40001903", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40001904, + "_Title": "EMBLEM_NAME_40001904", + "_Ruby": "EMBLEM_PHONETIC_40001904", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40001904, + "_Gettext": "EMBLEM_DETAIL_40001904", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002001, + "_Title": "EMBLEM_NAME_40002001", + "_Ruby": "EMBLEM_PHONETIC_40002001", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002001, + "_Gettext": "EMBLEM_DETAIL_40002001", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002002, + "_Title": "EMBLEM_NAME_40002002", + "_Ruby": "EMBLEM_PHONETIC_40002002", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002002, + "_Gettext": "EMBLEM_DETAIL_40002002", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002003, + "_Title": "EMBLEM_NAME_40002003", + "_Ruby": "EMBLEM_PHONETIC_40002003", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002003, + "_Gettext": "EMBLEM_DETAIL_40002003", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002004, + "_Title": "EMBLEM_NAME_40002004", + "_Ruby": "EMBLEM_PHONETIC_40002004", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002004, + "_Gettext": "EMBLEM_DETAIL_40002004", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002101, + "_Title": "EMBLEM_NAME_40002101", + "_Ruby": "EMBLEM_PHONETIC_40002101", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002101, + "_Gettext": "EMBLEM_DETAIL_40002101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002102, + "_Title": "EMBLEM_NAME_40002102", + "_Ruby": "EMBLEM_PHONETIC_40002102", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002102, + "_Gettext": "EMBLEM_DETAIL_40002102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002103, + "_Title": "EMBLEM_NAME_40002103", + "_Ruby": "EMBLEM_PHONETIC_40002103", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002103, + "_Gettext": "EMBLEM_DETAIL_40002103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002104, + "_Title": "EMBLEM_NAME_40002104", + "_Ruby": "EMBLEM_PHONETIC_40002104", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002104, + "_Gettext": "EMBLEM_DETAIL_40002104", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002201, + "_Title": "EMBLEM_NAME_40002201", + "_Ruby": "EMBLEM_PHONETIC_40002201", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002201, + "_Gettext": "EMBLEM_DETAIL_40002201", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002202, + "_Title": "EMBLEM_NAME_40002202", + "_Ruby": "EMBLEM_PHONETIC_40002202", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002202, + "_Gettext": "EMBLEM_DETAIL_40002202", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002203, + "_Title": "EMBLEM_NAME_40002203", + "_Ruby": "EMBLEM_PHONETIC_40002203", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002203, + "_Gettext": "EMBLEM_DETAIL_40002203", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002204, + "_Title": "EMBLEM_NAME_40002204", + "_Ruby": "EMBLEM_PHONETIC_40002204", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002204, + "_Gettext": "EMBLEM_DETAIL_40002204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002301, + "_Title": "EMBLEM_NAME_40002301", + "_Ruby": "EMBLEM_PHONETIC_40002301", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002301, + "_Gettext": "EMBLEM_DETAIL_40002301", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002302, + "_Title": "EMBLEM_NAME_40002302", + "_Ruby": "EMBLEM_PHONETIC_40002302", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002302, + "_Gettext": "EMBLEM_DETAIL_40002302", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002303, + "_Title": "EMBLEM_NAME_40002303", + "_Ruby": "EMBLEM_PHONETIC_40002303", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002303, + "_Gettext": "EMBLEM_DETAIL_40002303", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002304, + "_Title": "EMBLEM_NAME_40002304", + "_Ruby": "EMBLEM_PHONETIC_40002304", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002304, + "_Gettext": "EMBLEM_DETAIL_40002304", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002401, + "_Title": "EMBLEM_NAME_40002401", + "_Ruby": "EMBLEM_PHONETIC_40002401", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002401, + "_Gettext": "EMBLEM_DETAIL_40002401", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002402, + "_Title": "EMBLEM_NAME_40002402", + "_Ruby": "EMBLEM_PHONETIC_40002402", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002402, + "_Gettext": "EMBLEM_DETAIL_40002402", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002403, + "_Title": "EMBLEM_NAME_40002403", + "_Ruby": "EMBLEM_PHONETIC_40002403", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002403, + "_Gettext": "EMBLEM_DETAIL_40002403", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002404, + "_Title": "EMBLEM_NAME_40002404", + "_Ruby": "EMBLEM_PHONETIC_40002404", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002404, + "_Gettext": "EMBLEM_DETAIL_40002404", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002405, + "_Title": "EMBLEM_NAME_40002405", + "_Ruby": "EMBLEM_PHONETIC_40002405", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002405, + "_Gettext": "EMBLEM_DETAIL_40002405", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002501, + "_Title": "EMBLEM_NAME_40002501", + "_Ruby": "EMBLEM_PHONETIC_40002501", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002501, + "_Gettext": "EMBLEM_DETAIL_40002501", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002502, + "_Title": "EMBLEM_NAME_40002502", + "_Ruby": "EMBLEM_PHONETIC_40002502", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002502, + "_Gettext": "EMBLEM_DETAIL_40002502", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002503, + "_Title": "EMBLEM_NAME_40002503", + "_Ruby": "EMBLEM_PHONETIC_40002503", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002503, + "_Gettext": "EMBLEM_DETAIL_40002503", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002601, + "_Title": "EMBLEM_NAME_40002601", + "_Ruby": "EMBLEM_PHONETIC_40002601", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002601, + "_Gettext": "EMBLEM_DETAIL_40002601", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002602, + "_Title": "EMBLEM_NAME_40002602", + "_Ruby": "EMBLEM_PHONETIC_40002602", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002602, + "_Gettext": "EMBLEM_DETAIL_40002602", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002603, + "_Title": "EMBLEM_NAME_40002603", + "_Ruby": "EMBLEM_PHONETIC_40002603", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002603, + "_Gettext": "EMBLEM_DETAIL_40002603", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002604, + "_Title": "EMBLEM_NAME_40002604", + "_Ruby": "EMBLEM_PHONETIC_40002604", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002604, + "_Gettext": "EMBLEM_DETAIL_40002604", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002605, + "_Title": "EMBLEM_NAME_40002605", + "_Ruby": "EMBLEM_PHONETIC_40002605", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002605, + "_Gettext": "EMBLEM_DETAIL_40002605", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002701, + "_Title": "EMBLEM_NAME_40002701", + "_Ruby": "EMBLEM_PHONETIC_40002701", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002701, + "_Gettext": "EMBLEM_DETAIL_40002701", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002702, + "_Title": "EMBLEM_NAME_40002702", + "_Ruby": "EMBLEM_PHONETIC_40002702", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002702, + "_Gettext": "EMBLEM_DETAIL_40002702", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002703, + "_Title": "EMBLEM_NAME_40002703", + "_Ruby": "EMBLEM_PHONETIC_40002703", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002703, + "_Gettext": "EMBLEM_DETAIL_40002703", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002704, + "_Title": "EMBLEM_NAME_40002704", + "_Ruby": "EMBLEM_PHONETIC_40002704", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002704, + "_Gettext": "EMBLEM_DETAIL_40002704", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002801, + "_Title": "EMBLEM_NAME_40002801", + "_Ruby": "EMBLEM_PHONETIC_40002801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002801, + "_Gettext": "EMBLEM_DETAIL_40002801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002802, + "_Title": "EMBLEM_NAME_40002802", + "_Ruby": "EMBLEM_PHONETIC_40002802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002802, + "_Gettext": "EMBLEM_DETAIL_40002802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002803, + "_Title": "EMBLEM_NAME_40002803", + "_Ruby": "EMBLEM_PHONETIC_40002803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002803, + "_Gettext": "EMBLEM_DETAIL_40002803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002804, + "_Title": "EMBLEM_NAME_40002804", + "_Ruby": "EMBLEM_PHONETIC_40002804", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002804, + "_Gettext": "EMBLEM_DETAIL_40002804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002901, + "_Title": "EMBLEM_NAME_40002901", + "_Ruby": "EMBLEM_PHONETIC_40002901", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40002901, + "_Gettext": "EMBLEM_DETAIL_40002901", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40002902, + "_Title": "EMBLEM_NAME_40002902", + "_Ruby": "EMBLEM_PHONETIC_40002902", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40002902, + "_Gettext": "EMBLEM_DETAIL_40002902", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40002903, + "_Title": "EMBLEM_NAME_40002903", + "_Ruby": "EMBLEM_PHONETIC_40002903", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002903, + "_Gettext": "EMBLEM_DETAIL_40002903", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002904, + "_Title": "EMBLEM_NAME_40002904", + "_Ruby": "EMBLEM_PHONETIC_40002904", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40002904, + "_Gettext": "EMBLEM_DETAIL_40002904", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40002905, + "_Title": "EMBLEM_NAME_40002905", + "_Ruby": "EMBLEM_PHONETIC_40002905", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002906, + "_Gettext": "EMBLEM_DETAIL_40002905", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40002906, + "_Title": "EMBLEM_NAME_40002906", + "_Ruby": "EMBLEM_PHONETIC_40002906", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40002905, + "_Gettext": "EMBLEM_DETAIL_40002906", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003001, + "_Title": "EMBLEM_NAME_40003001", + "_Ruby": "EMBLEM_PHONETIC_40003001", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003001, + "_Gettext": "EMBLEM_DETAIL_40003001", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003002, + "_Title": "EMBLEM_NAME_40003002", + "_Ruby": "EMBLEM_PHONETIC_40003002", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003002, + "_Gettext": "EMBLEM_DETAIL_40003002", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003003, + "_Title": "EMBLEM_NAME_40003003", + "_Ruby": "EMBLEM_PHONETIC_40003003", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003003, + "_Gettext": "EMBLEM_DETAIL_40003003", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003004, + "_Title": "EMBLEM_NAME_40003004", + "_Ruby": "EMBLEM_PHONETIC_40003004", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003004, + "_Gettext": "EMBLEM_DETAIL_40003004", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003005, + "_Title": "EMBLEM_NAME_40003005", + "_Ruby": "EMBLEM_PHONETIC_40003005", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003005, + "_Gettext": "EMBLEM_DETAIL_40003005", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003006, + "_Title": "EMBLEM_NAME_40003006", + "_Ruby": "EMBLEM_PHONETIC_40003006", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003006, + "_Gettext": "EMBLEM_DETAIL_40003006", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003007, + "_Title": "EMBLEM_NAME_40003007", + "_Ruby": "EMBLEM_PHONETIC_40003007", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003007, + "_Gettext": "EMBLEM_DETAIL_40003007", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003008, + "_Title": "EMBLEM_NAME_40003008", + "_Ruby": "EMBLEM_PHONETIC_40003008", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003008, + "_Gettext": "EMBLEM_DETAIL_40003008", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003009, + "_Title": "EMBLEM_NAME_40003009", + "_Ruby": "EMBLEM_PHONETIC_40003009", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003009, + "_Gettext": "EMBLEM_DETAIL_40003009", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003010, + "_Title": "EMBLEM_NAME_40003010", + "_Ruby": "EMBLEM_PHONETIC_40003010", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003010, + "_Gettext": "EMBLEM_DETAIL_40003010", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003011, + "_Title": "EMBLEM_NAME_40003011", + "_Ruby": "EMBLEM_PHONETIC_40003011", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003011, + "_Gettext": "EMBLEM_DETAIL_40003011", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003012, + "_Title": "EMBLEM_NAME_40003012", + "_Ruby": "EMBLEM_PHONETIC_40003012", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003012, + "_Gettext": "EMBLEM_DETAIL_40003012", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003013, + "_Title": "EMBLEM_NAME_40003013", + "_Ruby": "EMBLEM_PHONETIC_40003013", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003013, + "_Gettext": "EMBLEM_DETAIL_40003013", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003014, + "_Title": "EMBLEM_NAME_40003014", + "_Ruby": "EMBLEM_PHONETIC_40003014", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003014, + "_Gettext": "EMBLEM_DETAIL_40003014", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003015, + "_Title": "EMBLEM_NAME_40003015", + "_Ruby": "EMBLEM_PHONETIC_40003015", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003015, + "_Gettext": "EMBLEM_DETAIL_40003015", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003016, + "_Title": "EMBLEM_NAME_40003016", + "_Ruby": "EMBLEM_PHONETIC_40003016", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003016, + "_Gettext": "EMBLEM_DETAIL_40003016", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003017, + "_Title": "EMBLEM_NAME_40003017", + "_Ruby": "EMBLEM_PHONETIC_40003017", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003017, + "_Gettext": "EMBLEM_DETAIL_40003017", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003018, + "_Title": "EMBLEM_NAME_40003018", + "_Ruby": "EMBLEM_PHONETIC_40003018", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003018, + "_Gettext": "EMBLEM_DETAIL_40003018", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003019, + "_Title": "EMBLEM_NAME_40003019", + "_Ruby": "EMBLEM_PHONETIC_40003019", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003019, + "_Gettext": "EMBLEM_DETAIL_40003019", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003020, + "_Title": "EMBLEM_NAME_40003020", + "_Ruby": "EMBLEM_PHONETIC_40003020", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003020, + "_Gettext": "EMBLEM_DETAIL_40003020", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003021, + "_Title": "EMBLEM_NAME_40003021", + "_Ruby": "EMBLEM_PHONETIC_40003021", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003021, + "_Gettext": "EMBLEM_DETAIL_40003021", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003022, + "_Title": "EMBLEM_NAME_40003022", + "_Ruby": "EMBLEM_PHONETIC_40003022", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003022, + "_Gettext": "EMBLEM_DETAIL_40003022", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003023, + "_Title": "EMBLEM_NAME_40003023", + "_Ruby": "EMBLEM_PHONETIC_40003023", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003023, + "_Gettext": "EMBLEM_DETAIL_40003023", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003024, + "_Title": "EMBLEM_NAME_40003024", + "_Ruby": "EMBLEM_PHONETIC_40003024", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003024, + "_Gettext": "EMBLEM_DETAIL_40003024", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003025, + "_Title": "EMBLEM_NAME_40003025", + "_Ruby": "EMBLEM_PHONETIC_40003025", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003025, + "_Gettext": "EMBLEM_DETAIL_40003025", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003026, + "_Title": "EMBLEM_NAME_40003026", + "_Ruby": "EMBLEM_PHONETIC_40003026", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003026, + "_Gettext": "EMBLEM_DETAIL_40003026", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003027, + "_Title": "EMBLEM_NAME_40003027", + "_Ruby": "EMBLEM_PHONETIC_40003027", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003027, + "_Gettext": "EMBLEM_DETAIL_40003027", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003028, + "_Title": "EMBLEM_NAME_40003028", + "_Ruby": "EMBLEM_PHONETIC_40003028", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003028, + "_Gettext": "EMBLEM_DETAIL_40003028", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003029, + "_Title": "EMBLEM_NAME_40003029", + "_Ruby": "EMBLEM_PHONETIC_40003029", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003029, + "_Gettext": "EMBLEM_DETAIL_40003029", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003030, + "_Title": "EMBLEM_NAME_40003030", + "_Ruby": "EMBLEM_PHONETIC_40003030", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003030, + "_Gettext": "EMBLEM_DETAIL_40003030", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003101, + "_Title": "EMBLEM_NAME_40003101", + "_Ruby": "EMBLEM_PHONETIC_40003101", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003101, + "_Gettext": "EMBLEM_DETAIL_40003101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003102, + "_Title": "EMBLEM_NAME_40003102", + "_Ruby": "EMBLEM_PHONETIC_40003102", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003102, + "_Gettext": "EMBLEM_DETAIL_40003102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003103, + "_Title": "EMBLEM_NAME_40003103", + "_Ruby": "EMBLEM_PHONETIC_40003103", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003103, + "_Gettext": "EMBLEM_DETAIL_40003103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003104, + "_Title": "EMBLEM_NAME_40003104", + "_Ruby": "EMBLEM_PHONETIC_40003104", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003104, + "_Gettext": "EMBLEM_DETAIL_40003104", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003201, + "_Title": "EMBLEM_NAME_40003201", + "_Ruby": "EMBLEM_PHONETIC_40003201", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003201, + "_Gettext": "EMBLEM_DETAIL_40003201", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003202, + "_Title": "EMBLEM_NAME_40003202", + "_Ruby": "EMBLEM_PHONETIC_40003202", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003202, + "_Gettext": "EMBLEM_DETAIL_40003202", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003203, + "_Title": "EMBLEM_NAME_40003203", + "_Ruby": "EMBLEM_PHONETIC_40003203", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003203, + "_Gettext": "EMBLEM_DETAIL_40003203", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003204, + "_Title": "EMBLEM_NAME_40003204", + "_Ruby": "EMBLEM_PHONETIC_40003204", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003204, + "_Gettext": "EMBLEM_DETAIL_40003204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003301, + "_Title": "EMBLEM_NAME_40003301", + "_Ruby": "EMBLEM_PHONETIC_40003301", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003301, + "_Gettext": "EMBLEM_DETAIL_40003301", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003302, + "_Title": "EMBLEM_NAME_40003302", + "_Ruby": "EMBLEM_PHONETIC_40003302", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003302, + "_Gettext": "EMBLEM_DETAIL_40003302", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003303, + "_Title": "EMBLEM_NAME_40003303", + "_Ruby": "EMBLEM_PHONETIC_40003303", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003303, + "_Gettext": "EMBLEM_DETAIL_40003303", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003304, + "_Title": "EMBLEM_NAME_40003304", + "_Ruby": "EMBLEM_PHONETIC_40003304", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003304, + "_Gettext": "EMBLEM_DETAIL_40003304", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003305, + "_Title": "EMBLEM_NAME_40003305", + "_Ruby": "EMBLEM_PHONETIC_40003305", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003305, + "_Gettext": "EMBLEM_DETAIL_40003305", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003401, + "_Title": "EMBLEM_NAME_40003401", + "_Ruby": "EMBLEM_PHONETIC_40003401", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003401, + "_Gettext": "EMBLEM_DETAIL_40003401", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003402, + "_Title": "EMBLEM_NAME_40003402", + "_Ruby": "EMBLEM_PHONETIC_40003402", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003402, + "_Gettext": "EMBLEM_DETAIL_40003402", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003403, + "_Title": "EMBLEM_NAME_40003403", + "_Ruby": "EMBLEM_PHONETIC_40003403", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003403, + "_Gettext": "EMBLEM_DETAIL_40003403", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003404, + "_Title": "EMBLEM_NAME_40003404", + "_Ruby": "EMBLEM_PHONETIC_40003404", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003404, + "_Gettext": "EMBLEM_DETAIL_40003404", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003405, + "_Title": "EMBLEM_NAME_40003405", + "_Ruby": "EMBLEM_PHONETIC_40003405", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003405, + "_Gettext": "EMBLEM_DETAIL_40003405", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003406, + "_Title": "EMBLEM_NAME_40003406", + "_Ruby": "EMBLEM_PHONETIC_40003406", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003406, + "_Gettext": "EMBLEM_DETAIL_40003406", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003407, + "_Title": "EMBLEM_NAME_40003407", + "_Ruby": "EMBLEM_PHONETIC_40003407", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003407, + "_Gettext": "EMBLEM_DETAIL_40003407", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003408, + "_Title": "EMBLEM_NAME_40003408", + "_Ruby": "EMBLEM_PHONETIC_40003408", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003408, + "_Gettext": "EMBLEM_DETAIL_40003408", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003409, + "_Title": "EMBLEM_NAME_40003409", + "_Ruby": "EMBLEM_PHONETIC_40003409", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003409, + "_Gettext": "EMBLEM_DETAIL_40003409", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003410, + "_Title": "EMBLEM_NAME_40003410", + "_Ruby": "EMBLEM_PHONETIC_40003410", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003410, + "_Gettext": "EMBLEM_DETAIL_40003410", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003411, + "_Title": "EMBLEM_NAME_40003411", + "_Ruby": "EMBLEM_PHONETIC_40003411", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003411, + "_Gettext": "EMBLEM_DETAIL_40003411", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003412, + "_Title": "EMBLEM_NAME_40003412", + "_Ruby": "EMBLEM_PHONETIC_40003412", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003412, + "_Gettext": "EMBLEM_DETAIL_40003412", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003414, + "_Title": "EMBLEM_NAME_40003414", + "_Ruby": "EMBLEM_PHONETIC_40003414", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003414, + "_Gettext": "EMBLEM_DETAIL_40003414", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003416, + "_Title": "EMBLEM_NAME_40003416", + "_Ruby": "EMBLEM_PHONETIC_40003416", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003416, + "_Gettext": "EMBLEM_DETAIL_40003416", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003417, + "_Title": "EMBLEM_NAME_40003417", + "_Ruby": "EMBLEM_PHONETIC_40003417", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003417, + "_Gettext": "EMBLEM_DETAIL_40003417", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003418, + "_Title": "EMBLEM_NAME_40003418", + "_Ruby": "EMBLEM_PHONETIC_40003418", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003418, + "_Gettext": "EMBLEM_DETAIL_40003418", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003501, + "_Title": "EMBLEM_NAME_40003501", + "_Ruby": "EMBLEM_PHONETIC_40003501", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003501, + "_Gettext": "EMBLEM_DETAIL_40003501", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003502, + "_Title": "EMBLEM_NAME_40003502", + "_Ruby": "EMBLEM_PHONETIC_40003502", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003502, + "_Gettext": "EMBLEM_DETAIL_40003502", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003503, + "_Title": "EMBLEM_NAME_40003503", + "_Ruby": "EMBLEM_PHONETIC_40003503", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003503, + "_Gettext": "EMBLEM_DETAIL_40003503", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003504, + "_Title": "EMBLEM_NAME_40003504", + "_Ruby": "EMBLEM_PHONETIC_40003504", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003504, + "_Gettext": "EMBLEM_DETAIL_40003504", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003601, + "_Title": "EMBLEM_NAME_40003601", + "_Ruby": "EMBLEM_PHONETIC_40003601", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003601, + "_Gettext": "EMBLEM_DETAIL_40003601", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003602, + "_Title": "EMBLEM_NAME_40003602", + "_Ruby": "EMBLEM_PHONETIC_40003602", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003602, + "_Gettext": "EMBLEM_DETAIL_40003602", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003603, + "_Title": "EMBLEM_NAME_40003603", + "_Ruby": "EMBLEM_PHONETIC_40003603", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003603, + "_Gettext": "EMBLEM_DETAIL_40003603", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003604, + "_Title": "EMBLEM_NAME_40003604", + "_Ruby": "EMBLEM_PHONETIC_40003604", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003604, + "_Gettext": "EMBLEM_DETAIL_40003604", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003701, + "_Title": "EMBLEM_NAME_40003701", + "_Ruby": "EMBLEM_PHONETIC_40003701", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003701, + "_Gettext": "EMBLEM_DETAIL_40003701", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003702, + "_Title": "EMBLEM_NAME_40003702", + "_Ruby": "EMBLEM_PHONETIC_40003702", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003702, + "_Gettext": "EMBLEM_DETAIL_40003702", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003703, + "_Title": "EMBLEM_NAME_40003703", + "_Ruby": "EMBLEM_PHONETIC_40003703", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003703, + "_Gettext": "EMBLEM_DETAIL_40003703", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003704, + "_Title": "EMBLEM_NAME_40003704", + "_Ruby": "EMBLEM_PHONETIC_40003704", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003704, + "_Gettext": "EMBLEM_DETAIL_40003704", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40003801, + "_Title": "EMBLEM_NAME_40003801", + "_Ruby": "EMBLEM_PHONETIC_40003801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003801, + "_Gettext": "EMBLEM_DETAIL_40003801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003802, + "_Title": "EMBLEM_NAME_40003802", + "_Ruby": "EMBLEM_PHONETIC_40003802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003802, + "_Gettext": "EMBLEM_DETAIL_40003802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003803, + "_Title": "EMBLEM_NAME_40003803", + "_Ruby": "EMBLEM_PHONETIC_40003803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003803, + "_Gettext": "EMBLEM_DETAIL_40003803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003804, + "_Title": "EMBLEM_NAME_40003804", + "_Ruby": "EMBLEM_PHONETIC_40003804", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003804, + "_Gettext": "EMBLEM_DETAIL_40003804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003901, + "_Title": "EMBLEM_NAME_40003901", + "_Ruby": "EMBLEM_PHONETIC_40003901", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40003901, + "_Gettext": "EMBLEM_DETAIL_40003901", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40003902, + "_Title": "EMBLEM_NAME_40003902", + "_Ruby": "EMBLEM_PHONETIC_40003902", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40003902, + "_Gettext": "EMBLEM_DETAIL_40003902", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40003903, + "_Title": "EMBLEM_NAME_40003903", + "_Ruby": "EMBLEM_PHONETIC_40003903", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40003903, + "_Gettext": "EMBLEM_DETAIL_40003903", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40003904, + "_Title": "EMBLEM_NAME_40003904", + "_Ruby": "EMBLEM_PHONETIC_40003904", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40003904, + "_Gettext": "EMBLEM_DETAIL_40003904", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004001, + "_Title": "EMBLEM_NAME_40004001", + "_Ruby": "EMBLEM_PHONETIC_40004001", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004001, + "_Gettext": "EMBLEM_DETAIL_40004001", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004002, + "_Title": "EMBLEM_NAME_40004002", + "_Ruby": "EMBLEM_PHONETIC_40004002", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004002, + "_Gettext": "EMBLEM_DETAIL_40004002", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004003, + "_Title": "EMBLEM_NAME_40004003", + "_Ruby": "EMBLEM_PHONETIC_40004003", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004003, + "_Gettext": "EMBLEM_DETAIL_40004003", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004004, + "_Title": "EMBLEM_NAME_40004004", + "_Ruby": "EMBLEM_PHONETIC_40004004", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004004, + "_Gettext": "EMBLEM_DETAIL_40004004", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004101, + "_Title": "EMBLEM_NAME_40004101", + "_Ruby": "EMBLEM_PHONETIC_40004101", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004101, + "_Gettext": "EMBLEM_DETAIL_40004101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004102, + "_Title": "EMBLEM_NAME_40004102", + "_Ruby": "EMBLEM_PHONETIC_40004102", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004102, + "_Gettext": "EMBLEM_DETAIL_40004102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004103, + "_Title": "EMBLEM_NAME_40004103", + "_Ruby": "EMBLEM_PHONETIC_40004103", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004103, + "_Gettext": "EMBLEM_DETAIL_40004103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004104, + "_Title": "EMBLEM_NAME_40004104", + "_Ruby": "EMBLEM_PHONETIC_40004104", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004104, + "_Gettext": "EMBLEM_DETAIL_40004104", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004201, + "_Title": "EMBLEM_NAME_40004201", + "_Ruby": "EMBLEM_PHONETIC_40004201", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004201, + "_Gettext": "EMBLEM_DETAIL_40004201", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004202, + "_Title": "EMBLEM_NAME_40004202", + "_Ruby": "EMBLEM_PHONETIC_40004202", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004202, + "_Gettext": "EMBLEM_DETAIL_40004202", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004203, + "_Title": "EMBLEM_NAME_40004203", + "_Ruby": "EMBLEM_PHONETIC_40004203", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004203, + "_Gettext": "EMBLEM_DETAIL_40004203", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004204, + "_Title": "EMBLEM_NAME_40004204", + "_Ruby": "EMBLEM_PHONETIC_40004204", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004204, + "_Gettext": "EMBLEM_DETAIL_40004204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004205, + "_Title": "EMBLEM_NAME_40004205", + "_Ruby": "EMBLEM_PHONETIC_40004205", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004205, + "_Gettext": "EMBLEM_DETAIL_40004205", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004206, + "_Title": "EMBLEM_NAME_40004206", + "_Ruby": "EMBLEM_PHONETIC_40004206", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004206, + "_Gettext": "EMBLEM_DETAIL_40004206", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004301, + "_Title": "EMBLEM_NAME_40004301", + "_Ruby": "EMBLEM_PHONETIC_40004301", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004301, + "_Gettext": "EMBLEM_DETAIL_40004301", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004302, + "_Title": "EMBLEM_NAME_40004302", + "_Ruby": "EMBLEM_PHONETIC_40004302", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004302, + "_Gettext": "EMBLEM_DETAIL_40004302", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004303, + "_Title": "EMBLEM_NAME_40004303", + "_Ruby": "EMBLEM_PHONETIC_40004303", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004303, + "_Gettext": "EMBLEM_DETAIL_40004303", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004304, + "_Title": "EMBLEM_NAME_40004304", + "_Ruby": "EMBLEM_PHONETIC_40004304", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004304, + "_Gettext": "EMBLEM_DETAIL_40004304", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004401, + "_Title": "EMBLEM_NAME_40004401", + "_Ruby": "EMBLEM_PHONETIC_40004401", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004401, + "_Gettext": "EMBLEM_DETAIL_40004401", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004402, + "_Title": "EMBLEM_NAME_40004402", + "_Ruby": "EMBLEM_PHONETIC_40004402", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004402, + "_Gettext": "EMBLEM_DETAIL_40004402", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004403, + "_Title": "EMBLEM_NAME_40004403", + "_Ruby": "EMBLEM_PHONETIC_40004403", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004403, + "_Gettext": "EMBLEM_DETAIL_40004403", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004404, + "_Title": "EMBLEM_NAME_40004404", + "_Ruby": "EMBLEM_PHONETIC_40004404", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004404, + "_Gettext": "EMBLEM_DETAIL_40004404", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004501, + "_Title": "EMBLEM_NAME_40004501", + "_Ruby": "EMBLEM_PHONETIC_40004501", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004501, + "_Gettext": "EMBLEM_DETAIL_40004501", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004502, + "_Title": "EMBLEM_NAME_40004502", + "_Ruby": "EMBLEM_PHONETIC_40004502", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004502, + "_Gettext": "EMBLEM_DETAIL_40004502", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004503, + "_Title": "EMBLEM_NAME_40004503", + "_Ruby": "EMBLEM_PHONETIC_40004503", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004503, + "_Gettext": "EMBLEM_DETAIL_40004503", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004504, + "_Title": "EMBLEM_NAME_40004504", + "_Ruby": "EMBLEM_PHONETIC_40004504", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004504, + "_Gettext": "EMBLEM_DETAIL_40004504", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004601, + "_Title": "EMBLEM_NAME_40004601", + "_Ruby": "EMBLEM_PHONETIC_40004601", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004601, + "_Gettext": "EMBLEM_DETAIL_40004601", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004602, + "_Title": "EMBLEM_NAME_40004602", + "_Ruby": "EMBLEM_PHONETIC_40004602", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004602, + "_Gettext": "EMBLEM_DETAIL_40004602", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004603, + "_Title": "EMBLEM_NAME_40004603", + "_Ruby": "EMBLEM_PHONETIC_40004603", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004603, + "_Gettext": "EMBLEM_DETAIL_40004603", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004701, + "_Title": "EMBLEM_NAME_40004701", + "_Ruby": "EMBLEM_PHONETIC_40004701", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004701, + "_Gettext": "EMBLEM_DETAIL_40004701", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004702, + "_Title": "EMBLEM_NAME_40004702", + "_Ruby": "EMBLEM_PHONETIC_40004702", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004702, + "_Gettext": "EMBLEM_DETAIL_40004702", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004703, + "_Title": "EMBLEM_NAME_40004703", + "_Ruby": "EMBLEM_PHONETIC_40004703", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004703, + "_Gettext": "EMBLEM_DETAIL_40004703", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004704, + "_Title": "EMBLEM_NAME_40004704", + "_Ruby": "EMBLEM_PHONETIC_40004704", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004704, + "_Gettext": "EMBLEM_DETAIL_40004704", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40004801, + "_Title": "EMBLEM_NAME_40004801", + "_Ruby": "EMBLEM_PHONETIC_40004801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004801, + "_Gettext": "EMBLEM_DETAIL_40004801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004802, + "_Title": "EMBLEM_NAME_40004802", + "_Ruby": "EMBLEM_PHONETIC_40004802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004802, + "_Gettext": "EMBLEM_DETAIL_40004802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004803, + "_Title": "EMBLEM_NAME_40004803", + "_Ruby": "EMBLEM_PHONETIC_40004803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004803, + "_Gettext": "EMBLEM_DETAIL_40004803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004804, + "_Title": "EMBLEM_NAME_40004804", + "_Ruby": "EMBLEM_PHONETIC_40004804", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004804, + "_Gettext": "EMBLEM_DETAIL_40004804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004901, + "_Title": "EMBLEM_NAME_40004901", + "_Ruby": "EMBLEM_PHONETIC_40004901", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40004901, + "_Gettext": "EMBLEM_DETAIL_40004901", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40004902, + "_Title": "EMBLEM_NAME_40004902", + "_Ruby": "EMBLEM_PHONETIC_40004902", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40004902, + "_Gettext": "EMBLEM_DETAIL_40004902", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40004903, + "_Title": "EMBLEM_NAME_40004903", + "_Ruby": "EMBLEM_PHONETIC_40004903", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40004903, + "_Gettext": "EMBLEM_DETAIL_40004903", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40004904, + "_Title": "EMBLEM_NAME_40004904", + "_Ruby": "EMBLEM_PHONETIC_40004904", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40004904, + "_Gettext": "EMBLEM_DETAIL_40004904", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005001, + "_Title": "EMBLEM_NAME_40005001", + "_Ruby": "EMBLEM_PHONETIC_40005001", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005001, + "_Gettext": "EMBLEM_DETAIL_40005001", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005002, + "_Title": "EMBLEM_NAME_40005002", + "_Ruby": "EMBLEM_PHONETIC_40005002", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005002, + "_Gettext": "EMBLEM_DETAIL_40005002", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005003, + "_Title": "EMBLEM_NAME_40005003", + "_Ruby": "EMBLEM_PHONETIC_40005003", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005003, + "_Gettext": "EMBLEM_DETAIL_40005003", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005101, + "_Title": "EMBLEM_NAME_40005101", + "_Ruby": "EMBLEM_PHONETIC_40005101", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005101, + "_Gettext": "EMBLEM_DETAIL_40005101", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005102, + "_Title": "EMBLEM_NAME_40005102", + "_Ruby": "EMBLEM_PHONETIC_40005102", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005102, + "_Gettext": "EMBLEM_DETAIL_40005102", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005103, + "_Title": "EMBLEM_NAME_40005103", + "_Ruby": "EMBLEM_PHONETIC_40005103", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005103, + "_Gettext": "EMBLEM_DETAIL_40005103", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005201, + "_Title": "EMBLEM_NAME_40005201", + "_Ruby": "EMBLEM_PHONETIC_40005201", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40005201, + "_Gettext": "EMBLEM_DETAIL_40005201", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40005202, + "_Title": "EMBLEM_NAME_40005202", + "_Ruby": "EMBLEM_PHONETIC_40005202", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005202, + "_Gettext": "EMBLEM_DETAIL_40005202", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005203, + "_Title": "EMBLEM_NAME_40005203", + "_Ruby": "EMBLEM_PHONETIC_40005203", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005203, + "_Gettext": "EMBLEM_DETAIL_40005203", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005204, + "_Title": "EMBLEM_NAME_40005204", + "_Ruby": "EMBLEM_PHONETIC_40005204", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005204, + "_Gettext": "EMBLEM_DETAIL_40005204", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005301, + "_Title": "EMBLEM_NAME_40005301", + "_Ruby": "EMBLEM_PHONETIC_40005301", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40005301, + "_Gettext": "EMBLEM_DETAIL_40005301", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40005302, + "_Title": "EMBLEM_NAME_40005302", + "_Ruby": "EMBLEM_PHONETIC_40005302", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005302, + "_Gettext": "EMBLEM_DETAIL_40005302", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005303, + "_Title": "EMBLEM_NAME_40005303", + "_Ruby": "EMBLEM_PHONETIC_40005303", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005303, + "_Gettext": "EMBLEM_DETAIL_40005303", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005304, + "_Title": "EMBLEM_NAME_40005304", + "_Ruby": "EMBLEM_PHONETIC_40005304", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005304, + "_Gettext": "EMBLEM_DETAIL_40005304", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005401, + "_Title": "EMBLEM_NAME_40005401", + "_Ruby": "EMBLEM_PHONETIC_40005401", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40005401, + "_Gettext": "EMBLEM_DETAIL_40005401", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40005402, + "_Title": "EMBLEM_NAME_40005402", + "_Ruby": "EMBLEM_PHONETIC_40005402", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005402, + "_Gettext": "EMBLEM_DETAIL_40005402", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005403, + "_Title": "EMBLEM_NAME_40005403", + "_Ruby": "EMBLEM_PHONETIC_40005403", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005403, + "_Gettext": "EMBLEM_DETAIL_40005403", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005404, + "_Title": "EMBLEM_NAME_40005404", + "_Ruby": "EMBLEM_PHONETIC_40005404", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005404, + "_Gettext": "EMBLEM_DETAIL_40005404", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005501, + "_Title": "EMBLEM_NAME_40005501", + "_Ruby": "EMBLEM_PHONETIC_40005501", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40005501, + "_Gettext": "EMBLEM_DETAIL_40005501", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40005502, + "_Title": "EMBLEM_NAME_40005502", + "_Ruby": "EMBLEM_PHONETIC_40005502", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005502, + "_Gettext": "EMBLEM_DETAIL_40005502", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005503, + "_Title": "EMBLEM_NAME_40005503", + "_Ruby": "EMBLEM_PHONETIC_40005503", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005503, + "_Gettext": "EMBLEM_DETAIL_40005503", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005504, + "_Title": "EMBLEM_NAME_40005504", + "_Ruby": "EMBLEM_PHONETIC_40005504", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005504, + "_Gettext": "EMBLEM_DETAIL_40005504", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005601, + "_Title": "EMBLEM_NAME_40005601", + "_Ruby": "EMBLEM_PHONETIC_40005601", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005601, + "_Gettext": "EMBLEM_DETAIL_40005601", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005602, + "_Title": "EMBLEM_NAME_40005602", + "_Ruby": "EMBLEM_PHONETIC_40005602", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005602, + "_Gettext": "EMBLEM_DETAIL_40005602", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005603, + "_Title": "EMBLEM_NAME_40005603", + "_Ruby": "EMBLEM_PHONETIC_40005603", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005603, + "_Gettext": "EMBLEM_DETAIL_40005603", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005701, + "_Title": "EMBLEM_NAME_40005701", + "_Ruby": "EMBLEM_PHONETIC_40005701", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005701, + "_Gettext": "EMBLEM_DETAIL_40005701", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005702, + "_Title": "EMBLEM_NAME_40005702", + "_Ruby": "EMBLEM_PHONETIC_40005702", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005702, + "_Gettext": "EMBLEM_DETAIL_40005702", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005703, + "_Title": "EMBLEM_NAME_40005703", + "_Ruby": "EMBLEM_PHONETIC_40005703", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005703, + "_Gettext": "EMBLEM_DETAIL_40005703", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 40005801, + "_Title": "EMBLEM_NAME_40005801", + "_Ruby": "EMBLEM_PHONETIC_40005801", + "_Rarity": 1, + "_EmblemType": 4, + "_Sortid": 40005801, + "_Gettext": "EMBLEM_DETAIL_40005801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 40005802, + "_Title": "EMBLEM_NAME_40005802", + "_Ruby": "EMBLEM_PHONETIC_40005802", + "_Rarity": 2, + "_EmblemType": 4, + "_Sortid": 40005802, + "_Gettext": "EMBLEM_DETAIL_40005802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 100 + }, + { + "_Id": 40005803, + "_Title": "EMBLEM_NAME_40005803", + "_Ruby": "EMBLEM_PHONETIC_40005803", + "_Rarity": 3, + "_EmblemType": 4, + "_Sortid": 40005803, + "_Gettext": "EMBLEM_DETAIL_40005803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 150 + }, + { + "_Id": 40005804, + "_Title": "EMBLEM_NAME_40005804", + "_Ruby": "EMBLEM_PHONETIC_40005804", + "_Rarity": 4, + "_EmblemType": 4, + "_Sortid": 40005804, + "_Gettext": "EMBLEM_DETAIL_40005804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 200 + }, + { + "_Id": 50000401, + "_Title": "EMBLEM_NAME_50000401", + "_Ruby": "EMBLEM_PHONETIC_50000401", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000401, + "_Gettext": "EMBLEM_DETAIL_50000401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000402, + "_Title": "EMBLEM_NAME_50000402", + "_Ruby": "EMBLEM_PHONETIC_50000402", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000402, + "_Gettext": "EMBLEM_DETAIL_50000402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000601, + "_Title": "EMBLEM_NAME_50000601", + "_Ruby": "EMBLEM_PHONETIC_50000601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000601, + "_Gettext": "EMBLEM_DETAIL_50000601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000602, + "_Title": "EMBLEM_NAME_50000602", + "_Ruby": "EMBLEM_PHONETIC_50000602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000602, + "_Gettext": "EMBLEM_DETAIL_50000602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000603, + "_Title": "EMBLEM_NAME_50000603", + "_Ruby": "EMBLEM_PHONETIC_50000603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000603, + "_Gettext": "EMBLEM_DETAIL_50000603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000604, + "_Title": "EMBLEM_NAME_50000604", + "_Ruby": "EMBLEM_PHONETIC_50000604", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000604, + "_Gettext": "EMBLEM_DETAIL_50000604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000605, + "_Title": "EMBLEM_NAME_50000605", + "_Ruby": "EMBLEM_PHONETIC_50000605", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000605, + "_Gettext": "EMBLEM_DETAIL_50000605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000701, + "_Title": "EMBLEM_NAME_50000701", + "_Ruby": "EMBLEM_PHONETIC_50000701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000701, + "_Gettext": "EMBLEM_DETAIL_50000701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000801, + "_Title": "EMBLEM_NAME_50000801", + "_Ruby": "EMBLEM_PHONETIC_50000801", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000801, + "_Gettext": "EMBLEM_DETAIL_50000801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000802, + "_Title": "EMBLEM_NAME_50000802", + "_Ruby": "EMBLEM_PHONETIC_50000802", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000802, + "_Gettext": "EMBLEM_DETAIL_50000802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000803, + "_Title": "EMBLEM_NAME_50000803", + "_Ruby": "EMBLEM_PHONETIC_50000803", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000803, + "_Gettext": "EMBLEM_DETAIL_50000803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000804, + "_Title": "EMBLEM_NAME_50000804", + "_Ruby": "EMBLEM_PHONETIC_50000804", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000804, + "_Gettext": "EMBLEM_DETAIL_50000804", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000805, + "_Title": "EMBLEM_NAME_50000805", + "_Ruby": "EMBLEM_PHONETIC_50000805", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000805, + "_Gettext": "EMBLEM_DETAIL_50000805", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000806, + "_Title": "EMBLEM_NAME_50000806", + "_Ruby": "EMBLEM_PHONETIC_50000806", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000806, + "_Gettext": "EMBLEM_DETAIL_50000806", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000807, + "_Title": "EMBLEM_NAME_50000807", + "_Ruby": "EMBLEM_PHONETIC_50000807", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000807, + "_Gettext": "EMBLEM_DETAIL_50000807", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000808, + "_Title": "EMBLEM_NAME_50000808", + "_Ruby": "EMBLEM_PHONETIC_50000808", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000808, + "_Gettext": "EMBLEM_DETAIL_50000808", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000809, + "_Title": "EMBLEM_NAME_50000809", + "_Ruby": "EMBLEM_PHONETIC_50000809", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000809, + "_Gettext": "EMBLEM_DETAIL_50000809", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000810, + "_Title": "EMBLEM_NAME_50000810", + "_Ruby": "EMBLEM_PHONETIC_50000810", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000810, + "_Gettext": "EMBLEM_DETAIL_50000810", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000811, + "_Title": "EMBLEM_NAME_50000811", + "_Ruby": "EMBLEM_PHONETIC_50000811", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000811, + "_Gettext": "EMBLEM_DETAIL_50000811", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000812, + "_Title": "EMBLEM_NAME_50000812", + "_Ruby": "EMBLEM_PHONETIC_50000812", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000812, + "_Gettext": "EMBLEM_DETAIL_50000812", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000813, + "_Title": "EMBLEM_NAME_50000813", + "_Ruby": "EMBLEM_PHONETIC_50000813", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000813, + "_Gettext": "EMBLEM_DETAIL_50000813", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000814, + "_Title": "EMBLEM_NAME_50000814", + "_Ruby": "EMBLEM_PHONETIC_50000814", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000814, + "_Gettext": "EMBLEM_DETAIL_50000814", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000815, + "_Title": "EMBLEM_NAME_50000815", + "_Ruby": "EMBLEM_PHONETIC_50000815", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000815, + "_Gettext": "EMBLEM_DETAIL_50000815", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000816, + "_Title": "EMBLEM_NAME_50000816", + "_Ruby": "EMBLEM_PHONETIC_50000816", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000816, + "_Gettext": "EMBLEM_DETAIL_50000816", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000817, + "_Title": "EMBLEM_NAME_50000817", + "_Ruby": "EMBLEM_PHONETIC_50000817", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000817, + "_Gettext": "EMBLEM_DETAIL_50000817", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000819, + "_Title": "EMBLEM_NAME_50000819", + "_Ruby": "EMBLEM_PHONETIC_50000819", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000819, + "_Gettext": "EMBLEM_DETAIL_50000819", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000820, + "_Title": "EMBLEM_NAME_50000820", + "_Ruby": "EMBLEM_PHONETIC_50000820", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000820, + "_Gettext": "EMBLEM_DETAIL_50000820", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000821, + "_Title": "EMBLEM_NAME_50000821", + "_Ruby": "EMBLEM_PHONETIC_50000821", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000821, + "_Gettext": "EMBLEM_DETAIL_50000821", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000822, + "_Title": "EMBLEM_NAME_50000822", + "_Ruby": "EMBLEM_PHONETIC_50000822", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000822, + "_Gettext": "EMBLEM_DETAIL_50000822", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000823, + "_Title": "EMBLEM_NAME_50000823", + "_Ruby": "EMBLEM_PHONETIC_50000823", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000823, + "_Gettext": "EMBLEM_DETAIL_50000823", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000824, + "_Title": "EMBLEM_NAME_50000824", + "_Ruby": "EMBLEM_PHONETIC_50000824", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000824, + "_Gettext": "EMBLEM_DETAIL_50000824", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000825, + "_Title": "EMBLEM_NAME_50000825", + "_Ruby": "EMBLEM_PHONETIC_50000825", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000825, + "_Gettext": "EMBLEM_DETAIL_50000825", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000826, + "_Title": "EMBLEM_NAME_50000826", + "_Ruby": "EMBLEM_PHONETIC_50000826", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000826, + "_Gettext": "EMBLEM_DETAIL_50000826", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000827, + "_Title": "EMBLEM_NAME_50000827", + "_Ruby": "EMBLEM_PHONETIC_50000827", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000827, + "_Gettext": "EMBLEM_DETAIL_50000827", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000828, + "_Title": "EMBLEM_NAME_50000828", + "_Ruby": "EMBLEM_PHONETIC_50000828", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000828, + "_Gettext": "EMBLEM_DETAIL_50000828", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000829, + "_Title": "EMBLEM_NAME_50000829", + "_Ruby": "EMBLEM_PHONETIC_50000829", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000829, + "_Gettext": "EMBLEM_DETAIL_50000829", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000830, + "_Title": "EMBLEM_NAME_50000830", + "_Ruby": "EMBLEM_PHONETIC_50000830", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000830, + "_Gettext": "EMBLEM_DETAIL_50000830", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000831, + "_Title": "EMBLEM_NAME_50000831", + "_Ruby": "EMBLEM_PHONETIC_50000831", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000831, + "_Gettext": "EMBLEM_DETAIL_50000831", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000832, + "_Title": "EMBLEM_NAME_50000832", + "_Ruby": "EMBLEM_PHONETIC_50000832", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000832, + "_Gettext": "EMBLEM_DETAIL_50000832", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000833, + "_Title": "EMBLEM_NAME_50000833", + "_Ruby": "EMBLEM_PHONETIC_50000833", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000833, + "_Gettext": "EMBLEM_DETAIL_50000833", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000834, + "_Title": "EMBLEM_NAME_50000834", + "_Ruby": "EMBLEM_PHONETIC_50000834", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000834, + "_Gettext": "EMBLEM_DETAIL_50000834", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000835, + "_Title": "EMBLEM_NAME_50000835", + "_Ruby": "EMBLEM_PHONETIC_50000835", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000835, + "_Gettext": "EMBLEM_DETAIL_50000835", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000836, + "_Title": "EMBLEM_NAME_50000836", + "_Ruby": "EMBLEM_PHONETIC_50000836", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000836, + "_Gettext": "EMBLEM_DETAIL_50000836", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000837, + "_Title": "EMBLEM_NAME_50000837", + "_Ruby": "EMBLEM_PHONETIC_50000837", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000837, + "_Gettext": "EMBLEM_DETAIL_50000837", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000838, + "_Title": "EMBLEM_NAME_50000838", + "_Ruby": "EMBLEM_PHONETIC_50000838", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000838, + "_Gettext": "EMBLEM_DETAIL_50000838", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000839, + "_Title": "EMBLEM_NAME_50000839", + "_Ruby": "EMBLEM_PHONETIC_50000839", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000839, + "_Gettext": "EMBLEM_DETAIL_50000839", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000840, + "_Title": "EMBLEM_NAME_50000840", + "_Ruby": "EMBLEM_PHONETIC_50000840", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000840, + "_Gettext": "EMBLEM_DETAIL_50000840", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000841, + "_Title": "EMBLEM_NAME_50000841", + "_Ruby": "EMBLEM_PHONETIC_50000841", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50000841, + "_Gettext": "EMBLEM_DETAIL_50000841", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50000842, + "_Title": "EMBLEM_NAME_50000842", + "_Ruby": "EMBLEM_PHONETIC_50000842", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50000842, + "_Gettext": "EMBLEM_DETAIL_50000842", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001801, + "_Title": "EMBLEM_NAME_50001801", + "_Ruby": "EMBLEM_PHONETIC_50001801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50001801, + "_Gettext": "EMBLEM_DETAIL_50001801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001901, + "_Title": "EMBLEM_NAME_50001901", + "_Ruby": "EMBLEM_PHONETIC_50001901", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50001901, + "_Gettext": "EMBLEM_DETAIL_50001901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001902, + "_Title": "EMBLEM_NAME_50001902", + "_Ruby": "EMBLEM_PHONETIC_50001902", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50001902, + "_Gettext": "EMBLEM_DETAIL_50001902", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001903, + "_Title": "EMBLEM_NAME_50001903", + "_Ruby": "EMBLEM_PHONETIC_50001903", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001903, + "_Gettext": "EMBLEM_DETAIL_50001903", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001904, + "_Title": "EMBLEM_NAME_50001904", + "_Ruby": "EMBLEM_PHONETIC_50001904", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001904, + "_Gettext": "EMBLEM_DETAIL_50001904", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001905, + "_Title": "EMBLEM_NAME_50001905", + "_Ruby": "EMBLEM_PHONETIC_50001905", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001905, + "_Gettext": "EMBLEM_DETAIL_50001905", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001906, + "_Title": "EMBLEM_NAME_50001906", + "_Ruby": "EMBLEM_PHONETIC_50001906", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001906, + "_Gettext": "EMBLEM_DETAIL_50001906", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001907, + "_Title": "EMBLEM_NAME_50001907", + "_Ruby": "EMBLEM_PHONETIC_50001907", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001907, + "_Gettext": "EMBLEM_DETAIL_50001907", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001908, + "_Title": "EMBLEM_NAME_50001908", + "_Ruby": "EMBLEM_PHONETIC_50001908", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001908, + "_Gettext": "EMBLEM_DETAIL_50001908", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001909, + "_Title": "EMBLEM_NAME_50001909", + "_Ruby": "EMBLEM_PHONETIC_50001909", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001909, + "_Gettext": "EMBLEM_DETAIL_50001909", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001910, + "_Title": "EMBLEM_NAME_50001910", + "_Ruby": "EMBLEM_PHONETIC_50001910", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001910, + "_Gettext": "EMBLEM_DETAIL_50001910", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001911, + "_Title": "EMBLEM_NAME_50001911", + "_Ruby": "EMBLEM_PHONETIC_50001911", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001911, + "_Gettext": "EMBLEM_DETAIL_50001911", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001912, + "_Title": "EMBLEM_NAME_50001912", + "_Ruby": "EMBLEM_PHONETIC_50001912", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001912, + "_Gettext": "EMBLEM_DETAIL_50001912", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001913, + "_Title": "EMBLEM_NAME_50001913", + "_Ruby": "EMBLEM_PHONETIC_50001913", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001913, + "_Gettext": "EMBLEM_DETAIL_50001913", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001914, + "_Title": "EMBLEM_NAME_50001914", + "_Ruby": "EMBLEM_PHONETIC_50001914", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001914, + "_Gettext": "EMBLEM_DETAIL_50001914", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001915, + "_Title": "EMBLEM_NAME_50001915", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001915, + "_Gettext": "EMBLEM_DETAIL_50001915", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001916, + "_Title": "EMBLEM_NAME_50001916", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001916, + "_Gettext": "EMBLEM_DETAIL_50001916", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001917, + "_Title": "EMBLEM_NAME_50001917", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001917, + "_Gettext": "EMBLEM_DETAIL_50001917", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001918, + "_Title": "EMBLEM_NAME_50001918", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001918, + "_Gettext": "EMBLEM_DETAIL_50001918", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001919, + "_Title": "EMBLEM_NAME_50001919", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001919, + "_Gettext": "EMBLEM_DETAIL_50001919", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001920, + "_Title": "EMBLEM_NAME_50001920", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001920, + "_Gettext": "EMBLEM_DETAIL_50001920", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001921, + "_Title": "EMBLEM_NAME_50001921", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001921, + "_Gettext": "EMBLEM_DETAIL_50001921", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001922, + "_Title": "EMBLEM_NAME_50001922", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001922, + "_Gettext": "EMBLEM_DETAIL_50001922", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50001923, + "_Title": "EMBLEM_NAME_50001923", + "_Ruby": "EMBLEM_PHONETIC_50001915", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50001923, + "_Gettext": "EMBLEM_DETAIL_50001923", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002001, + "_Title": "EMBLEM_NAME_50002001", + "_Ruby": "EMBLEM_PHONETIC_50002001", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50002001, + "_Gettext": "EMBLEM_DETAIL_50002001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002002, + "_Title": "EMBLEM_NAME_50002002", + "_Ruby": "EMBLEM_PHONETIC_50002002", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50002002, + "_Gettext": "EMBLEM_DETAIL_50002002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002003, + "_Title": "EMBLEM_NAME_50002003", + "_Ruby": "EMBLEM_PHONETIC_50002003", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002003, + "_Gettext": "EMBLEM_DETAIL_50002003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002004, + "_Title": "EMBLEM_NAME_50002004", + "_Ruby": "EMBLEM_PHONETIC_50002004", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002004, + "_Gettext": "EMBLEM_DETAIL_50002004", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002005, + "_Title": "EMBLEM_NAME_50002005", + "_Ruby": "EMBLEM_PHONETIC_50002005", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002005, + "_Gettext": "EMBLEM_DETAIL_50002005", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002006, + "_Title": "EMBLEM_NAME_50002006", + "_Ruby": "EMBLEM_PHONETIC_50002006", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002006, + "_Gettext": "EMBLEM_DETAIL_50002006", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002007, + "_Title": "EMBLEM_NAME_50002007", + "_Ruby": "EMBLEM_PHONETIC_50002007", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002007, + "_Gettext": "EMBLEM_DETAIL_50002007", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002008, + "_Title": "EMBLEM_NAME_50002008", + "_Ruby": "EMBLEM_PHONETIC_50002008", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002008, + "_Gettext": "EMBLEM_DETAIL_50002008", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002009, + "_Title": "EMBLEM_NAME_50002009", + "_Ruby": "EMBLEM_PHONETIC_50002009", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002009, + "_Gettext": "EMBLEM_DETAIL_50002009", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002010, + "_Title": "EMBLEM_NAME_50002010", + "_Ruby": "EMBLEM_PHONETIC_50002010", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002010, + "_Gettext": "EMBLEM_DETAIL_50002010", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002011, + "_Title": "EMBLEM_NAME_50002011", + "_Ruby": "EMBLEM_PHONETIC_50002011", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002011, + "_Gettext": "EMBLEM_DETAIL_50002011", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002012, + "_Title": "EMBLEM_NAME_50002012", + "_Ruby": "EMBLEM_PHONETIC_50002012", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002012, + "_Gettext": "EMBLEM_DETAIL_50002012", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002013, + "_Title": "EMBLEM_NAME_50002013", + "_Ruby": "EMBLEM_PHONETIC_50002013", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002013, + "_Gettext": "EMBLEM_DETAIL_50002013", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002014, + "_Title": "EMBLEM_NAME_50002014", + "_Ruby": "EMBLEM_PHONETIC_50002014", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002014, + "_Gettext": "EMBLEM_DETAIL_50002014", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002015, + "_Title": "EMBLEM_NAME_50002015", + "_Ruby": "EMBLEM_PHONETIC_50002015", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002015, + "_Gettext": "EMBLEM_DETAIL_50002015", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002016, + "_Title": "EMBLEM_NAME_50002016", + "_Ruby": "EMBLEM_PHONETIC_50002016", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002016, + "_Gettext": "EMBLEM_DETAIL_50002016", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002017, + "_Title": "EMBLEM_NAME_50002017", + "_Ruby": "EMBLEM_PHONETIC_50002017", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002017, + "_Gettext": "EMBLEM_DETAIL_50002017", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002018, + "_Title": "EMBLEM_NAME_50002018", + "_Ruby": "EMBLEM_PHONETIC_50002018", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002018, + "_Gettext": "EMBLEM_DETAIL_50002018", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002019, + "_Title": "EMBLEM_NAME_50002019", + "_Ruby": "EMBLEM_PHONETIC_50002019", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002019, + "_Gettext": "EMBLEM_DETAIL_50002019", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002020, + "_Title": "EMBLEM_NAME_50002020", + "_Ruby": "EMBLEM_PHONETIC_50002015", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002020, + "_Gettext": "EMBLEM_DETAIL_50002020", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002021, + "_Title": "EMBLEM_NAME_50002021", + "_Ruby": "EMBLEM_PHONETIC_50002015", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002021, + "_Gettext": "EMBLEM_DETAIL_50002021", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002022, + "_Title": "EMBLEM_NAME_50002022", + "_Ruby": "EMBLEM_PHONETIC_50002015", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002022, + "_Gettext": "EMBLEM_DETAIL_50002022", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002023, + "_Title": "EMBLEM_NAME_50002023", + "_Ruby": "EMBLEM_PHONETIC_50002015", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002023, + "_Gettext": "EMBLEM_DETAIL_50002023", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002101, + "_Title": "EMBLEM_NAME_50002101", + "_Ruby": "EMBLEM_PHONETIC_50002101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50002101, + "_Gettext": "EMBLEM_DETAIL_50002101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002102, + "_Title": "EMBLEM_NAME_50002102", + "_Ruby": "EMBLEM_PHONETIC_50002102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50002102, + "_Gettext": "EMBLEM_DETAIL_50002102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002103, + "_Title": "EMBLEM_NAME_50002103", + "_Ruby": "EMBLEM_PHONETIC_50002103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002103, + "_Gettext": "EMBLEM_DETAIL_50002103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002104, + "_Title": "EMBLEM_NAME_50002104", + "_Ruby": "EMBLEM_PHONETIC_50002104", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002104, + "_Gettext": "EMBLEM_DETAIL_50002104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002105, + "_Title": "EMBLEM_NAME_50002105", + "_Ruby": "EMBLEM_PHONETIC_50002105", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002105, + "_Gettext": "EMBLEM_DETAIL_50002105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002106, + "_Title": "EMBLEM_NAME_50002106", + "_Ruby": "EMBLEM_PHONETIC_50002106", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002106, + "_Gettext": "EMBLEM_DETAIL_50002106", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002107, + "_Title": "EMBLEM_NAME_50002107", + "_Ruby": "EMBLEM_PHONETIC_50002107", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002107, + "_Gettext": "EMBLEM_DETAIL_50002107", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002108, + "_Title": "EMBLEM_NAME_50002108", + "_Ruby": "EMBLEM_PHONETIC_50002108", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002108, + "_Gettext": "EMBLEM_DETAIL_50002108", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002109, + "_Title": "EMBLEM_NAME_50002109", + "_Ruby": "EMBLEM_PHONETIC_50002109", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002109, + "_Gettext": "EMBLEM_DETAIL_50002109", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002110, + "_Title": "EMBLEM_NAME_50002110", + "_Ruby": "EMBLEM_PHONETIC_50002110", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002110, + "_Gettext": "EMBLEM_DETAIL_50002110", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002111, + "_Title": "EMBLEM_NAME_50002111", + "_Ruby": "EMBLEM_PHONETIC_50002111", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002111, + "_Gettext": "EMBLEM_DETAIL_50002111", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002112, + "_Title": "EMBLEM_NAME_50002112", + "_Ruby": "EMBLEM_PHONETIC_50002112", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002112, + "_Gettext": "EMBLEM_DETAIL_50002112", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002113, + "_Title": "EMBLEM_NAME_50002113", + "_Ruby": "EMBLEM_PHONETIC_50002113", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002113, + "_Gettext": "EMBLEM_DETAIL_50002113", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002114, + "_Title": "EMBLEM_NAME_50002114", + "_Ruby": "EMBLEM_PHONETIC_50002114", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002114, + "_Gettext": "EMBLEM_DETAIL_50002114", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002115, + "_Title": "EMBLEM_NAME_50002115", + "_Ruby": "EMBLEM_PHONETIC_50002115", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002115, + "_Gettext": "EMBLEM_DETAIL_50002115", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002116, + "_Title": "EMBLEM_NAME_50002116", + "_Ruby": "EMBLEM_PHONETIC_50002116", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002116, + "_Gettext": "EMBLEM_DETAIL_50002116", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002117, + "_Title": "EMBLEM_NAME_50002117", + "_Ruby": "EMBLEM_PHONETIC_50002117", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002117, + "_Gettext": "EMBLEM_DETAIL_50002117", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002118, + "_Title": "EMBLEM_NAME_50002118", + "_Ruby": "EMBLEM_PHONETIC_50002118", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002118, + "_Gettext": "EMBLEM_DETAIL_50002118", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002119, + "_Title": "EMBLEM_NAME_50002119", + "_Ruby": "EMBLEM_PHONETIC_50002119", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002119, + "_Gettext": "EMBLEM_DETAIL_50002119", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002120, + "_Title": "EMBLEM_NAME_50002120", + "_Ruby": "EMBLEM_PHONETIC_50002115", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002120, + "_Gettext": "EMBLEM_DETAIL_50002120", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002121, + "_Title": "EMBLEM_NAME_50002121", + "_Ruby": "EMBLEM_PHONETIC_50002115", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002121, + "_Gettext": "EMBLEM_DETAIL_50002121", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002122, + "_Title": "EMBLEM_NAME_50002122", + "_Ruby": "EMBLEM_PHONETIC_50002115", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002122, + "_Gettext": "EMBLEM_DETAIL_50002122", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002123, + "_Title": "EMBLEM_NAME_50002123", + "_Ruby": "EMBLEM_PHONETIC_50002115", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002123, + "_Gettext": "EMBLEM_DETAIL_50002123", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002201, + "_Title": "EMBLEM_NAME_50002201", + "_Ruby": "EMBLEM_PHONETIC_50002201", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50002201, + "_Gettext": "EMBLEM_DETAIL_50002201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002202, + "_Title": "EMBLEM_NAME_50002202", + "_Ruby": "EMBLEM_PHONETIC_50002202", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50002202, + "_Gettext": "EMBLEM_DETAIL_50002202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002203, + "_Title": "EMBLEM_NAME_50002203", + "_Ruby": "EMBLEM_PHONETIC_50002203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002203, + "_Gettext": "EMBLEM_DETAIL_50002203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002204, + "_Title": "EMBLEM_NAME_50002204", + "_Ruby": "EMBLEM_PHONETIC_50002204", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002204, + "_Gettext": "EMBLEM_DETAIL_50002204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002205, + "_Title": "EMBLEM_NAME_50002205", + "_Ruby": "EMBLEM_PHONETIC_50002205", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002205, + "_Gettext": "EMBLEM_DETAIL_50002205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002206, + "_Title": "EMBLEM_NAME_50002206", + "_Ruby": "EMBLEM_PHONETIC_50002206", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002206, + "_Gettext": "EMBLEM_DETAIL_50002206", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002207, + "_Title": "EMBLEM_NAME_50002207", + "_Ruby": "EMBLEM_PHONETIC_50002207", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002207, + "_Gettext": "EMBLEM_DETAIL_50002207", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002208, + "_Title": "EMBLEM_NAME_50002208", + "_Ruby": "EMBLEM_PHONETIC_50002208", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002208, + "_Gettext": "EMBLEM_DETAIL_50002208", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002209, + "_Title": "EMBLEM_NAME_50002209", + "_Ruby": "EMBLEM_PHONETIC_50002209", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002209, + "_Gettext": "EMBLEM_DETAIL_50002209", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002210, + "_Title": "EMBLEM_NAME_50002210", + "_Ruby": "EMBLEM_PHONETIC_50002210", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002210, + "_Gettext": "EMBLEM_DETAIL_50002210", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002211, + "_Title": "EMBLEM_NAME_50002211", + "_Ruby": "EMBLEM_PHONETIC_50002211", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002211, + "_Gettext": "EMBLEM_DETAIL_50002211", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002212, + "_Title": "EMBLEM_NAME_50002212", + "_Ruby": "EMBLEM_PHONETIC_50002212", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002212, + "_Gettext": "EMBLEM_DETAIL_50002212", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002213, + "_Title": "EMBLEM_NAME_50002213", + "_Ruby": "EMBLEM_PHONETIC_50002213", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002213, + "_Gettext": "EMBLEM_DETAIL_50002213", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002214, + "_Title": "EMBLEM_NAME_50002214", + "_Ruby": "EMBLEM_PHONETIC_50002214", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002214, + "_Gettext": "EMBLEM_DETAIL_50002214", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002215, + "_Title": "EMBLEM_NAME_50002215", + "_Ruby": "EMBLEM_PHONETIC_50002215", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002215, + "_Gettext": "EMBLEM_DETAIL_50002215", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002216, + "_Title": "EMBLEM_NAME_50002216", + "_Ruby": "EMBLEM_PHONETIC_50002216", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002216, + "_Gettext": "EMBLEM_DETAIL_50002216", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002217, + "_Title": "EMBLEM_NAME_50002217", + "_Ruby": "EMBLEM_PHONETIC_50002217", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002217, + "_Gettext": "EMBLEM_DETAIL_50002217", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002218, + "_Title": "EMBLEM_NAME_50002218", + "_Ruby": "EMBLEM_PHONETIC_50002218", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002218, + "_Gettext": "EMBLEM_DETAIL_50002218", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002219, + "_Title": "EMBLEM_NAME_50002219", + "_Ruby": "EMBLEM_PHONETIC_50002219", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002219, + "_Gettext": "EMBLEM_DETAIL_50002219", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002220, + "_Title": "EMBLEM_NAME_50002220", + "_Ruby": "EMBLEM_PHONETIC_50002215", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002220, + "_Gettext": "EMBLEM_DETAIL_50002220", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002221, + "_Title": "EMBLEM_NAME_50002221", + "_Ruby": "EMBLEM_PHONETIC_50002215", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002221, + "_Gettext": "EMBLEM_DETAIL_50002221", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002222, + "_Title": "EMBLEM_NAME_50002222", + "_Ruby": "EMBLEM_PHONETIC_50002215", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002222, + "_Gettext": "EMBLEM_DETAIL_50002222", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002223, + "_Title": "EMBLEM_NAME_50002223", + "_Ruby": "EMBLEM_PHONETIC_50002215", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002223, + "_Gettext": "EMBLEM_DETAIL_50002223", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002301, + "_Title": "EMBLEM_NAME_50002301", + "_Ruby": "EMBLEM_PHONETIC_50002301", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50002301, + "_Gettext": "EMBLEM_DETAIL_50002301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002302, + "_Title": "EMBLEM_NAME_50002302", + "_Ruby": "EMBLEM_PHONETIC_50002302", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50002302, + "_Gettext": "EMBLEM_DETAIL_50002302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002303, + "_Title": "EMBLEM_NAME_50002303", + "_Ruby": "EMBLEM_PHONETIC_50002303", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002303, + "_Gettext": "EMBLEM_DETAIL_50002303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002304, + "_Title": "EMBLEM_NAME_50002304", + "_Ruby": "EMBLEM_PHONETIC_50002304", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002304, + "_Gettext": "EMBLEM_DETAIL_50002304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002305, + "_Title": "EMBLEM_NAME_50002305", + "_Ruby": "EMBLEM_PHONETIC_50002305", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002305, + "_Gettext": "EMBLEM_DETAIL_50002305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002306, + "_Title": "EMBLEM_NAME_50002306", + "_Ruby": "EMBLEM_PHONETIC_50002306", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002306, + "_Gettext": "EMBLEM_DETAIL_50002306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002307, + "_Title": "EMBLEM_NAME_50002307", + "_Ruby": "EMBLEM_PHONETIC_50002307", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002307, + "_Gettext": "EMBLEM_DETAIL_50002307", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002308, + "_Title": "EMBLEM_NAME_50002308", + "_Ruby": "EMBLEM_PHONETIC_50002308", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002308, + "_Gettext": "EMBLEM_DETAIL_50002308", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002309, + "_Title": "EMBLEM_NAME_50002309", + "_Ruby": "EMBLEM_PHONETIC_50002309", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002309, + "_Gettext": "EMBLEM_DETAIL_50002309", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002310, + "_Title": "EMBLEM_NAME_50002310", + "_Ruby": "EMBLEM_PHONETIC_50002310", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002310, + "_Gettext": "EMBLEM_DETAIL_50002310", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002311, + "_Title": "EMBLEM_NAME_50002311", + "_Ruby": "EMBLEM_PHONETIC_50002311", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002311, + "_Gettext": "EMBLEM_DETAIL_50002311", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002312, + "_Title": "EMBLEM_NAME_50002312", + "_Ruby": "EMBLEM_PHONETIC_50002312", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002312, + "_Gettext": "EMBLEM_DETAIL_50002312", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002313, + "_Title": "EMBLEM_NAME_50002313", + "_Ruby": "EMBLEM_PHONETIC_50002313", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002313, + "_Gettext": "EMBLEM_DETAIL_50002313", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002314, + "_Title": "EMBLEM_NAME_50002314", + "_Ruby": "EMBLEM_PHONETIC_50002314", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002314, + "_Gettext": "EMBLEM_DETAIL_50002314", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002315, + "_Title": "EMBLEM_NAME_50002315", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002315, + "_Gettext": "EMBLEM_DETAIL_50002315", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002316, + "_Title": "EMBLEM_NAME_50002316", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002316, + "_Gettext": "EMBLEM_DETAIL_50002316", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002317, + "_Title": "EMBLEM_NAME_50002317", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002317, + "_Gettext": "EMBLEM_DETAIL_50002317", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002318, + "_Title": "EMBLEM_NAME_50002318", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002318, + "_Gettext": "EMBLEM_DETAIL_50002318", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002319, + "_Title": "EMBLEM_NAME_50002319", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002319, + "_Gettext": "EMBLEM_DETAIL_50002319", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002320, + "_Title": "EMBLEM_NAME_50002320", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002320, + "_Gettext": "EMBLEM_DETAIL_50002320", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002321, + "_Title": "EMBLEM_NAME_50002321", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002321, + "_Gettext": "EMBLEM_DETAIL_50002321", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002322, + "_Title": "EMBLEM_NAME_50002322", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002322, + "_Gettext": "EMBLEM_DETAIL_50002322", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002323, + "_Title": "EMBLEM_NAME_50002323", + "_Ruby": "EMBLEM_PHONETIC_50002315", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002323, + "_Gettext": "EMBLEM_DETAIL_50002323", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002401, + "_Title": "EMBLEM_NAME_50002401", + "_Ruby": "EMBLEM_PHONETIC_50002401", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50002401, + "_Gettext": "EMBLEM_DETAIL_50002401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002402, + "_Title": "EMBLEM_NAME_50002402", + "_Ruby": "EMBLEM_PHONETIC_50002402", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50002402, + "_Gettext": "EMBLEM_DETAIL_50002402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002403, + "_Title": "EMBLEM_NAME_50002403", + "_Ruby": "EMBLEM_PHONETIC_50002403", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002403, + "_Gettext": "EMBLEM_DETAIL_50002403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002404, + "_Title": "EMBLEM_NAME_50002404", + "_Ruby": "EMBLEM_PHONETIC_50002404", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002404, + "_Gettext": "EMBLEM_DETAIL_50002404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002405, + "_Title": "EMBLEM_NAME_50002405", + "_Ruby": "EMBLEM_PHONETIC_50002405", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002405, + "_Gettext": "EMBLEM_DETAIL_50002405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002406, + "_Title": "EMBLEM_NAME_50002406", + "_Ruby": "EMBLEM_PHONETIC_50002406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002406, + "_Gettext": "EMBLEM_DETAIL_50002406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002407, + "_Title": "EMBLEM_NAME_50002407", + "_Ruby": "EMBLEM_PHONETIC_50002406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002407, + "_Gettext": "EMBLEM_DETAIL_50002407", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002408, + "_Title": "EMBLEM_NAME_50002408", + "_Ruby": "EMBLEM_PHONETIC_50002406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002408, + "_Gettext": "EMBLEM_DETAIL_50002408", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002501, + "_Title": "EMBLEM_NAME_50002501", + "_Ruby": "EMBLEM_PHONETIC_50002501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002501, + "_Gettext": "EMBLEM_DETAIL_50002501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002601, + "_Title": "EMBLEM_NAME_50002601", + "_Ruby": "EMBLEM_PHONETIC_50002601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002601, + "_Gettext": "EMBLEM_DETAIL_50002601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002602, + "_Title": "EMBLEM_NAME_50002602", + "_Ruby": "EMBLEM_PHONETIC_50002602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002602, + "_Gettext": "EMBLEM_DETAIL_50002602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002603, + "_Title": "EMBLEM_NAME_50002603", + "_Ruby": "EMBLEM_PHONETIC_50002603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002603, + "_Gettext": "EMBLEM_DETAIL_50002603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002604, + "_Title": "EMBLEM_NAME_50002604", + "_Ruby": "EMBLEM_PHONETIC_50002604", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002604, + "_Gettext": "EMBLEM_DETAIL_50002604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002605, + "_Title": "EMBLEM_NAME_50002605", + "_Ruby": "EMBLEM_PHONETIC_50002605", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002605, + "_Gettext": "EMBLEM_DETAIL_50002605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002606, + "_Title": "EMBLEM_NAME_50002606", + "_Ruby": "EMBLEM_PHONETIC_50002606", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002606, + "_Gettext": "EMBLEM_DETAIL_50002606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002607, + "_Title": "EMBLEM_NAME_50002607", + "_Ruby": "EMBLEM_PHONETIC_50002607", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002607, + "_Gettext": "EMBLEM_DETAIL_50002607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002608, + "_Title": "EMBLEM_NAME_50002608", + "_Ruby": "EMBLEM_PHONETIC_50002608", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002608, + "_Gettext": "EMBLEM_DETAIL_50002608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002609, + "_Title": "EMBLEM_NAME_50002609", + "_Ruby": "EMBLEM_PHONETIC_50002609", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002609, + "_Gettext": "EMBLEM_DETAIL_50002609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002610, + "_Title": "EMBLEM_NAME_50002610", + "_Ruby": "EMBLEM_PHONETIC_50002610", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002610, + "_Gettext": "EMBLEM_DETAIL_50002610", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002611, + "_Title": "EMBLEM_NAME_50002611", + "_Ruby": "EMBLEM_PHONETIC_50002611", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002611, + "_Gettext": "EMBLEM_DETAIL_50002611", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002612, + "_Title": "EMBLEM_NAME_50002612", + "_Ruby": "EMBLEM_PHONETIC_50002612", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002612, + "_Gettext": "EMBLEM_DETAIL_50002612", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002701, + "_Title": "EMBLEM_NAME_50002701", + "_Ruby": "EMBLEM_PHONETIC_50002701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000702, + "_Gettext": "EMBLEM_DETAIL_50002701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002702, + "_Title": "EMBLEM_NAME_50002702", + "_Ruby": "EMBLEM_PHONETIC_50002702", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000703, + "_Gettext": "EMBLEM_DETAIL_50002702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002703, + "_Title": "EMBLEM_NAME_50002703", + "_Ruby": "EMBLEM_PHONETIC_50002703", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000704, + "_Gettext": "EMBLEM_DETAIL_50002703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002704, + "_Title": "EMBLEM_NAME_50002704", + "_Ruby": "EMBLEM_PHONETIC_50002704", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000705, + "_Gettext": "EMBLEM_DETAIL_50002704", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002705, + "_Title": "EMBLEM_NAME_50002705", + "_Ruby": "EMBLEM_PHONETIC_50002705", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000706, + "_Gettext": "EMBLEM_DETAIL_50002705", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002801, + "_Title": "EMBLEM_NAME_50002801", + "_Ruby": "EMBLEM_PHONETIC_50002801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50000707, + "_Gettext": "EMBLEM_DETAIL_50002801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002901, + "_Title": "EMBLEM_NAME_50002901", + "_Ruby": "EMBLEM_PHONETIC_50002901", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50002901, + "_Gettext": "EMBLEM_DETAIL_50002901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002902, + "_Title": "EMBLEM_NAME_50002902", + "_Ruby": "EMBLEM_PHONETIC_50002902", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002902, + "_Gettext": "EMBLEM_DETAIL_50002902", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002903, + "_Title": "EMBLEM_NAME_50002903", + "_Ruby": "EMBLEM_PHONETIC_50002903", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002903, + "_Gettext": "EMBLEM_DETAIL_50002903", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002904, + "_Title": "EMBLEM_NAME_50002904", + "_Ruby": "EMBLEM_PHONETIC_50002904", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002904, + "_Gettext": "EMBLEM_DETAIL_50002904", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002905, + "_Title": "EMBLEM_NAME_50002905", + "_Ruby": "EMBLEM_PHONETIC_50002905", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002905, + "_Gettext": "EMBLEM_DETAIL_50002905", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002906, + "_Title": "EMBLEM_NAME_50002906", + "_Ruby": "EMBLEM_PHONETIC_50002906", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002906, + "_Gettext": "EMBLEM_DETAIL_50002906", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002907, + "_Title": "EMBLEM_NAME_50002907", + "_Ruby": "EMBLEM_PHONETIC_50002907", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002907, + "_Gettext": "EMBLEM_DETAIL_50002907", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002908, + "_Title": "EMBLEM_NAME_50002908", + "_Ruby": "EMBLEM_PHONETIC_50002908", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002908, + "_Gettext": "EMBLEM_DETAIL_50002908", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002909, + "_Title": "EMBLEM_NAME_50002909", + "_Ruby": "EMBLEM_PHONETIC_50002909", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002909, + "_Gettext": "EMBLEM_DETAIL_50002909", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50002910, + "_Title": "EMBLEM_NAME_50002910", + "_Ruby": "EMBLEM_PHONETIC_50002910", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50002910, + "_Gettext": "EMBLEM_DETAIL_50002910", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003001, + "_Title": "EMBLEM_NAME_50003001", + "_Ruby": "EMBLEM_PHONETIC_50003001", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003001, + "_Gettext": "EMBLEM_DETAIL_50003001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003002, + "_Title": "EMBLEM_NAME_50003002", + "_Ruby": "EMBLEM_PHONETIC_50003002", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003002, + "_Gettext": "EMBLEM_DETAIL_50003002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003003, + "_Title": "EMBLEM_NAME_50003003", + "_Ruby": "EMBLEM_PHONETIC_50003003", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003003, + "_Gettext": "EMBLEM_DETAIL_50003003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003004, + "_Title": "EMBLEM_NAME_50003004", + "_Ruby": "EMBLEM_PHONETIC_50003004", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003004, + "_Gettext": "EMBLEM_DETAIL_50003004", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003005, + "_Title": "EMBLEM_NAME_50003005", + "_Ruby": "EMBLEM_PHONETIC_50003005", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003005, + "_Gettext": "EMBLEM_DETAIL_50003005", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003006, + "_Title": "EMBLEM_NAME_50003006", + "_Ruby": "EMBLEM_PHONETIC_50003006", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003006, + "_Gettext": "EMBLEM_DETAIL_50003006", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003007, + "_Title": "EMBLEM_NAME_50003007", + "_Ruby": "EMBLEM_PHONETIC_50003007", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003007, + "_Gettext": "EMBLEM_DETAIL_50003007", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003008, + "_Title": "EMBLEM_NAME_50003008", + "_Ruby": "EMBLEM_PHONETIC_50003008", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003008, + "_Gettext": "EMBLEM_DETAIL_50003008", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003009, + "_Title": "EMBLEM_NAME_50003009", + "_Ruby": "EMBLEM_PHONETIC_50003009", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003009, + "_Gettext": "EMBLEM_DETAIL_50003009", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003010, + "_Title": "EMBLEM_NAME_50003010", + "_Ruby": "EMBLEM_PHONETIC_50003010", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003010, + "_Gettext": "EMBLEM_DETAIL_50003010", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003101, + "_Title": "EMBLEM_NAME_50003101", + "_Ruby": "EMBLEM_PHONETIC_50003101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003101, + "_Gettext": "EMBLEM_DETAIL_50003101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003102, + "_Title": "EMBLEM_NAME_50003102", + "_Ruby": "EMBLEM_PHONETIC_50003102", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003102, + "_Gettext": "EMBLEM_DETAIL_50003102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003103, + "_Title": "EMBLEM_NAME_50003103", + "_Ruby": "EMBLEM_PHONETIC_50003103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003103, + "_Gettext": "EMBLEM_DETAIL_50003103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003104, + "_Title": "EMBLEM_NAME_50003104", + "_Ruby": "EMBLEM_PHONETIC_50003104", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003104, + "_Gettext": "EMBLEM_DETAIL_50003104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003105, + "_Title": "EMBLEM_NAME_50003105", + "_Ruby": "EMBLEM_PHONETIC_50003105", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003105, + "_Gettext": "EMBLEM_DETAIL_50003105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003106, + "_Title": "EMBLEM_NAME_50003106", + "_Ruby": "EMBLEM_PHONETIC_50003106", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003106, + "_Gettext": "EMBLEM_DETAIL_50003106", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003107, + "_Title": "EMBLEM_NAME_50003107", + "_Ruby": "EMBLEM_PHONETIC_50003107", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003107, + "_Gettext": "EMBLEM_DETAIL_50003107", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003108, + "_Title": "EMBLEM_NAME_50003108", + "_Ruby": "EMBLEM_PHONETIC_50003108", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003108, + "_Gettext": "EMBLEM_DETAIL_50003108", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003109, + "_Title": "EMBLEM_NAME_50003109", + "_Ruby": "EMBLEM_PHONETIC_50003109", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003109, + "_Gettext": "EMBLEM_DETAIL_50003109", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003110, + "_Title": "EMBLEM_NAME_50003110", + "_Ruby": "EMBLEM_PHONETIC_50003110", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003110, + "_Gettext": "EMBLEM_DETAIL_50003110", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003201, + "_Title": "EMBLEM_NAME_50003201", + "_Ruby": "EMBLEM_PHONETIC_50003201", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003201, + "_Gettext": "EMBLEM_DETAIL_50003201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003202, + "_Title": "EMBLEM_NAME_50003202", + "_Ruby": "EMBLEM_PHONETIC_50003202", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003202, + "_Gettext": "EMBLEM_DETAIL_50003202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003203, + "_Title": "EMBLEM_NAME_50003203", + "_Ruby": "EMBLEM_PHONETIC_50003203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003203, + "_Gettext": "EMBLEM_DETAIL_50003203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003204, + "_Title": "EMBLEM_NAME_50003204", + "_Ruby": "EMBLEM_PHONETIC_50003204", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003204, + "_Gettext": "EMBLEM_DETAIL_50003204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003205, + "_Title": "EMBLEM_NAME_50003205", + "_Ruby": "EMBLEM_PHONETIC_50003205", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003205, + "_Gettext": "EMBLEM_DETAIL_50003205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003206, + "_Title": "EMBLEM_NAME_50003206", + "_Ruby": "EMBLEM_PHONETIC_50003206", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003206, + "_Gettext": "EMBLEM_DETAIL_50003206", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003207, + "_Title": "EMBLEM_NAME_50003207", + "_Ruby": "EMBLEM_PHONETIC_50003207", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003207, + "_Gettext": "EMBLEM_DETAIL_50003207", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003208, + "_Title": "EMBLEM_NAME_50003208", + "_Ruby": "EMBLEM_PHONETIC_50003208", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003208, + "_Gettext": "EMBLEM_DETAIL_50003208", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003209, + "_Title": "EMBLEM_NAME_50003209", + "_Ruby": "EMBLEM_PHONETIC_50003209", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003209, + "_Gettext": "EMBLEM_DETAIL_50003209", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003210, + "_Title": "EMBLEM_NAME_50003210", + "_Ruby": "EMBLEM_PHONETIC_50003210", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003210, + "_Gettext": "EMBLEM_DETAIL_50003210", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003301, + "_Title": "EMBLEM_NAME_50003301", + "_Ruby": "EMBLEM_PHONETIC_50003301", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003301, + "_Gettext": "EMBLEM_DETAIL_50003301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003302, + "_Title": "EMBLEM_NAME_50003302", + "_Ruby": "EMBLEM_PHONETIC_50003302", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003302, + "_Gettext": "EMBLEM_DETAIL_50003302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003303, + "_Title": "EMBLEM_NAME_50003303", + "_Ruby": "EMBLEM_PHONETIC_50003303", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003303, + "_Gettext": "EMBLEM_DETAIL_50003303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003304, + "_Title": "EMBLEM_NAME_50003304", + "_Ruby": "EMBLEM_PHONETIC_50003304", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003304, + "_Gettext": "EMBLEM_DETAIL_50003304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003305, + "_Title": "EMBLEM_NAME_50003305", + "_Ruby": "EMBLEM_PHONETIC_50003305", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003305, + "_Gettext": "EMBLEM_DETAIL_50003305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003306, + "_Title": "EMBLEM_NAME_50003306", + "_Ruby": "EMBLEM_PHONETIC_50003306", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003306, + "_Gettext": "EMBLEM_DETAIL_50003306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003307, + "_Title": "EMBLEM_NAME_50003307", + "_Ruby": "EMBLEM_PHONETIC_50003307", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003307, + "_Gettext": "EMBLEM_DETAIL_50003307", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003308, + "_Title": "EMBLEM_NAME_50003308", + "_Ruby": "EMBLEM_PHONETIC_50003308", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003308, + "_Gettext": "EMBLEM_DETAIL_50003308", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003309, + "_Title": "EMBLEM_NAME_50003309", + "_Ruby": "EMBLEM_PHONETIC_50003309", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003309, + "_Gettext": "EMBLEM_DETAIL_50003309", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003310, + "_Title": "EMBLEM_NAME_50003310", + "_Ruby": "EMBLEM_PHONETIC_50003310", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003310, + "_Gettext": "EMBLEM_DETAIL_50003310", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003401, + "_Title": "EMBLEM_NAME_50003401", + "_Ruby": "EMBLEM_PHONETIC_50003401", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003401, + "_Gettext": "EMBLEM_DETAIL_50003401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003402, + "_Title": "EMBLEM_NAME_50003402", + "_Ruby": "EMBLEM_PHONETIC_50003402", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003402, + "_Gettext": "EMBLEM_DETAIL_50003402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003403, + "_Title": "EMBLEM_NAME_50003403", + "_Ruby": "EMBLEM_PHONETIC_50003403", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003403, + "_Gettext": "EMBLEM_DETAIL_50003403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003404, + "_Title": "EMBLEM_NAME_50003404", + "_Ruby": "EMBLEM_PHONETIC_50003404", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003404, + "_Gettext": "EMBLEM_DETAIL_50003404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003405, + "_Title": "EMBLEM_NAME_50003405", + "_Ruby": "EMBLEM_PHONETIC_50003405", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003405, + "_Gettext": "EMBLEM_DETAIL_50003405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003501, + "_Title": "EMBLEM_NAME_50003501", + "_Ruby": "EMBLEM_PHONETIC_50003501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003501, + "_Gettext": "EMBLEM_DETAIL_50003501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003601, + "_Title": "EMBLEM_NAME_50003601", + "_Ruby": "EMBLEM_PHONETIC_50003601", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50003601, + "_Gettext": "EMBLEM_DETAIL_50003601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003602, + "_Title": "EMBLEM_NAME_50003602", + "_Ruby": "EMBLEM_PHONETIC_50003602", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50003602, + "_Gettext": "EMBLEM_DETAIL_50003602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003603, + "_Title": "EMBLEM_NAME_50003603", + "_Ruby": "EMBLEM_PHONETIC_50003603", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 50003603, + "_Gettext": "EMBLEM_DETAIL_50003603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003604, + "_Title": "EMBLEM_NAME_50003604", + "_Ruby": "EMBLEM_PHONETIC_50003604", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50003604, + "_Gettext": "EMBLEM_DETAIL_50003604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003605, + "_Title": "EMBLEM_NAME_50003605", + "_Ruby": "EMBLEM_PHONETIC_50003605", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50003605, + "_Gettext": "EMBLEM_DETAIL_50003605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003606, + "_Title": "EMBLEM_NAME_50003606", + "_Ruby": "EMBLEM_PHONETIC_50003606", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 50003606, + "_Gettext": "EMBLEM_DETAIL_50003606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003607, + "_Title": "EMBLEM_NAME_50003607", + "_Ruby": "EMBLEM_PHONETIC_50003607", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003607, + "_Gettext": "EMBLEM_DETAIL_50003607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003608, + "_Title": "EMBLEM_NAME_50003608", + "_Ruby": "EMBLEM_PHONETIC_50003608", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003608, + "_Gettext": "EMBLEM_DETAIL_50003608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003609, + "_Title": "EMBLEM_NAME_50003609", + "_Ruby": "EMBLEM_PHONETIC_50003609", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003609, + "_Gettext": "EMBLEM_DETAIL_50003609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003610, + "_Title": "EMBLEM_NAME_50003610", + "_Ruby": "EMBLEM_PHONETIC_50003610", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003610, + "_Gettext": "EMBLEM_DETAIL_50003610", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003611, + "_Title": "EMBLEM_NAME_50003611", + "_Ruby": "EMBLEM_PHONETIC_50003611", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003611, + "_Gettext": "EMBLEM_DETAIL_50003611", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003701, + "_Title": "EMBLEM_NAME_50003701", + "_Ruby": "EMBLEM_PHONETIC_50003701", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50003701, + "_Gettext": "EMBLEM_DETAIL_50003701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003801, + "_Title": "EMBLEM_NAME_50003801", + "_Ruby": "EMBLEM_PHONETIC_50003801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003801, + "_Gettext": "EMBLEM_DETAIL_50003801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003802, + "_Title": "EMBLEM_NAME_50003802", + "_Ruby": "EMBLEM_PHONETIC_50003802", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003802, + "_Gettext": "EMBLEM_DETAIL_50003802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003803, + "_Title": "EMBLEM_NAME_50003803", + "_Ruby": "EMBLEM_PHONETIC_50003803", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003803, + "_Gettext": "EMBLEM_DETAIL_50003803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003804, + "_Title": "EMBLEM_NAME_50003804", + "_Ruby": "EMBLEM_PHONETIC_50003804", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003804, + "_Gettext": "EMBLEM_DETAIL_50003804", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003805, + "_Title": "EMBLEM_NAME_50003805", + "_Ruby": "EMBLEM_PHONETIC_50003805", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003805, + "_Gettext": "EMBLEM_DETAIL_50003805", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50003901, + "_Title": "EMBLEM_NAME_50003901", + "_Ruby": "EMBLEM_PHONETIC_50003901", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50003901, + "_Gettext": "EMBLEM_DETAIL_50003901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004001, + "_Title": "EMBLEM_NAME_50004001", + "_Ruby": "EMBLEM_PHONETIC_50004001", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004001, + "_Gettext": "EMBLEM_DETAIL_50004001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004002, + "_Title": "EMBLEM_NAME_50004002", + "_Ruby": "EMBLEM_PHONETIC_50004002", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004002, + "_Gettext": "EMBLEM_DETAIL_50004002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004003, + "_Title": "EMBLEM_NAME_50004003", + "_Ruby": "EMBLEM_PHONETIC_50004003", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004003, + "_Gettext": "EMBLEM_DETAIL_50004003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004004, + "_Title": "EMBLEM_NAME_50004004", + "_Ruby": "EMBLEM_PHONETIC_50004004", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004004, + "_Gettext": "EMBLEM_DETAIL_50004004", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004005, + "_Title": "EMBLEM_NAME_50004005", + "_Ruby": "EMBLEM_PHONETIC_50004005", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004005, + "_Gettext": "EMBLEM_DETAIL_50004005", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004101, + "_Title": "EMBLEM_NAME_50004101", + "_Ruby": "EMBLEM_PHONETIC_50004101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004101, + "_Gettext": "EMBLEM_DETAIL_50004101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004201, + "_Title": "EMBLEM_NAME_50004201", + "_Ruby": "EMBLEM_PHONETIC_50004201", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004201, + "_Gettext": "EMBLEM_DETAIL_50004201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004202, + "_Title": "EMBLEM_NAME_50004202", + "_Ruby": "EMBLEM_PHONETIC_50004202", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004202, + "_Gettext": "EMBLEM_DETAIL_50004202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004203, + "_Title": "EMBLEM_NAME_50004203", + "_Ruby": "EMBLEM_PHONETIC_50004203", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004203, + "_Gettext": "EMBLEM_DETAIL_50004203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004204, + "_Title": "EMBLEM_NAME_50004204", + "_Ruby": "EMBLEM_PHONETIC_50004204", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004204, + "_Gettext": "EMBLEM_DETAIL_50004204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004205, + "_Title": "EMBLEM_NAME_50004205", + "_Ruby": "EMBLEM_PHONETIC_50004205", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004205, + "_Gettext": "EMBLEM_DETAIL_50004205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004301, + "_Title": "EMBLEM_NAME_50004301", + "_Ruby": "EMBLEM_PHONETIC_50004301", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004301, + "_Gettext": "EMBLEM_DETAIL_50004301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004401, + "_Title": "EMBLEM_NAME_50004401", + "_Ruby": "EMBLEM_PHONETIC_50004401", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004401, + "_Gettext": "EMBLEM_DETAIL_50004401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004402, + "_Title": "EMBLEM_NAME_50004402", + "_Ruby": "EMBLEM_PHONETIC_50004402", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004402, + "_Gettext": "EMBLEM_DETAIL_50004402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004403, + "_Title": "EMBLEM_NAME_50004403", + "_Ruby": "EMBLEM_PHONETIC_50004403", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004403, + "_Gettext": "EMBLEM_DETAIL_50004403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004404, + "_Title": "EMBLEM_NAME_50004404", + "_Ruby": "EMBLEM_PHONETIC_50004404", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004404, + "_Gettext": "EMBLEM_DETAIL_50004404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004405, + "_Title": "EMBLEM_NAME_50004405", + "_Ruby": "EMBLEM_PHONETIC_50004405", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004405, + "_Gettext": "EMBLEM_DETAIL_50004405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004406, + "_Title": "EMBLEM_NAME_50004406", + "_Ruby": "EMBLEM_PHONETIC_50004406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004406, + "_Gettext": "EMBLEM_DETAIL_50004406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004407, + "_Title": "EMBLEM_NAME_50004407", + "_Ruby": "EMBLEM_PHONETIC_50004407", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004407, + "_Gettext": "EMBLEM_DETAIL_50004407", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004408, + "_Title": "EMBLEM_NAME_50004408", + "_Ruby": "EMBLEM_PHONETIC_50004408", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004408, + "_Gettext": "EMBLEM_DETAIL_50004408", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004409, + "_Title": "EMBLEM_NAME_50004409", + "_Ruby": "EMBLEM_PHONETIC_50004409", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004409, + "_Gettext": "EMBLEM_DETAIL_50004409", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004501, + "_Title": "EMBLEM_NAME_50004501", + "_Ruby": "EMBLEM_PHONETIC_50004501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004501, + "_Gettext": "EMBLEM_DETAIL_50004501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004502, + "_Title": "EMBLEM_NAME_50004502", + "_Ruby": "EMBLEM_PHONETIC_50004502", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004502, + "_Gettext": "EMBLEM_DETAIL_50004502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004503, + "_Title": "EMBLEM_NAME_50004503", + "_Ruby": "EMBLEM_PHONETIC_50004503", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004503, + "_Gettext": "EMBLEM_DETAIL_50004503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004504, + "_Title": "EMBLEM_NAME_50004504", + "_Ruby": "EMBLEM_PHONETIC_50004504", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004504, + "_Gettext": "EMBLEM_DETAIL_50004504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004505, + "_Title": "EMBLEM_NAME_50004505", + "_Ruby": "EMBLEM_PHONETIC_50004505", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004505, + "_Gettext": "EMBLEM_DETAIL_50004505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004506, + "_Title": "EMBLEM_NAME_50004506", + "_Ruby": "EMBLEM_PHONETIC_50004506", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004506, + "_Gettext": "EMBLEM_DETAIL_50004506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004507, + "_Title": "EMBLEM_NAME_50004507", + "_Ruby": "EMBLEM_PHONETIC_50004507", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004507, + "_Gettext": "EMBLEM_DETAIL_50004507", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004508, + "_Title": "EMBLEM_NAME_50004508", + "_Ruby": "EMBLEM_PHONETIC_50004508", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004508, + "_Gettext": "EMBLEM_DETAIL_50004508", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004509, + "_Title": "EMBLEM_NAME_50004509", + "_Ruby": "EMBLEM_PHONETIC_50004509", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004509, + "_Gettext": "EMBLEM_DETAIL_50004509", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004601, + "_Title": "EMBLEM_NAME_50004601", + "_Ruby": "EMBLEM_PHONETIC_50004601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004601, + "_Gettext": "EMBLEM_DETAIL_50004601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004602, + "_Title": "EMBLEM_NAME_50004602", + "_Ruby": "EMBLEM_PHONETIC_50004602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004602, + "_Gettext": "EMBLEM_DETAIL_50004602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004603, + "_Title": "EMBLEM_NAME_50004603", + "_Ruby": "EMBLEM_PHONETIC_50004603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004603, + "_Gettext": "EMBLEM_DETAIL_50004603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004604, + "_Title": "EMBLEM_NAME_50004604", + "_Ruby": "EMBLEM_PHONETIC_50004604", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004604, + "_Gettext": "EMBLEM_DETAIL_50004604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004605, + "_Title": "EMBLEM_NAME_50004605", + "_Ruby": "EMBLEM_PHONETIC_50004605", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004605, + "_Gettext": "EMBLEM_DETAIL_50004605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004606, + "_Title": "EMBLEM_NAME_50004606", + "_Ruby": "EMBLEM_PHONETIC_50004606", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004606, + "_Gettext": "EMBLEM_DETAIL_50004606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004607, + "_Title": "EMBLEM_NAME_50004607", + "_Ruby": "EMBLEM_PHONETIC_50004607", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004607, + "_Gettext": "EMBLEM_DETAIL_50004607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004608, + "_Title": "EMBLEM_NAME_50004608", + "_Ruby": "EMBLEM_PHONETIC_50004608", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004608, + "_Gettext": "EMBLEM_DETAIL_50004608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004609, + "_Title": "EMBLEM_NAME_50004609", + "_Ruby": "EMBLEM_PHONETIC_50004609", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004609, + "_Gettext": "EMBLEM_DETAIL_50004609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004701, + "_Title": "EMBLEM_NAME_50004701", + "_Ruby": "EMBLEM_PHONETIC_50004701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004701, + "_Gettext": "EMBLEM_DETAIL_50004701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004702, + "_Title": "EMBLEM_NAME_50004702", + "_Ruby": "EMBLEM_PHONETIC_50004702", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004702, + "_Gettext": "EMBLEM_DETAIL_50004702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004703, + "_Title": "EMBLEM_NAME_50004703", + "_Ruby": "EMBLEM_PHONETIC_50004703", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004703, + "_Gettext": "EMBLEM_DETAIL_50004703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004704, + "_Title": "EMBLEM_NAME_50004704", + "_Ruby": "EMBLEM_PHONETIC_50004704", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004704, + "_Gettext": "EMBLEM_DETAIL_50004704", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004705, + "_Title": "EMBLEM_NAME_50004705", + "_Ruby": "EMBLEM_PHONETIC_50004705", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004705, + "_Gettext": "EMBLEM_DETAIL_50004705", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004706, + "_Title": "EMBLEM_NAME_50004706", + "_Ruby": "EMBLEM_PHONETIC_50004706", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004706, + "_Gettext": "EMBLEM_DETAIL_50004706", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004707, + "_Title": "EMBLEM_NAME_50004707", + "_Ruby": "EMBLEM_PHONETIC_50004707", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004707, + "_Gettext": "EMBLEM_DETAIL_50004707", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004708, + "_Title": "EMBLEM_NAME_50004708", + "_Ruby": "EMBLEM_PHONETIC_50004708", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004708, + "_Gettext": "EMBLEM_DETAIL_50004708", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004709, + "_Title": "EMBLEM_NAME_50004709", + "_Ruby": "EMBLEM_PHONETIC_50004709", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004709, + "_Gettext": "EMBLEM_DETAIL_50004709", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004801, + "_Title": "EMBLEM_NAME_50004801", + "_Ruby": "EMBLEM_PHONETIC_50004801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004801, + "_Gettext": "EMBLEM_DETAIL_50004801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004802, + "_Title": "EMBLEM_NAME_50004802", + "_Ruby": "EMBLEM_PHONETIC_50004802", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004802, + "_Gettext": "EMBLEM_DETAIL_50004802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004803, + "_Title": "EMBLEM_NAME_50004803", + "_Ruby": "EMBLEM_PHONETIC_50004803", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004803, + "_Gettext": "EMBLEM_DETAIL_50004803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004804, + "_Title": "EMBLEM_NAME_50004804", + "_Ruby": "EMBLEM_PHONETIC_50004804", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004804, + "_Gettext": "EMBLEM_DETAIL_50004804", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004805, + "_Title": "EMBLEM_NAME_50004805", + "_Ruby": "EMBLEM_PHONETIC_50004805", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004805, + "_Gettext": "EMBLEM_DETAIL_50004805", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50004901, + "_Title": "EMBLEM_NAME_50004901", + "_Ruby": "EMBLEM_PHONETIC_50004901", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004901, + "_Gettext": "EMBLEM_DETAIL_50004901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005001, + "_Title": "EMBLEM_NAME_50005001", + "_Ruby": "EMBLEM_PHONETIC_50005001", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005001, + "_Gettext": "EMBLEM_DETAIL_50005001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005002, + "_Title": "EMBLEM_NAME_50005002", + "_Ruby": "EMBLEM_PHONETIC_50005002", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005002, + "_Gettext": "EMBLEM_DETAIL_50005002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005003, + "_Title": "EMBLEM_NAME_50005003", + "_Ruby": "EMBLEM_PHONETIC_50005003", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005003, + "_Gettext": "EMBLEM_DETAIL_50005003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005004, + "_Title": "EMBLEM_NAME_50005004", + "_Ruby": "EMBLEM_PHONETIC_50005004", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005004, + "_Gettext": "EMBLEM_DETAIL_50005004", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005005, + "_Title": "EMBLEM_NAME_50005005", + "_Ruby": "EMBLEM_PHONETIC_50005005", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005005, + "_Gettext": "EMBLEM_DETAIL_50005005", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005101, + "_Title": "EMBLEM_NAME_50005101", + "_Ruby": "EMBLEM_PHONETIC_50005101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005101, + "_Gettext": "EMBLEM_DETAIL_50005101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005201, + "_Title": "EMBLEM_NAME_50005201", + "_Ruby": "EMBLEM_PHONETIC_50005201", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004710, + "_Gettext": "EMBLEM_DETAIL_50005201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005202, + "_Title": "EMBLEM_NAME_50005202", + "_Ruby": "EMBLEM_PHONETIC_50005202", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004711, + "_Gettext": "EMBLEM_DETAIL_50005202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005203, + "_Title": "EMBLEM_NAME_50005203", + "_Ruby": "EMBLEM_PHONETIC_50005203", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004712, + "_Gettext": "EMBLEM_DETAIL_50005203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005204, + "_Title": "EMBLEM_NAME_50005204", + "_Ruby": "EMBLEM_PHONETIC_50005204", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004713, + "_Gettext": "EMBLEM_DETAIL_50005204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005205, + "_Title": "EMBLEM_NAME_50005205", + "_Ruby": "EMBLEM_PHONETIC_50005205", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004714, + "_Gettext": "EMBLEM_DETAIL_50005205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005206, + "_Title": "EMBLEM_NAME_50005206", + "_Ruby": "EMBLEM_PHONETIC_50005206", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004715, + "_Gettext": "EMBLEM_DETAIL_50005206", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005207, + "_Title": "EMBLEM_NAME_50005207", + "_Ruby": "EMBLEM_PHONETIC_50005207", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004716, + "_Gettext": "EMBLEM_DETAIL_50005207", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005208, + "_Title": "EMBLEM_NAME_50005208", + "_Ruby": "EMBLEM_PHONETIC_50005208", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004717, + "_Gettext": "EMBLEM_DETAIL_50005208", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005209, + "_Title": "EMBLEM_NAME_50005209", + "_Ruby": "EMBLEM_PHONETIC_50005209", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004718, + "_Gettext": "EMBLEM_DETAIL_50005209", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005301, + "_Title": "EMBLEM_NAME_50005301", + "_Ruby": "EMBLEM_PHONETIC_50005301", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004719, + "_Gettext": "EMBLEM_DETAIL_50005301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005302, + "_Title": "EMBLEM_NAME_50005302", + "_Ruby": "EMBLEM_PHONETIC_50005302", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004720, + "_Gettext": "EMBLEM_DETAIL_50005302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005303, + "_Title": "EMBLEM_NAME_50005303", + "_Ruby": "EMBLEM_PHONETIC_50005303", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004721, + "_Gettext": "EMBLEM_DETAIL_50005303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005304, + "_Title": "EMBLEM_NAME_50005304", + "_Ruby": "EMBLEM_PHONETIC_50005304", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004722, + "_Gettext": "EMBLEM_DETAIL_50005304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005305, + "_Title": "EMBLEM_NAME_50005305", + "_Ruby": "EMBLEM_PHONETIC_50005305", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004723, + "_Gettext": "EMBLEM_DETAIL_50005305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005306, + "_Title": "EMBLEM_NAME_50005306", + "_Ruby": "EMBLEM_PHONETIC_50005306", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004724, + "_Gettext": "EMBLEM_DETAIL_50005306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005307, + "_Title": "EMBLEM_NAME_50005307", + "_Ruby": "EMBLEM_PHONETIC_50005307", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004725, + "_Gettext": "EMBLEM_DETAIL_50005307", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005308, + "_Title": "EMBLEM_NAME_50005308", + "_Ruby": "EMBLEM_PHONETIC_50005308", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004726, + "_Gettext": "EMBLEM_DETAIL_50005308", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005309, + "_Title": "EMBLEM_NAME_50005309", + "_Ruby": "EMBLEM_PHONETIC_50005309", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004727, + "_Gettext": "EMBLEM_DETAIL_50005309", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005401, + "_Title": "EMBLEM_NAME_50005401", + "_Ruby": "EMBLEM_PHONETIC_50005401", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004728, + "_Gettext": "EMBLEM_DETAIL_50005401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005402, + "_Title": "EMBLEM_NAME_50005402", + "_Ruby": "EMBLEM_PHONETIC_50005402", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004729, + "_Gettext": "EMBLEM_DETAIL_50005402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005403, + "_Title": "EMBLEM_NAME_50005403", + "_Ruby": "EMBLEM_PHONETIC_50005403", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004730, + "_Gettext": "EMBLEM_DETAIL_50005403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005404, + "_Title": "EMBLEM_NAME_50005404", + "_Ruby": "EMBLEM_PHONETIC_50005404", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004731, + "_Gettext": "EMBLEM_DETAIL_50005404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005405, + "_Title": "EMBLEM_NAME_50005405", + "_Ruby": "EMBLEM_PHONETIC_50005405", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004732, + "_Gettext": "EMBLEM_DETAIL_50005405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005406, + "_Title": "EMBLEM_NAME_50005406", + "_Ruby": "EMBLEM_PHONETIC_50005406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004733, + "_Gettext": "EMBLEM_DETAIL_50005406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005407, + "_Title": "EMBLEM_NAME_50005407", + "_Ruby": "EMBLEM_PHONETIC_50005407", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004734, + "_Gettext": "EMBLEM_DETAIL_50005407", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005408, + "_Title": "EMBLEM_NAME_50005408", + "_Ruby": "EMBLEM_PHONETIC_50005408", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004735, + "_Gettext": "EMBLEM_DETAIL_50005408", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005409, + "_Title": "EMBLEM_NAME_50005409", + "_Ruby": "EMBLEM_PHONETIC_50005409", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004736, + "_Gettext": "EMBLEM_DETAIL_50005409", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005501, + "_Title": "EMBLEM_NAME_50005501", + "_Ruby": "EMBLEM_PHONETIC_50005501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004737, + "_Gettext": "EMBLEM_DETAIL_50005501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005502, + "_Title": "EMBLEM_NAME_50005502", + "_Ruby": "EMBLEM_PHONETIC_50005502", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004738, + "_Gettext": "EMBLEM_DETAIL_50005502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005503, + "_Title": "EMBLEM_NAME_50005503", + "_Ruby": "EMBLEM_PHONETIC_50005503", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004739, + "_Gettext": "EMBLEM_DETAIL_50005503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005504, + "_Title": "EMBLEM_NAME_50005504", + "_Ruby": "EMBLEM_PHONETIC_50005504", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004740, + "_Gettext": "EMBLEM_DETAIL_50005504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005505, + "_Title": "EMBLEM_NAME_50005505", + "_Ruby": "EMBLEM_PHONETIC_50005505", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004741, + "_Gettext": "EMBLEM_DETAIL_50005505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005506, + "_Title": "EMBLEM_NAME_50005506", + "_Ruby": "EMBLEM_PHONETIC_50005506", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004742, + "_Gettext": "EMBLEM_DETAIL_50005506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005507, + "_Title": "EMBLEM_NAME_50005507", + "_Ruby": "EMBLEM_PHONETIC_50005507", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004743, + "_Gettext": "EMBLEM_DETAIL_50005507", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005508, + "_Title": "EMBLEM_NAME_50005508", + "_Ruby": "EMBLEM_PHONETIC_50005508", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004744, + "_Gettext": "EMBLEM_DETAIL_50005508", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005509, + "_Title": "EMBLEM_NAME_50005509", + "_Ruby": "EMBLEM_PHONETIC_50005509", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004745, + "_Gettext": "EMBLEM_DETAIL_50005509", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005601, + "_Title": "EMBLEM_NAME_50005601", + "_Ruby": "EMBLEM_PHONETIC_50005601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004746, + "_Gettext": "EMBLEM_DETAIL_50005601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005602, + "_Title": "EMBLEM_NAME_50005602", + "_Ruby": "EMBLEM_PHONETIC_50005602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004747, + "_Gettext": "EMBLEM_DETAIL_50005602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005603, + "_Title": "EMBLEM_NAME_50005603", + "_Ruby": "EMBLEM_PHONETIC_50005603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004748, + "_Gettext": "EMBLEM_DETAIL_50005603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005604, + "_Title": "EMBLEM_NAME_50005604", + "_Ruby": "EMBLEM_PHONETIC_50005604", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004749, + "_Gettext": "EMBLEM_DETAIL_50005604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005605, + "_Title": "EMBLEM_NAME_50005605", + "_Ruby": "EMBLEM_PHONETIC_50005605", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004750, + "_Gettext": "EMBLEM_DETAIL_50005605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005606, + "_Title": "EMBLEM_NAME_50005606", + "_Ruby": "EMBLEM_PHONETIC_50005606", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004751, + "_Gettext": "EMBLEM_DETAIL_50005606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005607, + "_Title": "EMBLEM_NAME_50005607", + "_Ruby": "EMBLEM_PHONETIC_50005607", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004752, + "_Gettext": "EMBLEM_DETAIL_50005607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005608, + "_Title": "EMBLEM_NAME_50005608", + "_Ruby": "EMBLEM_PHONETIC_50005608", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004753, + "_Gettext": "EMBLEM_DETAIL_50005608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005609, + "_Title": "EMBLEM_NAME_50005609", + "_Ruby": "EMBLEM_PHONETIC_50005609", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004754, + "_Gettext": "EMBLEM_DETAIL_50005609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005701, + "_Title": "EMBLEM_NAME_50005701", + "_Ruby": "EMBLEM_PHONETIC_50005701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004755, + "_Gettext": "EMBLEM_DETAIL_50005701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005702, + "_Title": "EMBLEM_NAME_50005702", + "_Ruby": "EMBLEM_PHONETIC_50005702", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004756, + "_Gettext": "EMBLEM_DETAIL_50005702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005703, + "_Title": "EMBLEM_NAME_50005703", + "_Ruby": "EMBLEM_PHONETIC_50005703", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50004757, + "_Gettext": "EMBLEM_DETAIL_50005703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005704, + "_Title": "EMBLEM_NAME_50005704", + "_Ruby": "EMBLEM_PHONETIC_50005704", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004758, + "_Gettext": "EMBLEM_DETAIL_50005704", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005705, + "_Title": "EMBLEM_NAME_50005705", + "_Ruby": "EMBLEM_PHONETIC_50005705", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004759, + "_Gettext": "EMBLEM_DETAIL_50005705", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005706, + "_Title": "EMBLEM_NAME_50005706", + "_Ruby": "EMBLEM_PHONETIC_50005706", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004760, + "_Gettext": "EMBLEM_DETAIL_50005706", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005707, + "_Title": "EMBLEM_NAME_50005707", + "_Ruby": "EMBLEM_PHONETIC_50005707", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004761, + "_Gettext": "EMBLEM_DETAIL_50005707", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005708, + "_Title": "EMBLEM_NAME_50005708", + "_Ruby": "EMBLEM_PHONETIC_50005708", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004762, + "_Gettext": "EMBLEM_DETAIL_50005708", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005709, + "_Title": "EMBLEM_NAME_50005709", + "_Ruby": "EMBLEM_PHONETIC_50005709", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50004763, + "_Gettext": "EMBLEM_DETAIL_50005709", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005801, + "_Title": "EMBLEM_NAME_50005801", + "_Ruby": "EMBLEM_PHONETIC_50005801", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005801, + "_Gettext": "EMBLEM_DETAIL_50005801", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005802, + "_Title": "EMBLEM_NAME_50005802", + "_Ruby": "EMBLEM_PHONETIC_50005802", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005802, + "_Gettext": "EMBLEM_DETAIL_50005802", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005803, + "_Title": "EMBLEM_NAME_50005803", + "_Ruby": "EMBLEM_PHONETIC_50005803", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005803, + "_Gettext": "EMBLEM_DETAIL_50005803", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005804, + "_Title": "EMBLEM_NAME_50005804", + "_Ruby": "EMBLEM_PHONETIC_50005804", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005804, + "_Gettext": "EMBLEM_DETAIL_50005804", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005805, + "_Title": "EMBLEM_NAME_50005805", + "_Ruby": "EMBLEM_PHONETIC_50005805", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005805, + "_Gettext": "EMBLEM_DETAIL_50005805", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005806, + "_Title": "EMBLEM_NAME_50005806", + "_Ruby": "EMBLEM_PHONETIC_50005806", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005806, + "_Gettext": "EMBLEM_DETAIL_50005806", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005807, + "_Title": "EMBLEM_NAME_50005807", + "_Ruby": "EMBLEM_PHONETIC_50005807", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005807, + "_Gettext": "EMBLEM_DETAIL_50005807", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005808, + "_Title": "EMBLEM_NAME_50005808", + "_Ruby": "EMBLEM_PHONETIC_50005808", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005808, + "_Gettext": "EMBLEM_DETAIL_50005808", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005809, + "_Title": "EMBLEM_NAME_50005809", + "_Ruby": "EMBLEM_PHONETIC_50005809", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005809, + "_Gettext": "EMBLEM_DETAIL_50005809", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005810, + "_Title": "EMBLEM_NAME_50005810", + "_Ruby": "EMBLEM_PHONETIC_50005810", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005810, + "_Gettext": "EMBLEM_DETAIL_50005810", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005811, + "_Title": "EMBLEM_NAME_50005811", + "_Ruby": "EMBLEM_PHONETIC_50005811", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005811, + "_Gettext": "EMBLEM_DETAIL_50005811", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005812, + "_Title": "EMBLEM_NAME_50005812", + "_Ruby": "EMBLEM_PHONETIC_50005812", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005812, + "_Gettext": "EMBLEM_DETAIL_50005812", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005813, + "_Title": "EMBLEM_NAME_50005813", + "_Ruby": "EMBLEM_PHONETIC_50005813", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005813, + "_Gettext": "EMBLEM_DETAIL_50005813", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005814, + "_Title": "EMBLEM_NAME_50005814", + "_Ruby": "EMBLEM_PHONETIC_50005814", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005814, + "_Gettext": "EMBLEM_DETAIL_50005814", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005815, + "_Title": "EMBLEM_NAME_50005815", + "_Ruby": "EMBLEM_PHONETIC_50005815", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005815, + "_Gettext": "EMBLEM_DETAIL_50005815", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005816, + "_Title": "EMBLEM_NAME_50005816", + "_Ruby": "EMBLEM_PHONETIC_50005816", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005816, + "_Gettext": "EMBLEM_DETAIL_50005816", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005817, + "_Title": "EMBLEM_NAME_50005817", + "_Ruby": "EMBLEM_PHONETIC_50005817", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005817, + "_Gettext": "EMBLEM_DETAIL_50005817", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005818, + "_Title": "EMBLEM_NAME_50005818", + "_Ruby": "EMBLEM_PHONETIC_50005818", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005818, + "_Gettext": "EMBLEM_DETAIL_50005818", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005819, + "_Title": "EMBLEM_NAME_50005819", + "_Ruby": "EMBLEM_PHONETIC_50005819", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005819, + "_Gettext": "EMBLEM_DETAIL_50005819", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005820, + "_Title": "EMBLEM_NAME_50005820", + "_Ruby": "EMBLEM_PHONETIC_50005820", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005820, + "_Gettext": "EMBLEM_DETAIL_50005820", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005821, + "_Title": "EMBLEM_NAME_50005821", + "_Ruby": "EMBLEM_PHONETIC_50005821", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005821, + "_Gettext": "EMBLEM_DETAIL_50005821", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005822, + "_Title": "EMBLEM_NAME_50005822", + "_Ruby": "EMBLEM_PHONETIC_50005822", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005822, + "_Gettext": "EMBLEM_DETAIL_50005822", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005823, + "_Title": "EMBLEM_NAME_50005823", + "_Ruby": "EMBLEM_PHONETIC_50005823", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005823, + "_Gettext": "EMBLEM_DETAIL_50005823", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005824, + "_Title": "EMBLEM_NAME_50005824", + "_Ruby": "EMBLEM_PHONETIC_50005824", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005824, + "_Gettext": "EMBLEM_DETAIL_50005824", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005825, + "_Title": "EMBLEM_NAME_50005825", + "_Ruby": "EMBLEM_PHONETIC_50005825", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005825, + "_Gettext": "EMBLEM_DETAIL_50005825", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005826, + "_Title": "EMBLEM_NAME_50005826", + "_Ruby": "EMBLEM_PHONETIC_50005826", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005826, + "_Gettext": "EMBLEM_DETAIL_50005826", + "_DuplicateEntityType": 23, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 50 + }, + { + "_Id": 50005901, + "_Title": "EMBLEM_NAME_50005901", + "_Ruby": "EMBLEM_PHONETIC_50005901", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005901, + "_Gettext": "EMBLEM_DETAIL_50005901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005902, + "_Title": "EMBLEM_NAME_50005902", + "_Ruby": "EMBLEM_PHONETIC_50005902", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005902, + "_Gettext": "EMBLEM_DETAIL_50005902", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005903, + "_Title": "EMBLEM_NAME_50005903", + "_Ruby": "EMBLEM_PHONETIC_50005903", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50005903, + "_Gettext": "EMBLEM_DETAIL_50005903", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005904, + "_Title": "EMBLEM_NAME_50005904", + "_Ruby": "EMBLEM_PHONETIC_50005904", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005904, + "_Gettext": "EMBLEM_DETAIL_50005904", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005905, + "_Title": "EMBLEM_NAME_50005905", + "_Ruby": "EMBLEM_PHONETIC_50005905", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005905, + "_Gettext": "EMBLEM_DETAIL_50005905", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005906, + "_Title": "EMBLEM_NAME_50005906", + "_Ruby": "EMBLEM_PHONETIC_50005906", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005906, + "_Gettext": "EMBLEM_DETAIL_50005906", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005907, + "_Title": "EMBLEM_NAME_50005907", + "_Ruby": "EMBLEM_PHONETIC_50005907", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005907, + "_Gettext": "EMBLEM_DETAIL_50005907", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005908, + "_Title": "EMBLEM_NAME_50005908", + "_Ruby": "EMBLEM_PHONETIC_50005908", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005908, + "_Gettext": "EMBLEM_DETAIL_50005908", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50005909, + "_Title": "EMBLEM_NAME_50005909", + "_Ruby": "EMBLEM_PHONETIC_50005909", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50005909, + "_Gettext": "EMBLEM_DETAIL_50005909", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006001, + "_Title": "EMBLEM_NAME_50006001", + "_Ruby": "EMBLEM_PHONETIC_50006001", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006001, + "_Gettext": "EMBLEM_DETAIL_50006001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006002, + "_Title": "EMBLEM_NAME_50006002", + "_Ruby": "EMBLEM_PHONETIC_50006002", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006002, + "_Gettext": "EMBLEM_DETAIL_50006002", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006003, + "_Title": "EMBLEM_NAME_50006003", + "_Ruby": "EMBLEM_PHONETIC_50006003", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006003, + "_Gettext": "EMBLEM_DETAIL_50006003", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006004, + "_Title": "EMBLEM_NAME_50006004", + "_Ruby": "EMBLEM_PHONETIC_50006004", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006004, + "_Gettext": "EMBLEM_DETAIL_50006004", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006005, + "_Title": "EMBLEM_NAME_50006005", + "_Ruby": "EMBLEM_PHONETIC_50006005", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006005, + "_Gettext": "EMBLEM_DETAIL_50006005", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006006, + "_Title": "EMBLEM_NAME_50006006", + "_Ruby": "EMBLEM_PHONETIC_50006006", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006006, + "_Gettext": "EMBLEM_DETAIL_50006006", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006007, + "_Title": "EMBLEM_NAME_50006007", + "_Ruby": "EMBLEM_PHONETIC_50006007", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006007, + "_Gettext": "EMBLEM_DETAIL_50006007", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006008, + "_Title": "EMBLEM_NAME_50006008", + "_Ruby": "EMBLEM_PHONETIC_50006008", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006008, + "_Gettext": "EMBLEM_DETAIL_50006008", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006009, + "_Title": "EMBLEM_NAME_50006009", + "_Ruby": "EMBLEM_PHONETIC_50006009", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006009, + "_Gettext": "EMBLEM_DETAIL_50006009", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006101, + "_Title": "EMBLEM_NAME_50006101", + "_Ruby": "EMBLEM_PHONETIC_50006101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006101, + "_Gettext": "EMBLEM_DETAIL_50006101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006102, + "_Title": "EMBLEM_NAME_50006102", + "_Ruby": "EMBLEM_PHONETIC_50006102", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006102, + "_Gettext": "EMBLEM_DETAIL_50006102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006103, + "_Title": "EMBLEM_NAME_50006103", + "_Ruby": "EMBLEM_PHONETIC_50006103", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006103, + "_Gettext": "EMBLEM_DETAIL_50006103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006104, + "_Title": "EMBLEM_NAME_50006104", + "_Ruby": "EMBLEM_PHONETIC_50006104", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006104, + "_Gettext": "EMBLEM_DETAIL_50006104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006105, + "_Title": "EMBLEM_NAME_50006105", + "_Ruby": "EMBLEM_PHONETIC_50006105", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006105, + "_Gettext": "EMBLEM_DETAIL_50006105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006106, + "_Title": "EMBLEM_NAME_50006106", + "_Ruby": "EMBLEM_PHONETIC_50006106", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006106, + "_Gettext": "EMBLEM_DETAIL_50006106", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006107, + "_Title": "EMBLEM_NAME_50006107", + "_Ruby": "EMBLEM_PHONETIC_50006107", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006107, + "_Gettext": "EMBLEM_DETAIL_50006107", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006108, + "_Title": "EMBLEM_NAME_50006108", + "_Ruby": "EMBLEM_PHONETIC_50006108", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006108, + "_Gettext": "EMBLEM_DETAIL_50006108", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006109, + "_Title": "EMBLEM_NAME_50006109", + "_Ruby": "EMBLEM_PHONETIC_50006109", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006109, + "_Gettext": "EMBLEM_DETAIL_50006109", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006201, + "_Title": "EMBLEM_NAME_50006201", + "_Ruby": "EMBLEM_PHONETIC_50006201", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006201, + "_Gettext": "EMBLEM_DETAIL_50006201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006202, + "_Title": "EMBLEM_NAME_50006202", + "_Ruby": "EMBLEM_PHONETIC_50006202", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006202, + "_Gettext": "EMBLEM_DETAIL_50006202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006203, + "_Title": "EMBLEM_NAME_50006203", + "_Ruby": "EMBLEM_PHONETIC_50006203", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006203, + "_Gettext": "EMBLEM_DETAIL_50006203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006204, + "_Title": "EMBLEM_NAME_50006204", + "_Ruby": "EMBLEM_PHONETIC_50006204", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006204, + "_Gettext": "EMBLEM_DETAIL_50006204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006205, + "_Title": "EMBLEM_NAME_50006205", + "_Ruby": "EMBLEM_PHONETIC_50006205", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006205, + "_Gettext": "EMBLEM_DETAIL_50006205", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006206, + "_Title": "EMBLEM_NAME_50006206", + "_Ruby": "EMBLEM_PHONETIC_50006206", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006206, + "_Gettext": "EMBLEM_DETAIL_50006206", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006207, + "_Title": "EMBLEM_NAME_50006207", + "_Ruby": "EMBLEM_PHONETIC_50006207", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006207, + "_Gettext": "EMBLEM_DETAIL_50006207", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006208, + "_Title": "EMBLEM_NAME_50006208", + "_Ruby": "EMBLEM_PHONETIC_50006208", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006208, + "_Gettext": "EMBLEM_DETAIL_50006208", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006209, + "_Title": "EMBLEM_NAME_50006209", + "_Ruby": "EMBLEM_PHONETIC_50006209", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006209, + "_Gettext": "EMBLEM_DETAIL_50006209", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006301, + "_Title": "EMBLEM_NAME_50006301", + "_Ruby": "EMBLEM_PHONETIC_50006301", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006301, + "_Gettext": "EMBLEM_DETAIL_50006301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006302, + "_Title": "EMBLEM_NAME_50006302", + "_Ruby": "EMBLEM_PHONETIC_50006302", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006302, + "_Gettext": "EMBLEM_DETAIL_50006302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006303, + "_Title": "EMBLEM_NAME_50006303", + "_Ruby": "EMBLEM_PHONETIC_50006303", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006303, + "_Gettext": "EMBLEM_DETAIL_50006303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006304, + "_Title": "EMBLEM_NAME_50006304", + "_Ruby": "EMBLEM_PHONETIC_50006304", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006304, + "_Gettext": "EMBLEM_DETAIL_50006304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006305, + "_Title": "EMBLEM_NAME_50006305", + "_Ruby": "EMBLEM_PHONETIC_50006305", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006305, + "_Gettext": "EMBLEM_DETAIL_50006305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006306, + "_Title": "EMBLEM_NAME_50006306", + "_Ruby": "EMBLEM_PHONETIC_50006306", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006306, + "_Gettext": "EMBLEM_DETAIL_50006306", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006307, + "_Title": "EMBLEM_NAME_50006307", + "_Ruby": "EMBLEM_PHONETIC_50006307", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006307, + "_Gettext": "EMBLEM_DETAIL_50006307", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006308, + "_Title": "EMBLEM_NAME_50006308", + "_Ruby": "EMBLEM_PHONETIC_50006308", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006308, + "_Gettext": "EMBLEM_DETAIL_50006308", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006309, + "_Title": "EMBLEM_NAME_50006309", + "_Ruby": "EMBLEM_PHONETIC_50006309", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006309, + "_Gettext": "EMBLEM_DETAIL_50006309", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006401, + "_Title": "EMBLEM_NAME_50006401", + "_Ruby": "EMBLEM_PHONETIC_50006401", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006401, + "_Gettext": "EMBLEM_DETAIL_50006401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006402, + "_Title": "EMBLEM_NAME_50006402", + "_Ruby": "EMBLEM_PHONETIC_50006402", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006402, + "_Gettext": "EMBLEM_DETAIL_50006402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006403, + "_Title": "EMBLEM_NAME_50006403", + "_Ruby": "EMBLEM_PHONETIC_50006403", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006403, + "_Gettext": "EMBLEM_DETAIL_50006403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006404, + "_Title": "EMBLEM_NAME_50006404", + "_Ruby": "EMBLEM_PHONETIC_50006404", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006404, + "_Gettext": "EMBLEM_DETAIL_50006404", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006405, + "_Title": "EMBLEM_NAME_50006405", + "_Ruby": "EMBLEM_PHONETIC_50006405", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006405, + "_Gettext": "EMBLEM_DETAIL_50006405", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006406, + "_Title": "EMBLEM_NAME_50006406", + "_Ruby": "EMBLEM_PHONETIC_50006406", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006406, + "_Gettext": "EMBLEM_DETAIL_50006406", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006407, + "_Title": "EMBLEM_NAME_50006407", + "_Ruby": "EMBLEM_PHONETIC_50006407", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006407, + "_Gettext": "EMBLEM_DETAIL_50006407", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006408, + "_Title": "EMBLEM_NAME_50006408", + "_Ruby": "EMBLEM_PHONETIC_50006408", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006408, + "_Gettext": "EMBLEM_DETAIL_50006408", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006409, + "_Title": "EMBLEM_NAME_50006409", + "_Ruby": "EMBLEM_PHONETIC_50006409", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006409, + "_Gettext": "EMBLEM_DETAIL_50006409", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006501, + "_Title": "EMBLEM_NAME_50006501", + "_Ruby": "EMBLEM_PHONETIC_50006501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006501, + "_Gettext": "EMBLEM_DETAIL_50006501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006502, + "_Title": "EMBLEM_NAME_50006502", + "_Ruby": "EMBLEM_PHONETIC_50006502", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006502, + "_Gettext": "EMBLEM_DETAIL_50006502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006503, + "_Title": "EMBLEM_NAME_50006503", + "_Ruby": "EMBLEM_PHONETIC_50006503", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006503, + "_Gettext": "EMBLEM_DETAIL_50006503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006504, + "_Title": "EMBLEM_NAME_50006504", + "_Ruby": "EMBLEM_PHONETIC_50006504", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006504, + "_Gettext": "EMBLEM_DETAIL_50006504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006505, + "_Title": "EMBLEM_NAME_50006505", + "_Ruby": "EMBLEM_PHONETIC_50006505", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006505, + "_Gettext": "EMBLEM_DETAIL_50006505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006506, + "_Title": "EMBLEM_NAME_50006506", + "_Ruby": "EMBLEM_PHONETIC_50006506", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006506, + "_Gettext": "EMBLEM_DETAIL_50006506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006507, + "_Title": "EMBLEM_NAME_50006507", + "_Ruby": "EMBLEM_PHONETIC_50006507", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006507, + "_Gettext": "EMBLEM_DETAIL_50006507", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006508, + "_Title": "EMBLEM_NAME_50006508", + "_Ruby": "EMBLEM_PHONETIC_50006508", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006508, + "_Gettext": "EMBLEM_DETAIL_50006508", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006509, + "_Title": "EMBLEM_NAME_50006509", + "_Ruby": "EMBLEM_PHONETIC_50006509", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006509, + "_Gettext": "EMBLEM_DETAIL_50006509", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006601, + "_Title": "EMBLEM_NAME_50006601", + "_Ruby": "EMBLEM_PHONETIC_50006601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006601, + "_Gettext": "EMBLEM_DETAIL_50006601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006602, + "_Title": "EMBLEM_NAME_50006602", + "_Ruby": "EMBLEM_PHONETIC_50006602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006602, + "_Gettext": "EMBLEM_DETAIL_50006602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006603, + "_Title": "EMBLEM_NAME_50006603", + "_Ruby": "EMBLEM_PHONETIC_50006603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006603, + "_Gettext": "EMBLEM_DETAIL_50006603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006604, + "_Title": "EMBLEM_NAME_50006604", + "_Ruby": "EMBLEM_PHONETIC_50006604", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006604, + "_Gettext": "EMBLEM_DETAIL_50006604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006605, + "_Title": "EMBLEM_NAME_50006605", + "_Ruby": "EMBLEM_PHONETIC_50006605", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006605, + "_Gettext": "EMBLEM_DETAIL_50006605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006606, + "_Title": "EMBLEM_NAME_50006606", + "_Ruby": "EMBLEM_PHONETIC_50006606", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006606, + "_Gettext": "EMBLEM_DETAIL_50006606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006607, + "_Title": "EMBLEM_NAME_50006607", + "_Ruby": "EMBLEM_PHONETIC_50006607", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006607, + "_Gettext": "EMBLEM_DETAIL_50006607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006608, + "_Title": "EMBLEM_NAME_50006608", + "_Ruby": "EMBLEM_PHONETIC_50006608", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006608, + "_Gettext": "EMBLEM_DETAIL_50006608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006609, + "_Title": "EMBLEM_NAME_50006609", + "_Ruby": "EMBLEM_PHONETIC_50006609", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006609, + "_Gettext": "EMBLEM_DETAIL_50006609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006701, + "_Title": "EMBLEM_NAME_50006701", + "_Ruby": "EMBLEM_PHONETIC_50006701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006701, + "_Gettext": "EMBLEM_DETAIL_50006701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006702, + "_Title": "EMBLEM_NAME_50006702", + "_Ruby": "EMBLEM_PHONETIC_50006702", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006702, + "_Gettext": "EMBLEM_DETAIL_50006702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006703, + "_Title": "EMBLEM_NAME_50006703", + "_Ruby": "EMBLEM_PHONETIC_50006703", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006703, + "_Gettext": "EMBLEM_DETAIL_50006703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006704, + "_Title": "EMBLEM_NAME_50006704", + "_Ruby": "EMBLEM_PHONETIC_50006704", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006704, + "_Gettext": "EMBLEM_DETAIL_50006704", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006705, + "_Title": "EMBLEM_NAME_50006705", + "_Ruby": "EMBLEM_PHONETIC_50006705", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006705, + "_Gettext": "EMBLEM_DETAIL_50006705", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006706, + "_Title": "EMBLEM_NAME_50006706", + "_Ruby": "EMBLEM_PHONETIC_50006706", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006706, + "_Gettext": "EMBLEM_DETAIL_50006706", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006707, + "_Title": "EMBLEM_NAME_50006707", + "_Ruby": "EMBLEM_PHONETIC_50006707", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006707, + "_Gettext": "EMBLEM_DETAIL_50006707", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006708, + "_Title": "EMBLEM_NAME_50006708", + "_Ruby": "EMBLEM_PHONETIC_50006708", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006708, + "_Gettext": "EMBLEM_DETAIL_50006708", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006709, + "_Title": "EMBLEM_NAME_50006709", + "_Ruby": "EMBLEM_PHONETIC_50006709", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006709, + "_Gettext": "EMBLEM_DETAIL_50006709", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006801, + "_Title": "EMBLEM_NAME_50006801", + "_Ruby": "EMBLEM_PHONETIC_50006801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006801, + "_Gettext": "EMBLEM_DETAIL_50006801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006802, + "_Title": "EMBLEM_NAME_50006802", + "_Ruby": "EMBLEM_PHONETIC_50006802", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006802, + "_Gettext": "EMBLEM_DETAIL_50006802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006803, + "_Title": "EMBLEM_NAME_50006803", + "_Ruby": "EMBLEM_PHONETIC_50006803", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006803, + "_Gettext": "EMBLEM_DETAIL_50006803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006804, + "_Title": "EMBLEM_NAME_50006804", + "_Ruby": "EMBLEM_PHONETIC_50006804", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006804, + "_Gettext": "EMBLEM_DETAIL_50006804", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006805, + "_Title": "EMBLEM_NAME_50006805", + "_Ruby": "EMBLEM_PHONETIC_50006805", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006805, + "_Gettext": "EMBLEM_DETAIL_50006805", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006806, + "_Title": "EMBLEM_NAME_50006806", + "_Ruby": "EMBLEM_PHONETIC_50006806", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006806, + "_Gettext": "EMBLEM_DETAIL_50006806", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006807, + "_Title": "EMBLEM_NAME_50006807", + "_Ruby": "EMBLEM_PHONETIC_50006807", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006807, + "_Gettext": "EMBLEM_DETAIL_50006807", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006808, + "_Title": "EMBLEM_NAME_50006808", + "_Ruby": "EMBLEM_PHONETIC_50006808", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006808, + "_Gettext": "EMBLEM_DETAIL_50006808", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006809, + "_Title": "EMBLEM_NAME_50006809", + "_Ruby": "EMBLEM_PHONETIC_50006809", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50006809, + "_Gettext": "EMBLEM_DETAIL_50006809", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006901, + "_Title": "EMBLEM_NAME_50006901", + "_Ruby": "EMBLEM_PHONETIC_50006901", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006901, + "_Gettext": "EMBLEM_DETAIL_50006901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006902, + "_Title": "EMBLEM_NAME_50006902", + "_Ruby": "EMBLEM_PHONETIC_50006902", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006902, + "_Gettext": "EMBLEM_DETAIL_50006902", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006903, + "_Title": "EMBLEM_NAME_50006903", + "_Ruby": "EMBLEM_PHONETIC_50006903", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006903, + "_Gettext": "EMBLEM_DETAIL_50006903", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006904, + "_Title": "EMBLEM_NAME_50006904", + "_Ruby": "EMBLEM_PHONETIC_50006904", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006904, + "_Gettext": "EMBLEM_DETAIL_50006904", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50006905, + "_Title": "EMBLEM_NAME_50006905", + "_Ruby": "EMBLEM_PHONETIC_50006905", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50006905, + "_Gettext": "EMBLEM_DETAIL_50006905", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007001, + "_Title": "EMBLEM_NAME_50007001", + "_Ruby": "EMBLEM_PHONETIC_50007001", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007001, + "_Gettext": "EMBLEM_DETAIL_50007001", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007101, + "_Title": "EMBLEM_NAME_50007101", + "_Ruby": "EMBLEM_PHONETIC_50007101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007101, + "_Gettext": "EMBLEM_DETAIL_50007101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007102, + "_Title": "EMBLEM_NAME_50007102", + "_Ruby": "EMBLEM_PHONETIC_50007102", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007102, + "_Gettext": "EMBLEM_DETAIL_50007102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007103, + "_Title": "EMBLEM_NAME_50007103", + "_Ruby": "EMBLEM_PHONETIC_50007103", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007103, + "_Gettext": "EMBLEM_DETAIL_50007103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007104, + "_Title": "EMBLEM_NAME_50007104", + "_Ruby": "EMBLEM_PHONETIC_50007104", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007104, + "_Gettext": "EMBLEM_DETAIL_50007104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007105, + "_Title": "EMBLEM_NAME_50007105", + "_Ruby": "EMBLEM_PHONETIC_50007105", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007105, + "_Gettext": "EMBLEM_DETAIL_50007105", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007201, + "_Title": "EMBLEM_NAME_50007201", + "_Ruby": "EMBLEM_PHONETIC_50007201", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007201, + "_Gettext": "EMBLEM_DETAIL_50007201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007301, + "_Title": "EMBLEM_NAME_50007301", + "_Ruby": "EMBLEM_PHONETIC_50007301", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007301, + "_Gettext": "EMBLEM_DETAIL_50007301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007302, + "_Title": "EMBLEM_NAME_50007302", + "_Ruby": "EMBLEM_PHONETIC_50007302", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007302, + "_Gettext": "EMBLEM_DETAIL_50007302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007303, + "_Title": "EMBLEM_NAME_50007303", + "_Ruby": "EMBLEM_PHONETIC_50007303", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007303, + "_Gettext": "EMBLEM_DETAIL_50007303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007304, + "_Title": "EMBLEM_NAME_50007304", + "_Ruby": "EMBLEM_PHONETIC_50007304", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007304, + "_Gettext": "EMBLEM_DETAIL_50007304", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007305, + "_Title": "EMBLEM_NAME_50007305", + "_Ruby": "EMBLEM_PHONETIC_50007305", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007305, + "_Gettext": "EMBLEM_DETAIL_50007305", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007401, + "_Title": "EMBLEM_NAME_50007401", + "_Ruby": "EMBLEM_PHONETIC_50007401", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007401, + "_Gettext": "EMBLEM_DETAIL_50007401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007501, + "_Title": "EMBLEM_NAME_50007501", + "_Ruby": "EMBLEM_PHONETIC_50007501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007501, + "_Gettext": "EMBLEM_DETAIL_50007501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007502, + "_Title": "EMBLEM_NAME_50007502", + "_Ruby": "EMBLEM_PHONETIC_50007502", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007502, + "_Gettext": "EMBLEM_DETAIL_50007502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007503, + "_Title": "EMBLEM_NAME_50007503", + "_Ruby": "EMBLEM_PHONETIC_50007503", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007503, + "_Gettext": "EMBLEM_DETAIL_50007503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007504, + "_Title": "EMBLEM_NAME_50007504", + "_Ruby": "EMBLEM_PHONETIC_50007504", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007504, + "_Gettext": "EMBLEM_DETAIL_50007504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007505, + "_Title": "EMBLEM_NAME_50007505", + "_Ruby": "EMBLEM_PHONETIC_50007505", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007505, + "_Gettext": "EMBLEM_DETAIL_50007505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007601, + "_Title": "EMBLEM_NAME_50007601", + "_Ruby": "EMBLEM_PHONETIC_50007601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007601, + "_Gettext": "EMBLEM_DETAIL_50007601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007701, + "_Title": "EMBLEM_NAME_50007701", + "_Ruby": "EMBLEM_PHONETIC_50007701", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007701, + "_Gettext": "EMBLEM_DETAIL_50007701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007702, + "_Title": "EMBLEM_NAME_50007702", + "_Ruby": "EMBLEM_PHONETIC_50007702", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007702, + "_Gettext": "EMBLEM_DETAIL_50007702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007703, + "_Title": "EMBLEM_NAME_50007703", + "_Ruby": "EMBLEM_PHONETIC_50007703", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007703, + "_Gettext": "EMBLEM_DETAIL_50007703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007704, + "_Title": "EMBLEM_NAME_50007704", + "_Ruby": "EMBLEM_PHONETIC_50007704", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007704, + "_Gettext": "EMBLEM_DETAIL_50007704", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007705, + "_Title": "EMBLEM_NAME_50007705", + "_Ruby": "EMBLEM_PHONETIC_50007705", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007705, + "_Gettext": "EMBLEM_DETAIL_50007705", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007706, + "_Title": "EMBLEM_NAME_50007706", + "_Ruby": "EMBLEM_PHONETIC_50007706", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007706, + "_Gettext": "EMBLEM_DETAIL_50007706", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007707, + "_Title": "EMBLEM_NAME_50007707", + "_Ruby": "EMBLEM_PHONETIC_50007707", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007707, + "_Gettext": "EMBLEM_DETAIL_50007707", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007708, + "_Title": "EMBLEM_NAME_50007708", + "_Ruby": "EMBLEM_PHONETIC_50007708", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007708, + "_Gettext": "EMBLEM_DETAIL_50007708", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007709, + "_Title": "EMBLEM_NAME_50007709", + "_Ruby": "EMBLEM_PHONETIC_50007709", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007709, + "_Gettext": "EMBLEM_DETAIL_50007709", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007801, + "_Title": "EMBLEM_NAME_50007801", + "_Ruby": "EMBLEM_PHONETIC_50007801", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007801, + "_Gettext": "EMBLEM_DETAIL_50007801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007802, + "_Title": "EMBLEM_NAME_50007802", + "_Ruby": "EMBLEM_PHONETIC_50007802", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007802, + "_Gettext": "EMBLEM_DETAIL_50007802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007803, + "_Title": "EMBLEM_NAME_50007803", + "_Ruby": "EMBLEM_PHONETIC_50007803", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007803, + "_Gettext": "EMBLEM_DETAIL_50007803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007804, + "_Title": "EMBLEM_NAME_50007804", + "_Ruby": "EMBLEM_PHONETIC_50007804", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007804, + "_Gettext": "EMBLEM_DETAIL_50007804", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007805, + "_Title": "EMBLEM_NAME_50007805", + "_Ruby": "EMBLEM_PHONETIC_50007805", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007805, + "_Gettext": "EMBLEM_DETAIL_50007805", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007806, + "_Title": "EMBLEM_NAME_50007806", + "_Ruby": "EMBLEM_PHONETIC_50007806", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007806, + "_Gettext": "EMBLEM_DETAIL_50007806", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007807, + "_Title": "EMBLEM_NAME_50007807", + "_Ruby": "EMBLEM_PHONETIC_50007807", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007807, + "_Gettext": "EMBLEM_DETAIL_50007807", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007808, + "_Title": "EMBLEM_NAME_50007808", + "_Ruby": "EMBLEM_PHONETIC_50007808", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007808, + "_Gettext": "EMBLEM_DETAIL_50007808", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007809, + "_Title": "EMBLEM_NAME_50007809", + "_Ruby": "EMBLEM_PHONETIC_50007809", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007809, + "_Gettext": "EMBLEM_DETAIL_50007809", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007901, + "_Title": "EMBLEM_NAME_50006501", + "_Ruby": "EMBLEM_PHONETIC_50006501", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007901, + "_Gettext": "EMBLEM_DETAIL_50006501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007902, + "_Title": "EMBLEM_NAME_50006502", + "_Ruby": "EMBLEM_PHONETIC_50006502", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007902, + "_Gettext": "EMBLEM_DETAIL_50006502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007903, + "_Title": "EMBLEM_NAME_50006503", + "_Ruby": "EMBLEM_PHONETIC_50006503", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50007903, + "_Gettext": "EMBLEM_DETAIL_50006503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007904, + "_Title": "EMBLEM_NAME_50006504", + "_Ruby": "EMBLEM_PHONETIC_50006504", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007904, + "_Gettext": "EMBLEM_DETAIL_50006504", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007905, + "_Title": "EMBLEM_NAME_50006505", + "_Ruby": "EMBLEM_PHONETIC_50006505", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007905, + "_Gettext": "EMBLEM_DETAIL_50006505", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007906, + "_Title": "EMBLEM_NAME_50006506", + "_Ruby": "EMBLEM_PHONETIC_50006506", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007906, + "_Gettext": "EMBLEM_DETAIL_50006506", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007907, + "_Title": "EMBLEM_NAME_50006507", + "_Ruby": "EMBLEM_PHONETIC_50006507", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007907, + "_Gettext": "EMBLEM_DETAIL_50006507", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007908, + "_Title": "EMBLEM_NAME_50006508", + "_Ruby": "EMBLEM_PHONETIC_50006508", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007908, + "_Gettext": "EMBLEM_DETAIL_50006508", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50007909, + "_Title": "EMBLEM_NAME_50006509", + "_Ruby": "EMBLEM_PHONETIC_50006509", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50007909, + "_Gettext": "EMBLEM_DETAIL_50006509", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008001, + "_Title": "EMBLEM_NAME_50006601", + "_Ruby": "EMBLEM_PHONETIC_50006601", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50008001, + "_Gettext": "EMBLEM_DETAIL_50006601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008002, + "_Title": "EMBLEM_NAME_50006602", + "_Ruby": "EMBLEM_PHONETIC_50006602", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50008002, + "_Gettext": "EMBLEM_DETAIL_50006602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008003, + "_Title": "EMBLEM_NAME_50006603", + "_Ruby": "EMBLEM_PHONETIC_50006603", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 50008003, + "_Gettext": "EMBLEM_DETAIL_50006603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008004, + "_Title": "EMBLEM_NAME_50006604", + "_Ruby": "EMBLEM_PHONETIC_50006604", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008004, + "_Gettext": "EMBLEM_DETAIL_50006604", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008005, + "_Title": "EMBLEM_NAME_50006605", + "_Ruby": "EMBLEM_PHONETIC_50006605", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008005, + "_Gettext": "EMBLEM_DETAIL_50006605", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008006, + "_Title": "EMBLEM_NAME_50006606", + "_Ruby": "EMBLEM_PHONETIC_50006606", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008006, + "_Gettext": "EMBLEM_DETAIL_50006606", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008007, + "_Title": "EMBLEM_NAME_50006607", + "_Ruby": "EMBLEM_PHONETIC_50006607", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008007, + "_Gettext": "EMBLEM_DETAIL_50006607", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008008, + "_Title": "EMBLEM_NAME_50006608", + "_Ruby": "EMBLEM_PHONETIC_50006608", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008008, + "_Gettext": "EMBLEM_DETAIL_50006608", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 50008009, + "_Title": "EMBLEM_NAME_50006609", + "_Ruby": "EMBLEM_PHONETIC_50006609", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 50008009, + "_Gettext": "EMBLEM_DETAIL_50006609", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010101, + "_Title": "EMBLEM_NAME_51010101", + "_Ruby": "EMBLEM_PHONETIC_51010101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51010101, + "_Gettext": "EMBLEM_DETAIL_51010101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010102, + "_Title": "EMBLEM_NAME_51010102", + "_Ruby": "EMBLEM_PHONETIC_51010102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51010102, + "_Gettext": "EMBLEM_DETAIL_51010102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010103, + "_Title": "EMBLEM_NAME_51010103", + "_Ruby": "EMBLEM_PHONETIC_51010103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51010103, + "_Gettext": "EMBLEM_DETAIL_51010103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010201, + "_Title": "EMBLEM_NAME_51010201", + "_Ruby": "EMBLEM_PHONETIC_51010201", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51010201, + "_Gettext": "EMBLEM_DETAIL_51010201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010202, + "_Title": "EMBLEM_NAME_51010202", + "_Ruby": "EMBLEM_PHONETIC_51010202", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51010202, + "_Gettext": "EMBLEM_DETAIL_51010202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010203, + "_Title": "EMBLEM_NAME_51010203", + "_Ruby": "EMBLEM_PHONETIC_51010203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51010203, + "_Gettext": "EMBLEM_DETAIL_51010203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010301, + "_Title": "EMBLEM_NAME_51010301", + "_Ruby": "EMBLEM_PHONETIC_51010301", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51010301, + "_Gettext": "EMBLEM_DETAIL_51010301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010302, + "_Title": "EMBLEM_NAME_51010302", + "_Ruby": "EMBLEM_PHONETIC_51010302", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51010302, + "_Gettext": "EMBLEM_DETAIL_51010302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010303, + "_Title": "EMBLEM_NAME_51010303", + "_Ruby": "EMBLEM_PHONETIC_51010303", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51010303, + "_Gettext": "EMBLEM_DETAIL_51010303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010401, + "_Title": "EMBLEM_NAME_51010401", + "_Ruby": "EMBLEM_PHONETIC_51010401", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51010401, + "_Gettext": "EMBLEM_DETAIL_51010401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010402, + "_Title": "EMBLEM_NAME_51010402", + "_Ruby": "EMBLEM_PHONETIC_51010402", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51010402, + "_Gettext": "EMBLEM_DETAIL_51010402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010403, + "_Title": "EMBLEM_NAME_51010403", + "_Ruby": "EMBLEM_PHONETIC_51010403", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51010403, + "_Gettext": "EMBLEM_DETAIL_51010403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010501, + "_Title": "EMBLEM_NAME_51010501", + "_Ruby": "EMBLEM_PHONETIC_51010501", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51010501, + "_Gettext": "EMBLEM_DETAIL_51010501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010502, + "_Title": "EMBLEM_NAME_51010502", + "_Ruby": "EMBLEM_PHONETIC_51010502", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51010502, + "_Gettext": "EMBLEM_DETAIL_51010502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51010503, + "_Title": "EMBLEM_NAME_51010503", + "_Ruby": "EMBLEM_PHONETIC_51010503", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51010503, + "_Gettext": "EMBLEM_DETAIL_51010503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030101, + "_Title": "EMBLEM_NAME_51030101", + "_Ruby": "EMBLEM_PHONETIC_51030101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030101, + "_Gettext": "EMBLEM_DETAIL_51030101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030102, + "_Title": "EMBLEM_NAME_51030102", + "_Ruby": "EMBLEM_PHONETIC_51030102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030102, + "_Gettext": "EMBLEM_DETAIL_51030102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030103, + "_Title": "EMBLEM_NAME_51030103", + "_Ruby": "EMBLEM_PHONETIC_51030103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030103, + "_Gettext": "EMBLEM_DETAIL_51030103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030201, + "_Title": "EMBLEM_NAME_51030201", + "_Ruby": "EMBLEM_PHONETIC_51030201", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030201, + "_Gettext": "EMBLEM_DETAIL_51030201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030202, + "_Title": "EMBLEM_NAME_51030202", + "_Ruby": "EMBLEM_PHONETIC_51030202", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030202, + "_Gettext": "EMBLEM_DETAIL_51030202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030203, + "_Title": "EMBLEM_NAME_51030203", + "_Ruby": "EMBLEM_PHONETIC_51030203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030203, + "_Gettext": "EMBLEM_DETAIL_51030203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030301, + "_Title": "EMBLEM_NAME_51030301", + "_Ruby": "EMBLEM_PHONETIC_51030301", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030301, + "_Gettext": "EMBLEM_DETAIL_51030301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030302, + "_Title": "EMBLEM_NAME_51030302", + "_Ruby": "EMBLEM_PHONETIC_51030302", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030302, + "_Gettext": "EMBLEM_DETAIL_51030302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030303, + "_Title": "EMBLEM_NAME_51030303", + "_Ruby": "EMBLEM_PHONETIC_51030303", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030303, + "_Gettext": "EMBLEM_DETAIL_51030303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030401, + "_Title": "EMBLEM_NAME_51030401", + "_Ruby": "EMBLEM_PHONETIC_51030401", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030401, + "_Gettext": "EMBLEM_DETAIL_51030401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030402, + "_Title": "EMBLEM_NAME_51030402", + "_Ruby": "EMBLEM_PHONETIC_51030402", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030402, + "_Gettext": "EMBLEM_DETAIL_51030402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030403, + "_Title": "EMBLEM_NAME_51030403", + "_Ruby": "EMBLEM_PHONETIC_51030403", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030403, + "_Gettext": "EMBLEM_DETAIL_51030403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030501, + "_Title": "EMBLEM_NAME_51030501", + "_Ruby": "EMBLEM_PHONETIC_51030501", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030501, + "_Gettext": "EMBLEM_DETAIL_51030501", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030502, + "_Title": "EMBLEM_NAME_51030502", + "_Ruby": "EMBLEM_PHONETIC_51030502", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030502, + "_Gettext": "EMBLEM_DETAIL_51030502", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030503, + "_Title": "EMBLEM_NAME_51030503", + "_Ruby": "EMBLEM_PHONETIC_51030503", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030503, + "_Gettext": "EMBLEM_DETAIL_51030503", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030601, + "_Title": "EMBLEM_NAME_51030601", + "_Ruby": "EMBLEM_PHONETIC_51030601", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030601, + "_Gettext": "EMBLEM_DETAIL_51030601", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030602, + "_Title": "EMBLEM_NAME_51030602", + "_Ruby": "EMBLEM_PHONETIC_51030602", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030602, + "_Gettext": "EMBLEM_DETAIL_51030602", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030603, + "_Title": "EMBLEM_NAME_51030603", + "_Ruby": "EMBLEM_PHONETIC_51030603", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030603, + "_Gettext": "EMBLEM_DETAIL_51030603", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030701, + "_Title": "EMBLEM_NAME_51030701", + "_Ruby": "EMBLEM_PHONETIC_51030701", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030701, + "_Gettext": "EMBLEM_DETAIL_51030701", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030702, + "_Title": "EMBLEM_NAME_51030702", + "_Ruby": "EMBLEM_PHONETIC_51030702", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030702, + "_Gettext": "EMBLEM_DETAIL_51030702", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030703, + "_Title": "EMBLEM_NAME_51030703", + "_Ruby": "EMBLEM_PHONETIC_51030703", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030703, + "_Gettext": "EMBLEM_DETAIL_51030703", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030801, + "_Title": "EMBLEM_NAME_51030801", + "_Ruby": "EMBLEM_PHONETIC_51030801", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030801, + "_Gettext": "EMBLEM_DETAIL_51030801", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030802, + "_Title": "EMBLEM_NAME_51030802", + "_Ruby": "EMBLEM_PHONETIC_51030802", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030802, + "_Gettext": "EMBLEM_DETAIL_51030802", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030803, + "_Title": "EMBLEM_NAME_51030803", + "_Ruby": "EMBLEM_PHONETIC_51030803", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030803, + "_Gettext": "EMBLEM_DETAIL_51030803", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030901, + "_Title": "EMBLEM_NAME_51030901", + "_Ruby": "EMBLEM_PHONETIC_51030901", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51030901, + "_Gettext": "EMBLEM_DETAIL_51030901", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030902, + "_Title": "EMBLEM_NAME_51030902", + "_Ruby": "EMBLEM_PHONETIC_51030902", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51030902, + "_Gettext": "EMBLEM_DETAIL_51030902", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51030903, + "_Title": "EMBLEM_NAME_51030903", + "_Ruby": "EMBLEM_PHONETIC_51030903", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51030903, + "_Gettext": "EMBLEM_DETAIL_51030903", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050101, + "_Title": "EMBLEM_NAME_51050101", + "_Ruby": "EMBLEM_PHONETIC_51050101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51050101, + "_Gettext": "EMBLEM_DETAIL_51050101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050102, + "_Title": "EMBLEM_NAME_51050102", + "_Ruby": "EMBLEM_PHONETIC_51050102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51050102, + "_Gettext": "EMBLEM_DETAIL_51050102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050103, + "_Title": "EMBLEM_NAME_51050103", + "_Ruby": "EMBLEM_PHONETIC_51050103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51050103, + "_Gettext": "EMBLEM_DETAIL_51050103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050201, + "_Title": "EMBLEM_NAME_51050201", + "_Ruby": "EMBLEM_PHONETIC_51050201", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51050201, + "_Gettext": "EMBLEM_DETAIL_51050201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050202, + "_Title": "EMBLEM_NAME_51050202", + "_Ruby": "EMBLEM_PHONETIC_51050202", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51050202, + "_Gettext": "EMBLEM_DETAIL_51050202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050203, + "_Title": "EMBLEM_NAME_51050203", + "_Ruby": "EMBLEM_PHONETIC_51050203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51050203, + "_Gettext": "EMBLEM_DETAIL_51050203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050301, + "_Title": "EMBLEM_NAME_51050301", + "_Ruby": "EMBLEM_PHONETIC_51050301", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51050301, + "_Gettext": "EMBLEM_DETAIL_51050301", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050302, + "_Title": "EMBLEM_NAME_51050302", + "_Ruby": "EMBLEM_PHONETIC_51050302", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51050302, + "_Gettext": "EMBLEM_DETAIL_51050302", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050303, + "_Title": "EMBLEM_NAME_51050303", + "_Ruby": "EMBLEM_PHONETIC_51050303", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51050303, + "_Gettext": "EMBLEM_DETAIL_51050303", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050401, + "_Title": "EMBLEM_NAME_51050401", + "_Ruby": "EMBLEM_PHONETIC_51050401", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51050401, + "_Gettext": "EMBLEM_DETAIL_51050401", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050402, + "_Title": "EMBLEM_NAME_51050402", + "_Ruby": "EMBLEM_PHONETIC_51050402", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51050402, + "_Gettext": "EMBLEM_DETAIL_51050402", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51050403, + "_Title": "EMBLEM_NAME_51050403", + "_Ruby": "EMBLEM_PHONETIC_51050403", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51050403, + "_Gettext": "EMBLEM_DETAIL_51050403", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070101, + "_Title": "EMBLEM_NAME_51070101", + "_Ruby": "EMBLEM_PHONETIC_51070101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51070101, + "_Gettext": "EMBLEM_DETAIL_51070101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070102, + "_Title": "EMBLEM_NAME_51070102", + "_Ruby": "EMBLEM_PHONETIC_51070102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51070102, + "_Gettext": "EMBLEM_DETAIL_51070102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070103, + "_Title": "EMBLEM_NAME_51070103", + "_Ruby": "EMBLEM_PHONETIC_51070103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51070103, + "_Gettext": "EMBLEM_DETAIL_51070103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070104, + "_Title": "EMBLEM_NAME_51070104", + "_Ruby": "EMBLEM_PHONETIC_51070104", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 51070104, + "_Gettext": "EMBLEM_DETAIL_51070104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070201, + "_Title": "EMBLEM_NAME_51070201", + "_Ruby": "EMBLEM_PHONETIC_51070201", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51070201, + "_Gettext": "EMBLEM_DETAIL_51070201", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070202, + "_Title": "EMBLEM_NAME_51070202", + "_Ruby": "EMBLEM_PHONETIC_51070202", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51070202, + "_Gettext": "EMBLEM_DETAIL_51070202", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070203, + "_Title": "EMBLEM_NAME_51070203", + "_Ruby": "EMBLEM_PHONETIC_51070203", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51070203, + "_Gettext": "EMBLEM_DETAIL_51070203", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51070204, + "_Title": "EMBLEM_NAME_51070204", + "_Ruby": "EMBLEM_PHONETIC_51070204", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 51070204, + "_Gettext": "EMBLEM_DETAIL_51070204", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51080101, + "_Title": "EMBLEM_NAME_51080101", + "_Ruby": "EMBLEM_PHONETIC_51080101", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 51080101, + "_Gettext": "EMBLEM_DETAIL_51080101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51090101, + "_Title": "EMBLEM_NAME_51090101", + "_Ruby": "EMBLEM_PHONETIC_51090101", + "_Rarity": 1, + "_EmblemType": 5, + "_Sortid": 51090101, + "_Gettext": "EMBLEM_DETAIL_51090101", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51090102, + "_Title": "EMBLEM_NAME_51090102", + "_Ruby": "EMBLEM_PHONETIC_51090102", + "_Rarity": 2, + "_EmblemType": 5, + "_Sortid": 51090102, + "_Gettext": "EMBLEM_DETAIL_51090102", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51090103, + "_Title": "EMBLEM_NAME_51090103", + "_Ruby": "EMBLEM_PHONETIC_51090103", + "_Rarity": 3, + "_EmblemType": 5, + "_Sortid": 51090103, + "_Gettext": "EMBLEM_DETAIL_51090103", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + }, + { + "_Id": 51090104, + "_Title": "EMBLEM_NAME_51090104", + "_Ruby": "EMBLEM_PHONETIC_51090104", + "_Rarity": 4, + "_EmblemType": 5, + "_Sortid": 51090104, + "_Gettext": "EMBLEM_DETAIL_51090104", + "_DuplicateEntityType": 0, + "_DuplicateEntityId": 0, + "_DuplicateEntityQuantity": 0 + } +] \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI.Shared/Resources/Missions/MainStoryMissionGroupRewards.json b/DragaliaAPI/DragaliaAPI.Shared/Resources/Missions/MainStoryMissionGroupRewards.json index cca2bfc72..6f0fea309 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/Resources/Missions/MainStoryMissionGroupRewards.json +++ b/DragaliaAPI/DragaliaAPI.Shared/Resources/Missions/MainStoryMissionGroupRewards.json @@ -41,7 +41,28 @@ }, { "_Id": 3, - "_Rewards": [] + "_Rewards": [ + { + "_Type": "Material", + "_Id": 104001043, + "_Quantity": 8 + }, + { + "_Type": "Material", + "_Id": 103001003, + "_Quantity": 60 + }, + { + "_Type": "HustleHammer", + "_Id": 0, + "_Quantity": 4 + }, + { + "_Type": "Rupies", + "_Id": 0, + "_Quantity": 1000000 + } + ] }, { "_Id": 8, diff --git a/DragaliaAPI/DragaliaAPI.Shared/Resources/Story/QuestStoryRewardInfo.json b/DragaliaAPI/DragaliaAPI.Shared/Resources/Story/QuestStoryRewardInfo.json index 2fe93bf5b..5bfd215f7 100644 --- a/DragaliaAPI/DragaliaAPI.Shared/Resources/Story/QuestStoryRewardInfo.json +++ b/DragaliaAPI/DragaliaAPI.Shared/Resources/Story/QuestStoryRewardInfo.json @@ -1,617 +1,727 @@ [ - { - "_Id": 1000103, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10540201, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000106, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10440301, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000111, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10840501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000202, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10640401, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000808, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10340502, - "_Quantity": 1 - }, - { - "_Type": 9, - "_Id": 100601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1001108, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10240101, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1001410, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10750504, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1001610, - "_Rewards": [ - { - "_Type": 1, - "_Id": 10650503, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000109, - "_Rewards": [ - { - "_Type": 7, - "_Id": 20040301, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000210, - "_Rewards": [ - { - "_Type": 7, - "_Id": 20040201, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000311, - "_Rewards": [ - { - "_Type": 7, - "_Id": 20040101, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000412, - "_Rewards": [ - { - "_Type": 7, - "_Id": 20040401, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000509, - "_Rewards": [ - { - "_Type": 7, - "_Id": 20040501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000607, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100603, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000709, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100602, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1000909, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100604, - "_Quantity": 1 - } - ] - }, - { - "_Id": 1001009, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100605, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080101, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080201, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101101, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080301, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080401, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100901, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080601, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080701, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080801, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102001, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2080901, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101101, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081001, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101301, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081101, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081201, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081301, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081401, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102001, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081501, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102401, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081601, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102001, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081701, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081801, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101101, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2081901, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082001, - "_Rewards": [ - { - "_Type": 9, - "_Id": 100901, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082101, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082201, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082301, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082401, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101301, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082501, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082601, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082701, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082801, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2082901, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101301, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083001, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102401, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083101, - "_Rewards": [ - { - "_Type": 9, - "_Id": 101701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083301, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083401, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102901, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083501, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083601, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083701, - "_Rewards": [ - { - "_Type": 9, - "_Id": 103001, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083801, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2083901, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102601, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084001, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084101, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102401, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084201, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102501, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084301, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102701, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084401, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102801, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084501, - "_Rewards": [ - { - "_Type": 9, - "_Id": 102901, - "_Quantity": 1 - } - ] - }, - { - "_Id": 2084601, - "_Rewards": [ - { - "_Type": 9, - "_Id": 103001, - "_Quantity": 1 - } - ] - } -] \ No newline at end of file + { + "_Id": 1000103, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10540201, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000106, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10440301, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000111, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10840501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000202, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10640401, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000808, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10340502, + "_Quantity": 1 + }, + { + "_Type": 9, + "_Id": 100601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1001108, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10240101, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1001410, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10750504, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1001610, + "_Rewards": [ + { + "_Type": 1, + "_Id": 10650503, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000109, + "_Rewards": [ + { + "_Type": 7, + "_Id": 20040301, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000210, + "_Rewards": [ + { + "_Type": 7, + "_Id": 20040201, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000311, + "_Rewards": [ + { + "_Type": 7, + "_Id": 20040101, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000412, + "_Rewards": [ + { + "_Type": 7, + "_Id": 20040401, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000509, + "_Rewards": [ + { + "_Type": 7, + "_Id": 20040501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000607, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100603, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000709, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100602, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1000909, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100604, + "_Quantity": 1 + } + ] + }, + { + "_Id": 1001009, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100605, + "_Quantity": 1 + }, + { + "_Type": 28, + "_Id": 0, + "_Quantity": 350 + }, + { + "_Type": 8, + "_Id": 104001031, + "_Quantity": 76 + }, + { + "_Type": 8, + "_Id": 104001032, + "_Quantity": 1 + }, + { + "_Type": 8, + "_Id": 104001021, + "_Quantity": 86 + }, + { + "_Type": 8, + "_Id": 104001022, + "_Quantity": 3 + }, + { + "_Type": 8, + "_Id": 104001023, + "_Quantity": 1 + }, + { + "_Type": 8, + "_Id": 104001011, + "_Quantity": 116 + }, + { + "_Type": 8, + "_Id": 104001012, + "_Quantity": 7 + }, + { + "_Type": 8, + "_Id": 104001013, + "_Quantity": 2 + }, + { + "_Type": 8, + "_Id": 104001041, + "_Quantity": 270 + }, + { + "_Type": 8, + "_Id": 104001042, + "_Quantity": 15 + }, + { + "_Type": 8, + "_Id": 104001043, + "_Quantity": 3 + }, + { + "_Type": 8, + "_Id": 104001051, + "_Quantity": 66 + }, + { + "_Type": 8, + "_Id": 201005001, + "_Quantity": 87 + }, + { + "_Type": 8, + "_Id": 202004001, + "_Quantity": 18 + }, + { + "_Type": 8, + "_Id": 202001001, + "_Quantity": 25 + }, + { + "_Type": 8, + "_Id": 202001002, + "_Quantity": 10 + }, + { + "_Type": 8, + "_Id": 202002001, + "_Quantity": 25 + }, + { + "_Type": 8, + "_Id": 202002002, + "_Quantity": 10 + }, + { + "_Type": 8, + "_Id": 202003001, + "_Quantity": 25 + }, + { + "_Type": 8, + "_Id": 202003002, + "_Quantity": 10 + }, + { + "_Type": 8, + "_Id": 201009001, + "_Quantity": 2520 + } + ] + }, + { + "_Id": 2080101, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080201, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101101, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080301, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080401, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100901, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080601, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080701, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080801, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102001, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2080901, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101101, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081001, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101301, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081101, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081201, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081301, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081401, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102001, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081501, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102401, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081601, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102001, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081701, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081801, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101101, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2081901, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082001, + "_Rewards": [ + { + "_Type": 9, + "_Id": 100901, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082101, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082201, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082301, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082401, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101301, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082501, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082601, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082701, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082801, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2082901, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101301, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083001, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102401, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083101, + "_Rewards": [ + { + "_Type": 9, + "_Id": 101701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083301, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083401, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102901, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083501, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083601, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083701, + "_Rewards": [ + { + "_Type": 9, + "_Id": 103001, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083801, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2083901, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102601, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084001, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084101, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102401, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084201, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102501, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084301, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102701, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084401, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102801, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084501, + "_Rewards": [ + { + "_Type": 9, + "_Id": 102901, + "_Quantity": 1 + } + ] + }, + { + "_Id": 2084601, + "_Rewards": [ + { + "_Type": 9, + "_Id": 103001, + "_Quantity": 1 + } + ] + } +] diff --git a/DragaliaAPI/DragaliaAPI.Test/Controllers/QuestControllerTest.cs b/DragaliaAPI/DragaliaAPI.Test/Controllers/QuestControllerTest.cs index 8bb0dcad1..6924d1288 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Controllers/QuestControllerTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Controllers/QuestControllerTest.cs @@ -1,9 +1,11 @@ using DragaliaAPI.Features.ClearParty; using DragaliaAPI.Features.Quest; +using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; -using Microsoft.Extensions.Logging; +using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace DragaliaAPI.Test.Controllers; @@ -37,6 +39,16 @@ public QuestControllerTest() [Fact] public async Task ReadStory_ProducesExpectedResponse() { + EntityResult entityResult = + new() + { + NewGetEntityList = new List() + { + new() { EntityType = EntityTypes.Dragon, EntityId = (int)Dragons.BronzeFafnir }, + new() { EntityType = EntityTypes.Chara, EntityId = (int)Charas.Ilia } + } + }; + this.mockStoryService.Setup(x => x.ReadStory(StoryTypes.Quest, 1)) .ReturnsAsync( new List() @@ -56,6 +68,7 @@ public async Task ReadStory_ProducesExpectedResponse() } } ); + this.mockStoryService.Setup(x => x.GetEntityResult()).Returns(entityResult); this.mockUpdateDataService.Setup(x => x.SaveChangesAsync(default)) .ReturnsAsync(new UpdateDataList()); @@ -71,18 +84,7 @@ await this.questController.ReadStory( .BeEquivalentTo( new QuestReadStoryResponse() { - EntityResult = new() - { - NewGetEntityList = new List() - { - new() - { - EntityType = EntityTypes.Dragon, - EntityId = (int)Dragons.BronzeFafnir - }, - new() { EntityType = EntityTypes.Chara, EntityId = (int)Charas.Ilia } - } - }, + EntityResult = entityResult, UpdateDataList = new(), QuestStoryRewardList = new List() { diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Login/ResetHelperTest.cs b/DragaliaAPI/DragaliaAPI.Test/Extensions/ResetTimeProviderExtensionsTest.cs similarity index 84% rename from DragaliaAPI/DragaliaAPI.Test/Features/Login/ResetHelperTest.cs rename to DragaliaAPI/DragaliaAPI.Test/Extensions/ResetTimeProviderExtensionsTest.cs index b23cc6db8..35dec1e25 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Login/ResetHelperTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Extensions/ResetTimeProviderExtensionsTest.cs @@ -1,19 +1,15 @@ -using DragaliaAPI.Helpers; +using DragaliaAPI.Extensions; using Microsoft.Extensions.Time.Testing; -namespace DragaliaAPI.Test.Features.Login; +namespace DragaliaAPI.Test.Extensions; -public class ResetHelperTest +public class ResetTimeProviderExtensionsTest { private readonly FakeTimeProvider fakeTimeProvider; - private readonly IResetHelper resetHelper; - - public ResetHelperTest() + public ResetTimeProviderExtensionsTest() { this.fakeTimeProvider = new(); - - this.resetHelper = new ResetHelper(this.fakeTimeProvider); } /// @@ -112,20 +108,23 @@ public ResetHelperTest() [Theory] [MemberData(nameof(DailyResetData))] - public void LastDailyReset_ReturnsCorrectReset(DateTimeOffset now, DateTimeOffset expectedReset) + public void GetLastDailyReset_ReturnsCorrectReset( + DateTimeOffset now, + DateTimeOffset expectedReset + ) { this.fakeTimeProvider.SetUtcNow(now); this.fakeTimeProvider.SetLocalTimeZone( TimeZoneInfo.FindSystemTimeZoneById("Europe/Berlin") ); - this.resetHelper.LastDailyReset.Should().Be(expectedReset); - this.resetHelper.LastDailyReset.Offset.Should().Be(TimeSpan.Zero); + this.fakeTimeProvider.GetLastDailyReset().Should().Be(expectedReset); + this.fakeTimeProvider.GetLastDailyReset().Offset.Should().Be(TimeSpan.Zero); } [Theory] [MemberData(nameof(DailyResetDayOfWeekData))] - public void LastDailyResetDayOfWeek_ReturnsCorrectResult( + public void GetLastDailyResetDayOfWeek_ReturnsCorrectResult( DateTimeOffset now, DayOfWeek expectedDayOfWeek ) @@ -135,31 +134,31 @@ DayOfWeek expectedDayOfWeek TimeZoneInfo.FindSystemTimeZoneById("Europe/Berlin") ); - this.resetHelper.LastDailyReset.DayOfWeek.Should().Be(expectedDayOfWeek); + this.fakeTimeProvider.GetLastDailyReset().DayOfWeek.Should().Be(expectedDayOfWeek); } [Theory] [MemberData(nameof(WeeklyResetData))] - public void LastWeeklyReset_ReturnsCorrectReset( + public void GetLastWeeklyReset_ReturnsCorrectReset( DateTimeOffset now, DateTimeOffset expectedReset ) { this.fakeTimeProvider.SetUtcNow(now); - this.resetHelper.LastWeeklyReset.Should().Be(expectedReset); + this.fakeTimeProvider.GetLastWeeklyReset().Should().Be(expectedReset); } [Theory] [MemberData(nameof(MonthlyResetData))] - public void LastMonthlyReset_ReturnsCorrectReset( + public void GetLastMonthlyReset_ReturnsCorrectReset( DateTimeOffset now, DateTimeOffset expectedReset ) { this.fakeTimeProvider.SetUtcNow(now); - this.resetHelper.LastMonthlyReset.Should().Be(expectedReset); + this.fakeTimeProvider.GetLastMonthlyReset().Should().Be(expectedReset); } public class ResetTheoryData : TheoryData { } diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeControllerTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeControllerTest.cs index 6cf8635c3..80e9c04fc 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeControllerTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeControllerTest.cs @@ -2,6 +2,7 @@ using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Dmode; using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeServiceTest.cs index c593d9d56..4f698e4ff 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Dmode/DmodeServiceTest.cs @@ -3,7 +3,6 @@ using DragaliaAPI.Features.DmodeDungeon; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; -using DragaliaAPI.Helpers; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/DungeonRepositoryTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/DungeonRepositoryTest.cs index 3e26d8b4b..05d9c30c4 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/DungeonRepositoryTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/DungeonRepositoryTest.cs @@ -1,7 +1,5 @@ -using System.Diagnostics.CodeAnalysis; -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Scaffold; -using DragaliaAPI.Database.Factories; using DragaliaAPI.Features.Dungeon; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; @@ -78,13 +76,10 @@ private async Task SeedDatabase() DbPlayerCharaData chara2 = new(ViewerId, Charas.SummerCleo) { IsUnlockEditSkill = true, Skill2Level = 2 }; - DbPlayerDragonData dragon = DbPlayerDragonDataFactory.Create( - ViewerId, - Dragons.MidgardsormrZero - ); + DbPlayerDragonData dragon = new DbPlayerDragonData(ViewerId, Dragons.MidgardsormrZero); dragon.DragonKeyId = 400; - DbPlayerDragonReliability reliability = DbPlayerDragonReliabilityFactory.Create( + DbPlayerDragonReliability reliability = new DbPlayerDragonReliability( ViewerId, Dragons.MidgardsormrZero ); diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/Record/DungeonRecordRewardServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/Record/DungeonRecordRewardServiceTest.cs index e1615bc45..208cd3c65 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/Record/DungeonRecordRewardServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Dungeon/Record/DungeonRecordRewardServiceTest.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Dungeon; diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Login/LoginControllerTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Login/LoginControllerTest.cs index dd8d883f3..596aaa30f 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Login/LoginControllerTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Login/LoginControllerTest.cs @@ -1,8 +1,8 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Login; +using DragaliaAPI.Features.Login.Actions; using DragaliaAPI.Features.Reward; -using DragaliaAPI.Helpers; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using Microsoft.Extensions.Logging; @@ -15,10 +15,10 @@ public class LoginControllerTest private readonly Mock mockUserDataRepository; private readonly Mock mockUpdateDataService; private readonly Mock mockDailyResetAction; - private readonly Mock mockResetHelper; private readonly Mock> mockLogger; - private readonly Mock loginBonusService; + private readonly Mock mockLoginService; private readonly Mock mockRewardService; + private readonly Mock mockDragonService; private readonly FakeTimeProvider mockDateTimeProvider; private readonly LoginController loginController; @@ -28,21 +28,21 @@ public LoginControllerTest() this.mockUserDataRepository = new(MockBehavior.Strict); this.mockUpdateDataService = new(MockBehavior.Strict); this.mockDailyResetAction = new(MockBehavior.Strict); - this.mockResetHelper = new(MockBehavior.Strict); this.mockLogger = new(MockBehavior.Loose); - this.loginBonusService = new(MockBehavior.Strict); + this.mockLoginService = new(MockBehavior.Strict); this.mockRewardService = new(MockBehavior.Strict); + this.mockDragonService = new(MockBehavior.Loose); this.mockDateTimeProvider = new FakeTimeProvider(); this.loginController = new( this.mockUserDataRepository.Object, this.mockUpdateDataService.Object, new List() { mockDailyResetAction.Object }, - this.mockResetHelper.Object, this.mockLogger.Object, - this.loginBonusService.Object, + this.mockLoginService.Object, this.mockRewardService.Object, - this.mockDateTimeProvider + this.mockDateTimeProvider, + this.mockDragonService.Object ); this.mockDateTimeProvider.SetUtcNow(DateTimeOffset.UtcNow); @@ -57,13 +57,15 @@ public async Task Index_LastLoginBeforeReset_CallsDailyResetAction() new DbPlayerUserData() { ViewerId = 1, LastLoginTime = DateTimeOffset.UnixEpoch } ); - this.mockResetHelper.SetupGet(x => x.LastDailyReset).Returns(DateTimeOffset.UtcNow); + this.mockDateTimeProvider.SetUtcNow(DateTimeOffset.UtcNow); - this.loginBonusService.Setup(x => x.RewardLoginBonus()) + this.mockLoginService.Setup(x => x.RewardLoginBonus()) .ReturnsAsync(Enumerable.Empty()); this.mockDailyResetAction.Setup(x => x.Apply()).Returns(Task.CompletedTask); + this.mockLoginService.Setup(x => x.GetWallMonthlyReceiveList()).ReturnsAsync([]); + this.mockUpdateDataService.Setup(x => x.SaveChangesAsync(default(CancellationToken))) .ReturnsAsync(new UpdateDataList()); @@ -71,19 +73,21 @@ public async Task Index_LastLoginBeforeReset_CallsDailyResetAction() this.mockRewardService.VerifyAll(); this.mockUserDataRepository.VerifyAll(); - this.mockResetHelper.VerifyAll(); this.mockDailyResetAction.VerifyAll(); } [Fact] public async Task Index_LastLoginAfterReset_DoesNotCallDailyResetAction() { + DateTimeOffset timeAfterReset = DateTimeOffset.Parse("2049-05-13T17:55:52Z"); + this.mockUserDataRepository.SetupUserData( - new DbPlayerUserData() { ViewerId = 1, LastLoginTime = DateTimeOffset.UtcNow } + new DbPlayerUserData() { ViewerId = 1, LastLoginTime = timeAfterReset } ); - this.mockResetHelper.SetupGet(x => x.LastDailyReset) - .Returns(DateTimeOffset.UtcNow.AddHours(-1)); + this.mockDateTimeProvider.SetUtcNow(timeAfterReset); + + this.mockLoginService.Setup(x => x.GetWallMonthlyReceiveList()).ReturnsAsync([]); this.mockUpdateDataService.Setup(x => x.SaveChangesAsync(default(CancellationToken))) .ReturnsAsync(new UpdateDataList()); @@ -92,7 +96,6 @@ public async Task Index_LastLoginAfterReset_DoesNotCallDailyResetAction() this.mockRewardService.VerifyAll(); this.mockUserDataRepository.VerifyAll(); - this.mockResetHelper.VerifyAll(); this.mockDailyResetAction.Verify(x => x.Apply(), Times.Never); } } diff --git a/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UnitRepositoryTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Summon/UnitServiceTest.cs similarity index 63% rename from DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UnitRepositoryTest.cs rename to DragaliaAPI/DragaliaAPI.Test/Features/Summon/UnitServiceTest.cs index 99dcdc162..19e10fb10 100644 --- a/DragaliaAPI/DragaliaAPI.Database.Test/Repositories/UnitRepositoryTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Summon/UnitServiceTest.cs @@ -1,63 +1,76 @@ using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Factories; using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Database.Test; +using DragaliaAPI.Features.Present; +using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Reward.Handlers; +using DragaliaAPI.Features.Summoning; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.PlayerDetails; -using DragaliaAPI.Test.Utils; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging.Abstractions; using static DragaliaAPI.Database.Test.DbTestFixture; -namespace DragaliaAPI.Database.Test.Repositories; +namespace DragaliaAPI.Test.Features.Summon; [Collection("RepositoryTest")] -public class UnitRepositoryTest : IClassFixture +public class UnitServiceTest : IClassFixture { private readonly DbTestFixture fixture; - private readonly UnitRepository unitRepository; + private readonly UnitService unitService; private readonly Mock mockPlayerIdentityService; + private readonly Mock mockPresentService; - public UnitRepositoryTest(DbTestFixture fixture) + public UnitServiceTest(DbTestFixture fixture) { this.fixture = fixture; - this.fixture.ApiContext.Database.EnsureCreated(); - this.fixture.ApiContext.Database.EnsureDeleted(); this.mockPlayerIdentityService = new(MockBehavior.Strict); this.mockPlayerIdentityService.Setup(x => x.ViewerId).Returns(ViewerId); + this.mockPresentService = new(MockBehavior.Loose); - this.unitRepository = new UnitRepository( - fixture.ApiContext, - this.mockPlayerIdentityService.Object - ); - - this.fixture.ApiContext.ChangeTracker.Clear(); - } - - [Fact] - public async Task GetAllDragonData_ValidId_ReturnsData() - { - await this.fixture.AddToDatabase(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Agni)); - (await this.unitRepository.Dragons.ToListAsync()).Should().NotBeEmpty(); - } - - [Fact] - public async Task GetAllDragonData_InvalidId_ReturnsEmpty() - { - this.mockPlayerIdentityService.SetupGet(x => x.ViewerId).Returns(400); + CharaHandler charaHandler = + new( + this.fixture.ApiContext, + this.mockPlayerIdentityService.Object, + NullLogger.Instance + ); + DragonHandler dragonHandler = + new( + this.fixture.ApiContext, + this.mockPlayerIdentityService.Object, + NullLogger.Instance + ); + RewardService rewardService = + new( + NullLogger.Instance, + new Mock().Object, + [], + [charaHandler, dragonHandler] + ); - (await this.unitRepository.Dragons.ToListAsync()).Should().BeEmpty(); - } + this.unitService = new UnitService( + this.mockPresentService.Object, + rewardService, + fixture.ApiContext + ); - [Fact] - public async Task GetAllDragonData_ReturnsOnlyDataForGivenId() - { - await this.fixture.AddToDatabase(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Agni)); - await this.fixture.AddToDatabase(DbPlayerDragonDataFactory.Create(444, Dragons.Agni)); + this.fixture.ApiContext.PlayerCharaData.RemoveRange( + this.fixture.ApiContext.PlayerCharaData.IgnoreQueryFilters() + ); + this.fixture.ApiContext.PlayerDragonData.RemoveRange( + this.fixture.ApiContext.PlayerDragonData.IgnoreQueryFilters() + ); + this.fixture.ApiContext.PlayerDragonReliability.RemoveRange( + this.fixture.ApiContext.PlayerDragonReliability.IgnoreQueryFilters() + ); + this.fixture.ApiContext.PlayerStoryState.RemoveRange( + this.fixture.ApiContext.PlayerStoryState.IgnoreQueryFilters() + ); + this.fixture.ApiContext.SaveChanges(); - (await this.unitRepository.Dragons.ToListAsync()) - .Should() - .AllSatisfy(x => x.ViewerId.Should().Be(ViewerId)); + this.fixture.ApiContext.ChangeTracker.Clear(); } [Fact] @@ -66,9 +79,9 @@ public async Task AddCharas_CorrectlyMarksDuplicates() List idList = new() { Charas.Chrom, Charas.Chrom, Charas.Panther, Charas.Izumo, Charas.Izumo }; - (await this.unitRepository.AddCharas(idList)) - .Where(x => x.isNew) - .Select(x => x.id) + (await this.unitService.AddCharas(idList)) + .Where(x => x.IsNew) + .Select(x => x.Id) .Should() .BeEquivalentTo(new List() { Charas.Chrom, Charas.Panther, Charas.Izumo }); } @@ -78,7 +91,7 @@ public async Task AddCharas_UpdatesDatabase() { List idList = new() { Charas.Addis, Charas.Aeleen }; - await this.unitRepository.AddCharas(idList); + await this.unitService.AddCharas(idList); await this.fixture.ApiContext.SaveChangesAsync(); ( @@ -89,7 +102,7 @@ await this ) .Should() .Contain(new List() { Charas.Addis, Charas.Aeleen }); - (await fixture.ApiContext.PlayerStoryState.Select(x => x.StoryId).ToListAsync()) + (await this.fixture.ApiContext.PlayerStoryState.Select(x => x.StoryId).ToListAsync()) .Should() .Contain( new List() @@ -103,37 +116,37 @@ await this [Fact] public async Task AddCharas_HandlesExistingStory() { - int izumoStoryId = MasterAsset.CharaStories[(int)Charas.Izumo].StoryIds[0]; - int mitsuhideStoryId = MasterAsset.CharaStories[(int)Charas.Mitsuhide].StoryIds[0]; + int natalieStoryId = MasterAsset.CharaStories[(int)Charas.Natalie].StoryIds[0]; + int catherineStoryId = MasterAsset.CharaStories[(int)Charas.Catherine].StoryIds[0]; await this.fixture.AddRangeToDatabase( [ new DbPlayerStoryState() { ViewerId = ViewerId, StoryType = StoryTypes.Chara, - StoryId = izumoStoryId, + StoryId = natalieStoryId, State = 0, }, new DbPlayerStoryState() { ViewerId = ViewerId, StoryType = StoryTypes.Dragon, - StoryId = mitsuhideStoryId, + StoryId = catherineStoryId, State = 0, }, new DbPlayerStoryState() { ViewerId = ViewerId + 1, StoryType = StoryTypes.Chara, - StoryId = mitsuhideStoryId, + StoryId = catherineStoryId, State = 0, } ] ); - List idList = [Charas.Izumo, Charas.Mitsuhide]; + List idList = [Charas.Natalie, Charas.Catherine]; - await this.unitRepository.AddCharas(idList); + await this.unitService.AddCharas(idList); await this.fixture.ApiContext.SaveChangesAsync(); @@ -143,7 +156,7 @@ await this.fixture.AddRangeToDatabase( { ViewerId = ViewerId, StoryType = StoryTypes.Chara, - StoryId = izumoStoryId, + StoryId = natalieStoryId, State = 0, }, opts => opts.Excluding(x => x.Owner) @@ -153,7 +166,7 @@ await this.fixture.AddRangeToDatabase( { ViewerId = ViewerId, StoryType = StoryTypes.Chara, - StoryId = mitsuhideStoryId, + StoryId = catherineStoryId, State = 0, }, opts => opts.Excluding(x => x.Owner) @@ -163,11 +176,11 @@ await this.fixture.AddRangeToDatabase( [Fact] public async Task AddDragons_CorrectlyMarksDuplicates() { - await fixture.AddToDatabase(DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Barbatos)); + await this.fixture.AddToDatabase(new DbPlayerDragonData(ViewerId, Dragons.Barbatos)); List idList = new() { Dragons.Marishiten, Dragons.Barbatos, Dragons.Marishiten }; - IEnumerable<(Dragons Id, bool IsNew)> result = await this.unitRepository.AddDragons(idList); + IEnumerable<(Dragons Id, bool IsNew)> result = await this.unitService.AddDragons(idList); result .Where(x => x.IsNew) @@ -196,7 +209,7 @@ await this.fixture.AddRangeToDatabase( List idList = [Dragons.AC011Garland, Dragons.Agni]; - await this.unitRepository.AddDragons(idList); + await this.unitService.AddDragons(idList); await this.fixture.ApiContext.SaveChangesAsync(); this.fixture.ApiContext.PlayerDragonReliability.Should() @@ -209,16 +222,14 @@ await this.fixture.AddRangeToDatabase( [Fact] public async Task AddDragons_UpdatesDatabase() { - await fixture.AddToDatabase( - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.KonohanaSakuya) - ); - await fixture.AddToDatabase( - DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.KonohanaSakuya) + await this.fixture.AddToDatabase(new DbPlayerDragonData(ViewerId, Dragons.KonohanaSakuya)); + await this.fixture.AddToDatabase( + new DbPlayerDragonReliability(ViewerId, Dragons.KonohanaSakuya) ); List idList = new() { Dragons.KonohanaSakuya, Dragons.Michael, Dragons.Michael }; - await this.unitRepository.AddDragons(idList); + await this.unitService.AddDragons(idList); await this.fixture.ApiContext.SaveChangesAsync(); ( diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/TimeAttack/TimeAttackRepositoryTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/TimeAttack/TimeAttackRepositoryTest.cs index cdb757240..cc67be064 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/TimeAttack/TimeAttackRepositoryTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/TimeAttack/TimeAttackRepositoryTest.cs @@ -1,5 +1,4 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.TimeAttack; using DragaliaAPI.Shared.PlayerDetails; diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallControllerTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallControllerTest.cs index d150e931b..01d32fa3a 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallControllerTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallControllerTest.cs @@ -1,3 +1,4 @@ +using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.ClearParty; using DragaliaAPI.Features.Dungeon; using DragaliaAPI.Features.Reward; @@ -5,6 +6,8 @@ using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; +using Microsoft.Extensions.Logging.Abstractions; +using NSubstitute; namespace DragaliaAPI.Test.Features.Wall; @@ -31,7 +34,8 @@ public WallControllerTest() mockRewardService.Object, mockClearPartyService.Object, mockDungeonService.Object, - mockWallService.Object + mockWallService.Object, + NullLogger.Instance ); } @@ -51,19 +55,15 @@ public async Task GetMonthlyReward_ReturnsReward() LastRewardDate = lastRewardDate, RewardStatus = rewardStatus }; - IEnumerable userRewardList = new[] { rewardList }; - mockWallService - .Setup(x => x.GetUserWallRewardList(totalLevel, rewardStatus)) - .Returns(userRewardList); - - mockWallService.Setup(x => x.GetTotalWallLevel()).ReturnsAsync(totalLevel); + mockWallService.Setup(x => x.CheckWallInitialized()).ReturnsAsync(true); + mockWallService.Setup(x => x.GetUserWallRewardList()).ReturnsAsync(rewardList); WallGetMonthlyRewardResponse data = ( await wallController.GetMonthlyReward() ).GetData()!; - data.UserWallRewardList.Should().BeEquivalentTo(userRewardList); + data.UserWallRewardList.Should().ContainSingle().Which.Should().BeEquivalentTo(rewardList); mockWallService.VerifyAll(); } @@ -84,7 +84,6 @@ public async Task ReceiveMonthlyReward_ReturnsRewards() LastRewardDate = lastRewardDate, RewardStatus = rewardStatus }; - IEnumerable userRewardList = new[] { rewardList }; AtgenMonthlyWallReceiveList monthlyWallReceiveList = new() @@ -114,16 +113,18 @@ public async Task ReceiveMonthlyReward_ReturnsRewards() } }; - mockWallService - .Setup(x => x.GetUserWallRewardList(totalLevel, rewardStatus)) - .Returns(userRewardList); + DateTimeOffset lastClaimDate = DateTimeOffset.UtcNow.AddDays(-62); + mockWallService.Setup(x => x.CheckWallInitialized()).ReturnsAsync(true); + mockWallService + .Setup(x => x.GetLastRewardDate()) + .ReturnsAsync(new DbWallRewardDate() { LastClaimDate = lastClaimDate }); + mockWallService.Setup(x => x.CheckCanClaimReward(lastClaimDate)).Returns(true); + mockWallService.Setup(x => x.GetUserWallRewardList()).ReturnsAsync(rewardList); mockWallService.Setup(x => x.GetTotalWallLevel()).ReturnsAsync(totalLevel); - mockWallService .Setup(x => x.GetMonthlyRewardEntityList(totalLevel)) .Returns(buildEventRewardEntityList); - mockWallService .Setup(x => x.GrantMonthlyRewardEntityList(buildEventRewardEntityList)) .Returns(Task.CompletedTask); @@ -135,13 +136,10 @@ public async Task ReceiveMonthlyReward_ReturnsRewards() .ReturnsAsync(new UpdateDataList()); WallReceiveMonthlyRewardResponse data = ( - await wallController.ReceiveMonthlyReward( - new WallReceiveMonthlyRewardRequest(), - default - ) + await wallController.ReceiveMonthlyReward(default) ).GetData()!; - data.UserWallRewardList.Should().BeEquivalentTo(userRewardList); + data.UserWallRewardList.Should().ContainSingle().Which.Should().BeEquivalentTo(rewardList); data.MonthlyWallReceiveList.Should().BeEquivalentTo(monthlyWallReceiveListList); mockWallService.VerifyAll(); diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallRecordControllerTest.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallRecordControllerTest.cs index 02425c068..b74e3ad8d 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallRecordControllerTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallRecordControllerTest.cs @@ -15,7 +15,6 @@ namespace DragaliaAPI.Test.Features.Wall; public class WallRecordControllerTest { private readonly Mock mockUpdateDataService; - private readonly Mock mockWallRepository; private readonly Mock mockWallService; private readonly Mock mockRewardService; private readonly Mock mockDungeonService; @@ -28,7 +27,6 @@ public class WallRecordControllerTest public WallRecordControllerTest() { mockUpdateDataService = new(MockBehavior.Strict); - mockWallRepository = new(MockBehavior.Strict); mockWallService = new(MockBehavior.Strict); mockRewardService = new(MockBehavior.Strict); mockDungeonService = new(MockBehavior.Strict); @@ -38,7 +36,6 @@ public WallRecordControllerTest() wallRecordController = new( mockUpdateDataService.Object, - mockWallRepository.Object, mockWallService.Object, mockRewardService.Object, mockDungeonService.Object, @@ -80,8 +77,7 @@ public async Task Record_ReturnsData() mockDungeonService.Setup(x => x.FinishDungeon(dungeonKey)).ReturnsAsync(session); - mockWallRepository.Setup(x => x.GetQuestWall(wallId)).ReturnsAsync(playerQuestWall); - + mockWallService.Setup(x => x.GetQuestWall(wallId)).ReturnsAsync(playerQuestWall); mockWallService.Setup(x => x.LevelupQuestWall(wallId)).Returns(Task.CompletedTask); mockDungeonRecordHelperService diff --git a/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallTimeProviderExtensionsTests.cs b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallTimeProviderExtensionsTests.cs new file mode 100644 index 000000000..73319c659 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI.Test/Features/Wall/WallTimeProviderExtensionsTests.cs @@ -0,0 +1,47 @@ +using DragaliaAPI.Features.Wall; +using Microsoft.Extensions.Time.Testing; + +namespace DragaliaAPI.Test.Features.Wall; + +public class WallTimeProviderExtensionsTests +{ + private readonly FakeTimeProvider fakeTimeProvider = new(); + + /// + /// Fields: + /// p1: Current time + /// p2: Expected last reward time + /// + public static TheoryData WallRewardTheoryData { get; } = + new() + { + { + DateTimeOffset.Parse("2024-05-14T21:27:31Z"), + DateTimeOffset.Parse("2024-04-15T06:00:00Z") + }, + { + DateTimeOffset.Parse("2024-05-15T06:27:31Z"), + DateTimeOffset.Parse("2024-05-15T06:00:00Z") + }, + { + DateTimeOffset.Parse("2024-05-26T06:27:31Z"), + DateTimeOffset.Parse("2024-05-15T06:00:00Z") + }, + { + DateTimeOffset.Parse("2024-05-15T06:00:00Z"), + DateTimeOffset.Parse("2024-05-15T06:00:00Z") + } + }; + + [Theory] + [MemberData(nameof(WallRewardTheoryData))] + public void GetLastMonthlyRewardDate_ReturnsExpectedResult( + DateTimeOffset currentTime, + DateTimeOffset expectedRewardDate + ) + { + this.fakeTimeProvider.SetUtcNow(currentTime); + + this.fakeTimeProvider.GetLastWallRewardDate().Should().Be(expectedRewardDate); + } +} diff --git a/DragaliaAPI/DragaliaAPI.Test/RepositoryTestFixture.cs b/DragaliaAPI/DragaliaAPI.Test/RepositoryTestFixture.cs index f56180dc1..b840cc797 100644 --- a/DragaliaAPI/DragaliaAPI.Test/RepositoryTestFixture.cs +++ b/DragaliaAPI/DragaliaAPI.Test/RepositoryTestFixture.cs @@ -1,7 +1,6 @@ using AutoMapper; using DragaliaAPI.Database; using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Features.SavefileUpdate; using DragaliaAPI.Services.Game; using DragaliaAPI.Test.Utils; using Microsoft.EntityFrameworkCore; @@ -47,8 +46,7 @@ public RepositoryTestFixture() ).CreateMapper(), mockLogger.Object, IdentityTestUtils.MockPlayerDetailsService.Object, - Enumerable.Empty(), - mockUnitRepository.Object + [] ); savefileService.Create().Wait(); diff --git a/DragaliaAPI/DragaliaAPI.Test/Services/AuthServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Services/AuthServiceTest.cs index 933889efc..a7e4bdcb6 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Services/AuthServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Services/AuthServiceTest.cs @@ -2,7 +2,6 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Helpers; using DragaliaAPI.Models; using DragaliaAPI.Models.Generated; using DragaliaAPI.Models.Options; diff --git a/DragaliaAPI/DragaliaAPI.Test/Services/DragonServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Services/DragonServiceTest.cs index 548ee57e4..6a4c644a1 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Services/DragonServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Services/DragonServiceTest.cs @@ -1,17 +1,18 @@ using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Factories; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Database.Utils; +using DragaliaAPI.Extensions; using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; -using DragaliaAPI.Helpers; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Services.Game; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Test.Utils; +using Microsoft.Extensions.Time.Testing; using MockQueryable.Moq; namespace DragaliaAPI.Test.Services; @@ -26,7 +27,7 @@ public class DragonServiceTest : RepositoryTestFixture private readonly Mock mockPaymentService; private readonly Mock mockRewardService; private readonly Mock mockMissionProgressionService; - private readonly Mock mockTimeProvider; + private readonly FakeTimeProvider mockTimeProvider; private readonly DragonService dragonService; @@ -40,7 +41,7 @@ public DragonServiceTest() mockPaymentService = new(MockBehavior.Strict); mockRewardService = new(MockBehavior.Strict); mockMissionProgressionService = new(MockBehavior.Strict); - mockTimeProvider = new(MockBehavior.Strict); + mockTimeProvider = new FakeTimeProvider(); dragonService = new DragonService( mockUserDataRepository.Object, @@ -52,17 +53,17 @@ public DragonServiceTest() mockPaymentService.Object, mockRewardService.Object, mockMissionProgressionService.Object, - new ResetHelper(this.mockTimeProvider.Object), + this.mockTimeProvider, this.ApiContext ); - this.mockTimeProvider.Setup(x => x.GetUtcNow()).Returns(DateTimeOffset.UtcNow); + this.mockTimeProvider.SetUtcNow(DateTimeOffset.UtcNow); } [Fact] public async Task DoDragonGetContactData_ReturnsValidContactData() { - DateTimeOffset lastReset = new ResetHelper(this.mockTimeProvider.Object).LastDailyReset; + DateTimeOffset lastReset = this.mockTimeProvider.GetLastDailyReset(); SetupReliabilityMock( out List gifts, @@ -103,22 +104,22 @@ await this.AddRangeToDatabase( } ); - DateTimeOffset wednesday = new DateTimeOffset(2023, 12, 27, 19, 49, 23, TimeSpan.Zero); - this.mockTimeProvider.Setup(x => x.GetUtcNow()).Returns(wednesday); + DateTimeOffset wednesday = new DateTimeOffset(2030, 12, 25, 19, 49, 23, TimeSpan.Zero); + this.mockTimeProvider.SetUtcNow(wednesday); (await this.dragonService.DoDragonGetContactData()) .ShopGiftList.Should() .Contain(x => x.DragonGiftId == (int)DragonGifts.FloralCirclet); - DateTimeOffset thuBeforeReset = new DateTimeOffset(2023, 12, 28, 01, 49, 23, TimeSpan.Zero); - this.mockTimeProvider.Setup(x => x.GetUtcNow()).Returns(thuBeforeReset); + DateTimeOffset thuBeforeReset = new DateTimeOffset(2030, 12, 26, 01, 49, 23, TimeSpan.Zero); + this.mockTimeProvider.SetUtcNow(thuBeforeReset); (await this.dragonService.DoDragonGetContactData()) .ShopGiftList.Should() .Contain(x => x.DragonGiftId == (int)DragonGifts.FloralCirclet); - DateTimeOffset thursday = new DateTimeOffset(2023, 12, 28, 09, 49, 23, TimeSpan.Zero); - this.mockTimeProvider.Setup(x => x.GetUtcNow()).Returns(thursday); + DateTimeOffset thursday = new DateTimeOffset(2030, 12, 26, 09, 49, 23, TimeSpan.Zero); + this.mockTimeProvider.SetUtcNow(thursday); (await this.dragonService.DoDragonGetContactData()) .ShopGiftList.Should() @@ -136,7 +137,7 @@ public async Task DoDragonBuyGiftToSendMultiple_DragonGift_ReturnsCorrectData() out List stories ); - dragonRels.Add(DbPlayerDragonReliabilityFactory.Create(ViewerId, Dragons.Garuda)); + dragonRels.Add(new DbPlayerDragonReliability(ViewerId, Dragons.Garuda)); mockMissionProgressionService.Setup(x => x.OnDragonBondLevelUp(Dragons.Garuda, UnitElement.Wind, 3, 4) @@ -208,10 +209,7 @@ public async Task DoDragonBuyGiftToSendMultiple_DragonGiftNoLevel_ReturnsCorrect out List stories ); - DbPlayerDragonReliability dd = DbPlayerDragonReliabilityFactory.Create( - ViewerId, - Dragons.Garuda - ); + DbPlayerDragonReliability dd = new DbPlayerDragonReliability(ViewerId, Dragons.Garuda); dd.Level = 30; dd.Exp = 36300; @@ -272,7 +270,7 @@ byte expectedLvl out List stories ); - dragonRels.Add(DbPlayerDragonReliabilityFactory.Create(ViewerId, dragon)); + dragonRels.Add(new DbPlayerDragonReliability(ViewerId, dragon)); UnitElement element = MasterAsset.DragonData[dragon].ElementalType; @@ -310,7 +308,7 @@ out List stories [Fact] public async Task DoBuildup_AddsAugments() { - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Garuda); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonData.DragonKeyId = 1; List dragonDataList = new List() { dragonData }; @@ -368,7 +366,7 @@ public async Task DoBuildup_BuildsUp( byte expectedLvl ) { - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, dragon); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, dragon); dragonData.DragonKeyId = 1; List dragonDataList = new List() { dragonData }; @@ -425,7 +423,7 @@ await dragonService.DoBuildup( [Fact] public async Task DoDragonResetPlusCount_ResetsPlusCount() { - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Garuda); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonData.DragonKeyId = 1; dragonData.AttackPlusCount = 50; @@ -503,14 +501,11 @@ byte expectedS1Level ? Materials.SunlightStone : Materials.GarudasEssence; - DbPlayerDragonData dragonDataSacrifice = DbPlayerDragonDataFactory.Create( - ViewerId, - Dragons.Garuda - ); + DbPlayerDragonData dragonDataSacrifice = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonDataSacrifice.DragonKeyId = 2; dragonDataSacrifice.LimitBreakCount = 0; - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Garuda); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonData.DragonKeyId = 1; dragonData.LimitBreakCount = (byte)(limitBreakNr - 1); @@ -575,7 +570,7 @@ await dragonService.DoDragonLimitBreak( [Fact] public async Task DoDragonLock_Locks() { - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Garuda); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonData.DragonKeyId = 1; List dragonDataList = new List() { dragonData }; @@ -610,7 +605,7 @@ public async Task DoDragonSell_AddsCoinAndDew() mockUserDataRepository.SetupGet(x => x.UserData).Returns(userDataList); - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Garuda); + DbPlayerDragonData dragonData = new DbPlayerDragonData(ViewerId, Dragons.Garuda); dragonData.DragonKeyId = 1; List dragonDataList = new List() { dragonData }; diff --git a/DragaliaAPI/DragaliaAPI.Test/Services/StoryServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Services/StoryServiceTest.cs index ba70548da..27639524c 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Services/StoryServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Services/StoryServiceTest.cs @@ -1,19 +1,25 @@ +using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Database.Test; using DragaliaAPI.Features.Fort; using DragaliaAPI.Features.Missions; +using DragaliaAPI.Features.Player; +using DragaliaAPI.Features.Present; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Services.Game; using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.PlayerDetails; using Microsoft.Extensions.Logging; using MockQueryable.Moq; namespace DragaliaAPI.Test.Services; -public class StoryServiceTest +public class StoryServiceTest : IClassFixture { private readonly Mock mockStoryRepository; private readonly Mock mockUserDataRepository; @@ -24,31 +30,42 @@ public class StoryServiceTest private readonly Mock mockMissionProgressionService; private readonly Mock mockRewardService; private readonly Mock mockPaymentService; + private readonly Mock mockPresentService; + private readonly Mock mockUserService; + private readonly Mock mockPlayerIdentityService; private readonly IStoryService storyService; - public StoryServiceTest() + public StoryServiceTest(DbTestFixture fixture) { this.mockStoryRepository = new(MockBehavior.Strict); this.mockUserDataRepository = new(MockBehavior.Strict); this.mockInventoryRepository = new(MockBehavior.Strict); this.mockLogger = new(); this.mockTutorialService = new(MockBehavior.Strict); + this.mockPresentService = new(MockBehavior.Strict); this.mockFortRepository = new(MockBehavior.Strict); this.mockMissionProgressionService = new(MockBehavior.Strict); this.mockRewardService = new(MockBehavior.Strict); this.mockPaymentService = new(MockBehavior.Strict); + this.mockPresentService = new(MockBehavior.Strict); + this.mockPlayerIdentityService = new(MockBehavior.Strict); + this.mockUserService = new(MockBehavior.Strict); this.storyService = new StoryService( mockStoryRepository.Object, mockLogger.Object, mockUserDataRepository.Object, mockInventoryRepository.Object, + mockPresentService.Object, mockTutorialService.Object, mockFortRepository.Object, mockMissionProgressionService.Object, mockRewardService.Object, - mockPaymentService.Object + mockPaymentService.Object, + mockUserService.Object, + fixture.ApiContext, + mockPlayerIdentityService.Object ); } diff --git a/DragaliaAPI/DragaliaAPI.Test/Services/UpdateDataServiceTest.cs b/DragaliaAPI/DragaliaAPI.Test/Services/UpdateDataServiceTest.cs index ce4e6c2db..c709fdf1d 100644 --- a/DragaliaAPI/DragaliaAPI.Test/Services/UpdateDataServiceTest.cs +++ b/DragaliaAPI/DragaliaAPI.Test/Services/UpdateDataServiceTest.cs @@ -1,9 +1,7 @@ -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; +using System.Text.Json; using AutoMapper; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Abstract; -using DragaliaAPI.Database.Factories; using DragaliaAPI.Features.Dmode; using DragaliaAPI.Features.Event; using DragaliaAPI.Features.Missions; @@ -69,11 +67,8 @@ public async Task SaveChangesAsync_PopulatesAll() DbPlayerCharaData charaData = new(viewerId, Charas.GalaLeonidas); - DbPlayerDragonData dragonData = DbPlayerDragonDataFactory.Create( - viewerId, - Dragons.DreadkingRathalos - ); - DbPlayerDragonReliability reliabilityData = DbPlayerDragonReliabilityFactory.Create( + DbPlayerDragonData dragonData = new DbPlayerDragonData(viewerId, Dragons.DreadkingRathalos); + DbPlayerDragonReliability reliabilityData = new DbPlayerDragonReliability( viewerId, Dragons.DreadkingRathalos ); @@ -223,9 +218,9 @@ public async Task SaveChangesAsync_RetrievesIdentityColumns() this.ApiContext.AddRange( new List() { - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.Arsene), - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.GalaBeastVolk), - DbPlayerDragonDataFactory.Create(ViewerId, Dragons.HighZodiark) + new DbPlayerDragonData(ViewerId, Dragons.Arsene), + new DbPlayerDragonData(ViewerId, Dragons.GalaBeastVolk), + new DbPlayerDragonData(ViewerId, Dragons.HighZodiark) } ); diff --git a/DragaliaAPI/DragaliaAPI/App.razor b/DragaliaAPI/DragaliaAPI/App.razor index be7364ffc..70f6e9638 100644 --- a/DragaliaAPI/DragaliaAPI/App.razor +++ b/DragaliaAPI/DragaliaAPI/App.razor @@ -1,10 +1,12 @@ @using DragaliaAPI.Authentication @{ - string? darkModeCookie = this.HttpContext?.Request.Cookies.FirstOrDefault(x => x.Key == "darkMode").Value; - bool? isDarkMode = null; + string? darkModeCookie = this.HttpContext?.Request.Cookies.FirstOrDefault(x => x.Key == Cookies.DarkMode).Value; - if (bool.TryParse(darkModeCookie, out bool darkModeParsed)) - isDarkMode = darkModeParsed; + bool? isDarkMode = null; + if (bool.TryParse(darkModeCookie, out bool isDarkModeParsed)) + { + isDarkMode = isDarkModeParsed; + } HttpRequestState httpRequestState = new() { @@ -50,14 +52,14 @@ diff --git a/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/CastleStoryController.cs b/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/CastleStoryController.cs index dbc50c33e..000675e56 100644 --- a/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/CastleStoryController.cs +++ b/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/CastleStoryController.cs @@ -1,4 +1,5 @@ -using DragaliaAPI.Models.Generated; +using DragaliaAPI.Features.Story; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; using Microsoft.AspNetCore.Mvc; diff --git a/DragaliaAPI/DragaliaAPI/Dockerfile b/DragaliaAPI/DragaliaAPI/Dockerfile index f7a583994..24a2f586f 100644 --- a/DragaliaAPI/DragaliaAPI/Dockerfile +++ b/DragaliaAPI/DragaliaAPI/Dockerfile @@ -1,18 +1,13 @@ -ARG BASE_DOTNET_IMAGE=mcr.microsoft.com/dotnet/aspnet:8.0.3 - -FROM $BASE_DOTNET_IMAGE AS base -WORKDIR /app - +FROM mcr.microsoft.com/dotnet/aspnet:8.0.5-jammy-chiseled AS base +USER app EXPOSE 8080 +WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:8.0.203 AS build - -ARG CI - +FROM mcr.microsoft.com/dotnet/sdk:8.0.300 AS build WORKDIR /src COPY ["DragaliaAPI/DragaliaAPI.MissionDesigner/DragaliaAPI.MissionDesigner.csproj", "DragaliaAPI/DragaliaAPI.MissionDesigner/"] COPY ["DragaliaAPI/DragaliaAPI.MasterAssetConverter/DragaliaAPI.MasterAssetConverter.csproj", "DragaliaAPI/DragaliaAPI.MasterAssetConverter/"] -COPY ["Directory.Build.props", "."] +COPY ["DragaliaAPI/Directory.Build.props", "."] COPY ["Directory.Packages.props", "."] COPY ["nuget.config", "."] RUN dotnet restore "DragaliaAPI/DragaliaAPI.MissionDesigner/DragaliaAPI.MissionDesigner.csproj" @@ -26,6 +21,5 @@ WORKDIR "/src/DragaliaAPI/DragaliaAPI" RUN dotnet publish "DragaliaAPI.csproj" -c Release -o /app/publish/ /p:UseAppHost=false FROM base AS final -WORKDIR /app COPY --from=build /app/publish/ . ENTRYPOINT ["dotnet", "DragaliaAPI.dll"] \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/DragaliaAPI.csproj b/DragaliaAPI/DragaliaAPI/DragaliaAPI.csproj index bb68f6178..8a201535b 100644 --- a/DragaliaAPI/DragaliaAPI/DragaliaAPI.csproj +++ b/DragaliaAPI/DragaliaAPI/DragaliaAPI.csproj @@ -5,110 +5,116 @@ ..\docker-compose.dcproj 3.0.0 f95759aa-167b-4511-aeb2-ea87d3c0798c + ..\.. - - - - - - - - - - - - + + + + + + + + + + + + + + all build; native; contentfiles; analyzers; buildtransitive - - - - - - - - + + + + + + + + + all build; native; contentfiles; analyzers - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - + + + - - ..\DragaliaAPI.Shared\Resources\ - + + + + + - - + + - + %(DesignerOutputs.Identity) - + - + - + %(ConverterOutputs.Identity) - + - + - + - + - + diff --git a/DragaliaAPI/DragaliaAPI/Extensions/ResetTimeProviderExtensions.cs b/DragaliaAPI/DragaliaAPI/Extensions/ResetTimeProviderExtensions.cs new file mode 100644 index 000000000..225d9ce07 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Extensions/ResetTimeProviderExtensions.cs @@ -0,0 +1,29 @@ +namespace DragaliaAPI.Extensions; + +public static class ResetTimeProviderExtensions +{ + /// + /// Gets the last daily reset (6AM UTC of the previous/current day). + /// + public static DateTimeOffset GetLastDailyReset(this TimeProvider timeProvider) => + timeProvider.GetUtcNow().AddHours(-6).UtcDateTime.Date.AddHours(6); + + /// + /// Gets the last weekly reset (6AM UTC of the previous Monday). + /// + public static DateTimeOffset GetLastWeeklyReset(this TimeProvider timeProvider) + { + DateTimeOffset lastDaily = timeProvider.GetLastDailyReset(); + int diff = DayOfWeek.Monday - lastDaily.DayOfWeek; + return lastDaily.AddDays(diff > 0 ? diff - 7 : diff); + } + + /// + /// Gets the last monthly reset (6AM UTC of the 1st of the current month). + /// + public static DateTimeOffset GetLastMonthlyReset(this TimeProvider timeProvider) + { + DateTimeOffset lastDaily = timeProvider.GetLastDailyReset(); + return new DateTimeOffset(lastDaily.Year, lastDaily.Month, 1, 6, 0, 0, TimeSpan.Zero); + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Chara/CharaController.cs b/DragaliaAPI/DragaliaAPI/Features/Chara/CharaController.cs index c38e2a552..0b06a7396 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Chara/CharaController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Chara/CharaController.cs @@ -7,6 +7,7 @@ using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Services.Exceptions; diff --git a/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeController.cs b/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeController.cs index 9e3bc6bba..07bd7d21c 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeController.cs @@ -1,6 +1,7 @@ using DragaliaAPI.Controllers; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; diff --git a/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeSkipResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeSkipResetAction.cs index 9497a9e6a..261f8a373 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeSkipResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Dmode/DmodeSkipResetAction.cs @@ -1,5 +1,6 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Login; +using DragaliaAPI.Features.Login.Actions; using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Features.Dmode; diff --git a/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/DmodeDungeonService.cs b/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/DmodeDungeonService.cs index cf324c929..cdd5610dd 100644 --- a/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/DmodeDungeonService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/DmodeDungeonService.cs @@ -1,8 +1,6 @@ using System.Diagnostics; using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Dmode; using DragaliaAPI.Features.Reward; using DragaliaAPI.Models.Generated; diff --git a/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/TalismanHelper.cs b/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/TalismanHelper.cs index 042b51676..0535c177e 100644 --- a/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/TalismanHelper.cs +++ b/DragaliaAPI/DragaliaAPI/Features/DmodeDungeon/TalismanHelper.cs @@ -1,5 +1,4 @@ -using DragaliaAPI.Extensions; -using DragaliaAPI.Models.Generated; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; namespace DragaliaAPI.Features.DmodeDungeon; diff --git a/DragaliaAPI/DragaliaAPI/Features/Dungeon/AutoRepeat/AutoRepeatService.cs b/DragaliaAPI/DragaliaAPI/Features/Dungeon/AutoRepeat/AutoRepeatService.cs index 50f71319b..b1ceb134d 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Dungeon/AutoRepeat/AutoRepeatService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Dungeon/AutoRepeat/AutoRepeatService.cs @@ -1,4 +1,3 @@ -using DragaliaAPI.Extensions; using DragaliaAPI.Models.Generated; using DragaliaAPI.Models.Options; using DragaliaAPI.Shared.Definitions.Enums.Dungeon; diff --git a/DragaliaAPI/DragaliaAPI/Features/Dungeon/QuestEnemyService.cs b/DragaliaAPI/DragaliaAPI/Features/Dungeon/QuestEnemyService.cs index f4834fa3d..3fb42f386 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Dungeon/QuestEnemyService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Dungeon/QuestEnemyService.cs @@ -1,5 +1,4 @@ -using DragaliaAPI.Extensions; -using DragaliaAPI.Models.Generated; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; diff --git a/DragaliaAPI/DragaliaAPI/Features/Dungeon/Skip/DungeonSkipController.cs b/DragaliaAPI/DragaliaAPI/Features/Dungeon/Skip/DungeonSkipController.cs index e669b5ddc..7aeca2b9c 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Dungeon/Skip/DungeonSkipController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Dungeon/Skip/DungeonSkipController.cs @@ -1,7 +1,6 @@ using AutoMapper; using DragaliaAPI.Controllers; using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Dungeon.Record; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; diff --git a/DragaliaAPI/DragaliaAPI/Features/Event/EventDropService.cs b/DragaliaAPI/DragaliaAPI/Features/Event/EventDropService.cs index 22014f935..7e8ccc3dd 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Event/EventDropService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Event/EventDropService.cs @@ -1,6 +1,5 @@ using System.Diagnostics; using DragaliaAPI.Database.Entities; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Reward; using DragaliaAPI.Models.Generated; using DragaliaAPI.Photon.Shared.Enums; @@ -181,8 +180,18 @@ double buildDropMultiplier if (type == DungeonTypes.Wave) { // T3 only drops from Challenge Battle quests + + // Typically, there are two challenge battle quests - an easier one and a harder one. We want to give more + // rewards for the harder one. This previously used questData.VariationType, but that is inconsistent + // between events; see https://github.com/SapiensAnatis/Dawnshard/issues/507. + // This hack instead relies on the fact that the quest IDs for wave quests are always organized like: + // 208170501 Season's Beatings: Expert + // 208170502 Season's Beatings: Master + // It therefore provides a multiplier of 1 for the hard quest, and 0.5 for the easy quest. + double t3Multiplier = quest.Id % 10 / 2d; + int t3Quantity = GenerateDropAmount( - 10 * record.Wave * ((variation - VariationTypes.Hard) / 2d) * buildDropMultiplier + 10 * record.Wave * t3Multiplier * buildDropMultiplier ); yield return new Entity(evt.ViewEntityType3, evt.ViewEntityId3, t3Quantity); } diff --git a/DragaliaAPI/DragaliaAPI/Features/GraphQL/Schema.cs b/DragaliaAPI/DragaliaAPI/Features/GraphQL/Schema.cs index cfb7cad11..b8eadb60c 100644 --- a/DragaliaAPI/DragaliaAPI/Features/GraphQL/Schema.cs +++ b/DragaliaAPI/DragaliaAPI/Features/GraphQL/Schema.cs @@ -14,7 +14,6 @@ public static IServiceCollection ConfigureGraphQLSchema(this IServiceCollection options.PreBuildSchemaFromContext = (schema) => { schema.AddScalarType("TimeSpan", "time span"); - schema.AddScalarType("DateOnly", "date only"); }; options.ConfigureSchema = (schema) => { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/DailyEndeavourResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/DailyEndeavourResetAction.cs similarity index 91% rename from DragaliaAPI/DragaliaAPI/Features/Login/DailyEndeavourResetAction.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/Actions/DailyEndeavourResetAction.cs index a095359dc..ef1e51e89 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/DailyEndeavourResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/DailyEndeavourResetAction.cs @@ -2,19 +2,18 @@ using DragaliaAPI.Features.Event; using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Shared.Options; -using DragaliaAPI.Helpers; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Missions; using JetBrains.Annotations; using Microsoft.Extensions.Options; -namespace DragaliaAPI.Features.Login; +namespace DragaliaAPI.Features.Login.Actions; [UsedImplicitly] public class DailyEndeavourResetAction( IOptionsMonitor eventOptionsMonitor, IMissionRepository missionRepository, - IResetHelper resetHelper, + TimeProvider timeProvider, IMissionService missionService, IEventRepository eventRepository, ILogger logger @@ -22,7 +21,7 @@ ILogger logger { private readonly EventOptions eventOptions = eventOptionsMonitor.CurrentValue; private readonly IMissionRepository missionRepository = missionRepository; - private readonly IResetHelper resetHelper = resetHelper; + private readonly TimeProvider timeProvider = timeProvider; private readonly IMissionService missionService = missionService; private readonly IEventRepository eventRepository = eventRepository; private readonly ILogger logger = logger; @@ -33,11 +32,11 @@ ILogger logger public async Task Apply() { - await missionRepository.ClearDailyMissions(); + await this.missionRepository.ClearDailyMissions(); this.logger.LogDebug("Adding permanent daily endeavours"); - DateTimeOffset lastDailyReset = this.resetHelper.LastDailyReset; + DateTimeOffset lastDailyReset = this.timeProvider.GetLastDailyReset(); foreach (DailyMission permanentDaily in PermanentDailyMissions) { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/DragonGiftResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/DragonGiftResetAction.cs similarity index 92% rename from DragaliaAPI/DragaliaAPI/Features/Login/DragonGiftResetAction.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/Actions/DragonGiftResetAction.cs index b650b9216..54615e2e8 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/DragonGiftResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/DragonGiftResetAction.cs @@ -2,16 +2,15 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Utils; -using DragaliaAPI.Helpers; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; -namespace DragaliaAPI.Features.Login; +namespace DragaliaAPI.Features.Login.Actions; public class DragonGiftResetAction( ApiContext apiContext, - IResetHelper resetHelper, + TimeProvider timeProvider, IPlayerIdentityService playerIdentityService ) : IDailyResetAction { @@ -42,7 +41,7 @@ public async Task Apply() dbGift.Quantity = 1; } - DayOfWeek todayDayOfWeek = resetHelper.LastDailyReset.DayOfWeek; + DayOfWeek todayDayOfWeek = timeProvider.GetLastDailyReset().DayOfWeek; foreach (DragonGifts dailyGiftId in DragonConstants.RotatingGifts) { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/IDailyResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/IDailyResetAction.cs similarity index 58% rename from DragaliaAPI/DragaliaAPI/Features/Login/IDailyResetAction.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/Actions/IDailyResetAction.cs index 13231d3cd..2ef0e4ce0 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/IDailyResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/IDailyResetAction.cs @@ -1,4 +1,4 @@ -namespace DragaliaAPI.Features.Login; +namespace DragaliaAPI.Features.Login.Actions; public interface IDailyResetAction { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/ItemSummonResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/ItemSummonResetAction.cs similarity index 90% rename from DragaliaAPI/DragaliaAPI/Features/Login/ItemSummonResetAction.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/Actions/ItemSummonResetAction.cs index 0ac8d7cb8..298a92a0e 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/ItemSummonResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/ItemSummonResetAction.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Shop; -namespace DragaliaAPI.Features.Login; +namespace DragaliaAPI.Features.Login.Actions; public class ItemSummonResetAction : IDailyResetAction { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/LoginGiftResetAction.cs b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/LoginGiftResetAction.cs similarity index 97% rename from DragaliaAPI/DragaliaAPI/Features/Login/LoginGiftResetAction.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/Actions/LoginGiftResetAction.cs index b97140834..1c4bf37cc 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/LoginGiftResetAction.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/Actions/LoginGiftResetAction.cs @@ -2,7 +2,7 @@ using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Features.Presents; -namespace DragaliaAPI.Features.Login; +namespace DragaliaAPI.Features.Login.Actions; public class LoginGiftResetAction : IDailyResetAction { diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Login/FeatureExtensions.cs new file mode 100644 index 000000000..2a4d58016 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Login/FeatureExtensions.cs @@ -0,0 +1,13 @@ +using DragaliaAPI.Features.Login; +using DragaliaAPI.Features.Login.Actions; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddLoginFeature(this IServiceCollection serviceCollection) => + serviceCollection + .AddScoped() + .AddAllOfType(); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusRepository.cs deleted file mode 100644 index cdaf2c733..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusRepository.cs +++ /dev/null @@ -1,8 +0,0 @@ -using DragaliaAPI.Database.Entities; - -namespace DragaliaAPI.Features.Login; - -public interface ILoginBonusRepository -{ - Task Get(int id); -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusService.cs b/DragaliaAPI/DragaliaAPI/Features/Login/ILoginService.cs similarity index 58% rename from DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusService.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/ILoginService.cs index b8eab12d5..786c7f5b7 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/ILoginBonusService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/ILoginService.cs @@ -2,7 +2,8 @@ namespace DragaliaAPI.Features.Login; -public interface ILoginBonusService +public interface ILoginService { Task> RewardLoginBonus(); + Task> GetWallMonthlyReceiveList(); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusRepository.cs deleted file mode 100644 index b0ef7012a..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusRepository.cs +++ /dev/null @@ -1,34 +0,0 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.PlayerDetails; -using Microsoft.EntityFrameworkCore; - -namespace DragaliaAPI.Features.Login; - -public class LoginBonusRepository( - ApiContext apiContext, - IPlayerIdentityService playerIdentityService -) : ILoginBonusRepository -{ - private IQueryable LoginBonuses { get; } = - apiContext.LoginBonuses.Where(x => x.ViewerId == playerIdentityService.ViewerId); - - public async Task Get(int id) - { - return await this.LoginBonuses.FirstOrDefaultAsync(x => x.Id == id) ?? this.Add(id); - } - - private DbLoginBonus Add(int id) - { - return apiContext - .LoginBonuses.Add( - new DbLoginBonus() - { - ViewerId = playerIdentityService.ViewerId, - CurrentDay = 0, - Id = id - } - ) - .Entity; - } -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/LoginController.cs b/DragaliaAPI/DragaliaAPI/Features/Login/LoginController.cs index b1fdd65c6..79fccb310 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/LoginController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/LoginController.cs @@ -1,8 +1,9 @@ using DragaliaAPI.Controllers; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Features.Login.Actions; using DragaliaAPI.Features.Reward; -using DragaliaAPI.Helpers; +using DragaliaAPI.Features.Wall; using DragaliaAPI.Models; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; @@ -13,30 +14,18 @@ namespace DragaliaAPI.Features.Login; [Route("login")] -[Consumes("application/octet-stream")] -[Produces("application/octet-stream")] -[ApiController] [BypassDailyReset] public class LoginController( IUserDataRepository userDataRepository, IUpdateDataService updateDataService, IEnumerable resetActions, - IResetHelper resetHelper, ILogger logger, - ILoginBonusService loginBonusService, + ILoginService loginService, IRewardService rewardService, - TimeProvider dateTimeProvider + TimeProvider dateTimeProvider, + IDragonService dragonService ) : DragaliaControllerBase { - private readonly IUserDataRepository userDataRepository = userDataRepository; - private readonly IUpdateDataService updateDataService = updateDataService; - private readonly IEnumerable resetActions = resetActions; - private readonly IResetHelper resetHelper = resetHelper; - private readonly ILogger logger = logger; - private readonly ILoginBonusService loginBonusService = loginBonusService; - private readonly IRewardService rewardService = rewardService; - private readonly TimeProvider dateTimeProvider = dateTimeProvider; - [HttpPost] public IActionResult Login() { @@ -56,30 +45,30 @@ public async Task Index(CancellationToken cancellationToken) await userDataRepository.UserData.FirstOrDefaultAsync(cancellationToken) ?? throw new DragaliaException(ResultCode.CommonDataNotFoundError); - if (userData.LastLoginTime < resetHelper.LastDailyReset) + if (userData.LastLoginTime < dateTimeProvider.GetLastDailyReset()) { foreach (IDailyResetAction action in resetActions) { - this.logger.LogDebug("Applying daily reset action: {$action}", action); + logger.LogInformation("Applying daily reset action: {$action}", action); await action.Apply(); } - resp.LoginBonusList = await this.loginBonusService.RewardLoginBonus(); + resp.LoginBonusList = await loginService.RewardLoginBonus(); } - userData.LastLoginTime = this.dateTimeProvider.GetUtcNow(); + userData.LastLoginTime = dateTimeProvider.GetUtcNow(); + + resp.MonthlyWallReceiveList = await loginService.GetWallMonthlyReceiveList(); + resp.DragonContactFreeGiftCount = await dragonService.GetFreeGiftCount(); resp.PenaltyData = new AtgenPenaltyData(); - resp.DragonContactFreeGiftCount = 1; - resp.LoginLotteryRewardList = Enumerable.Empty(); - resp.ExchangeSummomPointList = Enumerable.Empty(); - resp.MonthlyWallReceiveList = Enumerable.Empty(); - // NOTE: This may cause issues on debug builds but should be fine on the actual server. - resp.UpdateDataList = await this.updateDataService.SaveChangesAsync(cancellationToken); + // NOTE: Cancelling the request + savefile updates may cause issues with request loops on debug builds, + // but it should be fine on the actual server. + resp.UpdateDataList = await updateDataService.SaveChangesAsync(cancellationToken); - resp.EntityResult = this.rewardService.GetEntityResult(); - resp.ServerTime = this.dateTimeProvider.GetUtcNow(); + resp.EntityResult = rewardService.GetEntityResult(); + resp.ServerTime = dateTimeProvider.GetUtcNow(); return this.Ok(resp); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusService.cs b/DragaliaAPI/DragaliaAPI/Features/Login/LoginService.cs similarity index 62% rename from DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusService.cs rename to DragaliaAPI/DragaliaAPI/Features/Login/LoginService.cs index 87f6cec85..6ceafb434 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Login/LoginBonusService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Login/LoginService.cs @@ -1,18 +1,24 @@ -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Wall; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Login; +using DragaliaAPI.Shared.PlayerDetails; +using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Features.Login; -public class LoginBonusService( +public class LoginService( IRewardService rewardService, TimeProvider dateTimeProvider, - ILoginBonusRepository loginBonusRepository, - ILogger logger -) : ILoginBonusService + ApiContext apiContext, + IWallService wallService, + IPlayerIdentityService playerIdentityService, + ILogger logger +) : ILoginService { public async Task> RewardLoginBonus() { @@ -26,7 +32,20 @@ LoginBonusData bonusData in MasterAsset.LoginBonusData.Enumerable.Where(x => ) ) { - DbLoginBonus dbBonus = await loginBonusRepository.Get(bonusData.Id); + DbLoginBonus? dbBonus = await apiContext.LoginBonuses.FirstOrDefaultAsync(x => + x.Id == bonusData.Id + ); + + if (dbBonus is null) + { + dbBonus = new DbLoginBonus() + { + ViewerId = playerIdentityService.ViewerId, + Id = bonusData.Id, + }; + apiContext.LoginBonuses.Add(dbBonus); + } + if (dbBonus.IsComplete) { logger.LogDebug( @@ -63,7 +82,8 @@ LoginBonusData bonusData in MasterAsset.LoginBonusData.Enumerable.Where(x => if (dbBonus.CurrentDay >= bonusCount && !bonusData.IsLoop) dbBonus.IsComplete = true; - await rewardService.GrantReward( + // TODO: Propagate this information up to the EntityResult + _ = await rewardService.GrantReward( new Entity( reward.EntityType, reward.EntityId, @@ -90,7 +110,8 @@ await rewardService.GrantReward( if (bonusData.EachDayEntityType != EntityTypes.None) { - await rewardService.GrantReward( + // TODO: Propagate this information up to the EntityResult + _ = await rewardService.GrantReward( new Entity( bonusData.EachDayEntityType, bonusData.EachDayEntityId, @@ -100,9 +121,32 @@ await rewardService.GrantReward( } } - //bonusList.Add(new AtgenLoginBonusList(1, 17, 540)); - //bonusList.Add(new AtgenLoginBonusList(1, 74, 2)); - return bonusList; } + + public async Task> GetWallMonthlyReceiveList() + { + if (!await wallService.CheckWallInitialized()) + { + return []; + } + + DateTimeOffset lastClaimDate = await apiContext + .WallRewardDates.AsNoTracking() + .Select(x => x.LastClaimDate) + .FirstAsync(); + + RewardStatus wallRewardStatus = wallService.CheckCanClaimReward(lastClaimDate) + ? RewardStatus.Available + : RewardStatus.Received; + + return + [ + new() + { + QuestGroupId = WallService.WallQuestGroupId, + IsReceiveReward = wallRewardStatus, + } + ]; + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/MissionInitialProgressionService.cs b/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/MissionInitialProgressionService.cs index ec190c91f..039acd582 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/MissionInitialProgressionService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/MissionInitialProgressionService.cs @@ -5,6 +5,7 @@ using DragaliaAPI.Database.Utils; using DragaliaAPI.Features.Event; using DragaliaAPI.Features.PartyPower; +using DragaliaAPI.Features.Story; using DragaliaAPI.Features.Trade; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; diff --git a/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/WallCalculator.cs b/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/WallCalculator.cs index 7e95331bd..3072d9ddd 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/WallCalculator.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Missions/InitialProgress/WallCalculator.cs @@ -1,3 +1,4 @@ +using DragaliaAPI.Database; using DragaliaAPI.Features.Wall; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset.Models.Missions; @@ -7,7 +8,7 @@ namespace DragaliaAPI.Features.Missions.InitialProgress; [UsedImplicitly] -public class WallCalculator(IWallRepository wallRepository) : IInitialProgressCalculator +public class WallCalculator(ApiContext apiContext) : IInitialProgressCalculator { public async Task GetInitialProgress(MissionProgressionInfo progressionInfo) { @@ -19,13 +20,13 @@ public async Task GetInitialProgress(MissionProgressionInfo progressionInfo // The mission is either "Clear the Mercurial Gauntlet" (with complete value 1) or // "Clear Lv. of The Mercurial Gauntlet in All Elements" (with complete value 5). We will return the // number of elements in which the required level has been reached. - return await wallRepository.QuestWalls.Where(x => x.WallLevel >= level).CountAsync(); + return await apiContext.PlayerQuestWalls.CountAsync(x => x.WallLevel >= level); } // The mission is "Clear The Mercurial Gauntlet (): Lv. ". - return await wallRepository - .QuestWalls.Where(x => x.WallLevel >= level && x.WallId == (int)type) - .AnyAsync() + return await apiContext.PlayerQuestWalls.AnyAsync(x => + x.WallLevel >= level && x.WallId == (int)type + ) ? 1 : 0; } diff --git a/DragaliaAPI/DragaliaAPI/Features/Missions/MissionRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Missions/MissionRepository.cs index 26725a3f6..4d71ac00d 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Missions/MissionRepository.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Missions/MissionRepository.cs @@ -1,7 +1,6 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Utils; -using DragaliaAPI.Helpers; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Missions; @@ -13,11 +12,12 @@ namespace DragaliaAPI.Features.Missions; public class MissionRepository( ApiContext apiContext, IPlayerIdentityService playerIdentityService, - IResetHelper resetHelper + TimeProvider timeProvider ) : IMissionRepository { private readonly ApiContext apiContext = apiContext; private readonly IPlayerIdentityService playerIdentityService = playerIdentityService; + private readonly TimeProvider timeProvider = timeProvider; public IQueryable Missions => this.apiContext.PlayerMissions.Where(x => @@ -54,8 +54,8 @@ public async Task> GetActiveMissionsPerTyp return ( await Missions .Where(x => - (x.Start == DateTimeOffset.UnixEpoch || x.Start < resetHelper.UtcNow) - && (x.End == DateTimeOffset.UnixEpoch || x.End > resetHelper.UtcNow) + (x.Start == DateTimeOffset.UnixEpoch || x.Start < timeProvider.GetUtcNow()) + && (x.End == DateTimeOffset.UnixEpoch || x.End > timeProvider.GetUtcNow()) ) .ToListAsync() ) @@ -113,7 +113,7 @@ public async Task AddCompletedDailyMission(DbPlayerMission originalMission) { long viewerId = this.playerIdentityService.ViewerId; int id = originalMission.Id; - DateOnly date = DateOnly.FromDateTime(resetHelper.LastDailyReset.UtcDateTime); + DateOnly date = DateOnly.FromDateTime(timeProvider.GetLastDailyReset().UtcDateTime); if (await this.apiContext.CompletedDailyMissions.FindAsync(viewerId, id, date) != null) return; diff --git a/DragaliaAPI/DragaliaAPI/Features/Missions/MissionService.cs b/DragaliaAPI/DragaliaAPI/Features/Missions/MissionService.cs index 89205a665..7d1f716d9 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Missions/MissionService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Missions/MissionService.cs @@ -5,7 +5,6 @@ using DragaliaAPI.Features.Missions.InitialProgress; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shared.Options; -using DragaliaAPI.Helpers; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.MasterAsset; @@ -21,7 +20,7 @@ public class MissionService( IRewardService rewardService, IMissionInitialProgressionService missionInitialProgressionService, IUserDataRepository userDataRepository, - IResetHelper resetHelper, + TimeProvider timeProvider, IOptionsMonitor eventOptionsMonitor ) : IMissionService { @@ -37,7 +36,7 @@ IOptionsMonitor eventOptionsMonitor missionInitialProgressionService; private readonly IUserDataRepository userDataRepository = userDataRepository; private readonly IRewardService rewardService = rewardService; - private readonly IResetHelper resetHelper = resetHelper; + private readonly TimeProvider timeProvider = timeProvider; private readonly EventOptions eventOptions = eventOptionsMonitor.CurrentValue; public async Task StartMission( @@ -208,8 +207,8 @@ public async Task> UnlockEventMissions(int eventId) this.logger.LogDebug("Starting missions for event with run info {@info}", runInfo); if ( - this.resetHelper.LastDailyReset < runInfo.Start - || this.resetHelper.LastDailyReset > runInfo.End + this.timeProvider.GetLastDailyReset() < runInfo.Start + || this.timeProvider.GetLastDailyReset() > runInfo.End ) { throw new DragaliaException( @@ -248,8 +247,8 @@ await this.StartMission( MissionType.Daily, mission.Id, groupId: mission.QuestGroupId, - startTime: this.resetHelper.LastDailyReset, - endTime: this.resetHelper.LastDailyReset.AddDays(1) + startTime: this.timeProvider.GetLastDailyReset(), + endTime: this.timeProvider.GetLastDailyReset().AddDays(1) ) ); } @@ -342,7 +341,7 @@ public async Task RedeemDailyMissions(IEnumerable missio { if ( claimRequest.DayNo - == DateOnly.FromDateTime(this.resetHelper.LastDailyReset.UtcDateTime) + == DateOnly.FromDateTime(this.timeProvider.GetLastDailyReset().UtcDateTime) ) { DbPlayerMission regularMission = regularMissions.First(x => @@ -516,7 +515,7 @@ IEnumerable newCompletedMissionList { DbPlayerMission? activeMission = allMissions .OrderBy(x => x.Id) - .FirstOrDefault(x => x.State < MissionState.Claimed); + .FirstOrDefault(x => x.State < MissionState.Completed); if (activeMission != null) { @@ -642,7 +641,7 @@ public async Task BuildNormalResponse() State = x.State, StartDate = x.Start, EndDate = x.End, - DayNo = DateOnly.FromDateTime(this.resetHelper.LastDailyReset.UtcDateTime) + DayNo = DateOnly.FromDateTime(this.timeProvider.GetLastDailyReset().UtcDateTime) }); response.DailyMissionList = currentDailyMissions.UnionBy( diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Present/FeatureExtensions.cs new file mode 100644 index 000000000..cc63c0833 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Present/FeatureExtensions.cs @@ -0,0 +1,12 @@ +using DragaliaAPI.Features.Present; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddPresentFeature(this IServiceCollection services) => + services + .AddScoped() + .AddScoped(); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/IPresentService.cs b/DragaliaAPI/DragaliaAPI/Features/Present/IPresentService.cs index eb06d0244..0add12ce9 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Present/IPresentService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Present/IPresentService.cs @@ -7,6 +7,8 @@ namespace DragaliaAPI.Features.Present; /// public interface IPresentService { + public IReadOnlyList AddedPresents { get; } + Task GetPresentNotice(); void AddPresent(Present present); diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/Present.cs b/DragaliaAPI/DragaliaAPI/Features/Present/Present.cs index 7c01709b3..ce1ff009b 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Present/Present.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Present/Present.cs @@ -1,4 +1,5 @@ using DragaliaAPI.Database.Entities; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Features.Presents; @@ -26,7 +27,7 @@ public record Present( public TimeSpan? ExpiryTime { get; init; } - public IEnumerable MessageParamValues { get; init; } = Enumerable.Empty(); + public IEnumerable MessageParamValues { get; init; } = []; public DbPlayerPresent ToEntity(long viewerId) { @@ -47,4 +48,14 @@ public DbPlayerPresent ToEntity(long viewerId) ReceiveLimitTime = CreateTime + ExpiryTime }; } + + public AtgenBuildEventRewardEntityList ToBuildEventRewardList() + { + return new() + { + EntityId = this.EntityId, + EntityType = this.EntityType, + EntityQuantity = this.EntityQuantity + }; + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/PresentControllerService.cs b/DragaliaAPI/DragaliaAPI/Features/Present/PresentControllerService.cs index a0346a22a..e95aa7c95 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Present/PresentControllerService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Present/PresentControllerService.cs @@ -1,4 +1,6 @@ -using AutoMapper; +using System.Linq.Expressions; +using AutoMapper; +using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Reward; using DragaliaAPI.Models.Generated; @@ -10,34 +12,13 @@ namespace DragaliaAPI.Features.Present; /// Present service to back . ///
public class PresentControllerService( - ILogger logger, - IPresentRepository presentRepository, IRewardService rewardService, - IMapper mapper + ApiContext apiContext, + ILogger logger ) : IPresentControllerService { private const int PresentPageSize = 100; - public async Task> GetPresentHistoryList(ulong presentId) - { - IQueryable presentsQuery = presentRepository.PresentHistory; - - if (presentId > 0) - { - presentsQuery = presentsQuery.Where(x => x.Id <= (long)presentId - PresentPageSize); - } - - // It's a bit sus to page by ID without sorting by ID. But this is supposed to show in order of claimed date. - // Theoretically, it should be sorted in the same way since the ID is auto-incrementing, so later date == higher ID. - List list = await presentsQuery - .OrderByDescending(x => x.Id) - .Take(PresentPageSize) - .ToListAsync(); - - return list.Select(mapper.Map) - .OrderByDescending(x => x.Id); - } - public async Task> GetPresentList(ulong presentId) => await this.GetPresentList(presentId, false); @@ -46,7 +27,7 @@ public async Task> GetLimitPresentList(ulong pres private async Task> GetPresentList(ulong presentId, bool isLimit) { - IQueryable presentsQuery = presentRepository.Presents; + IQueryable presentsQuery = apiContext.PlayerPresents; presentsQuery = isLimit ? presentsQuery.Where(x => x.ReceiveLimitTime != null) @@ -54,24 +35,41 @@ private async Task> GetPresentList(ulong presentI if (presentId > 0) { - presentsQuery = presentsQuery.Where(x => - x.PresentId <= (long)presentId - PresentPageSize - ); + // The client uses keyset pagination for the present list, and will send the present ID of the last present + // that it viewed if it knows there are more than 100 presents. + presentsQuery = presentsQuery.Where(x => (ulong)x.PresentId < presentId); } - List list = await presentsQuery + List list = await presentsQuery .OrderByDescending(x => x.PresentId) .Take(PresentPageSize) + .ProjectToPresentDetailList() + .ToListAsync(); + + return list; + } + + public async Task> GetPresentHistoryList(ulong presentId) + { + IQueryable presentsQuery = apiContext.PlayerPresentHistory; + + if (presentId > 0) + { + presentsQuery = presentsQuery.Where(x => (ulong)x.Id < presentId); + } + + List list = await presentsQuery + .OrderByDescending(x => x.Id) + .Take(PresentPageSize) + .ProjectToPresentHistoryList() .ToListAsync(); - return (list) - .Select(mapper.Map) - .OrderBy(x => x.PresentId); + return list; } public async Task ReceivePresent(IEnumerable ids, bool isLimit) { - IQueryable presentsQuery = presentRepository.Presents.Where(x => + IQueryable presentsQuery = apiContext.PlayerPresents.Where(x => ids.Contains((ulong)x.PresentId) ); @@ -81,9 +79,9 @@ public async Task ReceivePresent(IEnumerable ids, boo List presents = await presentsQuery.ToListAsync(); - List receivedIds = new(); - List notReceivedIds = new(); - List removedIds = new(); + List receivedIds = []; + List notReceivedIds = []; + List removedIds = []; foreach (DbPlayerPresent present in presents) { @@ -115,15 +113,82 @@ public async Task ReceivePresent(IEnumerable ids, boo } logger.LogDebug("Claimed present {@present}", present); - presentRepository.AddPlayerPresentHistory( - mapper.Map(present) - ); - } - await presentRepository.DeletePlayerPresents(receivedIds.Concat(removedIds)); + if (result is RewardGrantResult.Added or RewardGrantResult.Converted) + { + apiContext.PlayerPresents.Remove(present); + apiContext.PlayerPresentHistory.Add(present.MapToPresentHistory()); + } + } return new(receivedIds, notReceivedIds, removedIds); } public record ClaimPresentResult(List Received, List Converted, List Removed); } + +file static class MappingExtensions +{ + public static IQueryable ProjectToPresentDetailList( + this IQueryable presents + ) => + presents.Select(x => new PresentDetailList() + { + PresentId = (ulong)x.PresentId, + MasterId = (int)x.MasterId, + State = (int)x.State, + EntityType = x.EntityType, + EntityId = x.EntityId, + EntityQuantity = x.EntityQuantity, + EntityLevel = x.EntityLevel, + EntityLimitBreakCount = x.EntityLimitBreakCount, + EntityStatusPlusCount = x.EntityStatusPlusCount, + MessageId = x.MessageId, + MessageParamValue1 = x.MessageParamValue1, + MessageParamValue2 = x.MessageParamValue2, + MessageParamValue3 = x.MessageParamValue3, + MessageParamValue4 = x.MessageParamValue4, + ReceiveLimitTime = x.ReceiveLimitTime ?? DateTimeOffset.UnixEpoch, + CreateTime = x.CreateTime, + }); + + public static IQueryable ProjectToPresentHistoryList( + this IQueryable presentHistories + ) => + presentHistories.Select(x => new PresentHistoryList() + { + Id = (ulong)x.Id, + EntityType = x.EntityType, + EntityId = x.EntityId, + EntityQuantity = x.EntityQuantity, + EntityLevel = x.EntityLevel, + EntityLimitBreakCount = x.EntityLimitBreakCount, + EntityStatusPlusCount = x.EntityStatusPlusCount, + MessageId = x.MessageId, + MessageParamValue1 = x.MessageParamValue1, + MessageParamValue2 = x.MessageParamValue2, + MessageParamValue3 = x.MessageParamValue3, + MessageParamValue4 = x.MessageParamValue4, + CreateTime = x.CreateTime, + }); + + public static DbPlayerPresentHistory MapToPresentHistory(this DbPlayerPresent present) => + new() + { + Id = present.PresentId, + EntityType = present.EntityType, + EntityId = present.EntityId, + EntityQuantity = present.EntityQuantity, + EntityLevel = present.EntityLevel, + EntityLimitBreakCount = present.EntityLimitBreakCount, + EntityStatusPlusCount = present.EntityStatusPlusCount, + MessageId = present.MessageId, + MessageParamValue1 = present.MessageParamValue1, + MessageParamValue2 = present.MessageParamValue2, + MessageParamValue3 = present.MessageParamValue3, + MessageParamValue4 = present.MessageParamValue4, + CreateTime = present.CreateTime, + Owner = present.Owner, + ViewerId = present.ViewerId, + }; +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/PresentMapProfile.cs b/DragaliaAPI/DragaliaAPI/Features/Present/PresentMapProfile.cs deleted file mode 100644 index acac94a60..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Present/PresentMapProfile.cs +++ /dev/null @@ -1,35 +0,0 @@ -using AutoMapper; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Models.Generated; - -namespace DragaliaAPI.Features.Present; - -public class PresentMapProfile : Profile -{ - public PresentMapProfile() - { - this.CreateMap() - .ForMember( - x => x.ReceiveLimitTime, - opts => opts.NullSubstitute(DateTimeOffset.UnixEpoch) - ); - - this.CreateMap() - .ForMember( - nameof(DbPlayerPresentHistory.CreateTime), - x => x.MapFrom(src => DateTimeOffset.UtcNow) - ) - .ForSourceMember(nameof(DbPlayerPresent.ReceiveLimitTime), opts => opts.DoNotValidate()) - .ForSourceMember(nameof(DbPlayerPresent.MasterId), opts => opts.DoNotValidate()) - .ForSourceMember(nameof(DbPlayerPresent.State), opts => opts.DoNotValidate()) - .ForMember( - nameof(DbPlayerPresentHistory.Id), - x => x.MapFrom(nameof(DbPlayerPresent.PresentId)) - ) - .ForMember(x => x.CreateTime, opts => opts.Ignore()); - - this.CreateMap(); - - this.DisableConstructorMapping(); - } -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/PresentRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Present/PresentRepository.cs deleted file mode 100644 index 4b6d0d968..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Present/PresentRepository.cs +++ /dev/null @@ -1,55 +0,0 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.PlayerDetails; -using Microsoft.EntityFrameworkCore; - -namespace DragaliaAPI.Features.Present; - -public class PresentRepository : IPresentRepository -{ - private readonly ApiContext apiContext; - private readonly IPlayerIdentityService playerIdentityService; - - public PresentRepository(ApiContext apiContext, IPlayerIdentityService playerIdentityService) - { - this.apiContext = apiContext; - this.playerIdentityService = playerIdentityService; - } - - public IQueryable PresentHistory => - apiContext.PlayerPresentHistory.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - ); - - public IQueryable Presents => - apiContext.PlayerPresents.Where(x => x.ViewerId == this.playerIdentityService.ViewerId); - - public void AddPlayerPresents(IEnumerable playerPresents) - { - apiContext.PlayerPresents.AddRange(playerPresents); - } - - public async Task DeletePlayerPresents(IEnumerable presentIds) - { - ICollection playerPresents = await apiContext - .PlayerPresents.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - && presentIds.Contains(x.PresentId) - ) - .ToListAsync(); - - if (playerPresents.Count < presentIds.Count()) - { - throw new ArgumentException( - $"No presents present for ids: {string.Join(", ", presentIds.Except(playerPresents.Select(x => x.PresentId)))}" - ); - } - - apiContext.RemoveRange(playerPresents); - } - - public void AddPlayerPresentHistory(DbPlayerPresentHistory presentHistory) - { - apiContext.PlayerPresentHistory.Add(presentHistory); - } -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Present/PresentService.cs b/DragaliaAPI/DragaliaAPI/Features/Present/PresentService.cs index c0edf2b95..db1f94930 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Present/PresentService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Present/PresentService.cs @@ -1,3 +1,5 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; @@ -7,28 +9,21 @@ namespace DragaliaAPI.Features.Present; /// /// Base present service to be used by other features to check/add present data. /// -public class PresentService : IPresentService +public class PresentService(IPlayerIdentityService playerIdentityService, ApiContext apiContext) + : IPresentService { - private readonly IPresentRepository presentRepository; - private readonly IPlayerIdentityService playerIdentityService; + private readonly List addedPresents = []; - public PresentService( - IPresentRepository presentRepository, - IPlayerIdentityService playerIdentityService - ) - { - this.presentRepository = presentRepository; - this.playerIdentityService = playerIdentityService; - } + public IReadOnlyList AddedPresents => this.addedPresents; public async Task GetPresentNotice() { return new() { - PresentCount = await this.presentRepository.Presents.CountAsync(x => + PresentCount = await apiContext.PlayerPresents.CountAsync(x => x.ReceiveLimitTime == null ), - PresentLimitCount = await this.presentRepository.Presents.CountAsync(x => + PresentLimitCount = await apiContext.PlayerPresents.CountAsync(x => x.ReceiveLimitTime != null ), }; @@ -36,13 +31,15 @@ public async Task GetPresentNotice() public void AddPresent(Present present) { - this.AddPresent(new[] { present }); + apiContext.PlayerPresents.Add(present.ToEntity(playerIdentityService.ViewerId)); + this.addedPresents.Add(present); } public void AddPresent(IEnumerable presents) { - this.presentRepository.AddPlayerPresents( - presents.Select(x => x.ToEntity(this.playerIdentityService.ViewerId)) - ); + foreach (Present present in presents) + { + this.AddPresent(present); + } } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Quest/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Quest/FeatureExtensions.cs new file mode 100644 index 000000000..c6942f545 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Quest/FeatureExtensions.cs @@ -0,0 +1,13 @@ +using DragaliaAPI.Features.Quest; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddQuestFeature(this IServiceCollection services) => + services + .AddScoped() + .AddScoped() + .AddScoped(); +} diff --git a/DragaliaAPI/DragaliaAPI/Services/IQuestTreasureService.cs b/DragaliaAPI/DragaliaAPI/Features/Quest/IQuestTreasureService.cs similarity index 85% rename from DragaliaAPI/DragaliaAPI/Services/IQuestTreasureService.cs rename to DragaliaAPI/DragaliaAPI/Features/Quest/IQuestTreasureService.cs index 1e8470343..68c6b4cb3 100644 --- a/DragaliaAPI/DragaliaAPI/Services/IQuestTreasureService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Quest/IQuestTreasureService.cs @@ -1,6 +1,6 @@ using DragaliaAPI.Models.Generated; -namespace DragaliaAPI.Services; +namespace DragaliaAPI.Features.Quest; public interface IQuestTreasureService { diff --git a/DragaliaAPI/DragaliaAPI/Features/Quest/QuestController.cs b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestController.cs index 0ec5d903f..5728b7e09 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Quest/QuestController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestController.cs @@ -1,5 +1,7 @@ using DragaliaAPI.Controllers; using DragaliaAPI.Features.ClearParty; +using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Services.Game; @@ -20,12 +22,6 @@ public class QuestController( IQuestTreasureService questTreasureService ) : DragaliaControllerBase { - private readonly IStoryService storyService = storyService; - private readonly IHelperService helperService = helperService; - private readonly IUpdateDataService updateDataService = updateDataService; - private readonly IClearPartyService clearPartyService = clearPartyService; - private readonly IQuestTreasureService questTreasureService = questTreasureService; - [HttpPost] [Route("read_story")] public async Task ReadStory( @@ -33,19 +29,18 @@ public async Task ReadStory( CancellationToken cancellationToken ) { - IEnumerable rewardList = await this.storyService.ReadStory( + IEnumerable rewardList = await storyService.ReadStory( StoryTypes.Quest, request.QuestStoryId ); - EntityResult entityResult = StoryService.GetEntityResult(rewardList); + EntityResult entityResult = storyService.GetEntityResult(); + IEnumerable questRewardList = rewardList.Select( StoryService.ToQuestStoryReward ); - UpdateDataList updateDataList = await this.updateDataService.SaveChangesAsync( - cancellationToken - ); + UpdateDataList updateDataList = await updateDataService.SaveChangesAsync(cancellationToken); return this.Ok( new QuestReadStoryResponse() @@ -61,7 +56,7 @@ CancellationToken cancellationToken public async Task GetUserSupportList() { // TODO: this is actually going to be a pretty complicated system - QuestGetSupportUserListResponse response = await this.helperService.GetHelpers(); + QuestGetSupportUserListResponse response = await helperService.GetHelpers(); return Ok(response); } @@ -72,9 +67,9 @@ CancellationToken cancellationToken ) { (IEnumerable clearParty, IEnumerable lostUnitList) = - await this.clearPartyService.GetQuestClearParty(request.QuestId, false); + await clearPartyService.GetQuestClearParty(request.QuestId, false); - await this.updateDataService.SaveChangesAsync(cancellationToken); + await updateDataService.SaveChangesAsync(cancellationToken); // Updated lost entities return Ok( @@ -93,9 +88,9 @@ CancellationToken cancellationToken ) { (IEnumerable clearParty, IEnumerable lostUnitList) = - await this.clearPartyService.GetQuestClearParty(request.QuestId, true); + await clearPartyService.GetQuestClearParty(request.QuestId, true); - await this.updateDataService.SaveChangesAsync(cancellationToken); + await updateDataService.SaveChangesAsync(cancellationToken); return Ok( new QuestGetQuestClearPartyMultiResponse() @@ -112,7 +107,7 @@ public async Task OpenTreasure( CancellationToken cancellationToken ) { - QuestOpenTreasureResponse response = await this.questTreasureService.DoOpenTreasure( + QuestOpenTreasureResponse response = await questTreasureService.DoOpenTreasure( request, cancellationToken ); @@ -125,13 +120,13 @@ public async Task SetQuestClearParty( CancellationToken cancellationToken ) { - await this.clearPartyService.SetQuestClearParty( + await clearPartyService.SetQuestClearParty( request.QuestId, false, request.RequestPartySettingList ); - await this.updateDataService.SaveChangesAsync(cancellationToken); + await updateDataService.SaveChangesAsync(cancellationToken); return Ok(new QuestSetQuestClearPartyResponse() { Result = 1 }); } @@ -142,13 +137,13 @@ public async Task SetQuestClearParty( CancellationToken cancellationToken ) { - await this.clearPartyService.SetQuestClearParty( + await clearPartyService.SetQuestClearParty( request.QuestId, true, request.RequestPartySettingList ); - await this.updateDataService.SaveChangesAsync(cancellationToken); + await updateDataService.SaveChangesAsync(cancellationToken); return Ok(new QuestSetQuestClearPartyMultiResponse() { Result = 1 }); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Quest/QuestService.cs b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestService.cs index cd056a50b..10bbef3bd 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Quest/QuestService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestService.cs @@ -3,7 +3,6 @@ using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Player; using DragaliaAPI.Features.Reward; -using DragaliaAPI.Helpers; using DragaliaAPI.Models; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; @@ -18,7 +17,6 @@ public class QuestService( ILogger logger, IQuestRepository questRepository, TimeProvider timeProvider, - IResetHelper resetHelper, IQuestCacheService questCacheService, IRewardService rewardService, IMissionProgressionService missionProgressionService @@ -45,7 +43,7 @@ IEnumerable Bonus quest.PlayCount += session.PlayCount; - if (resetHelper.LastDailyReset > quest.LastDailyResetTime) + if (timeProvider.GetLastDailyReset() > quest.LastDailyResetTime) { logger.LogTrace("Resetting daily play count for quest {questId}", questId); @@ -55,7 +53,7 @@ IEnumerable Bonus quest.DailyPlayCount += playCount; - if (resetHelper.LastWeeklyReset > quest.LastWeeklyResetTime) + if (timeProvider.GetLastWeeklyReset() > quest.LastWeeklyResetTime) { logger.LogTrace("Resetting weekly play count for quest {questId}", questId); @@ -73,7 +71,7 @@ IEnumerable Bonus questId, questData.Gid, questData.QuestPlayModeType, - 1, + session.PlayCount, quest.PlayCount ); @@ -138,7 +136,7 @@ int playCount DbQuestEvent questEvent = await questRepository.GetQuestEventAsync(eventGroupId); QuestEvent questEventData = MasterAsset.QuestEvent[eventGroupId]; - if (resetHelper.LastDailyReset > questEvent.LastDailyResetTime) + if (timeProvider.GetLastDailyReset() > questEvent.LastDailyResetTime) { if (questEventData.QuestBonusType == QuestResetIntervalType.Daily) { @@ -151,7 +149,7 @@ int playCount questEvent.DailyPlayCount += playCount; - if (resetHelper.LastWeeklyReset > questEvent.LastWeeklyResetTime) + if (timeProvider.GetLastWeeklyReset() > questEvent.LastWeeklyResetTime) { if (questEventData.QuestBonusType == QuestResetIntervalType.Weekly) { diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/QuestTreasureService.cs b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestTreasureService.cs similarity index 97% rename from DragaliaAPI/DragaliaAPI/Services/Game/QuestTreasureService.cs rename to DragaliaAPI/DragaliaAPI/Features/Quest/QuestTreasureService.cs index cdd3edfd3..c6cec7012 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/QuestTreasureService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Quest/QuestTreasureService.cs @@ -3,12 +3,13 @@ using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Reward; using DragaliaAPI.Models.Generated; +using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.PlayerDetails; -namespace DragaliaAPI.Services.Game; +namespace DragaliaAPI.Features.Quest; public class QuestTreasureService( IRewardService rewardService, diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/FeatureExtensions.cs new file mode 100644 index 000000000..f38c08bd2 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/FeatureExtensions.cs @@ -0,0 +1,14 @@ +using DragaliaAPI.Features.Reward; +using DragaliaAPI.Features.Reward.Handlers; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddRewardFeature(this IServiceCollection serviceCollection) => + serviceCollection + .AddScoped() + .AddAllOfType() + .AddAllOfType(); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/CharaHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/CharaHandler.cs new file mode 100644 index 000000000..399172465 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/CharaHandler.cs @@ -0,0 +1,151 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models.Story; +using DragaliaAPI.Shared.PlayerDetails; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Features.Reward.Handlers; + +public partial class CharaHandler( + ApiContext apiContext, + IPlayerIdentityService playerIdentityService, + ILogger logger +) : IRewardHandler, IBatchRewardHandler +{ + public IReadOnlyList SupportedTypes { get; } = [EntityTypes.Chara]; + + public async Task Grant(Entity entity) + { + Charas chara = (Charas)entity.Id; + if (!Enum.IsDefined(chara)) + { + Log.InvalidCharacterId(logger, entity, chara); + return GrantReturn.FailError(); + } + + if ( + apiContext.PlayerCharaData.Local.Any(x => x.CharaId == chara) + || await apiContext.PlayerCharaData.AnyAsync(x => x.CharaId == chara) + ) + { + return GrantReturn.Discarded(); + } + + apiContext.PlayerCharaData.Add( + new DbPlayerCharaData(playerIdentityService.ViewerId, chara) + ); + + if ( + MasterAsset.CharaStories.TryGetValue((int)chara, out StoryData? storyData) + && !await apiContext.PlayerStoryState.AnyAsync(x => + x.StoryType == StoryTypes.Chara && x.StoryId == storyData.StoryIds[0] + ) + ) + { + apiContext.PlayerStoryState.Add( + new DbPlayerStoryState() + { + ViewerId = playerIdentityService.ViewerId, + StoryType = StoryTypes.Chara, + StoryId = storyData.StoryIds[0] + } + ); + } + + return GrantReturn.Added(); + } + + public async Task> GrantRange( + IDictionary entities + ) + where TKey : struct + { + List charasToAdd = entities.Select(x => (Charas)x.Value.Id).ToList(); + IEnumerable firstStoryIds = GetFirstStoryIds(charasToAdd).ToList(); + + Dictionary result = []; + + HashSet ownedCharacters = await apiContext + .PlayerCharaData.Where(x => charasToAdd.Contains(x.CharaId)) + .Select(x => x.CharaId) + .ToHashSetAsync(); + + HashSet ownedStoryIds = await apiContext + .PlayerStoryState.Where(x => + x.StoryType == StoryTypes.Chara && firstStoryIds.Contains(x.StoryId) + ) + .Select(x => x.StoryId) + .ToHashSetAsync(); + + foreach ((TKey key, Entity entity) in entities) + { + Charas chara = (Charas)entity.Id; + if (!Enum.IsDefined(chara)) + { + Log.InvalidCharacterId(logger, entity, chara); + result.Add(key, GrantReturn.FailError()); + continue; + } + + if ( + apiContext.PlayerCharaData.Local.Any(x => x.CharaId == chara) + || ownedCharacters.Contains(chara) + ) + { + result.Add(key, GrantReturn.Discarded()); + continue; + } + + apiContext.PlayerCharaData.Add( + new DbPlayerCharaData(playerIdentityService.ViewerId, chara) + ); + result.Add(key, GrantReturn.Added()); + ownedCharacters.Add(chara); + + if ( + MasterAsset.CharaStories.TryGetValue((int)chara, out StoryData? storyData) + && !ownedStoryIds.Contains(storyData.StoryIds[0]) + ) + { + apiContext.PlayerStoryState.Add( + new DbPlayerStoryState() + { + ViewerId = playerIdentityService.ViewerId, + StoryType = StoryTypes.Chara, + StoryId = storyData.StoryIds[0] + } + ); + } + } + + return result; + + static IEnumerable GetFirstStoryIds(IEnumerable characters) + { + foreach (Charas c in characters) + { + if (!MasterAsset.CharaStories.TryGetValue((int)c, out StoryData? storyData)) + { + continue; + } + + yield return storyData.StoryIds[0]; + } + } + } + + private static partial class Log + { + [LoggerMessage( + LogLevel.Error, + "Entity {Entity} is not a valid character entity: {CharaId} is not a character ID" + )] + public static partial void InvalidCharacterId( + ILogger logger, + Entity entity, + Charas charaId + ); + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/DragonHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/DragonHandler.cs new file mode 100644 index 000000000..dcb83d994 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/DragonHandler.cs @@ -0,0 +1,127 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.PlayerDetails; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Features.Reward.Handlers; + +public partial class DragonHandler( + ApiContext apiContext, + IPlayerIdentityService playerIdentityService, + ILogger logger +) : IRewardHandler, IBatchRewardHandler +{ + public IReadOnlyList SupportedTypes { get; } = [EntityTypes.Dragon]; + + public async Task Grant(Entity entity) + { + if (entity.Quantity > 1) + { + throw new ArgumentException( + "Cannot process dragons with quantity >1 in single reward handler due to the possibility of multiple results. Use the batch handler instead.", + nameof(entity) + ); + } + + Dragons dragon = (Dragons)entity.Id; + if (!Enum.IsDefined(dragon)) + { + Log.InvalidDragonId(logger, entity, dragon); + return GrantReturn.FailError(); + } + + int storageSpace = await apiContext + .PlayerUserData.Select(x => x.MaxDragonQuantity) + .FirstAsync(); + int dragonCount = await apiContext.PlayerDragonData.CountAsync(); + + if (dragonCount >= storageSpace) + { + return GrantReturn.Limit(); + } + + apiContext.PlayerDragonData.Add( + new DbPlayerDragonData(playerIdentityService.ViewerId, (Dragons)entity.Id) + ); + + if ( + !apiContext.PlayerDragonReliability.Local.Any(x => x.DragonId == dragon) + && !await apiContext.PlayerDragonReliability.AnyAsync(x => x.DragonId == dragon) + ) + { + apiContext.PlayerDragonReliability.Add( + new DbPlayerDragonReliability(playerIdentityService.ViewerId, dragon) + ); + } + + return GrantReturn.Added(); + } + + public async Task> GrantRange( + IDictionary entities + ) + where TKey : struct + { + int storageSpace = await apiContext + .PlayerUserData.Select(x => x.MaxDragonQuantity) + .FirstAsync(); + int dragonCount = await apiContext.PlayerDragonData.CountAsync(); + + HashSet ownedReliabilities = await apiContext + .PlayerDragonReliability.Where(x => + entities.Values.Select(y => (Dragons)y.Id).Contains(x.DragonId) + ) + .Select(x => x.DragonId) + .ToHashSetAsync(); + + Dictionary resultDict = []; + + foreach ((TKey key, Entity entity) in entities) + { + Dragons dragon = (Dragons)entity.Id; + + if (!Enum.IsDefined(dragon)) + { + Log.InvalidDragonId(logger, entity, dragon); + resultDict.Add(key, GrantReturn.FailError()); + continue; + } + + if (dragonCount >= storageSpace) + { + resultDict.Add(key, GrantReturn.Limit()); + continue; + } + + apiContext.PlayerDragonData.Add( + new DbPlayerDragonData(playerIdentityService.ViewerId, dragon) + ); + + if ( + !ownedReliabilities.Contains(dragon) + && !apiContext.PlayerDragonReliability.Local.Any(x => x.DragonId == dragon) + ) + { + apiContext.PlayerDragonReliability.Add( + new DbPlayerDragonReliability(playerIdentityService.ViewerId, dragon) + ); + ownedReliabilities.Add(dragon); + } + + resultDict.Add(key, GrantReturn.Added()); + dragonCount++; + } + + return resultDict; + } + + private static partial class Log + { + [LoggerMessage( + LogLevel.Error, + "Entity {Entity} is not a valid dragon entity: {DragonId} is not a dragon ID" + )] + public static partial void InvalidDragonId(ILogger logger, Entity entity, Dragons dragonId); + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/EmblemRewardHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/EmblemRewardHandler.cs index 766ccdfc3..1d0b0f32f 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/EmblemRewardHandler.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/EmblemRewardHandler.cs @@ -1,6 +1,8 @@ using System.Collections.Immutable; using DragaliaAPI.Features.Emblem; using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models; using JetBrains.Annotations; namespace DragaliaAPI.Features.Reward.Handlers; @@ -18,13 +20,23 @@ public async Task Grant(Entity entity) if (!Enum.IsDefined(emblem)) throw new ArgumentException("Entity ID is not a valid emblem", nameof(entity)); - if (await repository.HasEmblem(emblem)) + if (!await repository.HasEmblem(emblem)) { - // TODO: load EmblemData.json and give correct entity - return new(RewardGrantResult.Discarded); + repository.AddEmblem(emblem); + return GrantReturn.Added(); } - repository.AddEmblem(emblem); - return new(RewardGrantResult.Added); + if ( + MasterAsset.EmblemData.TryGetValue(emblem, out EmblemData? data) + && data is { DuplicateEntityType: not 0, DuplicateEntityQuantity: not 0 } + ) + { + Entity convertedEntity = + new(data.DuplicateEntityType, data.DuplicateEntityId, data.DuplicateEntityQuantity); + + return GrantReturn.Converted(convertedEntity); + } + + return GrantReturn.Discarded(); } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GenericRewardHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GenericRewardHandler.cs index 8bd03eedc..540ca8f1e 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GenericRewardHandler.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GenericRewardHandler.cs @@ -18,7 +18,6 @@ public class GenericRewardHandler( ILogger logger, IInventoryRepository inventoryRepository, IUserDataRepository userDataRepository, - IUnitRepository unitRepository, IFortRepository fortRepository, IEventRepository eventRepository, IDmodeRepository dmodeRepository, @@ -28,9 +27,7 @@ IUserService userService { public IReadOnlyList SupportedTypes { get; } = ImmutableArray.Create( - EntityTypes.Chara, EntityTypes.Item, - EntityTypes.Dragon, EntityTypes.Dew, EntityTypes.HustleHammer, EntityTypes.Rupies, @@ -57,15 +54,9 @@ public async Task Grant(Entity entity) { switch (entity.Type) { - case EntityTypes.Chara: - return await this.RewardCharacter(entity); case EntityTypes.Item: await itemRepository.AddItemQuantityAsync((UseItem)entity.Id, entity.Quantity); break; - case EntityTypes.Dragon: - for (int i = 0; i < entity.Quantity; i++) - await unitRepository.AddDragons((Dragons)entity.Id); - break; case EntityTypes.Dew: await userDataRepository.UpdateDewpoint(entity.Quantity); break; @@ -122,26 +113,4 @@ await inventoryRepository.GetMaterial((Materials)entity.Id) return new(RewardGrantResult.Added); } - - private async Task RewardCharacter(Entity entity) - { - if (entity.Type != EntityTypes.Chara) - throw new ArgumentException("Entity was not a character", nameof(entity)); - - Charas chara = (Charas)entity.Id; - - if (await unitRepository.FindCharaAsync(chara) is not null) - { - // Is it the correct behaviour to discard gifted characters? - // Not sure -- never had characters in my gift box - logger.LogDebug("Discarded character entity: {@entity}.", entity); - return new(RewardGrantResult.Discarded); - } - - // TODO: Support EntityLevel/LimitBreak/etc here - - logger.LogDebug("Granted new character entity: {@entity}", entity); - await unitRepository.AddCharas(chara); - return new(RewardGrantResult.Added); - } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GrantReturn.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GrantReturn.cs index d22b3f1d6..e4cee03f8 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GrantReturn.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/GrantReturn.cs @@ -1,3 +1,15 @@ namespace DragaliaAPI.Features.Reward.Handlers; -public record struct GrantReturn(RewardGrantResult Result, Entity? ConvertedEntity = null); +public readonly record struct GrantReturn(RewardGrantResult Result, Entity? ConvertedEntity = null) +{ + public static GrantReturn Added() => new(RewardGrantResult.Added); + + public static GrantReturn Converted(Entity convertedEntity) => + new(RewardGrantResult.Converted, convertedEntity); + + public static GrantReturn Limit() => new(RewardGrantResult.Limit); + + public static GrantReturn Discarded() => new(RewardGrantResult.Discarded); + + public static GrantReturn FailError() => new(RewardGrantResult.FailError); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/IBatchRewardHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/IBatchRewardHandler.cs new file mode 100644 index 000000000..899eb5145 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/Handlers/IBatchRewardHandler.cs @@ -0,0 +1,11 @@ +using DragaliaAPI.Shared.Definitions.Enums; + +namespace DragaliaAPI.Features.Reward.Handlers; + +public interface IBatchRewardHandler +{ + public IReadOnlyList SupportedTypes { get; } + + public Task> GrantRange(IDictionary entity) + where TKey : struct; +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/IRewardService.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/IRewardService.cs index 31145a120..60b7a3015 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/IRewardService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/IRewardService.cs @@ -1,6 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; +using JetBrains.Annotations; namespace DragaliaAPI.Features.Reward; @@ -13,6 +14,7 @@ public interface IRewardService /// /// An enum indicating the result of the add operation. /// + [MustUseReturnValue] Task GrantReward(Entity entity); /// @@ -22,6 +24,7 @@ public interface IRewardService /// The task. Task GrantRewards(IEnumerable entities); + [MustUseReturnValue] Task<(RewardGrantResult Result, DbTalisman? Talisman)> GrantTalisman( Talismans id, int abilityId1, @@ -32,5 +35,11 @@ int atk ); EntityResult GetEntityResult(); + IEnumerable GetConvertedEntityList(); + + Task> BatchGrantRewards( + IDictionary entities + ) + where TKey : struct; } diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/RewardGrantResult.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/RewardGrantResult.cs index 65b60da09..20a305e1c 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/RewardGrantResult.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/RewardGrantResult.cs @@ -1,12 +1,41 @@ namespace DragaliaAPI.Features.Reward; +/// +/// Return type indicating the status of a reward being granted. +/// public enum RewardGrantResult { + /// + /// An empty reward result. + /// + /// + /// This value should never be returned from a . + /// + None, + + /// + /// The reward was successfully added. + /// Added, - GiftBox, - Discarded, - GiftBoxDiscarded, + + /// + /// The reward was not added, but was converted to another reward which was added. + /// Converted, + + /// + /// The reward was not added because the player did not have space to claim it. + /// It may be able to be claimed later if the player makes space in their inventory. + /// Limit, + + /// + /// The reward was not added and will never be able to be claimed at a later date. + /// + Discarded, + + /// + /// The reward was not added because of an error. + /// FailError, } diff --git a/DragaliaAPI/DragaliaAPI/Features/Reward/RewardService.cs b/DragaliaAPI/DragaliaAPI/Features/Reward/RewardService.cs index 7887ed82f..dc27bfc0d 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Reward/RewardService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Reward/RewardService.cs @@ -10,14 +10,13 @@ namespace DragaliaAPI.Features.Reward; public class RewardService( ILogger logger, IUnitRepository unitRepository, - IEnumerable rewardHandlers + IEnumerable rewardHandlers, + IEnumerable batchRewardHandlers ) : IRewardService { - private readonly List discardedEntities = new(); - private readonly List presentEntites = new(); - private readonly List presentLimitEntities = new(); - private readonly List newEntities = new(); - private readonly List convertedEntities = new(); + private readonly List newEntities = []; + private readonly List convertedEntities = []; + private readonly List discardedEntities = []; public async Task GrantReward(Entity entity) { @@ -29,43 +28,87 @@ public async Task GrantReward(Entity entity) logger.LogTrace("Granting reward {@rewardEntity}", entity); - RewardGrantResult result = await GrantRewardInternal(entity); + IRewardHandler handler = this.GetHandler(entity.Type); + + GrantReturn grantReturn = await handler.Grant(entity); + await ProcessGrantResult(grantReturn, entity); - logger.LogTrace("Result: {result}", result); + logger.LogTrace("Result: {result}", grantReturn.Result); - return result; + return grantReturn.Result; } public async Task GrantRewards(IEnumerable entities) { - entities = entities.ToList(); - logger.LogTrace("Granting rewards: {@rewards}", entities); + foreach (Entity entity in entities) + { + IRewardHandler handler = this.GetHandler(entity.Type); - if (!entities.TryGetNonEnumeratedCount(out int count)) - count = 0; + GrantReturn grantReturn = await handler.Grant(entity); + await ProcessGrantResult(grantReturn, entity); + } + } - List results = new(count); - foreach (Entity entity in entities) + public async Task> BatchGrantRewards( + IDictionary entities + ) + where TKey : struct + { + Dictionary result = []; + + IEnumerable<(EntityTypes type, Dictionary)> grouping = entities.GroupBy( + x => x.Value.Type, + (type, group) => (type, group.ToDictionary()) + ); + + foreach ((EntityTypes type, Dictionary dictionary) in grouping) { - RewardGrantResult result = await GrantRewardInternal(entity); - results.Add(result); + if ( + batchRewardHandlers.FirstOrDefault(x => x.SupportedTypes.Contains(type)) is + { } batchRewardHandler + ) + { + IDictionary batchResult = await batchRewardHandler.GrantRange( + dictionary + ); + + foreach ((TKey key, GrantReturn grantReturn) in batchResult) + { + await ProcessGrantResult(grantReturn, dictionary[key]); + result.Add(key, grantReturn.Result); + } + } + else + { + IRewardHandler handler = this.GetHandler(type); + + foreach ((TKey key, Entity entity) in dictionary) + { + GrantReturn grantReturn = await handler.Grant(entity); + await ProcessGrantResult(grantReturn, entity); + result.Add(key, grantReturn.Result); + } + } } - logger.LogTrace("Results: {@results}", results); + return result; } - private async Task GrantRewardInternal(Entity entity) + private async Task ProcessGrantResult(GrantReturn grantReturn, Entity entity) { - IRewardHandler handler = this.GetHandler(entity.Type); - GrantReturn grantReturn = await handler.Grant(entity); - switch (grantReturn.Result) { case RewardGrantResult.Added: this.newEntities.Add(entity); break; case RewardGrantResult.Converted: - ArgumentNullException.ThrowIfNull(grantReturn.ConvertedEntity); + { + if (grantReturn.ConvertedEntity is null) + { + throw new InvalidOperationException( + "RewardGrantResult.Converted was returned, but converted entity was null!" + ); + } this.convertedEntities.Add( new ConvertedEntity(entity, grantReturn.ConvertedEntity) @@ -74,33 +117,25 @@ await this.GetHandler(grantReturn.ConvertedEntity.Type) .Grant(grantReturn.ConvertedEntity); break; + } case RewardGrantResult.Discarded: this.discardedEntities.Add(entity); break; - case RewardGrantResult.GiftBoxDiscarded: - this.presentLimitEntities.Add(entity); - break; - case RewardGrantResult.GiftBox: - this.presentEntites.Add(entity); - break; case RewardGrantResult.Limit: break; case RewardGrantResult.FailError: logger.LogError("Granting of entity {@entity} failed.", entity); throw new InvalidOperationException("Failed to grant reward"); default: - throw new ArgumentOutOfRangeException( - string.Empty, - "RewardGrantResult out of range" + throw new InvalidOperationException( + $"RewardGrantResult {grantReturn.Result} out of range" ); } - - return grantReturn.Result; } private IRewardHandler GetHandler(EntityTypes type) { - IRewardHandler? handler = rewardHandlers.SingleOrDefault(x => + IRewardHandler? handler = rewardHandlers.FirstOrDefault(x => x.SupportedTypes.Contains(type) ); @@ -156,13 +191,9 @@ public EntityResult GetEntityResult() { NewGetEntityList = newEntities.Select(x => x.ToDuplicateEntityList()), ConvertedEntityList = convertedEntities.Select(x => x.ToConvertedEntityList()), - OverDiscardEntityList = discardedEntities.Select(x => x.ToBuildEventRewardEntityList()), - OverPresentEntityList = this.presentEntites.Select(x => - x.ToBuildEventRewardEntityList() - ), - OverPresentLimitEntityList = this.presentLimitEntities.Select(x => + OverDiscardEntityList = this.discardedEntities.Select(x => x.ToBuildEventRewardEntityList() - ), + ) }; } diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V14Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V14Update.cs index be6a3ae39..a18fa9305 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V14Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V14Update.cs @@ -1,8 +1,8 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Emblem; +using DragaliaAPI.Features.Story; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using Microsoft.EntityFrameworkCore; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V15Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V15Update.cs index d2c822090..09dc744a9 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V15Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V15Update.cs @@ -1,4 +1,5 @@ using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Features.Story; using DragaliaAPI.Features.Wall; using DragaliaAPI.Services.Game; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V17Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V17Update.cs index e18aa4a82..ad26933dc 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V17Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V17Update.cs @@ -47,7 +47,7 @@ public async Task Apply() ); this.apiContext.PlayerDragonReliability.Add( - DbPlayerDragonReliabilityFactory.Create( + new DbPlayerDragonReliability( this.playerIdentityService.ViewerId, missingReliability ) diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V18Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V18Update.cs index 83dc567e8..f0e3cbe22 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V18Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V18Update.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Missions; +using DragaliaAPI.Features.Story; using DragaliaAPI.Features.Wall; using DragaliaAPI.Services.Game; using DragaliaAPI.Shared.Definitions.Enums; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V19Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V19Update.cs index c7bcd2767..e1b683d0b 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V19Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V19Update.cs @@ -1,6 +1,5 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; using DragaliaAPI.Shared.PlayerDetails; using JetBrains.Annotations; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V1Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V1Update.cs index b9a457520..acea536e9 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V1Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V1Update.cs @@ -1,6 +1,7 @@ using System.Collections.Immutable; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Fort; +using DragaliaAPI.Features.Story; using DragaliaAPI.Services.Game; using DragaliaAPI.Shared.Definitions.Enums; using Microsoft.EntityFrameworkCore; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V20Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V20Update.cs index be28ff08d..2500eb92d 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V20Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V20Update.cs @@ -2,7 +2,6 @@ using DragaliaAPI.Features.Present; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Features.Presents; -using DragaliaAPI.Shared.PlayerDetails; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V21Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V21Update.cs new file mode 100644 index 000000000..d6fa8b5bb --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V21Update.cs @@ -0,0 +1,43 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Features.Wall; +using DragaliaAPI.Shared.PlayerDetails; +using JetBrains.Annotations; + +namespace DragaliaAPI.Features.SavefileUpdate; + +[UsedImplicitly] +public partial class V21Update( + IWallService wallService, + IPlayerIdentityService playerIdentityService, + ILogger logger, + ApiContext apiContext +) : ISavefileUpdate +{ + public int SavefileVersion => 21; + + public async Task Apply() + { + if ( + await wallService.CheckWallInitialized() + && await apiContext.WallRewardDates.FindAsync(playerIdentityService.ViewerId) is null + ) + { + Log.AddingRewardDate(logger); + + apiContext.WallRewardDates.Add( + new DbWallRewardDate() + { + ViewerId = playerIdentityService.ViewerId, + LastClaimDate = DateTimeOffset.UnixEpoch, // Allow immediately claiming the reward. + } + ); + } + } + + private static partial class Log + { + [LoggerMessage(LogLevel.Information, "Adding WallRewardDate entry")] + public static partial void AddingRewardDate(ILogger logger); + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V22Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V22Update.cs new file mode 100644 index 000000000..663ebd0bd --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V22Update.cs @@ -0,0 +1,71 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Features.Player; +using DragaliaAPI.Features.Present; +using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.Features.Presents; +using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models.Story; +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Features.SavefileUpdate; + +/// +/// Update to grant chapter 10 completion rewards to players that previously cleared chapter 10 and did not receive rewards. +/// +[UsedImplicitly] +public class V22Update( + ApiContext apiContext, + IPresentService presentService, + IUserService userService, + ILogger logger +) : ISavefileUpdate +{ + private const int Chapter10LastStoryId = 1001009; + + private static readonly List Rewards = MasterAsset + .QuestStoryRewardInfo[Chapter10LastStoryId] + .Rewards.ToList(); + + public int SavefileVersion => 22; + + public async Task Apply() + { + bool playerCompletedChapter10 = await apiContext + .PlayerStoryState.Where(x => + x.StoryType == StoryTypes.Quest + && x.StoryId == Chapter10LastStoryId + && x.State == StoryState.Read + ) + .AnyAsync(); + + logger.LogDebug( + "Player completed chapter 10: {PlayerCompletedChapter10}", + playerCompletedChapter10 + ); + + if (playerCompletedChapter10) + { + logger.LogInformation( + "Detected that chapter 10 was completed. Granting completion rewards." + ); + + await userService.AddExperience(69990); + + foreach (QuestStoryReward reward in Rewards) + { + if (reward.Type is EntityTypes.Material or EntityTypes.HustleHammer) + { + presentService.AddPresent( + new Present.Present( + PresentMessage.Chapter10Clear, + (EntityTypes)reward.Type, + reward.Id, + reward.Quantity + ) + ); + } + } + } + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V4Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V4Update.cs index a17b8d8f0..8936e0cee 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V4Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V4Update.cs @@ -1,6 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Fort; +using DragaliaAPI.Features.Story; using DragaliaAPI.Services; using Microsoft.EntityFrameworkCore; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V7Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V7Update.cs index c95d56a91..b6feebee9 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V7Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V7Update.cs @@ -1,4 +1,5 @@ using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Features.Story; using DragaliaAPI.Services; namespace DragaliaAPI.Features.SavefileUpdate; diff --git a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V9Update.cs b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V9Update.cs index fa148e68b..2c015ceb1 100644 --- a/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V9Update.cs +++ b/DragaliaAPI/DragaliaAPI/Features/SavefileUpdate/V9Update.cs @@ -1,6 +1,7 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Features.Story; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; diff --git a/DragaliaAPI/DragaliaAPI/Features/Shop/ShopService.cs b/DragaliaAPI/DragaliaAPI/Features/Shop/ShopService.cs index 626fb511c..4bb4dc67e 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Shop/ShopService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Shop/ShopService.cs @@ -2,7 +2,6 @@ using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Player; using DragaliaAPI.Features.Reward; -using DragaliaAPI.Helpers; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; @@ -16,7 +15,7 @@ public class ShopService( IPaymentService paymentService, IRewardService rewardService, ILogger logger, - IResetHelper resetHelper, + TimeProvider timeProvider, IUserService userService, IUserDataRepository userDataRepository ) : IShopService @@ -173,18 +172,18 @@ public async Task> GetPurchases() { ShopType.MaterialDaily => ( - resetHelper.LastDailyReset, - resetHelper.LastDailyReset.AddDays(1).AddSeconds(-1) + timeProvider.GetLastDailyReset(), + timeProvider.GetLastDailyReset().AddDays(1).AddSeconds(-1) ), ShopType.MaterialWeekly => ( - resetHelper.LastWeeklyReset, - resetHelper.LastWeeklyReset.AddDays(7).AddSeconds(-1) + timeProvider.GetLastWeeklyReset(), + timeProvider.GetLastWeeklyReset().AddDays(7).AddSeconds(-1) ), ShopType.MaterialMonthly => ( - resetHelper.LastMonthlyReset, - resetHelper.LastMonthlyReset.AddMonths(1).AddSeconds(-1) + timeProvider.GetLastMonthlyReset(), + timeProvider.GetLastMonthlyReset().AddMonths(1).AddSeconds(-1) ), ShopType.Normal or ShopType.Special diff --git a/DragaliaAPI/DragaliaAPI/Features/Story/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Story/FeatureExtensions.cs new file mode 100644 index 000000000..34580afad --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Story/FeatureExtensions.cs @@ -0,0 +1,12 @@ +using DragaliaAPI.Features.Story; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddStoryFeature(this IServiceCollection services) => + services + .AddScoped() + .AddScoped(); +} diff --git a/DragaliaAPI/DragaliaAPI.Database/Repositories/IStoryRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Story/IStoryRepository.cs similarity index 92% rename from DragaliaAPI/DragaliaAPI.Database/Repositories/IStoryRepository.cs rename to DragaliaAPI/DragaliaAPI/Features/Story/IStoryRepository.cs index 57ff90b8b..db4700c8c 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Repositories/IStoryRepository.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Story/IStoryRepository.cs @@ -1,7 +1,7 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Shared.Definitions.Enums; -namespace DragaliaAPI.Database.Repositories; +namespace DragaliaAPI.Features.Story; public interface IStoryRepository { diff --git a/DragaliaAPI/DragaliaAPI/Services/IStoryService.cs b/DragaliaAPI/DragaliaAPI/Features/Story/IStoryService.cs similarity index 78% rename from DragaliaAPI/DragaliaAPI/Services/IStoryService.cs rename to DragaliaAPI/DragaliaAPI/Features/Story/IStoryService.cs index 74d8479f1..bd25789b0 100644 --- a/DragaliaAPI/DragaliaAPI/Services/IStoryService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Story/IStoryService.cs @@ -1,10 +1,13 @@ using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; -namespace DragaliaAPI.Services; +namespace DragaliaAPI.Features.Story; public interface IStoryService { Task CheckStoryEligibility(StoryTypes type, int storyId); + Task> ReadStory(StoryTypes type, int storyId); + + EntityResult GetEntityResult(); } diff --git a/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/StoryController.cs b/DragaliaAPI/DragaliaAPI/Features/Story/StoryController.cs similarity index 94% rename from DragaliaAPI/DragaliaAPI/Controllers/Dragalia/StoryController.cs rename to DragaliaAPI/DragaliaAPI/Features/Story/StoryController.cs index accb34c8e..4164afcbc 100644 --- a/DragaliaAPI/DragaliaAPI/Controllers/Dragalia/StoryController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Story/StoryController.cs @@ -1,10 +1,11 @@ -using DragaliaAPI.Models.Generated; +using DragaliaAPI.Controllers; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Story; using Microsoft.AspNetCore.Mvc; -namespace DragaliaAPI.Controllers.Dragalia; +namespace DragaliaAPI.Features.Story; [Route("story")] public class StoryController : DragaliaControllerBase diff --git a/DragaliaAPI/DragaliaAPI.Database/Repositories/StoryRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Story/StoryRepository.cs similarity index 89% rename from DragaliaAPI/DragaliaAPI.Database/Repositories/StoryRepository.cs rename to DragaliaAPI/DragaliaAPI/Features/Story/StoryRepository.cs index 8d6b06c5d..b3c7895bd 100644 --- a/DragaliaAPI/DragaliaAPI.Database/Repositories/StoryRepository.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Story/StoryRepository.cs @@ -1,10 +1,10 @@ -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; -namespace DragaliaAPI.Database.Repositories; +namespace DragaliaAPI.Features.Story; public class StoryRepository : IStoryRepository { @@ -36,7 +36,7 @@ ILogger logger public async Task GetOrCreateStory(StoryTypes storyType, int storyId) { - DbPlayerStoryState? state = await apiContext.PlayerStoryState.FindAsync( + DbPlayerStoryState? state = await this.apiContext.PlayerStoryState.FindAsync( this.playerIdentityService.ViewerId, storyType, storyId @@ -50,8 +50,8 @@ public async Task GetOrCreateStory(StoryTypes storyType, int storyType ); - state = apiContext - .PlayerStoryState.Add( + state = this + .apiContext.PlayerStoryState.Add( new DbPlayerStoryState { ViewerId = this.playerIdentityService.ViewerId, diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/StoryService.cs b/DragaliaAPI/DragaliaAPI/Features/Story/StoryService.cs similarity index 75% rename from DragaliaAPI/DragaliaAPI/Services/Game/StoryService.cs rename to DragaliaAPI/DragaliaAPI/Features/Story/StoryService.cs index 298189d70..bcdbe0527 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/StoryService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Story/StoryService.cs @@ -1,28 +1,38 @@ +using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Fort; using DragaliaAPI.Features.Missions; +using DragaliaAPI.Features.Player; +using DragaliaAPI.Features.Present; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; using DragaliaAPI.Models.Generated; +using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.Features.Presents; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models.Event; using DragaliaAPI.Shared.MasterAsset.Models.Story; +using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; -namespace DragaliaAPI.Services.Game; +namespace DragaliaAPI.Features.Story; public class StoryService( IStoryRepository storyRepository, ILogger logger, IUserDataRepository userDataRepository, IInventoryRepository inventoryRepository, + IPresentService presentService, ITutorialService tutorialService, IFortRepository fortRepository, IMissionProgressionService missionProgressionService, IRewardService rewardService, - IPaymentService paymentService + IPaymentService paymentService, + IUserService userService, + ApiContext apiContext, + IPlayerIdentityService playerIdentityService ) : IStoryService { private const int DragonStoryWyrmite = 25; @@ -31,6 +41,7 @@ IPaymentService paymentService private const int CharaStoryWyrmite2 = 10; private const int QuestStoryWyrmite = 25; private const int DmodeStoryWyrmite = 25; + private const int Chapter10LastStoryId = 1001009; #region Eligibility check methods public async Task CheckStoryEligibility(StoryTypes type, int storyId) @@ -46,8 +57,8 @@ public async Task CheckStoryEligibility(StoryTypes type, int storyId) return type switch { - StoryTypes.Chara or StoryTypes.Dragon => await CheckUnitStoryEligibility(storyId), - StoryTypes.Castle => await CheckCastleStoryEligibility(storyId), + StoryTypes.Chara or StoryTypes.Dragon => await this.CheckUnitStoryEligibility(storyId), + StoryTypes.Castle => await this.CheckCastleStoryEligibility(storyId), StoryTypes.Quest => true, StoryTypes.Event => true, _ => throw new NotImplementedException($"Stories of type {type} are not implemented") @@ -119,11 +130,11 @@ int storyId List rewards = type switch { - StoryTypes.Chara or StoryTypes.Dragon => await ReadUnitStory(storyId), - StoryTypes.Castle => await ReadCastleStory(storyId), - StoryTypes.Quest => await ReadQuestStory(storyId), - StoryTypes.Event => await ReadEventStory(storyId), - StoryTypes.DungeonMode => await ReadDmodeStory(storyId), + StoryTypes.Chara or StoryTypes.Dragon => await this.ReadUnitStory(storyId), + StoryTypes.Castle => await this.ReadCastleStory(storyId), + StoryTypes.Quest => await this.ReadQuestStory(storyId), + StoryTypes.Event => await this.ReadEventStory(storyId), + StoryTypes.DungeonMode => await this.ReadDmodeStory(storyId), _ => throw new NotImplementedException($"Stories of type {type} are not implemented") }; @@ -212,26 +223,67 @@ out QuestStoryRewardInfo? rewardInfo { foreach (QuestStoryReward reward in rewardInfo.Rewards) { + rewardList.Add( + new() + { + EntityId = reward.Id, + EntityType = reward.Type, + EntityQuantity = reward.Quantity, + } + ); + // We divert here as we care about quantity-restriction for story plants if (reward.Type == EntityTypes.FortPlant) { await fortRepository.AddToStorage((FortPlants)reward.Id, reward.Quantity, true); + continue; } - else + + if (storyId == Chapter10LastStoryId) { - await rewardService.GrantReward( - new Entity(reward.Type, reward.Id, reward.Quantity) + presentService.AddPresent( + new Present.Present( + PresentMessage.Chapter10Clear, + (EntityTypes)reward.Type, + reward.Id, + reward.Quantity + ) ); + + continue; } - rewardList.Add( - new() + RewardGrantResult result = await rewardService.GrantReward( + new Entity(reward.Type, reward.Id, reward.Quantity) + ); + + if (result == RewardGrantResult.Limit) + { + presentService.AddPresent( + new Present.Present( + PresentMessage.FirstViewReward, + reward.Type, + reward.Id, + reward.Quantity + ) + ); + + if ( + reward is { Type: EntityTypes.Dragon, Id: (int)Dragons.Midgardsormr } + && !await apiContext.PlayerDragonReliability.AnyAsync(x => + x.DragonId == Dragons.Midgardsormr + ) + ) { - EntityId = reward.Id, - EntityType = reward.Type, - EntityQuantity = reward.Quantity, + // The game doesn't handle it well if you send the Chapter 1 Midgardsormr to the gift box. + // You will later be forced to give him a gift in the dragon's roost tutorial, which will fail + // if he's in the gift box. Add the reliability manually as a hack to ensure he's always + // available in the dragon's roost. + apiContext.PlayerDragonReliability.Add( + new(playerIdentityService.ViewerId, Dragons.Midgardsormr) + ); } - ); + } } } @@ -256,6 +308,12 @@ await rewardService.GrantReward( ); } + if (storyId == Chapter10LastStoryId) + { + logger.LogDebug("Granting player experience for chapter 10 completion."); + await userService.AddExperience(69990); + } + return rewardList; } @@ -311,20 +369,6 @@ private async Task> ReadDmodeStory(int sto #endregion - public static EntityResult GetEntityResult( - IEnumerable rewardList - ) - { - IEnumerable newGetEntityList = rewardList - .Where(x => x.EntityType is EntityTypes.Dragon or EntityTypes.Chara) - .Select(x => new AtgenDuplicateEntityList() - { - EntityId = x.EntityId, - EntityType = x.EntityType, - }); - - return new() { NewGetEntityList = newGetEntityList, }; - } public static AtgenQuestStoryRewardList ToQuestStoryReward( AtgenBuildEventRewardEntityList reward @@ -343,4 +387,14 @@ AtgenBuildEventRewardEntityList reward return questReward; } + + public EntityResult GetEntityResult() + { + EntityResult result = rewardService.GetEntityResult(); + result.OverPresentEntityList = presentService.AddedPresents.Select(x => + x.ToBuildEventRewardList() + ); + + return result; + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/StorySkip/StorySkipService.cs b/DragaliaAPI/DragaliaAPI/Features/StorySkip/StorySkipService.cs index 049d5988a..256c764c3 100644 --- a/DragaliaAPI/DragaliaAPI/Features/StorySkip/StorySkipService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/StorySkip/StorySkipService.cs @@ -3,10 +3,13 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Fort; +using DragaliaAPI.Features.Missions; +using DragaliaAPI.Features.Story; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Features.StorySkip; using DragaliaAPI.Shared.MasterAsset; using DragaliaAPI.Shared.MasterAsset.Models; +using DragaliaAPI.Shared.MasterAsset.Models.Missions; using DragaliaAPI.Shared.MasterAsset.Models.Story; using Microsoft.EntityFrameworkCore; using static DragaliaAPI.Shared.Features.StorySkip.StorySkipRewards; @@ -19,17 +22,17 @@ public class StorySkipService( ILogger logger, IQuestRepository questRepository, IStoryRepository storyRepository, - IUserDataRepository userDataRepository + IUserDataRepository userDataRepository, + IMissionProgressionService missionProgressionService, + FortDataService fortDataService ) { - private static readonly FrozenSet questDatas = MasterAsset - .QuestData.Enumerable.Where(x => - x.Gid < 10011 && x.Id > 100000000 && x.Id.ToString().Substring(6, 1) == "1" - ) + private static readonly FrozenSet QuestDatas = MasterAsset + .QuestData.Enumerable.Where(x => x.Gid < 10011 && IsNormalModeQuest(x.Id)) .ToFrozenSet(); - private static readonly FrozenSet questStories = MasterAsset - .QuestStory.Enumerable.Where(x => x.GroupId is < 10011) + private static readonly FrozenSet QuestStories = MasterAsset + .QuestStory.Enumerable.Where(x => x.GroupId < 10011) .ToFrozenSet(); public async Task IncreaseFortLevels(long viewerId) @@ -40,6 +43,8 @@ public async Task IncreaseFortLevels(long viewerId) .Builds.Where(x => x.ViewerId == viewerId) .ToListAsync(); + int currentFortLevel = await fortDataService.GetTotalFortLevel(); + List newUserForts = new(); foreach ((FortPlants fortPlant, FortConfig fortConfig) in fortConfigs) @@ -50,10 +55,24 @@ public async Task IncreaseFortLevels(long viewerId) { if (fortToUpdate.Level < fortConfig.Level) { + currentFortLevel += fortConfig.Level - fortToUpdate.Level; + logger.LogDebug("Updating fort at BuildId {buildId}", fortToUpdate.BuildId); fortToUpdate.Level = fortConfig.Level; fortToUpdate.BuildStartDate = DateTimeOffset.UnixEpoch; fortToUpdate.BuildEndDate = DateTimeOffset.UnixEpoch; + + missionProgressionService.EnqueueEvent( + MissionCompleteType.FortPlantLevelUp, + total: fortConfig.Level, + parameter: (int)fortToUpdate.PlantId + ); + + missionProgressionService.EnqueueEvent( + MissionCompleteType.FortLevelUp, + 1, + currentFortLevel + ); } } @@ -74,6 +93,27 @@ public async Task IncreaseFortLevels(long viewerId) LastIncomeDate = DateTimeOffset.UnixEpoch }; newUserForts.Add(newUserFort); + + currentFortLevel += 1; + + missionProgressionService.EnqueueEvent( + MissionCompleteType.FortPlantBuilt, + 1, + fortsToUpdate.Count + 1, + (int)fortPlant + ); + + missionProgressionService.EnqueueEvent( + MissionCompleteType.FortPlantLevelUp, + total: fortConfig.Level, + parameter: (int)fortPlant + ); + + missionProgressionService.EnqueueEvent( + MissionCompleteType.FortLevelUp, + 1, + currentFortLevel + ); } } @@ -92,7 +132,7 @@ public async Task ProcessQuestCompletions(long viewerId) .ToListAsync(); List newUserQuests = new(); - foreach (QuestData questData in questDatas) + foreach (QuestData questData in QuestDatas) { bool questExists = userQuests.Where(x => x.QuestId == questData.Id).Any(); if (questExists == false) @@ -116,13 +156,32 @@ public async Task ProcessQuestCompletions(long viewerId) LastDailyResetTime = DateTimeOffset.UnixEpoch }; newUserQuests.Add(userQuest); + + missionProgressionService.OnQuestCleared( + questData.Id, + questData.Gid, + questData.QuestPlayModeType, + 1, + 1 + ); } else { DbQuest userQuest = userQuests.Where(x => x.QuestId == questData.Id).First(); bool isFirstClear = userQuest.State < 3; if (isFirstClear) + { wyrmite += 10; + + missionProgressionService.OnQuestCleared( + questData.Id, + questData.Gid, + questData.QuestPlayModeType, + 1, + 1 + ); + } + if (!userQuest.IsMissionClear1) { userQuest.IsMissionClear1 = true; @@ -141,7 +200,7 @@ public async Task ProcessQuestCompletions(long viewerId) wyrmite += 5; } - if (userQuest.BestClearTime == -1) + if (userQuest.BestClearTime < 0) { userQuest.BestClearTime = 36000; } @@ -170,10 +229,13 @@ public async Task ProcessStoryCompletions(long viewerId) .ToListAsync(); List newUserStories = new(); - foreach (QuestStory questStory in questStories) + foreach (QuestStory questStory in QuestStories) { - bool storyExists = userStories.Where(x => x.StoryId == questStory.Id).Any(); - if (storyExists == false) + DbPlayerStoryState? storyState = userStories.FirstOrDefault(x => + x.StoryId == questStory.Id + ); + + if (storyState is null) { wyrmite += 25; DbPlayerStoryState userStory = @@ -185,6 +247,14 @@ public async Task ProcessStoryCompletions(long viewerId) State = StoryState.Read }; newUserStories.Add(userStory); + + missionProgressionService.OnQuestStoryCleared(questStory.Id); + } + else if (storyState.State != StoryState.Read) + { + storyState.State = StoryState.Read; + + missionProgressionService.OnQuestStoryCleared(questStory.Id); } } @@ -290,8 +360,8 @@ public async Task RewardDragons(long viewerId) public async Task UpdateUserData(int wyrmite) { - const int MaxLevel = 60; - const int MaxExp = 69990; + const int maxLevel = 60; + const int maxExp = 69990; DbPlayerUserData data = await userDataRepository.GetUserDataAsync(); data.TutorialFlag = 16640603; data.TutorialStatus = 60999; @@ -299,14 +369,21 @@ public async Task UpdateUserData(int wyrmite) data.StaminaMulti = 99; data.Crystal += wyrmite; - if (data.Exp < MaxExp) + if (data.Exp < maxExp) { - data.Exp = MaxExp; + data.Exp = maxExp; } - if (data.Level < MaxLevel) + if (data.Level < maxLevel) { - data.Level = MaxLevel; + data.Level = maxLevel; } } + + private static bool IsNormalModeQuest(int questId) + { + // Select quest with a subgroup like 100010|107| instead of 100010|207| (the latter is hard mode) + int subgroup = questId % 1000; + return subgroup is > 100 and < 200; + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/FeatureExtensions.cs index c870a214f..bba58e5ad 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Summoning/FeatureExtensions.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/FeatureExtensions.cs @@ -7,7 +7,11 @@ public static partial class FeatureExtensions { public static IServiceCollection AddSummoningFeature( this IServiceCollection serviceCollection - ) => serviceCollection.AddScoped().AddScoped(); + ) => + serviceCollection + .AddScoped() + .AddScoped() + .AddScoped(); public static IServiceCollection AddSummoningOptions( this IServiceCollection serviceCollection, diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/RedoableSummonController.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/RedoableSummonController.cs index 5a69b0bd4..7ab212c34 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Summoning/RedoableSummonController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/RedoableSummonController.cs @@ -1,6 +1,7 @@ using DragaliaAPI.Controllers; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; @@ -13,8 +14,8 @@ namespace DragaliaAPI.Features.Summoning; public class RedoableSummonController( SummonService summonService, SummonOddsService summonOddsService, + UnitService unitService, IStoryRepository storyRepository, - IUnitRepository unitRepository, ITutorialService tutorialService, IUpdateDataService updateDataService, IDistributedCache cache @@ -99,16 +100,23 @@ CancellationToken cancellationToken ); prologueStory.State = StoryState.Read; - IEnumerable<(Charas id, bool isNew)> repositoryCharaOuput = await unitRepository.AddCharas( - cachedResult.Where(x => x.EntityType == EntityTypes.Chara).Select(x => (Charas)x.Id) + List dragonList = cachedResult + .Where(x => x.EntityType == EntityTypes.Dragon) + .Select(x => (Dragons)x.Id) + .ToList(); + + List charaList = cachedResult + .Where(x => x.EntityType == EntityTypes.Chara) + .Select(x => (Charas)x.Id) + .ToList(); + + IEnumerable<(Charas id, bool isNew)> repositoryCharaOuput = await unitService.AddCharas( + charaList ); - IEnumerable<(Dragons Id, bool IsNew)> repositoryDragonOutput = - await unitRepository.AddDragons( - cachedResult - .Where(x => x.EntityType == EntityTypes.Dragon) - .Select(x => (Dragons)x.Id) - ); + IEnumerable<(Dragons Id, bool IsNew)> repositoryDragonOutput = await unitService.AddDragons( + dragonList + ); UpdateDataList updateData = await updateDataService.SaveChangesAsync(cancellationToken); diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonController.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonController.cs index 3ab580b68..ef85e959c 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonController.cs @@ -1,17 +1,10 @@ -using System.Diagnostics; -using DragaliaAPI.Controllers; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Database.Repositories; +using DragaliaAPI.Controllers; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; -using DragaliaAPI.Shared.Features.Summoning; -using DragaliaAPI.Shared.MasterAsset; -using DragaliaAPI.Shared.MasterAsset.Models; using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; namespace DragaliaAPI.Features.Summoning; @@ -20,11 +13,9 @@ namespace DragaliaAPI.Features.Summoning; [Produces("application/octet-stream")] [ApiController] public class SummonController( - IUserDataRepository userDataRepository, - IUnitRepository unitRepository, - IUpdateDataService updateDataService, SummonService summonService, - SummonOddsService summonOddsService + SummonOddsService summonOddsService, + IUpdateDataService updateDataService ) : DragaliaControllerBase { /// @@ -146,11 +137,7 @@ CancellationToken cancellationToken SummonList? summonList = await summonService.GetSummonList(summonRequest.SummonId); - DbPlayerBannerData? playerBannerData = await summonService.GetPlayerBannerData( - summonRequest.SummonId - ); - - if (summonList == null || playerBannerData == null) + if (summonList == null) { throw new DragaliaException( ResultCode.SummonNotFound, @@ -160,10 +147,6 @@ CancellationToken cancellationToken await summonService.ProcessSummonPayment(summonRequest, summonList); - DbPlayerUserData userData = await userDataRepository.UserData.FirstAsync(cancellationToken); - - int summonPointMultiplier = summonList.AddSummonPoint; - List summonResult = await summonService.GenerateSummonResult( execCount, @@ -171,153 +154,37 @@ await summonService.GenerateSummonResult( summonRequest.ExecType ); - List returnedResult = new(); - List newGetEntityList = new(); - - int lastIndexOfRare5 = 0; - int countOfRare5Char = 0; - int countOfRare5Dragon = 0; - int countOfRare4 = 0; - - List newDragons = ( - await unitRepository.AddDragons( - summonResult - .Where(x => x.EntityType == EntityTypes.Dragon) - .Select(x => (Dragons)x.Id) - ) - ) - .Where(x => x.IsNew) - .Select(x => x.Id) - .ToList(); - - List newCharas = ( - await unitRepository.AddCharas( - summonResult.Where(x => x.EntityType == EntityTypes.Chara).Select(x => (Charas)x.Id) - ) - ) - .Where(x => x.isNew) - .Select(x => x.id) - .ToList(); + ( + IList resultUnitList, + SummonService.SummonResultMetaInfo metaInfo, + EntityResult entityResult + ) = await summonService.CommitSummonResult(summonResult); - foreach ( - (AtgenRedoableSummonResultUnitList result, int index) in summonResult.Select( - (x, i) => (x, i) - ) - ) + foreach (AtgenResultUnitList result in resultUnitList) { - bool isNew = result.EntityType switch - { - EntityTypes.Dragon => newDragons.Remove((Dragons)result.Id), - EntityTypes.Chara => newCharas.Remove((Charas)result.Id), - _ => throw new UnreachableException("Invalid entity type"), - }; - - int dewPoint = 0; - if (!isNew && result.EntityType is EntityTypes.Chara) - { - dewPoint = CalculateDewValue((Charas)result.Id); - userData.DewPoint += dewPoint; - } - else - { - newGetEntityList.Add( - new() { EntityType = result.EntityType, EntityId = result.Id } - ); - } - - switch (result.Rarity) - { - case 5: - { - lastIndexOfRare5 = index; - - if (result.EntityType is EntityTypes.Chara) - countOfRare5Char++; - else - countOfRare5Dragon++; - break; - } - case 4: - countOfRare4++; - break; - } - - AtgenResultUnitList processedResult = - new() - { - EntityType = result.EntityType, - Id = result.Id, - IsNew = isNew, - Rarity = result.Rarity, - DewPoint = dewPoint, - }; - - summonService.AddSummonHistory(summonList, summonRequest, processedResult); - - returnedResult.Add(processedResult); + summonService.AddSummonHistory(summonList, summonRequest, result); } - int gainedSummonPoints = summonCount * summonPointMultiplier; - playerBannerData.SummonPoints += gainedSummonPoints; - playerBannerData.SummonCount += summonCount; + UserSummonList userSummonList = await summonService.UpdateUserSummonInformation( + summonList, + summonCount + ); - int reversalIndex = lastIndexOfRare5; - if (reversalIndex != -1 && new Random().NextSingle() < 0.95) - reversalIndex = -1; - - int sageEffect; - int circleEffect; - int rarityDisplayModifier = reversalIndex == -1 ? 0 : 1; - if (countOfRare5Char + countOfRare5Dragon > 0 + rarityDisplayModifier) - { - sageEffect = - countOfRare5Dragon > countOfRare5Char - ? (int)SummonEffectsSage.GoldFafnirs - : (int)SummonEffectsSage.RainbowCrystal; - circleEffect = (int)SummonEffectsSky.Rainbow; - } - else - { - circleEffect = (int)SummonEffectsSky.Yellow; - switch (countOfRare4 + ((countOfRare5Char + countOfRare5Dragon) * 2)) - { - case > 1: - sageEffect = (int)SummonEffectsSage.MultiDoves; - break; - case > 0: - sageEffect = (int)SummonEffectsSage.SingleDove; - break; - default: - sageEffect = (int)SummonEffectsSage.Dull; - circleEffect = (int)SummonEffectsSky.Blue; - break; - } - } + SummonEffect effect = SummonEffectHelper.CalculateEffect(metaInfo); UpdateDataList updateDataList = await updateDataService.SaveChangesAsync(cancellationToken); SummonRequestResponse response = new( - resultUnitList: returnedResult, - resultPrizeList: new List(), - presageEffectList: new List() { sageEffect, circleEffect }, - reversalEffectIndex: reversalIndex, + resultUnitList: resultUnitList, + resultPrizeList: [], + presageEffectList: [effect.SageEffect, effect.CircleEffect], + reversalEffectIndex: effect.ReversalIndex, updateDataList: updateDataList, - entityResult: new EntityResult() { NewGetEntityList = newGetEntityList }, + entityResult: entityResult, summonTicketList: await summonService.GetSummonTicketList(), - resultSummonPoint: gainedSummonPoints, - userSummonList: new List() - { - new( - summonList.SummonId, - playerBannerData.SummonCount, - summonList.CampaignType, - summonList.FreeCountRest, - summonList.IsBeginnerCampaign, - summonList.BeginnerCampaignCountRest, - summonList.ConsecutionCampaignCountRest - ) - } + resultSummonPoint: summonList.AddSummonPoint * summonCount, + userSummonList: [userSummonList] ); return this.Ok(response); @@ -329,7 +196,7 @@ public async Task> SummonPointTra CancellationToken cancellationToken ) { - AtgenBuildEventRewardEntityList result = await summonService.DoSummonPointTrade( + AtgenBuildEventRewardEntityList entity = await summonService.DoSummonPointTrade( request.SummonId, request.TradeId ); @@ -338,16 +205,8 @@ CancellationToken cancellationToken return new SummonSummonPointTradeResponse() { - ExchangeEntityList = [result], + ExchangeEntityList = [entity], UpdateDataList = updateDataList, }; } - - private static int CalculateDewValue(Charas id) - { - CharaData data = MasterAsset.CharaData[id]; - return data.GetAvailability() == UnitAvailability.Story - ? DewValueData.DupeStorySummon[data.Rarity] - : DewValueData.DupeSummon[data.Rarity]; - } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonEffectHelper.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonEffectHelper.cs new file mode 100644 index 000000000..cba18eed9 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonEffectHelper.cs @@ -0,0 +1,53 @@ +using DragaliaAPI.Shared.Definitions.Enums.Summon; + +namespace DragaliaAPI.Features.Summoning; + +public static class SummonEffectHelper +{ + public static SummonEffect CalculateEffect(SummonService.SummonResultMetaInfo metaInfo) + { + int reversalIndex = metaInfo.LastIndexOfRare5; + if (reversalIndex != -1 && new Random().NextSingle() < 0.95) + reversalIndex = -1; + + int sageEffect; + int circleEffect; + int rarityDisplayModifier = reversalIndex == -1 ? 0 : 1; + if (metaInfo.CountOfRare5Char + metaInfo.CountOfRare5Dragon > 0 + rarityDisplayModifier) + { + sageEffect = + metaInfo.CountOfRare5Dragon > metaInfo.CountOfRare5Char + ? (int)SummonEffectsSage.GoldFafnirs + : (int)SummonEffectsSage.RainbowCrystal; + circleEffect = (int)SummonEffectsSky.Rainbow; + } + else + { + circleEffect = (int)SummonEffectsSky.Yellow; + switch ( + metaInfo.CountOfRare4 + + ((metaInfo.CountOfRare5Char + metaInfo.CountOfRare5Dragon) * 2) + ) + { + case > 1: + sageEffect = (int)SummonEffectsSage.MultiDoves; + break; + case > 0: + sageEffect = (int)SummonEffectsSage.SingleDove; + break; + default: + sageEffect = (int)SummonEffectsSage.Dull; + circleEffect = (int)SummonEffectsSky.Blue; + break; + } + } + + return new SummonEffect( + SageEffect: sageEffect, + CircleEffect: circleEffect, + ReversalIndex: reversalIndex + ); + } +} + +public readonly record struct SummonEffect(int SageEffect, int CircleEffect, int ReversalIndex); diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.Log.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.Log.cs index d8ca6246a..1e914a078 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.Log.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.Log.cs @@ -21,5 +21,14 @@ AtgenSummonPointTradeList trade "Unexpected RewardService result for wyrmsigil trade: {Result}" )] public static partial void UnexpectedRewardResult(ILogger logger, RewardGrantResult result); + + [LoggerMessage( + LogLevel.Information, + "Adding summon trade {Trade} to gift box as storage was full" + )] + public static partial void AddingTradeToGiftBox( + ILogger logger, + AtgenSummonPointTradeList trade + ); } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.cs index 885a728bf..0b0a32555 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/SummonService.cs @@ -1,5 +1,7 @@ +using System.Diagnostics; using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; +using DragaliaAPI.Features.Present; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; using DragaliaAPI.Mapping.Mapperly; @@ -7,6 +9,10 @@ using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.Definitions.Enums.Summon; +using DragaliaAPI.Shared.Features.Presents; +using DragaliaAPI.Shared.Features.Summoning; +using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.PlayerDetails; using FluentRandomPicker; using FluentRandomPicker.FluentInterfaces.General; @@ -17,8 +23,10 @@ namespace DragaliaAPI.Features.Summoning; public sealed partial class SummonService( SummonOddsService summonOddsService, + UnitService unitService, IOptionsMonitor optionsMonitor, IPlayerIdentityService playerIdentityService, + IPresentService presentService, IRewardService rewardService, IPaymentService paymentService, ApiContext apiContext, @@ -299,14 +307,18 @@ is not { } banner Log.PointsDeducted(logger, bannerData.SummonPoints); - if ( - result - is not ( - RewardGrantResult.Added - or RewardGrantResult.GiftBox - or RewardGrantResult.GiftBoxDiscarded - ) - ) + if (result == RewardGrantResult.Limit) + { + Log.AddingTradeToGiftBox(logger, tradeList); + presentService.AddPresent( + new Present.Present( + PresentMessage.WyrmsigilReward, + tradeList.EntityType, + tradeList.EntityId + ) + ); + } + else if (result != RewardGrantResult.Added) { Log.UnexpectedRewardResult(logger, result); } @@ -372,6 +384,167 @@ await paymentService.ProcessPayment( ); } + public async Task<( + IList ResultUnitList, + SummonResultMetaInfo MetaInfo, + EntityResult EntityResult + )> CommitSummonResult(IList summonResult) + { + List returnedResult = []; + List newGetEntityList = []; + + int lastIndexOfRare5 = 0; + int countOfRare5Char = 0; + int countOfRare5Dragon = 0; + int countOfRare4 = 0; + + List dragonList = summonResult + .Where(x => x.EntityType == EntityTypes.Dragon) + .Select(x => (Dragons)x.Id) + .ToList(); + + List charaList = summonResult + .Where(x => x.EntityType == EntityTypes.Chara) + .Select(x => (Charas)x.Id) + .ToList(); + + List newDragons = (await unitService.AddDragons(dragonList)) + .Where(x => x.IsNew) + .Select(x => x.Id) + .ToList(); + + List newCharas = (await unitService.AddCharas(charaList)) + .Where(x => x.IsNew) + .Select(x => x.Id) + .ToList(); + + DbPlayerUserData userData = await apiContext.PlayerUserData.FirstAsync(); + + foreach ( + (AtgenRedoableSummonResultUnitList result, int index) in summonResult.Select( + (x, i) => (x, i) + ) + ) + { + bool isNew = result.EntityType switch + { + EntityTypes.Dragon => newDragons.Remove((Dragons)result.Id), + EntityTypes.Chara => newCharas.Remove((Charas)result.Id), + _ => throw new UnreachableException("Invalid entity type"), + }; + + int dewPoint = 0; + if (!isNew && result.EntityType is EntityTypes.Chara) + { + dewPoint = CalculateDewValue((Charas)result.Id); + userData.DewPoint += dewPoint; + } + else + { + newGetEntityList.Add( + new AtgenDuplicateEntityList + { + EntityType = result.EntityType, + EntityId = result.Id + } + ); + } + + switch (result.Rarity) + { + case 5: + { + lastIndexOfRare5 = index; + if (result.EntityType is EntityTypes.Chara) + countOfRare5Char++; + else + countOfRare5Dragon++; + break; + } + case 4: + countOfRare4++; + break; + } + + AtgenResultUnitList processedResult = + new() + { + EntityType = result.EntityType, + Id = result.Id, + IsNew = isNew, + Rarity = result.Rarity, + DewPoint = dewPoint, + }; + + returnedResult.Add(processedResult); + } + + IEnumerable overPresentEntityList = presentService + .AddedPresents.Where(x => x.EntityType == EntityTypes.Dragon) + .Select(x => x.ToBuildEventRewardList()); + + return ( + returnedResult, + new SummonResultMetaInfo( + LastIndexOfRare5: lastIndexOfRare5, + CountOfRare5Char: countOfRare5Char, + CountOfRare5Dragon: countOfRare5Dragon, + CountOfRare4: countOfRare4 + ), + new EntityResult() + { + // We are not using the RewardService method as it would include OverDiscardEntityList for any characters that were already owned. + NewGetEntityList = newGetEntityList, + OverPresentEntityList = overPresentEntityList, + } + ); + + static int CalculateDewValue(Charas id) + { + CharaData data = MasterAsset.CharaData[id]; + return data.GetAvailability() == UnitAvailability.Story + ? DewValueData.DupeStorySummon[data.Rarity] + : DewValueData.DupeSummon[data.Rarity]; + } + } + + public async Task UpdateUserSummonInformation( + SummonList summonList, + int summonCount + ) + { + DbPlayerBannerData? playerBannerData = await this.GetPlayerBannerData(summonList.SummonId); + + if (playerBannerData is null) + { + throw new InvalidOperationException( + $"PlayerBannerData for banner {summonList.SummonId} was not found" + ); + } + + int gainedSummonPoints = summonCount * summonList.AddSummonPoint; + playerBannerData.SummonPoints += gainedSummonPoints; + playerBannerData.SummonCount += summonCount; + + return new UserSummonList() + { + SummonId = summonList.SummonId, + SummonCount = playerBannerData.SummonCount, + CampaignType = summonList.CampaignType, + FreeCountRest = summonList.FreeCountRest, + IsBeginnerCampaign = summonList.IsBeginnerCampaign, + BeginnerCampaignCountRest = summonList.BeginnerCampaignCountRest, + ConsecutionCampaignCountRest = summonList.ConsecutionCampaignCountRest + }; + } + + public readonly record struct SummonResultMetaInfo( + int LastIndexOfRare5, + int CountOfRare5Char, + int CountOfRare5Dragon, + int CountOfRare4 + ); + private async Task> GenerateSummonResultInternal( int bannerId, int numSummons diff --git a/DragaliaAPI/DragaliaAPI/Features/Summoning/UnitService.cs b/DragaliaAPI/DragaliaAPI/Features/Summoning/UnitService.cs new file mode 100644 index 000000000..73443b20f --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Summoning/UnitService.cs @@ -0,0 +1,94 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Features.Present; +using DragaliaAPI.Features.Reward; +using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.Features.Presents; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Features.Summoning; + +using CharaNewCheckResult = (Charas Id, bool IsNew); +using DragonNewCheckResult = (Dragons Id, bool IsNew); + +/// +/// Service to assist with adding units after a summon result is generated. +/// +/// Instance of . +public class UnitService( + IPresentService presentService, + IRewardService rewardService, + ApiContext apiContext +) +{ + /// + /// Add a list of characters to the database. Will only add the first instance of any new character. + /// + /// + /// A list of tuples which adds a dimension onto the input list, where the second item shows whether the + /// given character ID was a duplicate. + /// + public async Task> AddCharas(IList idList) + { + IDictionary inputRewardDict = idList + .Select((x, index) => KeyValuePair.Create(index, new Entity(EntityTypes.Chara, (int)x))) + .ToDictionary(); + + IDictionary outputRewardDict = + await rewardService.BatchGrantRewards(inputRewardDict); + + List result = []; + + foreach ((int key, RewardGrantResult grantResult) in outputRewardDict) + { + result.Add(((Charas)inputRewardDict[key].Id, grantResult == RewardGrantResult.Added)); + } + + return result; + } + + public async Task> AddDragons(List idList) + { + IDictionary inputRewardDict = idList + .Select( + (x, index) => KeyValuePair.Create(index, new Entity(EntityTypes.Dragon, (int)x)) + ) + .ToDictionary(); + + IDictionary outputRewardDict = + await rewardService.BatchGrantRewards(inputRewardDict); + + IEnumerable presentsToAdd = outputRewardDict + .Where(kvp => kvp.Value == RewardGrantResult.Limit) + .Select(x => new Present.Present( + PresentMessage.SummonShowcase, + EntityTypes.Dragon, + inputRewardDict[x.Key].Id + )); + + presentService.AddPresent(presentsToAdd); + + List ownedDragons = await apiContext + .PlayerDragonData.Select(x => x.DragonId) + .Where(x => idList.Contains(x)) + .ToListAsync(); + + List newMapping = MarkNewDragons(ownedDragons, idList); + + return newMapping.Select(x => (x.Id, x.IsNew)).ToList(); + } + + private static List MarkNewDragons( + List owned, + List idList + ) + { + List result = new(); + foreach (Dragons c in idList) + { + bool isDragonNew = !(result.Any(x => x.Id == c) || owned.Contains(c)); + result.Add((c, isDragonNew)); + } + + return result; + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackRepository.cs b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackRepository.cs index 51c268013..196925635 100644 --- a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackRepository.cs +++ b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackRepository.cs @@ -1,5 +1,4 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Entities; namespace DragaliaAPI.Features.TimeAttack; diff --git a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackService.cs b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackService.cs index ecab1b35f..661bf21f2 100644 --- a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/ITimeAttackService.cs @@ -1,5 +1,4 @@ using DragaliaAPI.Models.Generated; -using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.MasterAsset.Models.TimeAttack; namespace DragaliaAPI.Features.TimeAttack; diff --git a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackController.cs b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackController.cs index 8ecd1b7f9..05f0bd9cf 100644 --- a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackController.cs @@ -2,7 +2,6 @@ using DragaliaAPI.Features.Reward; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services; -using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.MasterAsset.Models.TimeAttack; using Microsoft.AspNetCore.Mvc; diff --git a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackService.cs b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackService.cs index 3e88c11d1..1d203b720 100644 --- a/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/TimeAttack/TimeAttackService.cs @@ -1,12 +1,10 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.TimeAttack.Validation; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; -using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.MasterAsset.Models.TimeAttack; using DragaliaAPI.Shared.PlayerDetails; using FluentValidation.Results; diff --git a/DragaliaAPI/DragaliaAPI/Features/Trade/ITradeService.cs b/DragaliaAPI/DragaliaAPI/Features/Trade/ITradeService.cs index 44513c277..5f5b1ebb4 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Trade/ITradeService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Trade/ITradeService.cs @@ -20,4 +20,5 @@ Task DoTrade( IEnumerable? needUnitList = null ); Task DoAbilityCrestTrade(int id, int count); + EntityResult GetEntityResult(); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Trade/TradeService.cs b/DragaliaAPI/DragaliaAPI/Features/Trade/TradeService.cs index 29e7f1db3..3af628bf7 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Trade/TradeService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Trade/TradeService.cs @@ -1,11 +1,12 @@ using DragaliaAPI.Features.Missions; +using DragaliaAPI.Features.Present; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; +using DragaliaAPI.Shared.Features.Presents; using DragaliaAPI.Shared.MasterAsset; -using DragaliaAPI.Shared.MasterAsset.Models; using DragaliaAPI.Shared.MasterAsset.Models.Trade; using Microsoft.EntityFrameworkCore; @@ -16,6 +17,7 @@ public class TradeService( IRewardService rewardService, ILogger logger, IPaymentService paymentService, + IPresentService presentService, IMissionProgressionService missionProgressionService ) : ITradeService { @@ -162,15 +164,55 @@ await paymentService.ProcessPayment( ); } - await rewardService.GrantReward( - new( - trade.DestinationEntityType, - trade.DestinationEntityId, - trade.DestinationEntityQuantity * count, - trade.DestinationLimitBreakCount - ) + Dictionary entities; + + if (trade.DestinationEntityType == EntityTypes.Dragon) + { + // We must flatten dragons out into multiple entities, since each grant could have a different result + entities = Enumerable + .Repeat( + new Entity( + trade.DestinationEntityType, + trade.DestinationEntityId, + 1, + trade.DestinationLimitBreakCount + ), + trade.DestinationEntityQuantity * count + ) + .Select((x, index) => KeyValuePair.Create(index, x)) + .ToDictionary(); + } + else + { + entities = new() + { + [1] = new Entity( + trade.DestinationEntityType, + trade.DestinationEntityId, + trade.DestinationEntityQuantity * count, + trade.DestinationLimitBreakCount + ) + }; + } + + IDictionary batchResult = await rewardService.BatchGrantRewards( + entities ); + foreach ((_, RewardGrantResult result) in batchResult) + { + if (result == RewardGrantResult.Limit) + { + presentService.AddPresent( + new Present.Present( + PresentMessage.TreasureTrade, + trade.DestinationEntityType, + trade.DestinationEntityId + ) + ); + } + } + await tradeRepository.AddTrade(tradeType, tradeId, count, DateTimeOffset.UtcNow); int totalCount = (await tradeRepository.FindTrade(tradeId))?.Count ?? 0; @@ -198,10 +240,23 @@ await paymentService.ProcessPayment( expectedPrice: trade.NeedDewPoint ); - await rewardService.GrantReward( + // The client is unlikely to trade for an ability crest which it cannot hold more of, so it is unlikely we would + // get anything other than RewardGrantResult.Added here. + // TODO: this should be validated + _ = await rewardService.GrantReward( new Entity(EntityTypes.Wyrmprint, (int)trade.AbilityCrestId) ); await tradeRepository.AddTrade(TradeType.AbilityCrest, id, count); } + + public EntityResult GetEntityResult() + { + EntityResult result = rewardService.GetEntityResult(); + result.OverPresentEntityList = presentService.AddedPresents.Select(x => + x.ToBuildEventRewardList() + ); + + return result; + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Trade/TreasureTradeController.cs b/DragaliaAPI/DragaliaAPI/Features/Trade/TreasureTradeController.cs index 13b8ed440..db857ddfd 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Trade/TreasureTradeController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Trade/TreasureTradeController.cs @@ -44,6 +44,7 @@ await tradeService.DoTrade( resp.UpdateDataList = await updateDataService.SaveChangesAsync(cancellationToken); resp.TreasureTradeAllList = tradeService.GetCurrentTreasureTradeList(); resp.UserTreasureTradeList = await tradeService.GetUserTreasureTradeList(); + resp.EntityResult = tradeService.GetEntityResult(); return Ok(resp); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/FeatureExtensions.cs new file mode 100644 index 000000000..06dab2092 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/FeatureExtensions.cs @@ -0,0 +1,10 @@ +using DragaliaAPI.Features.Wall; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddWallFeature(this IServiceCollection serviceCollection) => + serviceCollection.AddScoped(); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/IWallRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/IWallRepository.cs deleted file mode 100644 index 3770e286d..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/IWallRepository.cs +++ /dev/null @@ -1,14 +0,0 @@ -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.Definitions.Enums; - -namespace DragaliaAPI.Features.Wall; - -public interface IWallRepository -{ - IQueryable QuestWalls { get; } - - Task AddInitialWall(); - - Task GetQuestWall(int wallId); - Task GetQuestWallLevel(QuestWallTypes type); -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/IWallService.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/IWallService.cs index ad23550c3..4da32d337 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/IWallService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/IWallService.cs @@ -1,4 +1,5 @@ -using DragaliaAPI.Models.Generated; +using DragaliaAPI.Database.Entities; +using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; namespace DragaliaAPI.Features.Wall; @@ -9,20 +10,18 @@ public interface IWallService Task SetQuestWallIsStartNextLevel(int wallId, bool value); - Task> GetQuestWallList(); - Task GetTotalWallLevel(); - Task GrantMonthlyRewardEntityList(IEnumerable rewards); + Task GrantMonthlyRewardEntityList(IList rewards); List GetMonthlyRewardEntityList(int levelTotal); - IEnumerable GetUserWallRewardList( - int levelTotal, - RewardStatus rewardStatus - ); + public Task GetUserWallRewardList(); Task InitializeWall(); - Task InitializeWallMissions(); Task> GetWallLevelMap(); + Task GetLastRewardDate(); + Task CheckWallInitialized(); + bool CheckCanClaimReward(DateTimeOffset lastClaimDate); + Task GetQuestWall(int wallId); } diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/WallController.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/WallController.cs index 0d6833970..8d773e571 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/WallController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/WallController.cs @@ -1,4 +1,5 @@ using DragaliaAPI.Controllers; +using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.ClearParty; using DragaliaAPI.Features.Dungeon; using DragaliaAPI.Features.Reward; @@ -7,33 +8,20 @@ using DragaliaAPI.Services; using DragaliaAPI.Shared.Definitions.Enums; using Microsoft.AspNetCore.Mvc; +using LogLevel = Microsoft.Extensions.Logging.LogLevel; namespace DragaliaAPI.Features.Wall; [Route("wall")] -public class WallController : DragaliaControllerBase +public partial class WallController( + IUpdateDataService updateDataService, + IRewardService rewardService, + IClearPartyService clearPartyService, + IDungeonService dungeonService, + IWallService wallService, + ILogger logger +) : DragaliaControllerBase { - private readonly IUpdateDataService updateDataService; - private readonly IRewardService rewardService; - private readonly IClearPartyService clearPartyService; - private readonly IDungeonService dungeonService; - private readonly IWallService wallService; - - public WallController( - IUpdateDataService updateDataService, - IRewardService rewardService, - IClearPartyService clearPartyService, - IDungeonService dungeonService, - IWallService wallService - ) - { - this.updateDataService = updateDataService; - this.rewardService = rewardService; - this.clearPartyService = clearPartyService; - this.dungeonService = dungeonService; - this.wallService = wallService; - } - [HttpPost("fail")] public async Task Fail(WallFailRequest request) { @@ -55,18 +43,22 @@ public async Task Fail(WallFailRequest request) ); } - // When is this called? [HttpPost("get_monthly_reward")] public async Task GetMonthlyReward() { - int totalLevel = await wallService.GetTotalWallLevel(); + if (!await wallService.CheckWallInitialized()) + { + Log.InvalidCheckAttempt(logger); - IEnumerable userWallRewardList = wallService.GetUserWallRewardList( - totalLevel, - RewardStatus.Received - ); + return this.Code( + ResultCode.CommonInvalidArgument, + "Invalid attempt to claim wall monthly reward: not initialized" + ); + } - WallGetMonthlyRewardResponse data = new() { UserWallRewardList = userWallRewardList }; + AtgenUserWallRewardList userWallRewardList = await wallService.GetUserWallRewardList(); + + WallGetMonthlyRewardResponse data = new() { UserWallRewardList = [userWallRewardList] }; return Ok(data); } @@ -79,37 +71,54 @@ CancellationToken cancellationToken ) { (IEnumerable clearParty, IEnumerable lostUnitList) = - await this.clearPartyService.GetQuestClearParty(request.WallId, false); + await clearPartyService.GetQuestClearParty(request.WallId, false); - await this.updateDataService.SaveChangesAsync(cancellationToken); // Updated lost entities + await updateDataService.SaveChangesAsync(cancellationToken); // Updated lost entities WallGetWallClearPartyResponse data = new() { WallClearPartySettingList = clearParty, LostUnitList = lostUnitList }; return Ok(data); } - // Called upon entering the MG menu when the user is available to receive - // monthly MG rewards (i assume) [HttpPost("receive_monthly_reward")] - public async Task ReceiveMonthlyReward( - WallReceiveMonthlyRewardRequest request, - CancellationToken cancellationToken - ) + public async Task ReceiveMonthlyReward(CancellationToken cancellationToken) { + // Called when sending `monthly_wall_reward_list` from /login/index + + if (!await wallService.CheckWallInitialized()) + { + Log.InvalidClaimAttempt(logger); + + return this.Code( + ResultCode.CommonInvalidArgument, + "Invalid attempt to claim wall monthly reward: not initialized" + ); + } + + // Retrieve to track and update in GrantMonthlyRewardEntityList later + DbWallRewardDate lastRewardDate = await wallService.GetLastRewardDate(); + + if (!wallService.CheckCanClaimReward(lastRewardDate.LastClaimDate)) + { + Log.InvalidClaimAttempt(logger); + + return this.Code( + ResultCode.CommonInvalidArgument, + "Invalid attempt to claim wall monthly reward: not eligible" + ); + } + int totalLevel = await wallService.GetTotalWallLevel(); - IEnumerable rewardEntityList = + List rewardEntityList = wallService.GetMonthlyRewardEntityList(totalLevel); - IEnumerable userWallRewardList = wallService.GetUserWallRewardList( - totalLevel, - RewardStatus.Received - ); + AtgenUserWallRewardList userWallRewardList = await wallService.GetUserWallRewardList(); // Grant Rewards await wallService.GrantMonthlyRewardEntityList(rewardEntityList); - EntityResult entityResult = this.rewardService.GetEntityResult(); + EntityResult entityResult = rewardService.GetEntityResult(); AtgenMonthlyWallReceiveList monthlyWallReceiveList = new() @@ -118,9 +127,7 @@ CancellationToken cancellationToken IsReceiveReward = RewardStatus.Received }; - UpdateDataList updateDataList = await this.updateDataService.SaveChangesAsync( - cancellationToken - ); + UpdateDataList updateDataList = await updateDataService.SaveChangesAsync(cancellationToken); WallReceiveMonthlyRewardResponse data = new() @@ -128,31 +135,40 @@ CancellationToken cancellationToken UpdateDataList = updateDataList, EntityResult = entityResult, WallMonthlyRewardList = rewardEntityList, - UserWallRewardList = userWallRewardList, - MonthlyWallReceiveList = new[] { monthlyWallReceiveList } + UserWallRewardList = [userWallRewardList], + MonthlyWallReceiveList = [monthlyWallReceiveList] }; return Ok(data); } - // Called upon clearing a MG quest and then clicking on the Next button - // what does this actually do? [HttpPost("set_wall_clear_party")] public async Task SetWallClearParty( WallSetWallClearPartyRequest request, CancellationToken cancellationToken ) { - await this.clearPartyService.SetQuestClearParty( + // Called upon clearing an MG quest and then clicking on the Next button + + await clearPartyService.SetQuestClearParty( request.WallId, false, request.RequestPartySettingList ); - await this.updateDataService.SaveChangesAsync(cancellationToken); + await updateDataService.SaveChangesAsync(cancellationToken); WallSetWallClearPartyResponse data = new() { Result = 1 }; return Ok(data); } + + private static partial class Log + { + [LoggerMessage(LogLevel.Error, "Invalid attempt to claim wall reward")] + public static partial void InvalidClaimAttempt(ILogger logger); + + [LoggerMessage(LogLevel.Error, "Invalid attempt to check wall reward")] + public static partial void InvalidCheckAttempt(ILogger logger); + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/WallRecordController.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/WallRecordController.cs index a1c69a159..558fe5856 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/WallRecordController.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/WallRecordController.cs @@ -17,7 +17,6 @@ namespace DragaliaAPI.Features.Wall; public class WallRecordController : DragaliaControllerBase { private readonly IUpdateDataService updateDataService; - private readonly IWallRepository wallRepository; private readonly IWallService wallService; private readonly IRewardService rewardService; private readonly IDungeonService dungeonService; @@ -27,7 +26,6 @@ public class WallRecordController : DragaliaControllerBase public WallRecordController( IUpdateDataService updateDataService, - IWallRepository wallRepository, IWallService wallService, IRewardService rewardService, IDungeonService dungeonService, @@ -37,7 +35,6 @@ ILogger logger ) { this.updateDataService = updateDataService; - this.wallRepository = wallRepository; this.wallService = wallService; this.rewardService = rewardService; this.dungeonService = dungeonService; @@ -54,7 +51,7 @@ CancellationToken cancellationToken ) { DungeonSession dungeonSession = await dungeonService.FinishDungeon(request.DungeonKey); - DbPlayerQuestWall questWall = await wallRepository.GetQuestWall(request.WallId); + DbPlayerQuestWall questWall = await this.wallService.GetQuestWall(request.WallId); int finishedLevel = dungeonSession.WallLevel; // ex: if you finish level 2, this value should be 2 int previousLevel = questWall.WallLevel; @@ -102,11 +99,9 @@ IEnumerable helperDetailList }; // Grant Rewards - await rewardService.GrantReward(GoldCrystals); - - await rewardService.GrantReward(Rupies); - - await rewardService.GrantReward(Mana); + _ = await rewardService.GrantReward(GoldCrystals); + _ = await rewardService.GrantReward(Rupies); + _ = await rewardService.GrantReward(Mana); // Don't grant first clear wyrmite if you are re-clearing the last level if (!isRecompletingMaxLevel) diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/WallRepository.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/WallRepository.cs deleted file mode 100644 index 228827e5e..000000000 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/WallRepository.cs +++ /dev/null @@ -1,68 +0,0 @@ -using DragaliaAPI.Database; -using DragaliaAPI.Database.Entities; -using DragaliaAPI.Shared.Definitions.Enums; -using DragaliaAPI.Shared.PlayerDetails; -using Microsoft.EntityFrameworkCore; - -namespace DragaliaAPI.Features.Wall; - -public class WallRepository : IWallRepository -{ - private readonly ApiContext apiContext; - private readonly IPlayerIdentityService playerIdentityService; - private readonly ILogger logger; - - public WallRepository( - ApiContext apiContext, - IPlayerIdentityService playerIdentityService, - ILogger logger - ) - { - this.apiContext = apiContext; - this.playerIdentityService = playerIdentityService; - this.logger = logger; - } - - public IQueryable QuestWalls => - this.apiContext.PlayerQuestWalls.Where(x => - x.ViewerId == this.playerIdentityService.ViewerId - ); - - public async Task AddInitialWall() - { - for (int element = 0; element < 5; element++) - { - await apiContext.PlayerQuestWalls.AddAsync( - new DbPlayerQuestWall() - { - ViewerId = this.playerIdentityService.ViewerId, - WallId = WallService.FlameWallId + element, - WallLevel = 0, // Indicates you have not completed level 1. Goes up to 80 upon completing level 80 - IsStartNextLevel = false, - } - ); - } - } - - public async Task GetQuestWall(int wallId) - { - DbPlayerQuestWall? questWall = await this - .QuestWalls.Where(x => x.WallId == wallId) - .FirstOrDefaultAsync(); - - if (questWall is null) - { - throw new InvalidOperationException( - $"Could not get questwall {questWall} for account {this.playerIdentityService.AccountId}." - ); - } - - return questWall; - } - - public Task GetQuestWallLevel(QuestWallTypes type) => - this - .QuestWalls.Where(x => x.WallId == (int)type) - .Select(x => x.WallLevel) - .FirstOrDefaultAsync(); -} diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/WallService.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/WallService.cs index 611df23a0..d3704b8e2 100644 --- a/DragaliaAPI/DragaliaAPI/Features/Wall/WallService.cs +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/WallService.cs @@ -1,4 +1,4 @@ -using AutoMapper; +using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Reward; @@ -12,13 +12,13 @@ namespace DragaliaAPI.Features.Wall; -public class WallService( - IWallRepository wallRepository, +public partial class WallService( ILogger logger, - IMapper mapper, IRewardService rewardService, IMissionService missionService, IMissionProgressionService missionProgressionService, + TimeProvider timeProvider, + ApiContext apiContext, IPlayerIdentityService playerIdentityService ) : IWallService { @@ -29,7 +29,7 @@ IPlayerIdentityService playerIdentityService public async Task LevelupQuestWall(int wallId) { - DbPlayerQuestWall questWall = await wallRepository.GetQuestWall(wallId); + DbPlayerQuestWall questWall = await this.GetQuestWall(wallId); // Increment level if it's not at max if (questWall.WallLevel >= MaximumQuestWallLevel) @@ -48,22 +48,16 @@ public async Task LevelupQuestWall(int wallId) public async Task SetQuestWallIsStartNextLevel(int wallId, bool value) { - DbPlayerQuestWall questWall = await wallRepository.GetQuestWall(wallId); - questWall.IsStartNextLevel = value; - } + DbPlayerQuestWall questWall = + await apiContext.PlayerQuestWalls.FirstOrDefaultAsync(x => x.WallId == wallId) + ?? throw new InvalidOperationException($"Could not get questwall {wallId}"); - public async Task> GetQuestWallList() - { - return (await wallRepository.QuestWalls.ToListAsync()).Select(mapper.Map); + questWall.IsStartNextLevel = value; } public async Task GetTotalWallLevel() { - int levelTotal = 0; - for (int element = 0; element < 5; element++) - { - levelTotal += (await wallRepository.GetQuestWall(FlameWallId + element)).WallLevel; - } + int levelTotal = await apiContext.PlayerQuestWalls.Take(5).SumAsync(x => x.WallLevel); if (levelTotal > MaximumQuestWallTotalLevel) { @@ -77,37 +71,54 @@ public async Task GetTotalWallLevel() return levelTotal; } - public Task> GetWallLevelMap() - { - return wallRepository.QuestWalls.ToDictionaryAsync( + public Task> GetWallLevelMap() => + apiContext.PlayerQuestWalls.ToDictionaryAsync( x => (QuestWallTypes)x.WallId, x => x.WallLevel ); - } public async Task InitializeWall() { - if (await wallRepository.QuestWalls.AnyAsync()) + if (await this.CheckWallInitialized()) return; logger.LogInformation("Initializing wall."); - await wallRepository.AddInitialWall(); + for (int element = 0; element < 5; element++) + { + apiContext.PlayerQuestWalls.Add( + new DbPlayerQuestWall() + { + ViewerId = playerIdentityService.ViewerId, + WallId = FlameWallId + element, + WallLevel = 0, // Indicates you have not completed level 1. Goes up to 80 upon completing level 80 + IsStartNextLevel = false, + } + ); + } + + apiContext.WallRewardDates.Add( + new DbWallRewardDate() + { + ViewerId = playerIdentityService.ViewerId, + LastClaimDate = DateTimeOffset.UtcNow, // Make them wait until next month to claim + } + ); + await this.InitializeWallMissions(); } - public async Task GrantMonthlyRewardEntityList( - IEnumerable rewards - ) + public async Task GrantMonthlyRewardEntityList(IList rewards) { logger.LogInformation( "Granting wall monthly reward list with size: {@wallRewardListSize}", - rewards.Count() + rewards.Count ); int totalRupies = 0; int totalMana = 0; int totalEldwater = 0; + int totalSand = 0; foreach (AtgenBuildEventRewardEntityList entity in rewards) { @@ -122,23 +133,46 @@ IEnumerable rewards case EntityTypes.Dew: totalEldwater += entity.EntityQuantity; break; + case EntityTypes.Material when entity.EntityId == (int)Materials.TwinklingSand: + totalSand += entity.EntityQuantity; + break; } } + // We are not too concerned if we get a result other than RewardGrantResult.Added here, since this is all + // just currency. if (totalRupies > 0) { - await rewardService.GrantReward(new Entity(EntityTypes.Rupies, 0, totalRupies)); + _ = await rewardService.GrantReward(new Entity(EntityTypes.Rupies, 0, totalRupies)); } if (totalMana > 0) { - await rewardService.GrantReward(new Entity(EntityTypes.Mana, 0, totalMana)); + _ = await rewardService.GrantReward(new Entity(EntityTypes.Mana, 0, totalMana)); } if (totalEldwater > 0) { - await rewardService.GrantReward(new Entity(EntityTypes.Dew, 0, totalEldwater)); + _ = await rewardService.GrantReward(new Entity(EntityTypes.Dew, 0, totalEldwater)); } + + if (totalSand > 0) + { + _ = await rewardService.GrantReward( + new Entity(EntityTypes.Material, (int)Materials.TwinklingSand, totalSand) + ); + } + + DbWallRewardDate? trackedRewardDate = apiContext.WallRewardDates.Local.FirstOrDefault(); + + if (trackedRewardDate is null) + { + throw new InvalidOperationException( + "No instance of DbWallRewardDate is being tracked - update failed" + ); + } + + trackedRewardDate.LastClaimDate = timeProvider.GetUtcNow(); } public List GetMonthlyRewardEntityList(int levelTotal) @@ -160,20 +194,24 @@ public List GetMonthlyRewardEntityList(int leve return rewardList; } - public IEnumerable GetUserWallRewardList( - int levelTotal, - RewardStatus rewardStatus - ) + public async Task GetUserWallRewardList() { - AtgenUserWallRewardList rewardList = - new() - { - QuestGroupId = WallQuestGroupId, - SumWallLevel = levelTotal, - LastRewardDate = DateTimeOffset.UtcNow, - RewardStatus = rewardStatus - }; - return new[] { rewardList }; + int totalWallLevel = await this.GetTotalWallLevel(); + + DateTimeOffset lastClaimDate = await apiContext + .WallRewardDates.AsNoTracking() + .Select(x => x.LastClaimDate) + .FirstAsync(); + + bool eligible = this.CheckCanClaimReward(lastClaimDate); + + return new() + { + QuestGroupId = WallQuestGroupId, + SumWallLevel = totalWallLevel, + LastRewardDate = lastClaimDate, + RewardStatus = eligible ? RewardStatus.Available : RewardStatus.Received, + }; } public async Task InitializeWallMissions() @@ -196,4 +234,72 @@ public async Task InitializeWallMissions() const int allMissionStart = 10010701; // Clear Lv. 2 of The Mercurial Gauntlet in All Elements await missionService.StartMission(MissionType.Normal, allMissionStart); } + + public async Task GetLastRewardDate() + { + // Get AsTracking for GrantMonthlyRewardEntityList + // Does not do anything for now -- but anticipates turning query tracking off later + DbWallRewardDate? wallRewardDate = await apiContext + .WallRewardDates.AsTracking() + .FirstOrDefaultAsync(); + + if (wallRewardDate is null) + { + // We expect, if this function is being called properly behind a CheckWallInitialized, that there + // should be data here. Between InitializeWall and the V21Update, everyone using this data + // should have a row in this table. + throw new InvalidOperationException("Failed to fetch last DbWallRewardDate"); + } + + return wallRewardDate; + } + + public async Task CheckWallInitialized() + { + bool initialized = await apiContext.PlayerQuestWalls.AnyAsync(); + + Log.WallInitializedStatus(logger, initialized); + + return initialized; + } + + public bool CheckCanClaimReward(DateTimeOffset lastClaimDate) + { + // The reward is available each month on the 15th. + DateTimeOffset mostRecentRewardDate = timeProvider.GetLastWallRewardDate(); + + Log.CheckingClaimDate(logger, lastClaimDate, mostRecentRewardDate); + + bool eligible = mostRecentRewardDate > lastClaimDate; + + Log.ClaimCheckResult(logger, eligible); + + return eligible; + } + + public async Task GetQuestWall(int wallId) => + await apiContext.PlayerQuestWalls.FirstOrDefaultAsync(x => x.WallId == wallId) + ?? throw new InvalidOperationException($"Could not get questwall {wallId}"); + + private static partial class Log + { + [LoggerMessage(LogLevel.Information, "Wall initialization check: {WallInitialized}.")] + public static partial void WallInitializedStatus(ILogger logger, bool wallInitialized); + + [LoggerMessage( + LogLevel.Debug, + "Checking wall monthly reward eligibility: last claim date: {ClaimDate}, most recent reward date {RewardDate}" + )] + public static partial void CheckingClaimDate( + ILogger logger, + DateTimeOffset claimDate, + DateTimeOffset rewardDate + ); + + [LoggerMessage( + LogLevel.Information, + "Wall monthly reward eligibility check result: {CheckResult}" + )] + public static partial void ClaimCheckResult(ILogger logger, bool checkResult); + } } diff --git a/DragaliaAPI/DragaliaAPI/Features/Wall/WallTimeProviderExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Wall/WallTimeProviderExtensions.cs new file mode 100644 index 000000000..701235292 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Wall/WallTimeProviderExtensions.cs @@ -0,0 +1,30 @@ +namespace DragaliaAPI.Features.Wall; + +public static class WallTimeProviderExtensions +{ + public static DateTimeOffset GetLastWallRewardDate(this TimeProvider timeProvider) + { + DateTimeOffset lastReset = timeProvider.GetLastDailyReset(); + + int month; + + if (lastReset.Day >= 15) + { + month = lastReset.Month; + } + else + { + month = lastReset.Month - 1; + } + + return new DateTimeOffset( + lastReset.Year, + month, + 15, + lastReset.Hour, + lastReset.Minute, + lastReset.Second, + lastReset.Offset + ); + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Web/ConfigureJwtBearerOptions.cs b/DragaliaAPI/DragaliaAPI/Features/Web/ConfigureJwtBearerOptions.cs new file mode 100644 index 000000000..c5256ce6a --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Web/ConfigureJwtBearerOptions.cs @@ -0,0 +1,29 @@ +using DragaliaAPI.Models.Options; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.Extensions.Options; + +namespace DragaliaAPI.Features.Web; + +/// +/// Allows setting additional properties on using DI. +/// +/// +/// Sourced from: +/// +public class ConfigureJwtBearerOptions(IOptions baasOptions) + : IConfigureNamedOptions +{ + // Never called + public void Configure(JwtBearerOptions options) => + this.Configure(JwtBearerDefaults.AuthenticationScheme, options); + + public void Configure(string? name, JwtBearerOptions options) + { + options.Authority = baasOptions.Value.BaasUrl; + options.TokenValidationParameters = new() + { + ValidAudience = baasOptions.Value.TokenAudience, + ValidIssuer = baasOptions.Value.TokenIssuer, + }; + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Web/FeatureExtensions.cs b/DragaliaAPI/DragaliaAPI/Features/Web/FeatureExtensions.cs new file mode 100644 index 000000000..e70f2ec03 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Web/FeatureExtensions.cs @@ -0,0 +1,43 @@ +using DragaliaAPI.Features.Web; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.Extensions.Options; + +// ReSharper disable once CheckNamespace +namespace DragaliaAPI; + +public static partial class FeatureExtensions +{ + public static IServiceCollection AddWebFeature(this IServiceCollection serviceCollection) + { + serviceCollection + .AddTransient, ConfigureJwtBearerOptions>() + .AddScoped(); + + serviceCollection + .AddAuthentication() + .AddJwtBearer( + WebAuthenticationHelper.SchemeName, + opts => + { + opts.Events = new() + { + OnMessageReceived = WebAuthenticationHelper.OnMessageReceived, + OnTokenValidated = WebAuthenticationHelper.OnTokenValidated + }; + // The rest is configured in ConfigureJwtBearerOptions.cs after the ServiceProvider is built. + } + ); + + serviceCollection + .AddAuthorizationBuilder() + .AddPolicy( + WebAuthenticationHelper.PolicyName, + builder => + builder + .RequireAuthenticatedUser() + .AddAuthenticationSchemes(WebAuthenticationHelper.SchemeName) + ); + + return serviceCollection; + } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Web/UserQuery.cs b/DragaliaAPI/DragaliaAPI/Features/Web/UserQuery.cs new file mode 100644 index 000000000..6cc83b899 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Web/UserQuery.cs @@ -0,0 +1,19 @@ +using Immediate.Apis.Shared; +using Immediate.Handlers.Shared; +using Microsoft.AspNetCore.Authorization; + +namespace DragaliaAPI.Features.Web; + +[Handler] +[MapGet("/api/user")] +[Authorize(WebAuthenticationHelper.PolicyName)] +public static partial class UserQuery +{ + public record Query; + + private static async ValueTask HandleAsync( + Query _, + UserService userService, + CancellationToken cancellationToken + ) => await userService.GetUser(cancellationToken); +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Web/UserService.cs b/DragaliaAPI/DragaliaAPI/Features/Web/UserService.cs new file mode 100644 index 000000000..087367c12 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Web/UserService.cs @@ -0,0 +1,21 @@ +using DragaliaAPI.Database; +using DragaliaAPI.Shared.PlayerDetails; +using Microsoft.EntityFrameworkCore; + +namespace DragaliaAPI.Features.Web; + +public class UserService(IPlayerIdentityService playerIdentityService, ApiContext apiContext) +{ + public Task GetUser(CancellationToken cancellationToken) => + apiContext + .Players.Where(x => x.ViewerId == playerIdentityService.ViewerId) + .Select(x => new User() { Name = x.UserData!.Name, ViewerId = x.ViewerId, }) + .FirstAsync(cancellationToken); +} + +public class User +{ + public long ViewerId { get; init; } + + public required string Name { get; init; } +} diff --git a/DragaliaAPI/DragaliaAPI/Features/Web/WebAuthenticationHandler.cs b/DragaliaAPI/DragaliaAPI/Features/Web/WebAuthenticationHandler.cs new file mode 100644 index 000000000..2a2b54ef5 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Features/Web/WebAuthenticationHandler.cs @@ -0,0 +1,59 @@ +using System.Diagnostics; +using System.IdentityModel.Tokens.Jwt; +using System.Text.Encodings.Web; +using DragaliaAPI.Database; +using DragaliaAPI.Models.Options; +using DragaliaAPI.Services.Api; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.JsonWebTokens; +using Microsoft.IdentityModel.Tokens; + +namespace DragaliaAPI.Features.Web; + +public static class WebAuthenticationHelper +{ + public const string SchemeName = "WebScheme"; + + public const string PolicyName = "WebPolicy"; + + public static Task OnMessageReceived(MessageReceivedContext context) + { + if (context.Request.Cookies.TryGetValue("idToken", out string? idToken)) + { + context.Token = idToken; + } + + return Task.CompletedTask; + } + + public static async Task OnTokenValidated(TokenValidatedContext context) + { + if (context.SecurityToken is not JsonWebToken jsonWebToken) + { + throw new UnreachableException("What the fuck?"); + } + + string accountId = jsonWebToken.Subject; + + ApiContext dbContext = context.HttpContext.RequestServices.GetRequiredService(); + + var playerInfo = await dbContext + .Players.IgnoreQueryFilters() + .Where(x => x.AccountId == accountId) + .Select(x => new + { + x.ViewerId, + x.UserData!.LastSaveImportTime, + x.UserData.Name, + }) + .FirstOrDefaultAsync(); + + if (playerInfo is null) + { + context.Fail("Unknown player"); + } + } +} diff --git a/DragaliaAPI/DragaliaAPI/GlobalUsings.cs b/DragaliaAPI/DragaliaAPI/GlobalUsings.cs deleted file mode 100644 index d4fbadc24..000000000 --- a/DragaliaAPI/DragaliaAPI/GlobalUsings.cs +++ /dev/null @@ -1,2 +0,0 @@ -global using System.Text.Json; -global using DragaliaAPI.Models.Results; diff --git a/DragaliaAPI/DragaliaAPI/Helpers/IResetHelper.cs b/DragaliaAPI/DragaliaAPI/Helpers/IResetHelper.cs deleted file mode 100644 index fa9e327af..000000000 --- a/DragaliaAPI/DragaliaAPI/Helpers/IResetHelper.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace DragaliaAPI.Helpers; - -public interface IResetHelper -{ - /// - /// Gets the last daily reset (6AM UTC of the previous/current day). - /// - DateTimeOffset LastDailyReset { get; } - - /// - /// Gets the last weekly reset (6AM UTC of the previous Monday). - /// - DateTimeOffset LastWeeklyReset { get; } - - /// - /// Gets the last monthly reset (6AM UTC of the 1st of the current month). - /// - DateTimeOffset LastMonthlyReset { get; } - - /// - /// Gets the current UTC time. - /// - DateTimeOffset UtcNow { get; } -} diff --git a/DragaliaAPI/DragaliaAPI/Helpers/ResetHelper.cs b/DragaliaAPI/DragaliaAPI/Helpers/ResetHelper.cs deleted file mode 100644 index 74139c81b..000000000 --- a/DragaliaAPI/DragaliaAPI/Helpers/ResetHelper.cs +++ /dev/null @@ -1,36 +0,0 @@ -namespace DragaliaAPI.Helpers; - -public class ResetHelper(TimeProvider timeProvider) : IResetHelper -{ - private readonly TimeProvider timeProvider = timeProvider; - - private const int UtcHourReset = 6; - - /// - public DateTimeOffset LastDailyReset => - this.timeProvider.GetUtcNow().AddHours(-6).UtcDateTime.Date.AddHours(6); - - public DateTimeOffset UtcNow => this.timeProvider.GetUtcNow(); - - /// - public DateTimeOffset LastWeeklyReset - { - get - { - DateTimeOffset lastDaily = LastDailyReset; - int diff = DayOfWeek.Monday - lastDaily.DayOfWeek; - return lastDaily.AddDays(diff > 0 ? diff - 7 : diff); - } - } - - /// - public DateTimeOffset LastMonthlyReset - { - get - { - DateTimeOffset lastDaily = LastDailyReset; - - return new DateTimeOffset(lastDaily.Year, lastDaily.Month, 1, 6, 0, 0, TimeSpan.Zero); - } - } -} diff --git a/DragaliaAPI/DragaliaAPI/Middleware/DailyResetMiddleware.cs b/DragaliaAPI/DragaliaAPI/Middleware/DailyResetMiddleware.cs index f2e1b0d3c..fa8726dc0 100644 --- a/DragaliaAPI/DragaliaAPI/Middleware/DailyResetMiddleware.cs +++ b/DragaliaAPI/DragaliaAPI/Middleware/DailyResetMiddleware.cs @@ -1,5 +1,4 @@ -using DragaliaAPI.Helpers; -using DragaliaAPI.MessagePack; +using DragaliaAPI.MessagePack; using DragaliaAPI.Models; using MessagePack; using Microsoft.AspNetCore.Authorization; @@ -15,7 +14,7 @@ public DailyResetMiddleware(RequestDelegate next) this.next = next; } - public async Task InvokeAsync(HttpContext context, IResetHelper resetHelper) + public async Task InvokeAsync(HttpContext context, TimeProvider timeProvider) { if ( context.GetEndpoint()?.Metadata.GetMetadata() is null @@ -27,7 +26,7 @@ out object? lastLoginTimeObj && lastLoginTimeObj is DateTimeOffset lastLoginTime ) { - if (resetHelper.LastDailyReset > lastLoginTime) + if (timeProvider.GetLastDailyReset() > lastLoginTime) { context.Response.ContentType = CustomMessagePackOutputFormatter.ContentType; context.Response.StatusCode = 200; diff --git a/DragaliaAPI/DragaliaAPI/Models/Generated/Components.cs b/DragaliaAPI/DragaliaAPI/Models/Generated/Components.cs index a50e3aba7..31e04ccf2 100644 --- a/DragaliaAPI/DragaliaAPI/Models/Generated/Components.cs +++ b/DragaliaAPI/DragaliaAPI/Models/Generated/Components.cs @@ -10210,7 +10210,7 @@ public partial class PresentHistoryList public int EntityStatusPlusCount { get; set; } [Key("message_id")] - public int MessageId { get; set; } + public PresentMessage MessageId { get; set; } [Key("message_param_value_1")] public int MessageParamValue1 { get; set; } @@ -10235,7 +10235,7 @@ public PresentHistoryList( int entityLevel, int entityLimitBreakCount, int entityStatusPlusCount, - int messageId, + PresentMessage messageId, int messageParamValue1, int messageParamValue2, int messageParamValue3, diff --git a/DragaliaAPI/DragaliaAPI/Models/Generated/PartySettingList.cs b/DragaliaAPI/DragaliaAPI/Models/Generated/PartySettingList.cs index 7cba366ac..e3d263483 100644 --- a/DragaliaAPI/DragaliaAPI/Models/Generated/PartySettingList.cs +++ b/DragaliaAPI/DragaliaAPI/Models/Generated/PartySettingList.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using DragaliaAPI.Shared.Definitions.Enums; using MessagePack; diff --git a/DragaliaAPI/DragaliaAPI/Models/Generated/UserData.cs b/DragaliaAPI/DragaliaAPI/Models/Generated/UserData.cs index ed6771f15..6c0b9288c 100644 --- a/DragaliaAPI/DragaliaAPI/Models/Generated/UserData.cs +++ b/DragaliaAPI/DragaliaAPI/Models/Generated/UserData.cs @@ -1,5 +1,4 @@ using MessagePack; -using Microsoft.IdentityModel.Tokens; namespace DragaliaAPI.Models.Generated; diff --git a/DragaliaAPI/DragaliaAPI/Pages/Account.razor b/DragaliaAPI/DragaliaAPI/Pages/Account.razor index 6c5b48066..3476a7c22 100644 --- a/DragaliaAPI/DragaliaAPI/Pages/Account.razor +++ b/DragaliaAPI/DragaliaAPI/Pages/Account.razor @@ -1,10 +1,14 @@ @page "/account" +@inherits ServiceComponentBase @using DragaliaAPI.Database.Entities; @using DragaliaAPI.Database.Repositories; @using DragaliaAPI.Models.Generated; @using DragaliaAPI.Services; @using System.Text.Json; +@using DragaliaAPI.Database +@using DragaliaAPI.Features.Blazor @using DragaliaAPI.Shared.Serialization +@using Microsoft.EntityFrameworkCore @inject ILoadService LoadService; @inject AuthenticationStateProvider StateProvider @@ -19,33 +23,79 @@ Account Management - - Account Information - - @if (UserData is not null) - { - Viewer ID: @UserData.ViewerId - Player name: @UserData.Name - Last save import time: @UserData.LastSaveImportTime - } - - - Save Export - Press the button below to download your save file. This can then be edited or imported onto another server. - - - Export save - @if (this.Loading) - { - - } - - + + Account Information + + + +

Viewer ID:

+ @if (this.userData is null) + { + + } + else + { +

@this.userData.ViewerId

+ } +
+
+ + +

Player name:

+ @if (this.userData is null) + { + + } + else + { +

@this.userData.Name

+ } +
+
+ + +

Last save import time:

+ @if (this.userData is null) + { + + } + else + { +

@this.userData.LastSaveImportTime

+ } +
+
+ +
+ + Save Export + + + Press the button below to download your save file. This can then be edited or imported onto another server. + + + Export save + @if (this.exportLoading) + { + + } + + + @if (this.currentDragonCount != null && this.userData != null && this.currentDragonCount > this.userData.MaxDragonQuantity) + { + + You are currently exceeding your dragon limit with @this.currentDragonCount / @this.userData.MaxDragonQuantity dragons. + If you export and re-import your save any dragons over this limit will not be re-imported and will be lost. + + } - You can upload saves to be imported at https://baas.lukefz.xyz/. + You can upload saves to be imported at + + https://baas.lukefz.xyz/ + . - For a user-friendly way to edit your save file, check out sockperson's save editor at + For a user-friendly way to edit your save file, check out sockperson's save editor at https://github.com/sockperson/DragaliaSaveEditor . @@ -57,9 +107,11 @@
@code { - public bool Loading { get; set; } + private bool exportLoading; + private DbPlayerUserData? userData; + private int? currentDragonCount; - public DbPlayerUserData? UserData { get; set; } + [InjectScoped] private ApiContext ApiContext { get; set; } = null!; private async Task OnClickExportSave() { @@ -72,7 +124,7 @@ options.WriteIndented = true; options.IncludeFields = false; - this.Loading = true; + this.exportLoading = true; LoadIndexResponse savefile = await this.LoadService.BuildIndexData(); DragaliaResponse response = new(savefile); @@ -84,21 +136,32 @@ await JsRuntime.InvokeVoidAsync("downloadFileFromStream", filename, streamRef); - this.Loading = false; + this.exportLoading = false; this.Snackbar.Add("Successfully exported savefile", Severity.Success); } catch (Exception ex) { - this.Loading = false; + this.exportLoading = false; this.Logger.LogError(ex, "Failed to export save"); this.Snackbar.Add("Failed to export savefile", Severity.Error); } } - - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { - if ((await this.StateProvider.GetAuthenticationStateAsync()).User.Identity?.IsAuthenticated ?? false) - this.UserData = await UserDataRepository.GetUserDataAsync(); + if (!firstRender) + { + return; + } + + if ((await this.StateProvider.GetAuthenticationStateAsync()).User.Identity is not { IsAuthenticated: true }) + { + return; + } + + this.userData = await this.ApiContext.PlayerUserData.FirstAsync(); + this.currentDragonCount = await this.ApiContext.PlayerDragonData.CountAsync(); + this.StateHasChanged(); } -} + +} \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/Pages/News/NewsWebview.razor b/DragaliaAPI/DragaliaAPI/Pages/News/NewsWebview.razor index 2d2b07c8c..464dceca2 100644 --- a/DragaliaAPI/DragaliaAPI/Pages/News/NewsWebview.razor +++ b/DragaliaAPI/DragaliaAPI/Pages/News/NewsWebview.razor @@ -55,5 +55,4 @@ this.StateHasChanged(); } } - } \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/Pages/OAuthCallback.cshtml.cs b/DragaliaAPI/DragaliaAPI/Pages/OAuthCallback.cshtml.cs index 66f699b1f..388e410da 100644 --- a/DragaliaAPI/DragaliaAPI/Pages/OAuthCallback.cshtml.cs +++ b/DragaliaAPI/DragaliaAPI/Pages/OAuthCallback.cshtml.cs @@ -120,7 +120,8 @@ await userIdResponse.Content.ReadFromJsonAsync() identity.AddClaim(new Claim(CustomClaimType.AccountId, userId.UserId)); var playerInfo = await apiContext - .Players.Include(x => x.UserData) + .Players.IgnoreQueryFilters() + .Include(x => x.UserData) .Where(x => x.AccountId == userId.UserId) .Select(x => new { x.UserData!.Name, x.ViewerId }) .FirstOrDefaultAsync(); diff --git a/DragaliaAPI/DragaliaAPI/Program.cs b/DragaliaAPI/DragaliaAPI/Program.cs index aec5555a6..0e956b418 100644 --- a/DragaliaAPI/DragaliaAPI/Program.cs +++ b/DragaliaAPI/DragaliaAPI/Program.cs @@ -19,6 +19,7 @@ using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; +using Microsoft.IdentityModel.Tokens; using Microsoft.JSInterop; using Serilog; @@ -63,9 +64,6 @@ option.InputFormatters.Add(new CustomMessagePackInputFormatter(CustomResolver.Options)); }); -PostgresOptions postgresOptions = - builder.Configuration.GetSection(nameof(PostgresOptions)).Get() - ?? throw new InvalidOperationException("Failed to get PostgreSQL config"); RedisOptions redisOptions = builder.Configuration.GetSection(nameof(RedisOptions)).Get() ?? throw new InvalidOperationException("Failed to get Redis config"); @@ -73,7 +71,7 @@ builder.Configuration.GetSection(nameof(HangfireOptions)).Get() ?? new() { Enabled = false }; -builder.Services.ConfigureDatabaseServices(postgresOptions); +builder.Services.ConfigureDatabaseServices(builder.Configuration); builder.Services.AddStackExchangeRedisCache(options => { options.ConfigurationOptions = new() @@ -86,7 +84,7 @@ if (hangfireOptions.Enabled) { - builder.Services.ConfigureHangfire(postgresOptions); + builder.Services.ConfigureHangfire(); } builder.Services.AddDataProtection().PersistKeysToDbContext(); @@ -116,6 +114,10 @@ app.Logger.LogInformation("Loaded MasterAsset in {Time} ms.", watch.ElapsedMilliseconds); +PostgresOptions postgresOptions = app + .Services.GetRequiredService>() + .Value; + app.Logger.LogDebug( "Using PostgreSQL connection {Host}:{Port}", postgresOptions.Hostname, @@ -138,12 +140,12 @@ #pragma warning disable CA1861 // Avoid constant arrays as arguments. Only created once as top-level statement. FrozenSet apiRoutePrefixes = new[] { - "/api", "/2.19.0_20220714193707", "/2.19.0_20220719103923" }.ToFrozenSet(); #pragma warning restore CA1861 +// Game endpoints app.MapWhen( ctx => apiRoutePrefixes.Any(prefix => ctx.Request.Path.StartsWithSegments(prefix)), applicationBuilder => @@ -170,11 +172,20 @@ } ); +// Svelte website API app.MapWhen( - ctx => !apiRoutePrefixes.Any(prefix => ctx.Request.Path.StartsWithSegments(prefix)), + static ctx => ctx.Request.Path.StartsWithSegments("/api"), applicationBuilder => { + // todo unfuck cors + applicationBuilder.UseCors(cors => + cors.WithOrigins("http://localhost:3001") + .AllowCredentials() + .AllowAnyHeader() + .AllowAnyMethod() + ); applicationBuilder.UseRouting(); + applicationBuilder.UseSerilogRequestLogging(); #pragma warning disable ASP0001 applicationBuilder.UseAuthorization(); #pragma warning restore ASP0001 @@ -182,12 +193,32 @@ applicationBuilder.UseMiddleware(); applicationBuilder.UseEndpoints(endpoints => { - endpoints.MapRazorPages(); - endpoints.MapRazorComponents().AddInteractiveServerRenderMode(); + endpoints.MapDragaliaAPIEndpoints(); }); } ); +// Blazor website +app.MapWhen( + static ctx => !ctx.Request.Path.StartsWithSegments("/api"), + applicationBuilder => + { + { + applicationBuilder.UseRouting(); +#pragma warning disable ASP0001 + applicationBuilder.UseAuthorization(); +#pragma warning restore ASP0001 + applicationBuilder.UseAntiforgery(); + applicationBuilder.UseMiddleware(); + applicationBuilder.UseEndpoints(endpoints => + { + endpoints.MapRazorPages(); + endpoints.MapRazorComponents().AddInteractiveServerRenderMode(); + }); + } + } +); + if (hangfireOptions.Enabled) { app.AddHangfireJobs(); diff --git a/DragaliaAPI/DragaliaAPI/Properties/launchSettings.json b/DragaliaAPI/DragaliaAPI/Properties/launchSettings.json new file mode 100644 index 000000000..795b58871 --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/Properties/launchSettings.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "DragaliaAPI": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "RedisOptions__Hostname": "localhost", + "PostgresOptions__Hostname": "localhost" + }, + "applicationUrl": "http://*:80" + } + } +} diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/Cookies.cs b/DragaliaAPI/DragaliaAPI/RazorComponents/Cookies.cs new file mode 100644 index 000000000..0877b215f --- /dev/null +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/Cookies.cs @@ -0,0 +1,6 @@ +namespace DragaliaAPI.RazorComponents; + +public static class Cookies +{ + public const string DarkMode = "darkMode"; +} diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/Login.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/Login.razor index 73d38c7c8..0a82cafe1 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/Login.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/Login.razor @@ -1,7 +1,2 @@ -@using Microsoft.AspNetCore.Http.Extensions; -@using Microsoft.Extensions.Options; -@using System.Security.Cryptography; -@using System.Text; - -You need to be logged in to access this page +You need to be logged in to access this page diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/MainLayout.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/MainLayout.razor index 162fc3e75..19374086d 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/MainLayout.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/MainLayout.razor @@ -6,8 +6,8 @@ @inherits LayoutComponentBase - - + + @@ -58,7 +58,6 @@ - @code { private bool popoverOpen; private bool navDrawerOpen; @@ -71,22 +70,22 @@ private MudTheme theme = new() + { + PaletteDark = new PaletteDark() { - PaletteDark = new PaletteDark() - { - AppbarBackground = Colors.Teal.Darken3, - Primary = Colors.Teal.Lighten1, - Secondary = Colors.Pink.Accent2, - Tertiary = Colors.DeepPurple.Darken1, - }, - Palette = new PaletteLight() - { - AppbarBackground = Colors.Teal.Default, - Primary = Colors.Teal.Accent4, - Secondary = Colors.Pink.Accent2, - Tertiary = Colors.DeepPurple.Lighten1, - } - }; + AppbarBackground = Colors.Teal.Darken3, + Primary = Colors.Teal.Lighten1, + Secondary = Colors.Pink.Accent2, + Tertiary = Colors.DeepPurple.Darken1, + }, + Palette = new PaletteLight() + { + AppbarBackground = Colors.Teal.Default, + Primary = Colors.Teal.Accent4, + Secondary = Colors.Pink.Accent2, + Tertiary = Colors.DeepPurple.Lighten1, + } + }; private void OnClickLogout() { @@ -96,7 +95,7 @@ private async void OnIsDarkModeChanged(bool value) { this.darkMode = value; - await this.JsRuntime.InvokeVoidAsync("blazorExtensions.writeCookie", new object[] { nameof(darkMode), value}); + await this.JsRuntime.InvokeVoidAsync("blazorExtensions.writeCookie", new object[] { nameof(darkMode), value }); this.StateHasChanged(); } @@ -110,4 +109,5 @@ { await this.BlazorIdentityService.InitializeAsync(); } + } \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/News/NewsComponent.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/News/NewsComponent.razor index 5a781ccae..1581f9e83 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/News/NewsComponent.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/News/NewsComponent.razor @@ -1,23 +1,28 @@ -@using System.Text.Json; -@using DragaliaAPI.Database.Entities; +@using DragaliaAPI.Database.Entities; @using DragaliaAPI.Database; @using DragaliaAPI.Features.Blazor @using Microsoft.EntityFrameworkCore; @inherits ServiceComponentBase @inject IJSRuntime JsRuntime; - + @foreach (NewsItem item in this.visibleNewsItems) { - + - - - @item.Headline - + + + + @item.Headline + + @if (item.Time > this.lastReadDate) + { + + } + - @item.Time + @item.TimeString @@ -31,16 +36,16 @@ @code { - private const int PageSize = 4; - - private List allNewsItems = new(); - private IEnumerable visibleNewsItems = Enumerable.Empty(); + private const string LastReadStorageKey = "lastReadNews"; + + private List allNewsItems = []; + private IEnumerable visibleNewsItems = []; private int numPages = 1; private int selected = 1; + private DateTimeOffset lastReadDate; - [InjectScoped] - private ApiContext ApiContext { get; set; } = null!; + [InjectScoped] private ApiContext ApiContext { get; set; } = null!; private int Selected { @@ -49,22 +54,36 @@ { this.visibleNewsItems = allNewsItems.Skip(PageSize * (value - 1)).Take(PageSize); this.selected = value; - + // Fire-and-forget this.JsRuntime.InvokeVoidAsync("window.blazorExtensions.scrollToTop"); } } - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if (!firstRender) + return; + + string? lastReadDateStr = await JsRuntime.InvokeAsync("localStorage.getItem", default(CancellationToken), [LastReadStorageKey]); + if (!DateTimeOffset.TryParse(lastReadDateStr, out this.lastReadDate)) + { + // Do not show all news items as new on a first visit to the page + this.lastReadDate = DateTimeOffset.UtcNow; + } + this.allNewsItems = await this.ApiContext.NewsItems .OrderByDescending(x => x.Time) .Select(x => new NewsItem(x)) .ToListAsync(); this.numPages = (int)Math.Ceiling((double)this.allNewsItems.Count / PageSize); - this.visibleNewsItems = this.allNewsItems.Take(PageSize); + + this.StateHasChanged(); + + string newLastReadDate = DateTimeOffset.UtcNow.ToString("O"); + ValueTask _ = JsRuntime.InvokeVoidAsync("localStorage.setItem", default(CancellationToken), [LastReadStorageKey, newLastReadDate]); } private class NewsItem @@ -72,14 +91,17 @@ public NewsItem(DbNewsItem dbNewsItem) { this.Headline = dbNewsItem.Headline; - this.Time = $"{dbNewsItem.Time:dd/MM/yyyy HH:mm} UTC"; + this.Time = dbNewsItem.Time; + this.TimeString = $"{dbNewsItem.Time:dd/MM/yyyy HH:mm} UTC"; this.Description = new((builder) => builder.AddMarkupContent(0, dbNewsItem.Description)); } public string Headline { get; } - public string Time { get; } + public DateTimeOffset Time { get; } + + public string TimeString { get; } public RenderFragment Description { get; } } -} +} \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/Routes.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/Routes.razor index 076d980c8..3f18d0c0e 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/Routes.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/Routes.razor @@ -4,7 +4,6 @@ - Not found diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingTable.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingTable.razor index bae8eadba..de4a61c42 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingTable.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingTable.razor @@ -4,9 +4,6 @@ @using DragaliaAPI.Shared.MasterAsset; @using DragaliaAPI.Shared.MasterAsset.Models; @using Microsoft.EntityFrameworkCore; -@using MudBlazor; -@using MudBlazor.Components; -@using System.Collections.Immutable; @using System.Diagnostics; @using System.Diagnostics.CodeAnalysis; @using DragaliaAPI.Authentication @@ -119,11 +116,11 @@ Stopwatch stopwatch = Stopwatch.StartNew(); Logger.LogDebug("Fetching data for quest {quest}", this.QuestId); - if (this.QuestId is null) - return new TableData() { Items = Enumerable.Empty(), TotalItems = 0 }; + return new TableData() { Items = [], TotalItems = 0 }; IQueryable clearQuery = this.ApiContext.TimeAttackClears + .IgnoreQueryFilters() .Include(x => x.Players) .ThenInclude(x => x.Units) .Include(x => x.Players) @@ -153,13 +150,13 @@ } List filteredList = filteredEnumerable.ToList(); - IEnumerable pagedEnumerable = filteredList.Skip(state.PageSize * state.Page).Take(state.PageSize); + List currentPage = filteredList.Skip(state.PageSize * state.Page).Take(state.PageSize).ToList(); stopwatch.Stop(); Logger.LogDebug("Fetched data in {t} ms", stopwatch.ElapsedMilliseconds); - this.data = pagedEnumerable; - return new TableData() { Items = pagedEnumerable, TotalItems = filteredList.Count }; + this.data = currentPage; + return new TableData() { Items = currentPage, TotalItems = filteredList.Count }; } diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingWebviewTab.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingWebviewTab.razor index 00fe10279..89962ae84 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingWebviewTab.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/RankingWebviewTab.razor @@ -1,8 +1,4 @@ -@using DragaliaAPI.Database; -@using Microsoft.EntityFrameworkCore; -@using DragaliaAPI.Authentication - - + diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/SkillIcon.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/SkillIcon.razor index 0bd8a078e..a016af3c4 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/SkillIcon.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/SkillIcon.razor @@ -1,5 +1,4 @@ @using DragaliaAPI.Features.Blazor; -@using DragaliaAPI.Shared.Definitions.Enums; @using DragaliaAPI.Shared.MasterAsset; @using DragaliaAPI.Shared.MasterAsset.Models; @using Microsoft.Extensions.Options; diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/TeamDetails.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/TeamDetails.razor index 8397b5783..f6ea79a47 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/TeamDetails.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/TimeAttack/Team/TeamDetails.razor @@ -1,5 +1,4 @@ @using DragaliaAPI.Database.Entities; -@using DragaliaAPI.Shared.Definitions.Enums; @foreach (DbTimeAttackClearUnit unit in this.Units) diff --git a/DragaliaAPI/DragaliaAPI/RazorComponents/WebviewLayout.razor b/DragaliaAPI/DragaliaAPI/RazorComponents/WebviewLayout.razor index 0f42bf213..29b29b499 100644 --- a/DragaliaAPI/DragaliaAPI/RazorComponents/WebviewLayout.razor +++ b/DragaliaAPI/DragaliaAPI/RazorComponents/WebviewLayout.razor @@ -9,14 +9,16 @@ @code { + private MudTheme theme = new() + { + Palette = new PaletteLight() { - Palette = new PaletteLight() - { - AppbarBackground = Colors.Teal.Default, - Primary = Colors.Teal.Accent4, - Secondary = Colors.Pink.Accent2, - Tertiary = Colors.DeepPurple.Lighten1, - } - }; + AppbarBackground = Colors.Teal.Default, + Primary = Colors.Teal.Accent4, + Secondary = Colors.Pink.Accent2, + Tertiary = Colors.DeepPurple.Lighten1, + } + }; + } \ No newline at end of file diff --git a/DragaliaAPI/DragaliaAPI/ServiceConfiguration.cs b/DragaliaAPI/DragaliaAPI/ServiceConfiguration.cs index ffe3be39c..4e24dda09 100644 --- a/DragaliaAPI/DragaliaAPI/ServiceConfiguration.cs +++ b/DragaliaAPI/DragaliaAPI/ServiceConfiguration.cs @@ -1,6 +1,5 @@ using DragaliaAPI.Authentication; using DragaliaAPI.Database; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Blazor; using DragaliaAPI.Features.Chara; using DragaliaAPI.Features.ClearParty; @@ -14,27 +13,24 @@ using DragaliaAPI.Features.Event; using DragaliaAPI.Features.Fort; using DragaliaAPI.Features.Item; -using DragaliaAPI.Features.Login; +using DragaliaAPI.Features.Login.Actions; using DragaliaAPI.Features.Maintenance; using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.PartyPower; using DragaliaAPI.Features.Player; using DragaliaAPI.Features.Present; using DragaliaAPI.Features.Quest; -using DragaliaAPI.Features.Reward; -using DragaliaAPI.Features.Reward.Handlers; using DragaliaAPI.Features.SavefileUpdate; using DragaliaAPI.Features.Shared.Options; using DragaliaAPI.Features.Shop; using DragaliaAPI.Features.Stamp; +using DragaliaAPI.Features.Story; using DragaliaAPI.Features.StorySkip; using DragaliaAPI.Features.Talisman; using DragaliaAPI.Features.TimeAttack; using DragaliaAPI.Features.Trade; using DragaliaAPI.Features.Version; -using DragaliaAPI.Features.Wall; using DragaliaAPI.Features.Zena; -using DragaliaAPI.Helpers; using DragaliaAPI.Middleware; using DragaliaAPI.Models.Options; using DragaliaAPI.Services; @@ -46,6 +42,7 @@ using Hangfire.PostgreSql; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.Extensions.Diagnostics.HealthChecks; +using Microsoft.Extensions.Options; using MudBlazor; using MudBlazor.Services; @@ -70,7 +67,6 @@ IConfiguration configuration .AddScoped() .AddScoped() .AddScoped() - .AddScoped() .AddScoped() .AddScoped() .AddScoped() @@ -81,30 +77,29 @@ IConfiguration configuration .AddScoped() .AddTransient(); - services.AddSummoningFeature(); + services + .AddSummoningFeature() + .AddRewardFeature() + .AddLoginFeature() + .AddWallFeature() + .AddPresentFeature() + .AddQuestFeature() + .AddStoryFeature() + .AddWebFeature(); services - .AddScoped() .RegisterMissionServices() // Shop Feature .AddScoped() .AddScoped() .AddScoped() .AddScoped() - // Present feature - .AddScoped() - .AddScoped() - .AddScoped() // Treasure Trade Feature .AddScoped() .AddScoped() // Fort Feature .AddScoped() .AddScoped() - // Login feature - .AddScoped() - .AddScoped() - .AddScoped() // Dungeon Feature .AddScoped() .AddScoped() @@ -143,9 +138,6 @@ IConfiguration configuration // Emblem feature .AddScoped() // Quest feature - .AddScoped() - .AddScoped() - .AddScoped() // Party power feature .AddScoped() .AddScoped() @@ -153,9 +145,6 @@ IConfiguration configuration .AddScoped() .AddScoped() .AddScoped() - // Wall feature - .AddScoped() - .AddScoped() // Zena feature .AddScoped() // Story skip feature @@ -163,11 +152,11 @@ IConfiguration configuration // Maintenance feature .AddScoped(); + services.AddHandlers(); + services.AddScoped(); services.AddAllOfType(); - services.AddAllOfType(); - services.AddAllOfType(); services.AddHttpClient(); @@ -274,18 +263,22 @@ public static IServiceCollection ConfigureAuthentication(this IServiceCollection return services; } - public static IServiceCollection ConfigureHangfire( - this IServiceCollection serviceCollection, - PostgresOptions postgresOptions - ) + public static IServiceCollection ConfigureHangfire(this IServiceCollection serviceCollection) { - serviceCollection.AddHangfire(cfg => - cfg.SetDataCompatibilityLevel(CompatibilityLevel.Version_180) - .UseSimpleAssemblyNameTypeSerializer() - .UseRecommendedSerializerSettings() - .UsePostgreSqlStorage(pgCfg => - pgCfg.UseNpgsqlConnection(postgresOptions.GetConnectionString("Hangfire")) - ) + serviceCollection.AddHangfire( + (serviceProvider, cfg) => + { + PostgresOptions postgresOptions = serviceProvider + .GetRequiredService>() + .Value; + + cfg.SetDataCompatibilityLevel(CompatibilityLevel.Version_180) + .UseSimpleAssemblyNameTypeSerializer() + .UseRecommendedSerializerSettings() + .UsePostgreSqlStorage(pgCfg => + pgCfg.UseNpgsqlConnection(postgresOptions.GetConnectionString("Hangfire")) + ); + } ); serviceCollection.AddHangfireServer(); diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/AuthService.cs b/DragaliaAPI/DragaliaAPI/Services/Game/AuthService.cs index 4897a6997..e0f5f8014 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/AuthService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Game/AuthService.cs @@ -82,7 +82,8 @@ TimeProvider dateTimeProvider ); DbPlayer? player = await this - .apiContext.Players.AsNoTracking() + .apiContext.Players.IgnoreQueryFilters() + .AsNoTracking() .Include(x => x.UserData) .FirstOrDefaultAsync(x => x.AccountId == jwt.Subject); diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/BonusService.cs b/DragaliaAPI/DragaliaAPI/Services/Game/BonusService.cs index 68548a58d..ecb5cac38 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/BonusService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Game/BonusService.cs @@ -53,14 +53,14 @@ await fortRepository DragonTimeBonus = new() { #if CHEATING - dragon_time_bonus = 20 + DragonTimeBonus = 20 #endif }, AllBonus = new() { #if CHEATING - attack = 100, - hp = 100 + Attack = 100, + Hp = 100 #endif }, }; @@ -118,7 +118,7 @@ private static IEnumerable GetFortElementBonus(IEnumerable GetFortElementBonus(IEnumerable GetFortParamBonus(IEnumerable b result[(WeaponTypes)d.EffType1].Hp += d.EffArgs1; result[(WeaponTypes)d.EffType1].Attack += d.EffArgs2; #if CHEATING - result[(WeaponTypes)d.EffType1].attack += 100; + result[(WeaponTypes)d.EffType1].Attack += 100; #endif if (d.EffType2 != 0) @@ -164,7 +164,7 @@ private static IEnumerable GetFortParamBonus(IEnumerable b result[(WeaponTypes)d.EffType2].Hp += d.EffArgs1; result[(WeaponTypes)d.EffType2].Attack += d.EffArgs2; #if CHEATING - result[(WeaponTypes)d.EffType2].attack += 100; + result[(WeaponTypes)d.EffType2].Attack += 100; #endif } } @@ -193,7 +193,7 @@ private static IEnumerable GetFortDragonBonus(IEnumerable result[(UnitElement)d.EffType1].Hp += d.EffArgs1; result[(UnitElement)d.EffType1].Attack += d.EffArgs2; #if CHEATING - result[(UnitElement)d.EffType1].attack += 100; + result[(UnitElement)d.EffType1].Attack += 100; #endif if (d.EffType2 != 0) @@ -201,7 +201,7 @@ private static IEnumerable GetFortDragonBonus(IEnumerable result[(UnitElement)d.EffType2].Hp += d.EffArgs1; result[(UnitElement)d.EffType2].Attack += d.EffArgs2; #if CHEATING - result[(UnitElement)d.EffType2].attack += 100; + result[(UnitElement)d.EffType2].Attack += 100; #endif } } @@ -209,7 +209,7 @@ private static IEnumerable GetFortDragonBonus(IEnumerable { result[(UnitElement)d.EffType1].DragonBonus += d.EffArgs1; #if CHEATING - result[(UnitElement)d.EffType1].dragon_bonus += 100; + result[(UnitElement)d.EffType1].DragonBonus += 100; #endif // No facility gives dragon bonus to two elemental types } @@ -238,7 +238,7 @@ IEnumerable weaponBodyIds result[w.WeaponType].Hp += w.WeaponPassiveEffHp; result[w.WeaponType].Attack += w.WeaponPassiveEffAtk; #if CHEATING - result[w.WeaponType].attack += 100; + result[w.WeaponType].Attack += 100; #endif } diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/DragonService.cs b/DragaliaAPI/DragaliaAPI/Services/Game/DragonService.cs index ddb7fc7bb..41125d357 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/DragonService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Game/DragonService.cs @@ -3,11 +3,10 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Repositories; using DragaliaAPI.Database.Utils; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Missions; using DragaliaAPI.Features.Reward; using DragaliaAPI.Features.Shop; -using DragaliaAPI.Helpers; +using DragaliaAPI.Features.Story; using DragaliaAPI.Models.Generated; using DragaliaAPI.Services.Exceptions; using DragaliaAPI.Shared.Definitions.Enums; @@ -27,17 +26,17 @@ public partial class DragonService( IPaymentService paymentService, IRewardService rewardService, IMissionProgressionService missionProgressionService, - IResetHelper resetHelper, + TimeProvider timeProvider, ApiContext apiContext ) : IDragonService { public async Task DoDragonGetContactData() { - DateTimeOffset reset = resetHelper.LastDailyReset; + DateTimeOffset reset = timeProvider.GetLastDailyReset(); DayOfWeek dayOfWeek = reset.DayOfWeek; DragonGifts rotatingGift = DragonConstants.RotatingGifts[ - (int)resetHelper.LastDailyReset.DayOfWeek + (int)timeProvider.GetLastDailyReset().DayOfWeek ]; Log.CurrentRotatingGift(logger, reset, dayOfWeek, rotatingGift); @@ -89,7 +88,7 @@ IEnumerable> giftsAndQuantity ? DragonConstants.BondXpLimitsPuppy : DragonConstants.BondXpLimits; - dragonReliability.LastContactTime = resetHelper.UtcNow; + dragonReliability.LastContactTime = timeProvider.GetUtcNow(); while (enumerator.MoveNext() && dragonReliability.Exp < bondXpLimits[^1]) { diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/LoadService.cs b/DragaliaAPI/DragaliaAPI/Services/Game/LoadService.cs index c9bf76aae..9c3d6caac 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/LoadService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Game/LoadService.cs @@ -89,7 +89,7 @@ public async Task BuildIndexData() .Select(x => x.MapToUserSummonList()), FriendNotice = new(0, 0), - ShopNotice = new ShopNotice(savefile.ShopInfo?.DailySummonCount != 0), + ShopNotice = new ShopNotice(savefile.ShopInfo?.DailySummonCount == 0), GuildNotice = new(0, false, false, false, false), StaminaMultiSystemMax = userService.StaminaMultiMax, StaminaMultiUserMax = 12, diff --git a/DragaliaAPI/DragaliaAPI/Services/Game/SavefileService.cs b/DragaliaAPI/DragaliaAPI/Services/Game/SavefileService.cs index 66c8de860..27aa77226 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Game/SavefileService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Game/SavefileService.cs @@ -4,12 +4,12 @@ using DragaliaAPI.Database; using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Abstract; -using DragaliaAPI.Database.Repositories; using DragaliaAPI.Features.SavefileUpdate; using DragaliaAPI.Features.Stamp; using DragaliaAPI.Models.Generated; using DragaliaAPI.Shared.Definitions.Enums; using DragaliaAPI.Shared.MasterAsset; +using DragaliaAPI.Shared.MasterAsset.Models.Story; using DragaliaAPI.Shared.PlayerDetails; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; @@ -24,7 +24,6 @@ public class SavefileService : ISavefileService private readonly IMapper mapper; private readonly ILogger logger; private readonly IPlayerIdentityService playerIdentityService; - private readonly IUnitRepository unitRepository; private const int RecheckLockMs = 1000; private const int LockFailsafeExpiryMin = 5; @@ -37,8 +36,7 @@ public SavefileService( IMapper mapper, ILogger logger, IPlayerIdentityService playerIdentityService, - IEnumerable savefileUpdates, - IUnitRepository unitRepository + IEnumerable savefileUpdates ) { this.apiContext = apiContext; @@ -46,7 +44,6 @@ IUnitRepository unitRepository this.mapper = mapper; this.logger = logger; this.playerIdentityService = playerIdentityService; - this.unitRepository = unitRepository; this.maxSavefileVersion = savefileUpdates.MaxBy(x => x.SavefileVersion)?.SavefileVersion ?? 0; @@ -151,6 +148,10 @@ await this.cache.SetStringAsync( player.UserData = mapper.Map(savefile.UserData); player.UserData.Crystal += 1_200_000; + // TODO: What was the actual maximum dragon storage you could get? + int cappedDragonStorage = Math.Min(savefile.UserData.MaxDragonQuantity, 500); + player.UserData.MaxDragonQuantity = cappedDragonStorage; + this.logger.LogDebug( "Mapping DbPlayerUserData step done after {t} ms", stopwatch.Elapsed.TotalMilliseconds @@ -174,7 +175,7 @@ await this.cache.SetStringAsync( // Build key id mappings for dragons and talismans Dictionary dragonKeyIds = new(); - foreach (DragonList d in savefile.DragonList ?? new List()) + foreach (DragonList d in savefile.DragonList?.Take(cappedDragonStorage) ?? []) { ulong oldKeyId = d.DragonKeyId; DbPlayerDragonData dbEntry = d.Map(mapper); @@ -542,6 +543,12 @@ await this await this .apiContext.CompletedDailyMissions.Where(x => x.ViewerId == viewerId) .ExecuteDeleteAsync(); + await this + .apiContext.WallRewardDates.Where(x => x.ViewerId == viewerId) + .ExecuteDeleteAsync(); + await this + .apiContext.PlayerSummonHistory.Where(x => x.ViewerId == viewerId) + .ExecuteDeleteAsync(); } public async Task Reset() @@ -581,7 +588,7 @@ public async Task Create(string deviceAccountId) ); AddDefaultParties(player); - await this.AddDefaultCharacters(); + AddDefaultCharacters(player); AddDefaultEquippedStamps(player); AddShopInfo(player); AddDefaultEmblem(player); @@ -633,9 +640,25 @@ private static void AddDefaultParties(DbPlayer player) ); } - private async Task AddDefaultCharacters() + private static void AddDefaultCharacters(DbPlayer player) { - await this.unitRepository.AddCharas(DefaultSavefileData.Characters); + foreach (Charas c in DefaultSavefileData.Characters) + { + player.CharaList.Add(new DbPlayerCharaData(player.ViewerId, c)); + + if (MasterAsset.CharaStories.TryGetValue((int)c, out StoryData? story)) + { + player.StoryStates.Add( + new DbPlayerStoryState + { + ViewerId = player.ViewerId, + StoryType = StoryTypes.Chara, + StoryId = story.StoryIds[0], + State = 0 + } + ); + } + } } private static void AddDefaultEquippedStamps(DbPlayer player) diff --git a/DragaliaAPI/DragaliaAPI/Services/Photon/HeroParamService.cs b/DragaliaAPI/DragaliaAPI/Services/Photon/HeroParamService.cs index dd207f37f..dba096d4b 100644 --- a/DragaliaAPI/DragaliaAPI/Services/Photon/HeroParamService.cs +++ b/DragaliaAPI/DragaliaAPI/Services/Photon/HeroParamService.cs @@ -3,7 +3,6 @@ using DragaliaAPI.Database.Entities; using DragaliaAPI.Database.Entities.Scaffold; using DragaliaAPI.Database.Repositories; -using DragaliaAPI.Extensions; using DragaliaAPI.Features.Dungeon; using DragaliaAPI.Models.Generated; using DragaliaAPI.Photon.Shared.Models; diff --git a/DragaliaAPI/README.md b/DragaliaAPI/README.md new file mode 100644 index 000000000..0d6060b5a --- /dev/null +++ b/DragaliaAPI/README.md @@ -0,0 +1,68 @@ +# DragaliaAPI + +DragaliaAPI is the main server component of Dawnshard, which handles the vast majority of game functionality. + +## Dependencies + +The server depends on [`DragaliaBaas`](https://github.com/DragaliaLostRevival/DragaliaBaasServer) as an identity +provider. Clients are expected to go to an instance of the BaaS for login and authentication, and then come back +to `/tool/auth` with a signed JSON web token to authenticate against DragaliaAPI. + +## Development environment + +### Run the server + +To get started, copy the `.env.default` file to `.env`. Choose some values for the database credentials, and then launch +the compose project from your IDE. Or, if using the command line, +use `docker-compose -f docker-compose.yml -f docker-compose.override.yml --profiles dragaliaapi`. + +The solution includes a `docker-compose.dcproj` project file which should be plug-and-play with Visual Studio and allow +launching the API plus the supporting Postgres and Redis services. It is compatible with container fast mode, so you can +iterate during development without rebuilding the containers each time. Other IDEs, including JetBrains Rider, should +also able to use the `docker-compose.yml` file if you add a run configuration pointed at it (as well +as `docker-compose.override.yml`). For users who are not using Visual Studio, ensure that your `docker-compose` +configuration or command includes an instruction to use the `dragaliaapi` profile so that the API is launched. + +If you have issues with using the container fast mode, you can use the docker-compose file to only launch the supporting +services and then run the API directly on your machine. Either remove the profile arguments in your IDE or just +run `docker-compose -f docker-compose.yml up -d` from the command line without any `--profile` arguments to start Redis +and Postgres, and then launch the main project. You will need to configure the environment variables that it is run with +to match what is set in `docker-compose.yml`, and also to adjust the hostnames of Redis and Postgres now that it is not +running in the container network. + +An example configuration for running outside a container which is supported by Rider, Visual Studio, and the `dotnet` +cli, is included in [launchSettings.json](./DragaliaAPI/Properties/launchSettings.json). It does not include credentials +as it is in source control. The recommended way to set the credentials is using user secrets. See the [Microsoft Learn](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets#secret-manager) documentation on user secrets for +more information. + +You will need to set the following values corresponding to the values being used by Docker in `.env`: + +- `PostgresOptions:Username` +- `PostgresOptions:Password` +- `PostgresOptions:Database` + + +### Set up a client + +The `docker-compose.yml` / `launchSettings.json` file will start the server on port 80, so you can +use [Dragalipatch](https://github.com/LukeFZ/DragaliPatch/releases/latest) with +your [PC's local IP address](https://support.microsoft.com/en-us/windows/find-your-ip-address-in-windows-f21a9bbc-c582-55cd-35e0-73431160a1b9) +to play on your local server with an emulator or mobile device. You must input the local IP address +as `http://192.168.xxx.xxx` because without a http prefix, Dragalipatch assumes HTTPS which is not enabled on the +development setup. + +## Self-hosting for general use + +### Locally + +The recommended way to self-host is using `docker-compose` -- please see +the [self-hosting guide](https://github.com/SapiensAnatis/Dawnshard/wiki/Self-hosting-guide) in the wiki for more +information. + +### Dedicated server + +On a dedicated server, the basic `docker-compose` setup will work, but additional considerations should be made +regarding reverse proxying, logging, etc. Speak to the maintainer if you are interested in hosting your own instance for +further guidance. + + diff --git a/MaintenanceWorker/.gitignore b/MaintenanceWorker/.gitignore new file mode 100644 index 000000000..96a69c08a --- /dev/null +++ b/MaintenanceWorker/.gitignore @@ -0,0 +1,4 @@ +target +node_modules +.wrangler +build \ No newline at end of file diff --git a/MaintenanceWorker/Cargo.lock b/MaintenanceWorker/Cargo.lock new file mode 100644 index 000000000..d1df7e4c7 --- /dev/null +++ b/MaintenanceWorker/Cargo.lock @@ -0,0 +1,884 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.1", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "cc" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "js-sys", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "maintenance-worker" +version = "0.1.0" +dependencies = [ + "axum", + "console_error_panic_hook", + "rmp-serde", + "serde", + "time", + "tower-service", + "worker", + "worker-macros", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +dependencies = [ + "adler", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rmp" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "serde" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "syn" +version = "2.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "thiserror" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "pin-project-lite", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "worker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa130f6f7e5a0b716e0f5472d412fe97962ded204d76ddaf3eeba7360dfcae93" +dependencies = [ + "async-trait", + "axum", + "bytes", + "chrono", + "futures-channel", + "futures-util", + "http", + "http-body", + "js-sys", + "matchit", + "pin-project", + "serde", + "serde-wasm-bindgen 0.6.5", + "serde_json", + "serde_urlencoded", + "tokio", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "worker-kv", + "worker-macros", + "worker-sys", +] + +[[package]] +name = "worker-kv" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f06d4d1416a9f8346ee9123b0d9a11b3cfa38e6cfb5a139698017d1597c4d41" +dependencies = [ + "js-sys", + "serde", + "serde-wasm-bindgen 0.5.0", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", +] + +[[package]] +name = "worker-macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0f7f15151a77dca96813d0eff10ab9b29114533fae0267d00c466c13081e69" +dependencies = [ + "async-trait", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-bindgen-macro-support", + "worker-sys", +] + +[[package]] +name = "worker-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ee9baa2ef3c7dea0e2165ff8aaad15e4c4cedb2d30a7deefd4999cd0ae96a3" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] diff --git a/MaintenanceWorker/Cargo.toml b/MaintenanceWorker/Cargo.toml new file mode 100644 index 000000000..6a5ddcf2c --- /dev/null +++ b/MaintenanceWorker/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "maintenance-worker" +version = "0.1.0" +edition = "2021" +authors = [ "Jay Malhotra " ] + +[package.metadata.release] +release = false + +# https://github.com/rustwasm/wasm-pack/issues/1247 +[package.metadata.wasm-pack.profile.release] +wasm-opt = false + +[lib] +crate-type = ["cdylib"] + +[dependencies] +worker = { version="0.2.0", features=['http', 'axum'] } +worker-macros = { version="0.2.0", features=['http'] } +axum = { version = "0.7", default-features = false } +tower-service = "0.3.2" +console_error_panic_hook = { version = "0.1.1" } +serde = "1.0.202" +time = { version="0.3.36", features=['parsing','macros','formatting'] } +rmp-serde = "1.3.0" diff --git a/MaintenanceWorker/README.md b/MaintenanceWorker/README.md new file mode 100644 index 000000000..6491f3770 --- /dev/null +++ b/MaintenanceWorker/README.md @@ -0,0 +1,14 @@ +# maintenance-worker + +This is a Cloudflare Worker written in Rust to show the in-game maintenance alert, as well as a HTML fallback for the main website. + +While the existing server can handle maintenance alerts [via MaintenanceOptions](https://github.com/SapiensAnatis/Dawnshard/blob/main/DragaliaAPI/DragaliaAPI/appsettings.json#L113), it cannot do this if it needs to be taken down entirely, or if the container host needs to be restarted. A Cloudflare worker allows us to return maintenance information regardless of the status of the API. + +The maintenance data is configured in `wrangler.toml`, e.g. + +```toml +[vars] +MAINTENANCE_END_DATE = "2024-05-20T18:14:08Z" +MAINTENANCE_TITLE = "Maintenance" +MAINTENANCE_BODY = "Dawnshard is currently under maintenance\nto upgrade the server." +``` diff --git a/MaintenanceWorker/package.json b/MaintenanceWorker/package.json new file mode 100644 index 000000000..c881734c4 --- /dev/null +++ b/MaintenanceWorker/package.json @@ -0,0 +1,11 @@ +{ + "name": "maintenance-worker", + "version": "1.0.0", + "description": "Cloudflare worker for showing the maintenance screen even if the origin server is down", + "devDependencies": { + "wrangler": "3.57.0" + }, + "scripts": { + "start": "npx wrangler dev" + } +} \ No newline at end of file diff --git a/MaintenanceWorker/pnpm-lock.yaml b/MaintenanceWorker/pnpm-lock.yaml new file mode 100644 index 000000000..6fe8623d5 --- /dev/null +++ b/MaintenanceWorker/pnpm-lock.yaml @@ -0,0 +1,848 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + wrangler: + specifier: 3.57.0 + version: 3.57.0 + +packages: + + '@cloudflare/kv-asset-handler@0.3.2': + resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==} + engines: {node: '>=16.13'} + + '@cloudflare/workerd-darwin-64@1.20240512.0': + resolution: {integrity: sha512-VMp+CsSHFALQiBzPdQ5dDI4T1qwLu0mQ0aeKVNDosXjueN0f3zj/lf+mFil5/9jBbG3t4mG0y+6MMnalP9Lobw==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20240512.0': + resolution: {integrity: sha512-lZktXGmzMrB5rJqY9+PmnNfv1HKlj/YLZwMjPfF0WVKHUFdvQbAHsi7NlKv6mW9uIvlZnS+K4sIkWc0MDXcRnA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20240512.0': + resolution: {integrity: sha512-wrHvqCZZqXz6Y3MUTn/9pQNsvaoNjbJpuA6vcXsXu8iCzJi911iVW2WUEBX+MpUWD+mBIP0oXni5tTlhkokOPw==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20240512.0': + resolution: {integrity: sha512-YPezHMySL9J9tFdzxz390eBswQ//QJNYcZolz9Dgvb3FEfdpK345cE/bsWbMOqw5ws2f82l388epoenghtYvAg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20240512.0': + resolution: {integrity: sha512-SxKapDrIYSscMR7lGIp/av0l6vokjH4xQ9ACxHgXh+OdOus9azppSmjaPyw4/ePvg7yqpkaNjf9o258IxWtvKQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@esbuild-plugins/node-globals-polyfill@0.2.3': + resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} + peerDependencies: + esbuild: '*' + + '@esbuild-plugins/node-modules-polyfill@0.2.2': + resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} + peerDependencies: + esbuild: '*' + + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + capnp-ts@0.7.0: + resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + miniflare@3.20240512.0: + resolution: {integrity: sha512-X0PlKR0AROKpxFoJNmRtCMIuJxj+ngEcyTOlEokj2rAQ0TBwUhB4/1uiPvdI6ofW5NugPOD1uomAv+gLjwsLDQ==} + engines: {node: '>=16.13'} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + rollup-plugin-inject@3.0.2: + resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. + + rollup-plugin-node-polyfills@0.2.1: + resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + + stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + workerd@1.20240512.0: + resolution: {integrity: sha512-VUBmR1PscAPHEE0OF/G2K7/H1gnr9aDWWZzdkIgWfNKkv8dKFCT75H+GJtUHjfwqz3rYCzaNZmatSXOpLGpF8A==} + engines: {node: '>=16'} + hasBin: true + + wrangler@3.57.0: + resolution: {integrity: sha512-izK3AZtlFoTq8N0EZjLOQ7hqwsjaXCc1cbNKuhsLJjDX1jB1YZBDPhIhtXL4VVzkJAcH+0Zw2gguOePFCHNaxw==} + engines: {node: '>=16.17.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20240512.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + + ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + + youch@3.3.3: + resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@cloudflare/kv-asset-handler@0.3.2': + dependencies: + mime: 3.0.0 + + '@cloudflare/workerd-darwin-64@1.20240512.0': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20240512.0': + optional: true + + '@cloudflare/workerd-linux-64@1.20240512.0': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20240512.0': + optional: true + + '@cloudflare/workerd-windows-64@1.20240512.0': + optional: true + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': + dependencies: + esbuild: 0.17.19 + + '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': + dependencies: + esbuild: 0.17.19 + escape-string-regexp: 4.0.0 + rollup-plugin-node-polyfills: 0.2.1 + + '@esbuild/android-arm64@0.17.19': + optional: true + + '@esbuild/android-arm@0.17.19': + optional: true + + '@esbuild/android-x64@0.17.19': + optional: true + + '@esbuild/darwin-arm64@0.17.19': + optional: true + + '@esbuild/darwin-x64@0.17.19': + optional: true + + '@esbuild/freebsd-arm64@0.17.19': + optional: true + + '@esbuild/freebsd-x64@0.17.19': + optional: true + + '@esbuild/linux-arm64@0.17.19': + optional: true + + '@esbuild/linux-arm@0.17.19': + optional: true + + '@esbuild/linux-ia32@0.17.19': + optional: true + + '@esbuild/linux-loong64@0.17.19': + optional: true + + '@esbuild/linux-mips64el@0.17.19': + optional: true + + '@esbuild/linux-ppc64@0.17.19': + optional: true + + '@esbuild/linux-riscv64@0.17.19': + optional: true + + '@esbuild/linux-s390x@0.17.19': + optional: true + + '@esbuild/linux-x64@0.17.19': + optional: true + + '@esbuild/netbsd-x64@0.17.19': + optional: true + + '@esbuild/openbsd-x64@0.17.19': + optional: true + + '@esbuild/sunos-x64@0.17.19': + optional: true + + '@esbuild/win32-arm64@0.17.19': + optional: true + + '@esbuild/win32-ia32@0.17.19': + optional: true + + '@esbuild/win32-x64@0.17.19': + optional: true + + '@fastify/busboy@2.1.1': {} + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 20.12.12 + + '@types/node@20.12.12': + dependencies: + undici-types: 5.26.5 + + acorn-walk@8.3.2: {} + + acorn@8.11.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + as-table@1.0.55: + dependencies: + printable-characters: 1.0.42 + + binary-extensions@2.3.0: {} + + blake3-wasm@2.1.5: {} + + braces@3.0.2: + dependencies: + fill-range: 7.0.1 + + capnp-ts@0.7.0: + dependencies: + debug: 4.3.4 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cookie@0.5.0: {} + + data-uri-to-buffer@2.0.2: {} + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + + escape-string-regexp@4.0.0: {} + + estree-walker@0.6.1: {} + + exit-hook@2.2.1: {} + + fill-range@7.0.1: + dependencies: + to-regex-range: 5.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-source@2.0.12: + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.13.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + mime@3.0.0: {} + + miniflare@3.20240512.0: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.11.3 + acorn-walk: 8.3.2 + capnp-ts: 0.7.0 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.28.4 + workerd: 1.20240512.0 + ws: 8.17.0 + youch: 3.3.3 + zod: 3.23.8 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + ms@2.1.2: {} + + mustache@4.2.0: {} + + nanoid@3.3.7: {} + + node-forge@1.3.1: {} + + normalize-path@3.0.0: {} + + path-parse@1.0.7: {} + + path-to-regexp@6.2.2: {} + + picomatch@2.3.1: {} + + printable-characters@1.0.42: {} + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + resolve.exports@2.0.2: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup-plugin-inject@3.0.2: + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + rollup-pluginutils: 2.8.2 + + rollup-plugin-node-polyfills@0.2.1: + dependencies: + rollup-plugin-inject: 3.0.2 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + stacktracey@2.1.8: + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + + stoppable@1.1.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tslib@2.6.2: {} + + undici-types@5.26.5: {} + + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + workerd@1.20240512.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20240512.0 + '@cloudflare/workerd-darwin-arm64': 1.20240512.0 + '@cloudflare/workerd-linux-64': 1.20240512.0 + '@cloudflare/workerd-linux-arm64': 1.20240512.0 + '@cloudflare/workerd-windows-64': 1.20240512.0 + + wrangler@3.57.0: + dependencies: + '@cloudflare/kv-asset-handler': 0.3.2 + '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) + '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) + blake3-wasm: 2.1.5 + chokidar: 3.6.0 + esbuild: 0.17.19 + miniflare: 3.20240512.0 + nanoid: 3.3.7 + path-to-regexp: 6.2.2 + resolve: 1.22.8 + resolve.exports: 2.0.2 + selfsigned: 2.4.1 + source-map: 0.6.1 + xxhash-wasm: 1.0.2 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + ws@8.17.0: {} + + xxhash-wasm@1.0.2: {} + + youch@3.3.3: + dependencies: + cookie: 0.5.0 + mustache: 4.2.0 + stacktracey: 2.1.8 + + zod@3.23.8: {} diff --git a/MaintenanceWorker/src/game/mod.rs b/MaintenanceWorker/src/game/mod.rs new file mode 100644 index 000000000..3e6a735fb --- /dev/null +++ b/MaintenanceWorker/src/game/mod.rs @@ -0,0 +1,109 @@ +use crate::helper::{util::load_end_date, vars}; +use serde::Serialize; +use time::macros::{format_description, offset}; +use worker::*; + +#[derive(Serialize)] +struct DataHeaders { + result_code: u16, +} + +#[derive(Serialize)] +struct DragaliaResponse { + data_headers: DataHeaders, + data: T, +} + +#[derive(Serialize)] +struct GetTextData { + maintenance_text: String, +} + +static RESULT_CODE_COMMON_MAINTENANCE: u16 = 101; +static RESULT_CODE_OK: u16 = 1; + +pub fn handle_generic( + _req: Request, + _ctx: RouteContext<()>, +) -> std::result::Result { + let resp = DragaliaResponse:: { + data_headers: DataHeaders { + result_code: RESULT_CODE_COMMON_MAINTENANCE, + }, + data: DataHeaders { + result_code: RESULT_CODE_COMMON_MAINTENANCE, + }, + }; + + let Ok(bytes) = rmp_serde::encode::to_vec_named(&resp) else { + return Err("Failed to serialize response".into()); + }; + + Response::from_bytes(bytes) +} + +pub fn handle_get_text( + _req: Request, + ctx: RouteContext<()>, +) -> std::result::Result { + let xml = match generate_xml(ctx) { + Ok(xml) => xml, + Err(e) => { + console_error!("Failed to format XML response: {}", e); + return Err("Failed to format XML response".into()); + } + }; + + let resp = DragaliaResponse:: { + data_headers: DataHeaders { + result_code: RESULT_CODE_OK, + }, + data: GetTextData { + maintenance_text: xml, + }, + }; + + let Ok(bytes) = rmp_serde::encode::to_vec_named(&resp) else { + return Err("Failed to serialize response".into()); + }; + + Response::from_bytes(bytes) +} + +fn generate_xml(ctx: RouteContext<()>) -> std::result::Result { + let parsed_date = match load_end_date(&ctx) { + Ok(date) => date, + Err(e) => { + console_error!("Failed to load parsed end date: {}", e); + return Err("Failed to load parsed end date"); + } + }; + + // Convert to JST; the game expects all dates to be formatted without timezone and in JST + let Ok(formatted_jst_date) = parsed_date + .to_offset(offset!(+9)) + .format(format_description!( + "[year]-[month]-[day]T[hour]:[minute]:[second]" + )) + else { + return Err("Failed to format parsed end date"); + }; + + let Ok(maintenance_title) = ctx.var(vars::TITLE) else { + return Err("Failed to load maintenance title"); + }; + + let Ok(maintenance_body) = ctx.var(vars::BODY) else { + return Err("Failed to load maintenance body"); + }; + + Ok(format!( + "{} +{} +Check back at: +{}", + maintenance_title.to_string(), + maintenance_body.to_string(), + formatted_jst_date + )) +} diff --git a/MaintenanceWorker/src/helper.rs b/MaintenanceWorker/src/helper.rs new file mode 100644 index 000000000..83a4aec78 --- /dev/null +++ b/MaintenanceWorker/src/helper.rs @@ -0,0 +1,27 @@ +pub mod vars { + pub static TITLE: &'static str = "MAINTENANCE_TITLE"; + pub static BODY: &'static str = "MAINTENANCE_BODY"; + pub static END_DATE: &'static str = "MAINTENANCE_END_DATE"; +} + +pub mod util { + use time::{format_description::well_known::Iso8601, OffsetDateTime}; + use worker::RouteContext; + + use super::vars; + + pub fn load_end_date( + ctx: &RouteContext<()>, + ) -> std::result::Result { + let Ok(end_date_var) = ctx.var(vars::END_DATE) else { + return Err("Failed to load end date variable"); + }; + + let Ok(parsed_date) = OffsetDateTime::parse(&end_date_var.to_string(), &Iso8601::DEFAULT) + else { + return Err("Failed to parse end date into date"); + }; + + Ok(parsed_date) + } +} diff --git a/MaintenanceWorker/src/lib.rs b/MaintenanceWorker/src/lib.rs new file mode 100644 index 000000000..672fa14fb --- /dev/null +++ b/MaintenanceWorker/src/lib.rs @@ -0,0 +1,21 @@ +pub mod game; +pub mod helper; +pub mod web; + +use worker::*; + +#[event(fetch)] +pub async fn main(req: Request, env: Env, _ctx: worker::Context) -> Result { + let router = Router::new(); + + router + .post( + "/2.19.0_:platform/maintenance/get_text", + game::handle_get_text, + ) + .post("/2.19.0_:platform/*path", game::handle_generic) + .get("/", web::get_html) + .get("/*path", web::get_html) + .run(req, env) + .await +} diff --git a/MaintenanceWorker/src/web/mod.rs b/MaintenanceWorker/src/web/mod.rs new file mode 100644 index 000000000..66f49420a --- /dev/null +++ b/MaintenanceWorker/src/web/mod.rs @@ -0,0 +1,40 @@ +use crate::helper::util::load_end_date; +use time::macros::format_description; +use worker::*; + +static PAGE_HTML: &str = include_str!("page.html"); + +pub fn get_html(_req: Request, ctx: RouteContext<()>) -> std::result::Result { + let formatted_html = match format_html_with_date(ctx) { + Ok(html) => html, + Err(e) => { + console_error!("Failed to parse HTML: {}", e); + return Response::from_html(PAGE_HTML); + } + }; + + return Response::from_html(formatted_html); +} + +fn format_html_with_date(ctx: RouteContext<()>) -> std::result::Result { + let parsed_date = match load_end_date(&ctx) { + Ok(date) => date, + Err(e) => { + console_error!("Failed to load parsed end date: {}", e); + return Err("Failed to load parsed end date"); + } + }; + + let Ok(formatted_date) = parsed_date.format(format_description!( + "[day]/[month]/[year] [hour]:[minute]:[second] +[offset_hour]:[offset_minute]" + )) else { + return Err("Failed to format parsed end date"); + }; + + let date_para = format!( + "

Expected end date: {}

", + formatted_date + ); + + return Ok(PAGE_HTML.replace("", &date_para)); +} diff --git a/MaintenanceWorker/src/web/page.html b/MaintenanceWorker/src/web/page.html new file mode 100644 index 000000000..c3a2fc340 --- /dev/null +++ b/MaintenanceWorker/src/web/page.html @@ -0,0 +1,54 @@ + + + + Dawnshard + + + +
+ 🚧 +

Dawnshard is under maintenance

+ +
+ + diff --git a/MaintenanceWorker/wrangler.toml b/MaintenanceWorker/wrangler.toml new file mode 100644 index 000000000..e3d5d7301 --- /dev/null +++ b/MaintenanceWorker/wrangler.toml @@ -0,0 +1,11 @@ +name = "maintenance-worker" +main = "build/worker/shim.mjs" +compatibility_date = "2024-05-20" + +[build] +command = "cargo install -q worker-build && worker-build --release" + +[vars] +MAINTENANCE_END_DATE = "2024-05-20T22:00:00+01:00" +MAINTENANCE_TITLE = "Maintenance" +MAINTENANCE_BODY = "Dawnshard is currently under maintenance so\ndreadfullydistinct can fix his\nConsul install." \ No newline at end of file diff --git a/PhotonPlugin/Directory.Build.props b/PhotonPlugin/Directory.Build.props new file mode 100644 index 000000000..e3a1e3e00 --- /dev/null +++ b/PhotonPlugin/Directory.Build.props @@ -0,0 +1,9 @@ + + + net481 + disable + disable + 7.3 + x64 + + \ No newline at end of file diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin.Test/MemberCountTableTest.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin.Test/MemberCountTableTest.cs index 809df080f..e7655f0d7 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin.Test/MemberCountTableTest.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin.Test/MemberCountTableTest.cs @@ -1,4 +1,4 @@ -using DragaliaAPI.Photon.Plugin.Plugins.GameLogic; +using System.Collections.Generic; using DragaliaAPI.Photon.Plugin.Plugins.GameLogic.Events; using FluentAssertions; using Xunit; diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/DragaliaAPI.Photon.Plugin.csproj b/PhotonPlugin/DragaliaAPI.Photon.Plugin/DragaliaAPI.Photon.Plugin.csproj index 3d69c9330..aceda6da3 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/DragaliaAPI.Photon.Plugin.csproj +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/DragaliaAPI.Photon.Plugin.csproj @@ -1,13 +1,8 @@  - net481 - disable - disable - 7.3 - x64 OnBuildSuccess - 3.2.4 + 3.2.5 @@ -22,11 +17,11 @@ - + - + \ No newline at end of file diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/ActorState.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/ActorState.cs index 68ea8fa3d..2a67b0cc4 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/ActorState.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/ActorState.cs @@ -1,7 +1,4 @@ -using System.Linq; -using DragaliaAPI.Photon.Shared.Models; - -namespace DragaliaAPI.Photon.Plugin.Plugins.GameLogic +namespace DragaliaAPI.Photon.Plugin.Plugins.GameLogic { internal class ActorState { diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/GameLogicPlugin.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/GameLogicPlugin.cs index b8c2e1713..d8b57bf9d 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/GameLogicPlugin.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/GameLogic/GameLogicPlugin.cs @@ -122,7 +122,7 @@ out object isSoloPlay roomId ); - this.pluginStateService.ShouldPublish = + this.pluginStateService.IsPubliclyVisible = matchingType == MatchingTypes.Anyone && !this.roomState.IsRandomMatching; } diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/Gluon/GluonPlugin.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/Gluon/GluonPlugin.cs index de3115ffc..bb11f369d 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/Gluon/GluonPlugin.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Plugins/Gluon/GluonPlugin.cs @@ -48,10 +48,10 @@ out string errorMsg public override void OnCreateGame(ICreateGameCallInfo info) { this.gameLogicPlugin.OnCreateGame(info); + this.stateManagerPlugin.OnCreateGame(info); - if (this.pluginStateService.ShouldPublish) + if (this.pluginStateService.IsPubliclyVisible) { - this.stateManagerPlugin.OnCreateGame(info); this.discordPlugin.OnCreateGame(info); } @@ -62,11 +62,7 @@ public override void OnCreateGame(ICreateGameCallInfo info) public override void OnJoin(IJoinGameCallInfo info) { this.gameLogicPlugin.OnJoin(info); - - if (this.pluginStateService.ShouldPublish) - { - this.stateManagerPlugin.OnJoin(info); - } + this.stateManagerPlugin.OnJoin(info); if (!info.IsProcessed) info.Continue(); @@ -75,9 +71,7 @@ public override void OnJoin(IJoinGameCallInfo info) public override void OnLeave(ILeaveGameCallInfo info) { this.gameLogicPlugin.OnLeave(info); - - if (this.pluginStateService.ShouldPublish) - this.stateManagerPlugin.OnLeave(info); + this.stateManagerPlugin.OnLeave(info); if (!info.IsProcessed) base.OnLeave(info); @@ -88,7 +82,7 @@ public override void BeforeCloseGame(IBeforeCloseGameCallInfo info) // This can't use OnCloseGame with StateManagerPlugin, as there can only be one synchronous outbound HTTP request // per event handler. (Unless we chain them together using callbacks...) - if (this.pluginStateService.ShouldPublish) + if (this.pluginStateService.IsPubliclyVisible) { this.discordPlugin.BeforeCloseGame(info); } @@ -100,11 +94,7 @@ public override void BeforeCloseGame(IBeforeCloseGameCallInfo info) public override void OnCloseGame(ICloseGameCallInfo info) { // GameLogicPlugin has no override for closing a game - - if (this.pluginStateService.ShouldPublish) - { - this.stateManagerPlugin.OnCloseGame(info); - } + this.stateManagerPlugin.OnCloseGame(info); if (!info.IsProcessed) info.Continue(); @@ -113,9 +103,7 @@ public override void OnCloseGame(ICloseGameCallInfo info) public override void OnRaiseEvent(IRaiseEventCallInfo info) { this.gameLogicPlugin.OnRaiseEvent(info); - - if (this.pluginStateService.ShouldPublish) - this.stateManagerPlugin.OnRaiseEvent(info); + this.stateManagerPlugin.OnRaiseEvent(info); if (!info.IsProcessed) info.Continue(); @@ -132,10 +120,10 @@ public override void BeforeSetProperties(IBeforeSetPropertiesCallInfo info) public override void OnSetProperties(ISetPropertiesCallInfo info) { this.gameLogicPlugin.OnSetProperties(info); + this.stateManagerPlugin.OnSetProperties(info); - if (this.pluginStateService.ShouldPublish) + if (this.pluginStateService.IsPubliclyVisible) { - this.stateManagerPlugin.OnSetProperties(info); this.discordPlugin.OnSetProperties(info); } diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginConfiguration.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginConfiguration.cs index d91b1ac88..e35fec189 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginConfiguration.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginConfiguration.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Runtime.CompilerServices; using DragaliaAPI.Photon.Plugin.Shared.Helpers; namespace DragaliaAPI.Photon.Plugin.Shared diff --git a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginStateService.cs b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginStateService.cs index f57745031..2c4aab2a0 100644 --- a/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginStateService.cs +++ b/PhotonPlugin/DragaliaAPI.Photon.Plugin/Shared/PluginStateService.cs @@ -11,8 +11,8 @@ public class PluginStateService public bool IsUseSecondaryServer { get; set; } /// - /// Gets or sets a value indicating whether room events should be pushed to Redis / Discord. + /// Gets or sets a value indicating whether room events should be pushed to Discord. /// - public bool ShouldPublish { get; set; } + public bool IsPubliclyVisible { get; set; } } } diff --git a/PhotonPlugin/README.md b/PhotonPlugin/README.md new file mode 100644 index 000000000..20cc8daca --- /dev/null +++ b/PhotonPlugin/README.md @@ -0,0 +1,181 @@ +# PhotonPlugin + +The Photon plugin is a DLL that integrates into Photon Server product to provide the custom logic required for the game's co-op mode to function. + +To install this plugin, you must first acquire a license for Photon Server. This requires joining the Photon industries or gaming circle for $125/mo, and then purchasing a Photon Server license for $95/mo. + +## How to build the plugin + +The plugin can be compiled from the source code provided from each release, but you must first add a reference to +PhotonHivePlugin.dll, which can be downloaded as part of +the [Plugins SDK](https://www.photonengine.com/sdks#server-sdkserverserverplugin) from Photon's website. Builds of the +plugin are not provided with the releases to avoid redistributing this proprietary component. + +Ensure the plugin is compiled in Release mode before deploying to production. + +## How to set up a Photon server + +### Part 1: Configuring Photon Server + +1. Follow + the [instructions from the Photon documentation](https://doc.photonengine.com/server/current/getting-started/photon-server-in-5min#ip_address_config) + to setting up the server. Pay particular attention to step 7 if you intend to expose the server on a public or local + IP address. +2. Place the plugin binary files in `Plugins/GluonPlugin//bin`. +3. Install the plugin, by editing `LoadBalancing/GameServer/bin/plugin.config`. Below is a sample configuration: + + ```xml + + + + + + + + + ``` + + The config values have the following meanings: + + | Key | Explanation | + | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | Name | Do not change. Name of the plugin as sent to the Dragalia client. | + | Version | Plugin version -- the example above will look in Plugins/GluonPlugin/v1/bin for binary files. Can be hot reloaded. | + | AssemblyName | Do not change. Plugin assembly name. | + | Type | Do not change. Plugin factory type name. | + | ApiServerUrl | URL of the main API server. Used to make requests for party data. | + | StateManagerUrl | URL of hosted room state manager (e.g. DragaliaAPI.Photon.StateManager) | + | DungeonRecordMultiEndpoint | Endpoint to call on behalf of players when clearing a quest | + | TimeAttackEndpoint | Endpoint to call when registering a Time Attack clear. | + | ReplayTimeoutSeconds | The number of seconds players have to confirm whether they want to play again after a clear | + | BearerToken | Token to embed in Authorization header when making requests to the state manager | + | RandomMatchingStartDelayMs | The duration in milliseconds to wait for a random matching room (e.g. invasion events) to start when more than one player is present. | + | EnableSecondaryServer | Whether or not to enable secondary server connections. This allows another API server to host rooms on the same Photon server. Each server must have a distinct viewer ID range, as this is how the plugin determines which server belongs to. | + | SecondaryViewerIdCriterion | The threshold value at which the viewer ID of a joining player means they are joining from the secondary server. All players with viewer IDs less than this value will be considered as being from the primary server. | + | SecondaryApiServerUrl | Used instead of ApiServerUrl when a room is in secondary server mode. | + | StateManagerUrl | Used instead of StateManagerUrl when a room is in secondary server mode. | + | SecondaryBearerToken | Used instead of BearerToken when a room is in secondary server mode. | + | EnableDiscordIntegration | Whether to enable requests to a Discord bot for posting active rooms. N.B. due to a bug, setting this to false does not disable Discord integration. | + | DiscordUrl | The URL of a server to send Discord bot requests to. | + | DiscordBearerToken | The bearer token to use in the Authorization header when making Discord bot requests. | + +4. Update LoadBalancing/GameServer/bin/GameServer.xml.config to increase the maximum property size: + +```xml + + + + + 100000 + 1000 + 100000 + + + + 510000 + 9000000 + + + + + +``` + +5. Optionally, update `bin_Win64/PhotonServer.config` and decrease the `MinimumTimeout` and `MaximumTimeout` values. + These will control the amount of time before a player who stops sending packets is kicked from the room. The defaults + cause players to leave after between 10 and 30 seconds of inactivity. For Dragalia, it can be beneficial to decrease + this so that 1) AI units take over faster in quests and 2) if a player leaves while the room is loading, other + players are not locked in the loading screen waiting for them for too long. + +6. If deploying in production, follow best practices such as: + + - disable debug logging + - remove the console log appender + - change the AuthToken from the default on all 3 servers + - ensure the server-to-server port (4520) is not publicly accessible + +### Part 2: Configuring the state manager + +The state manager application should be comparitively easy to deploy. It is a Docker container that expects to be +deployed alongside a `redis/redis-stack` image. See the `docker-compose.yml` file in the repository for reference. It +does not need to be on the same server as Photon. + +It expects an environment variable, `PHOTON_TOKEN`, to match that which is configured in `plugin.config` above, so as to +authenticate requests from the Photon server. A sample Docker compose file could look like: + +```yaml +version: "3.4" + +services: + photonstatemanager: + hostname: photonstatemanager + image: sapiensanatis/dragalia-api-statemanager:latest + ports: + - "3000:80" + environment: + PHOTON_TOKEN: yourtoken + + redis: + hostname: redis + image: redis/redis-stack-server +``` + +In `appsettings.json` configure the following values: + +- `$.SeqOptions`: set up your Seq logging config, or leave it disabled if you don't want to log to Seq. +- `$.ConnectionStrings.Redis`: set up your Redis Stack connection string. The default will suffice if using + docker-compose with the default networking. +- `$.RedisOptions.KeyExpiryTimeMins`: this can be changed to control the time after which rooms naturally expire in + Redis. + +### Part 3: Configuring the main API server + +In the main API `appsettings.json`, configure the following values in `$.PhotonOptions`: + +- `ServerUrl`: the Photon server URL. Must end with :5055 due to Dragalia using a legacy client. +- `StateManagerUrl` the Photon state manager URL. + +Configure the following environment variables: + +- `PHOTON_TOKEN`: the same photon token as the plugin and state manager use. Used to authenticate requests from Photon. + +#### Other servers + +If you are not using DragaliaAPI / Dawnshard as your main API server, you will need to implement the following +endpoints: + +- `/heroparam/batch`: Get party information based on the list of viewer IDs and party numbers in the request body. + See [HeroParamService.cs](https://github.com/SapiensAnatis/Dawnshard/blob/develop/DragaliaAPI/Services/Photon/HeroParamService.cs). +- `/matching/get_room_list`: Get a list of all open rooms. Typically can call `/get/gamelist` on the state manager. + - Additional work must be done by the API server to populate fields such as host lead character. + See [MatchingService.cs](https://github.com/SapiensAnatis/Dawnshard/blob/develop/DragaliaAPI/Services/Photon/MatchingService.cs). +- `/matching/get_room_list_by_quest_id`: Get a list of open rooms for a quest. Can call `/get/gamelist?questId=XXXXX` on + the state manager. +- `/matching/get_room_name`: Get a private room based on the passcode. Can call `/get/byid/{id}` on the state manager. + +Additionally: + +- You must set `is_host` correctly in `/dungeon_start/start_multi`, `/dungeon/fail`, and `/dungeon_record/record_multi`. + The state manager provides an endpoint: `GET /get/ishost/` returning a response body of `true` or `false` ( + JSON scalar) to help with this. +- `/dungeon_record/record_multi` must be able to accept requests from the Photon server. The Photon server will provide + an `Authorization Bearer ` header, as well as `Auth-ViewerId` for authentication. diff --git a/PhotonStateManager/Directory.Build.props b/PhotonStateManager/Directory.Build.props new file mode 100644 index 000000000..886c4dccf --- /dev/null +++ b/PhotonStateManager/Directory.Build.props @@ -0,0 +1,8 @@ + + + net8.0 + enable + enable + latest-minimum + + \ No newline at end of file diff --git a/PhotonStateManager/DragaliaAPI.Photon.StateManager/Dockerfile b/PhotonStateManager/DragaliaAPI.Photon.StateManager/Dockerfile index fd1a159ae..a0f47fbe0 100644 --- a/PhotonStateManager/DragaliaAPI.Photon.StateManager/Dockerfile +++ b/PhotonStateManager/DragaliaAPI.Photon.StateManager/Dockerfile @@ -1,14 +1,12 @@ -ARG BASE_DOTNET_IMAGE=mcr.microsoft.com/dotnet/aspnet:8.0.3 - -FROM $BASE_DOTNET_IMAGE AS base -WORKDIR /app - +FROM mcr.microsoft.com/dotnet/aspnet:8.0.5-jammy-chiseled AS base +USER app EXPOSE 8080 +WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:8.0.203 AS build +FROM mcr.microsoft.com/dotnet/sdk:8.0.300 AS build WORKDIR /src COPY ["PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj", "PhotonStateManager/DragaliaAPI.Photon.StateManager/"] -COPY ["Directory.Build.props", "."] +COPY ["PhotonStateManager/Directory.Build.props", "."] COPY ["Directory.Packages.props", "."] COPY ["nuget.config", "."] RUN dotnet restore "PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj" @@ -19,6 +17,5 @@ WORKDIR "/src/PhotonStateManager/DragaliaAPI.Photon.StateManager" RUN dotnet publish "DragaliaAPI.Photon.StateManager.csproj" -c Release -o /app/publish/ /p:UseAppHost=false FROM base AS final -WORKDIR /app COPY --from=build /app/publish/ . ENTRYPOINT ["dotnet", "DragaliaAPI.Photon.StateManager.dll"] \ No newline at end of file diff --git a/PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj b/PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj index 144cce430..cf6b91bed 100644 --- a/PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj +++ b/PhotonStateManager/DragaliaAPI.Photon.StateManager/DragaliaAPI.Photon.StateManager.csproj @@ -32,4 +32,8 @@ + + + + diff --git a/PhotonStateManager/DragaliaAPI.Photon.StateManager/Properties/launchSettings.json b/PhotonStateManager/DragaliaAPI.Photon.StateManager/Properties/launchSettings.json new file mode 100644 index 000000000..9387cfaa9 --- /dev/null +++ b/PhotonStateManager/DragaliaAPI.Photon.StateManager/Properties/launchSettings.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "DragaliaAPI.Photon.StateManager": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "RedisOptions__Hostname": "localhost" + }, + "applicationUrl": "http://localhost:5001" + } + } +} \ No newline at end of file diff --git a/PhotonStateManager/README.md b/PhotonStateManager/README.md new file mode 100644 index 000000000..71bb2497f --- /dev/null +++ b/PhotonStateManager/README.md @@ -0,0 +1,18 @@ +# PhotonStateManager + +This is a very basic ASP.NET Core microservice that acts as a stateful storage of Photon rooms for the purposes of matchmaking and display in the main API server. + +It operates by receiving webhook events from the Photon server, which trigger rooms to be created, updated, and deleted in the backing Redis storage. It further exposes a REST API to retrieve this data from the main API server. + +## API + +PhotonStateManager exposes a very simple REST API that is divided into two halves: 'private' endpoints designed for consumption by the Photon server, and 'public' endpoints that are designed to be consumed by the main Dragalia Lost API server. The private endpoints are under the /event/ route group, and the public endpoints are under the /get/ route group. + +The private endpoints are secured by bearer token authentication set by an environment variable `PHOTON_TOKEN`. + +### /get/ endpoints + +- `/get/gamelist`: Returns a list of currently open games that are available to join for public matchmaking. +- `/get/byid/{roomId}`: Searches for a room by its numeric passcode. This can include private rooms as well. If found, returns 200 OK, otherwise 404 Not Found. +- `/get/ishost/{viewerId}`: Returns a scalar boolean indicating whether a user with the provided player ID is a host in any room. +- `/get/byviewerid/{viewerId}`: Returns the room that a player is in, or 404 if they could not be found in a room. diff --git a/README.md b/README.md index 8b0642c5c..4c1b2edf5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Dawnshard -[![test](https://github.com/SapiensAnatis/DragaliaAPI/actions/workflows/test.yaml/badge.svg?branch=develop)](https://github.com/SapiensAnatis/DragaliaAPI/actions/workflows/test.yaml) +[![Last Updated](https://img.shields.io/github/last-commit/sapiensanatis/dawnshard/main?label=updated)](https://github.com/SapiensAnatis/Dawnshard/commits/main/) +[![GitHub License](https://img.shields.io/github/license/sapiensanatis/dawnshard)](https://github.com/SapiensAnatis/Dawnshard/blob/main/LICENSE) +[![Open Issues](https://img.shields.io/github/issues/sapiensanatis/dawnshard)](https://github.com/sapiensAnatis/dawnshard/issues) +[![Closed Issues](https://img.shields.io/github/issues-closed/sapiensanatis/dawnshard?color=%238957e5)](https://github.com/SapiensAnatis/Dawnshard/issues?q=is%3Aissue+is%3Aclosed) Dawnshard (internally named DragaliaAPI) is a server emulator for Dragalia Lost. @@ -8,6 +11,15 @@ You can play using the [Dragalipatch](https://github.com/lukeFZ/dragalipatch) ap If you haven't already, please also consider joining the Dragalia Lost Reverse Engineering [Discord server](https://discord.gg/j9zSttjjWj); this is where development is discussed and where bugs/issues are most easily reported. +## Components + +This is a mono-repository that contains the following components. Each of them is documented further in their respective folders. + +- [DragaliaAPI](./DragaliaAPI/) +- [PhotonStateManager](./PhotonStateManager/) +- [PhotonPlugin](./PhotonPlugin/) +- [MaintenanceWorker](./MaintenanceWorker/) + ## Contributing Contributions are more than welcome! Feel free to fork the repository and open a pull request with these changes. @@ -16,18 +28,6 @@ For guidance on contributing, including the process for setting up a development See also the [API documentation](https://dragalia-api-docs.readthedocs.io/en/latest/) for reference on what existing endpoints do and how to implement new ones. -## Hosting your own instance - -The application is deployed as three services: the main ASP.NET service which is stateless, and two stateful services in Redis (session management) and PostgreSQL (savefile storage). - -### Locally - -The recommended way to self-host (for personal use or development) is using `docker-compose` -- please see the [self-hosting guide](https://github.com/SapiensAnatis/Dawnshard/wiki/Self-hosting-guide) in the wiki for more information. - -### Dedicated server - -On a dedicated server, the basic `docker-compose` setup will work, but additional considerations should be made regarding reverse proxying, logging, etc. Speak to the maintainer if you are interested in hosting your own instance for further guidance. - ## Acknowledgements A big thanks to JetBrains for providing open source licenses for this project. diff --git a/Shared/DragaliaAPI.Photon.Shared/DragaliaAPI.Photon.Shared.csproj b/Shared/DragaliaAPI.Photon.Shared/DragaliaAPI.Photon.Shared.csproj index ad781965c..f3bc1d0b4 100644 --- a/Shared/DragaliaAPI.Photon.Shared/DragaliaAPI.Photon.Shared.csproj +++ b/Shared/DragaliaAPI.Photon.Shared/DragaliaAPI.Photon.Shared.csproj @@ -2,6 +2,8 @@ netstandard2.0 + 12 + enable disable diff --git a/Website/.env b/Website/.env new file mode 100644 index 000000000..cd30c7b72 --- /dev/null +++ b/Website/.env @@ -0,0 +1,5 @@ +PUBLIC_BAAS_URL=https://baas.lukefz.xyz/ +PUBLIC_BAAS_CLIENT_ID=dawnshard +PUBLIC_DAWNSHARD_URL=https://dawnshard.co.uk/ +PUBLIC_DAWNSHARD_API_URL=https://dawnshard.co.uk/api/ +DAWNSHARD_API_URL_SSR=http://10.0.0.2:1234 \ No newline at end of file diff --git a/Website/.env.development b/Website/.env.development new file mode 100644 index 000000000..ac5e672c8 --- /dev/null +++ b/Website/.env.development @@ -0,0 +1,3 @@ +PUBLIC_DAWNSHARD_URL=http://localhost:3001/ +PUBLIC_DAWNSHARD_API_URL=http://localhost:3001/api/ # use Vite proxy +DAWNSHARD_API_URL_SSR=http://localhost:5000/ diff --git a/Website/.gitignore b/Website/.gitignore index 6635cf554..2461d1051 100644 --- a/Website/.gitignore +++ b/Website/.gitignore @@ -3,8 +3,6 @@ node_modules /build /.svelte-kit /package -.env -.env.* -!.env.example +.env*local vite.config.js.timestamp-* vite.config.ts.timestamp-* diff --git a/Website/.prettierrc b/Website/.prettierrc index 7ebb855b9..5dd8d1a28 100644 --- a/Website/.prettierrc +++ b/Website/.prettierrc @@ -1,15 +1,16 @@ { - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ] + "useTabs": false, + "singleQuote": true, + "trailingComma": "none", + "tabWidth": 2, + "printWidth": 100, + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] } diff --git a/Website/README.md b/Website/README.md index 5ce676612..05ed93eeb 100644 --- a/Website/README.md +++ b/Website/README.md @@ -1,38 +1,25 @@ -# create-svelte +# Website -Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). +The website is a new frontend for Dawnshard that serves as the public-facing home for the project. It also allows players to view the news, time attack rankings, or administer their account by offering e.g. save export. -## Creating a project +It uses SvelteKit 4 and is deployed as a server-side-rendered web app with [`adapter-node`](https://kit.svelte.dev/docs/adapter-node). -If you're seeing this, you've probably already done this step. Congrats! +The project uses `pnpm` to manage packages locally, and has code style enforced by `prettier` and `eslint`. -```bash -# create a new project in the current directory -npm create svelte@latest - -# create a new project in my-app -npm create svelte@latest my-app -``` +## Development -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: +To set up this project locally, first install dependencies: ```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open +pnpm i ``` -## Building - -To create a production version of your app: +Then start the Vite dev server: ```bash -npm run build +pnpm run dev ``` -You can preview the production build with `npm run preview`. +## Authentication -> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. +The website uses OAuth with [`DragaliaBaas`](https://github.com/DragaliaLostRevival/DragaliaBaasServer) as an identity provider. When a user logs in, they are redirected to the BaaS to authorize their linked account, and given an JSON web token as a cookie which can be used to authenticate against the main server. diff --git a/Website/components.json b/Website/components.json index dbb6df9be..56b9df22d 100644 --- a/Website/components.json +++ b/Website/components.json @@ -1,15 +1,15 @@ { - "$schema": "https://shadcn-svelte.com/schema.json", - "style": "default", - "tailwind": { - "config": "tailwind.config.js", - "css": "src/app.pcss", - "baseColor": "slate", - "cssVariables": true - }, - "aliases": { - "components": "$lib/shadcn/components/", - "utils": "$lib/shadcn/utils.js" - }, - "typescript": true + "$schema": "https://shadcn-svelte.com/schema.json", + "style": "default", + "tailwind": { + "config": "tailwind.config.js", + "css": "src/app.pcss", + "baseColor": "slate", + "cssVariables": true + }, + "aliases": { + "components": "$lib/shadcn/components/", + "utils": "$lib/shadcn/utils.js" + }, + "typescript": true } diff --git a/Website/eslint.config.js b/Website/eslint.config.js index 92263c4d4..322705daf 100644 --- a/Website/eslint.config.js +++ b/Website/eslint.config.js @@ -7,39 +7,38 @@ import globals from 'globals'; /** @type { import("eslint").Linter.Config } */ export default [ - js.configs.recommended, - ...tsEslint.configs.recommended, - ...eslintPluginSvelte.configs['flat/recommended'], - eslintConfigPrettier, - ...eslintPluginSvelte.configs['flat/prettier'], - { - files: ['**/*.svelte'], - languageOptions: { - ecmaVersion: 2022, - sourceType: 'module', - globals: { ...globals.node, ...globals.browser }, - parser: svelteParser, - parserOptions: { - parser: tsEslint.parser, - extraFileExtensions: ['.svelte'] - } - } - }, - { - ignores: [ - '.DS_Store', - 'node_modules', - 'build', - '.svelte-kit', - 'package', - '.env', - '.env.*', - '!.env.example', - 'pnpm-lock.yaml', - 'package-lock.json', - 'postcss.config.cjs', - 'yarn.lock', - 'src/lib/shadcn' - ] - } + js.configs.recommended, + ...tsEslint.configs.recommended, + ...eslintPluginSvelte.configs['flat/recommended'], + eslintConfigPrettier, + ...eslintPluginSvelte.configs['flat/prettier'], + { + files: ['**/*.svelte'], + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { ...globals.node, ...globals.browser }, + parser: svelteParser, + parserOptions: { + parser: tsEslint.parser, + extraFileExtensions: ['.svelte'] + } + } + }, + { + ignores: [ + '.DS_Store', + 'node_modules', + 'build', + '.svelte-kit', + 'package', + '.env', + '.env.*', + 'pnpm-lock.yaml', + 'package-lock.json', + 'postcss.config.cjs', + 'yarn.lock', + 'src/lib/shadcn' + ] + } ]; diff --git a/Website/package.json b/Website/package.json index 3ade0627e..81eed78b4 100644 --- a/Website/package.json +++ b/Website/package.json @@ -1,66 +1,67 @@ { - "name": "dawnshard", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check . && eslint .", - "format": "prettier --write .", - "shadcn": "pnpm dlx shadcn-svelte@latest add" - }, - "devDependencies": { - "@eslint/js": "9.2.0", - "@playwright/test": "1.44.0", - "@sveltejs/adapter-auto": "3.2.0", - "@sveltejs/enhanced-img": "0.2.0", - "@sveltejs/kit": "2.5.7", - "@sveltejs/vite-plugin-svelte": "3.1.0", - "@types/eslint": "8.56.10", - "@typescript-eslint/eslint-plugin": "7.8.0", - "@typescript-eslint/parser": "7.8.0", - "autoprefixer": "10.4.19", - "eslint": "9.2.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-svelte": "2.38.0", - "postcss": "8.4.38", - "postcss-load-config": "5.1.0", - "prettier": "3.2.5", - "prettier-plugin-svelte": "3.2.3", - "prettier-plugin-tailwindcss": "0.5.14", - "svelte": "4.2.16", - "svelte-check": "3.7.1", - "tailwindcss": "3.4.3", - "tslib": "2.6.2", - "typescript": "5.4.5", - "typescript-eslint": "7.8.0", - "vite": "5.2.11" - }, - "type": "module", - "dependencies": { - "bits-ui": "0.21.7", - "buffer": "6.0.3", - "clsx": "2.1.1", - "globals": "15.1.0", - "lucide-svelte": "0.378.0", - "mode-watcher": "0.3.0", - "tailwind-merge": "2.3.0", - "tailwind-variants": "0.2.1", - "vaul-svelte": "0.3.0" - }, - "pnpm": { - "supportedArchitectures": { - "os": [ - "win32", - "linux" - ], - "cpu": [ - "x64" - ] - } - } + "name": "dawnshard", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "test": "playwright test", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write .", + "shadcn": "pnpm dlx shadcn-svelte@latest add" + }, + "devDependencies": { + "@eslint/js": "9.2.0", + "@playwright/test": "1.44.0", + "@sveltejs/adapter-auto": "3.2.0", + "@sveltejs/enhanced-img": "0.2.0", + "@sveltejs/kit": "2.5.7", + "@sveltejs/vite-plugin-svelte": "3.1.0", + "@types/eslint": "8.56.10", + "@typescript-eslint/eslint-plugin": "8.0.0-alpha.14", + "@typescript-eslint/parser": "8.0.0-alpha.14", + "autoprefixer": "10.4.19", + "eslint": "9.2.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-svelte": "2.38.0", + "postcss": "8.4.38", + "postcss-load-config": "5.1.0", + "prettier": "3.2.5", + "prettier-plugin-svelte": "3.2.3", + "prettier-plugin-tailwindcss": "0.5.14", + "svelte": "4.2.16", + "svelte-check": "3.7.1", + "tailwindcss": "3.4.3", + "tslib": "2.6.2", + "typescript": "5.4.5", + "typescript-eslint": "8.0.0-alpha.14", + "vite": "5.2.11" + }, + "type": "module", + "dependencies": { + "bits-ui": "0.21.7", + "buffer": "6.0.3", + "clsx": "2.1.1", + "globals": "15.1.0", + "lucide-svelte": "0.378.0", + "mode-watcher": "0.3.0", + "tailwind-merge": "2.3.0", + "tailwind-variants": "0.2.1", + "vaul-svelte": "0.3.0", + "zod": "3.23.8" + }, + "pnpm": { + "supportedArchitectures": { + "os": [ + "win32", + "linux" + ], + "cpu": [ + "x64" + ] + } + } } diff --git a/Website/playwright.config.ts b/Website/playwright.config.ts index 1c5d7a1fd..962f19c38 100644 --- a/Website/playwright.config.ts +++ b/Website/playwright.config.ts @@ -1,12 +1,12 @@ import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - }, - testDir: 'tests', - testMatch: /(.+\.)?(test|spec)\.[jt]s/ + webServer: { + command: 'npm run build && npm run preview', + port: 4173 + }, + testDir: 'tests', + testMatch: /(.+\.)?(test|spec)\.[jt]s/ }; export default config; diff --git a/Website/pnpm-lock.yaml b/Website/pnpm-lock.yaml index 64d003f65..4765aca97 100644 --- a/Website/pnpm-lock.yaml +++ b/Website/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: vaul-svelte: specifier: 0.3.0 version: 0.3.0(svelte@4.2.16) + zod: + specifier: 3.23.8 + version: 3.23.8 devDependencies: '@eslint/js': specifier: 9.2.0 @@ -58,11 +61,11 @@ importers: specifier: 8.56.10 version: 8.56.10 '@typescript-eslint/eslint-plugin': - specifier: 7.8.0 - version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5) + specifier: 8.0.0-alpha.14 + version: 8.0.0-alpha.14(@typescript-eslint/parser@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: 7.8.0 - version: 7.8.0(eslint@9.2.0)(typescript@5.4.5) + specifier: 8.0.0-alpha.14 + version: 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) autoprefixer: specifier: 10.4.19 version: 10.4.19(postcss@8.4.38) @@ -106,8 +109,8 @@ importers: specifier: 5.4.5 version: 5.4.5 typescript-eslint: - specifier: 7.8.0 - version: 7.8.0(eslint@9.2.0)(typescript@5.4.5) + specifier: 8.0.0-alpha.14 + version: 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) vite: specifier: 5.2.11 version: 5.2.11(@types/node@20.12.11) @@ -623,66 +626,62 @@ packages: '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@typescript-eslint/eslint-plugin@7.8.0': - resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.0.0-alpha.14': + resolution: {integrity: sha512-tfw3zfCg+ynwARhVsuMXKBrmWCtqQ2Cr/cjPAuyKhJGY8t069Lc0Y+F5H7oDLlmm+G54v8lAHkTkw4K/p+PpFQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.8.0': - resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.0.0-alpha.14': + resolution: {integrity: sha512-fD+DFo6aJJYyX4w712HzmE7QmUkoUvtlsFO/MqmYMeHIe0Pz5JZpJ1aYVbdxctazOb7NoW3p3RQgmpDcLT2pdQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@7.8.0': - resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.0.0-alpha.14': + resolution: {integrity: sha512-6EmhoNZzfjd/sZGxichVguWUGCCgT12xyw3ppNZ9bM/m6qQCE66BqudGxzD58UPL4PpN++Y8KqVItax0gNq4BQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.8.0': - resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.0.0-alpha.14': + resolution: {integrity: sha512-F/rtAXWMrFPO49xK0XLw7hYtPVrjj+jRJhJRRcSBWRybcu7rvlEQ/Chk+QXvyp15QuwmMD5jAqNI+Fkbxgc0gQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.8.0': - resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.0.0-alpha.14': + resolution: {integrity: sha512-2u0FBQ0usELnbTqZhHN6X8ngJlpCchFTroWFG5nvo0TOoiPYV+5AbGiRb0IWMsLfxSzeDJeasUzByVvOHn1t1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.8.0': - resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.0.0-alpha.14': + resolution: {integrity: sha512-FM0qHSJ4Sqg49wBCcljq//J9V8SJbq3XFmjaWCF8Tk2hIuYkYZp7joXHs0Ld3FnM+9rj84OQTqSq8zczArNMNg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@7.8.0': - resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.0.0-alpha.14': + resolution: {integrity: sha512-hiH1uqRVyOPd+ZWqInwRob2s3Cq+p7LTIolvj+x7QJ6CpBCPrEMEPVuBiFibw2/rW+zJGTa3Ggjdpqy8bLb60g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.8.0': - resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.0.0-alpha.14': + resolution: {integrity: sha512-LwUhX8+ttlzJWhqLAkiH7E1tX2WJS0zvK0D83w4L9DRl4TRSQBuGtPIM1+GvG90VMix8sjlGaybBzWfNji1cUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -1784,11 +1783,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@7.8.0: - resolution: {integrity: sha512-sheFG+/D8N/L7gC3WT0Q8sB97Nm573Yfr+vZFzl/4nBdYcmviBPtwGSX9TJ7wpVg28ocerKVOt+k2eGmHzcgVA==} - engines: {node: ^18.18.0 || >=20.0.0} + typescript-eslint@8.0.0-alpha.14: + resolution: {integrity: sha512-Un2y0pbBCdvmk2YsY/S/oftSA/4tEZtRMfewHlXJ43LBR07V2HSXPC/t6RJ29KZ+N5ORqe61QUQLupquVBPZhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: @@ -1892,6 +1890,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + snapshots: '@alloc/quick-lru@5.2.0': {} @@ -2306,34 +2307,30 @@ snapshots: '@types/pug@2.0.10': {} - '@types/semver@7.5.8': {} - - '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.0.0-alpha.14(@typescript-eslint/parser@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.8.0(eslint@9.2.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/type-utils': 7.8.0(eslint@9.2.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@9.2.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 + '@typescript-eslint/parser': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.0.0-alpha.14 + '@typescript-eslint/type-utils': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.0.0-alpha.14 eslint: 9.2.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.8.0(eslint@9.2.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/scope-manager': 8.0.0-alpha.14 + '@typescript-eslint/types': 8.0.0-alpha.14 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.14(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.0.0-alpha.14 debug: 4.3.4 eslint: 9.2.0 optionalDependencies: @@ -2341,29 +2338,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.8.0': + '@typescript-eslint/scope-manager@8.0.0-alpha.14': dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/types': 8.0.0-alpha.14 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.14 - '@typescript-eslint/type-utils@7.8.0(eslint@9.2.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.0.0-alpha.14(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 9.2.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.8.0': {} + '@typescript-eslint/types@8.0.0-alpha.14': {} - '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.0.0-alpha.14(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/types': 8.0.0-alpha.14 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.14 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2375,23 +2372,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.8.0(eslint@9.2.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.2.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.0.0-alpha.14 + '@typescript-eslint/types': 8.0.0-alpha.14 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.14(typescript@5.4.5) eslint: 9.2.0 - semver: 7.6.1 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.8.0': + '@typescript-eslint/visitor-keys@8.0.0-alpha.14': dependencies: - '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/types': 8.0.0-alpha.14 eslint-visitor-keys: 3.4.3 acorn-jsx@5.3.2(acorn@8.11.3): @@ -3463,15 +3457,15 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@7.8.0(eslint@9.2.0)(typescript@5.4.5): + typescript-eslint@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.8.0(eslint@9.2.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@9.2.0)(typescript@5.4.5) - eslint: 9.2.0 + '@typescript-eslint/eslint-plugin': 8.0.0-alpha.14(@typescript-eslint/parser@8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5))(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.0.0-alpha.14(eslint@9.2.0)(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: + - eslint - supports-color typescript@5.4.5: {} @@ -3541,3 +3535,5 @@ snapshots: yaml@2.4.2: {} yocto-queue@0.1.0: {} + + zod@3.23.8: {} diff --git a/Website/postcss.config.cjs b/Website/postcss.config.cjs index fe10e55a8..3a310c7e3 100644 --- a/Website/postcss.config.cjs +++ b/Website/postcss.config.cjs @@ -2,12 +2,12 @@ const tailwindcss = require('tailwindcss'); const autoprefixer = require('autoprefixer'); const config = { - plugins: [ - //Some plugins, like tailwindcss/nesting, need to run before Tailwind, - tailwindcss(), - //But others, like autoprefixer, need to run after, - autoprefixer - ] + plugins: [ + //Some plugins, like tailwindcss/nesting, need to run before Tailwind, + tailwindcss(), + //But others, like autoprefixer, need to run after, + autoprefixer + ] }; module.exports = config; diff --git a/Website/src/app.d.ts b/Website/src/app.d.ts index 743f07b2e..ede601ab9 100644 --- a/Website/src/app.d.ts +++ b/Website/src/app.d.ts @@ -1,13 +1,13 @@ // See https://kit.svelte.dev/docs/types#app // for information about these interfaces declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } } export {}; diff --git a/Website/src/app.html b/Website/src/app.html index ba7c9dbc9..9a27b47d2 100644 --- a/Website/src/app.html +++ b/Website/src/app.html @@ -1,13 +1,13 @@ - - - - - Dawnshard - %sveltekit.head% - - -
%sveltekit.body%
- + + + + + Dawnshard + %sveltekit.head% + + +
%sveltekit.body%
+ diff --git a/Website/src/app.pcss b/Website/src/app.pcss index 7974bb61c..a205c1b6b 100644 --- a/Website/src/app.pcss +++ b/Website/src/app.pcss @@ -3,64 +3,64 @@ @tailwind utilities; @layer base { - :root { - --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; - --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; - --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --primary: 221.2 83.2% 53.3%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; - --destructive: 0 72.22% 50.59%; - --destructive-foreground: 210 40% 98%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --ring: 221.2 83.2% 53.3%; - --radius: 0.75rem; - --divider: rgba(99 107 116 / 0.2); - } - .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --primary: 217.2 91.2% 59.8%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --ring: 224.3 76.3% 48%; - --divider: rgba(159 166 173 / 0.16); - } + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + --primary: 221.2 83.2% 53.3%; + --primary-foreground: 210 40% 98%; + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + --destructive: 0 72.22% 50.59%; + --destructive-foreground: 210 40% 98%; + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --ring: 221.2 83.2% 53.3%; + --radius: 0.75rem; + --divider: rgba(99 107 116 / 0.2); + } + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + --primary: 217.2 91.2% 59.8%; + --primary-foreground: 222.2 47.4% 11.2%; + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --ring: 224.3 76.3% 48%; + --divider: rgba(159 166 173 / 0.16); + } } @layer base { - * { - @apply border-border; - --header-height: 3.5rem; - --navigation-width: min(25%, 300px); - } - body { - @apply bg-background text-foreground; - } - .link { - @apply text-sky-400; - @apply underline; - } + * { + @apply border-border; + --header-height: 3.5rem; + --navigation-width: min(25%, 300px); + } + body { + @apply bg-background text-foreground; + } + .link { + @apply text-sky-400; + @apply underline; + } } diff --git a/Website/src/hooks.server.ts b/Website/src/hooks.server.ts new file mode 100644 index 000000000..0ee452afe --- /dev/null +++ b/Website/src/hooks.server.ts @@ -0,0 +1,18 @@ +import { PUBLIC_DAWNSHARD_API_URL } from '$env/static/public'; +import { DAWNSHARD_API_URL_SSR } from '$env/static/private'; + +const publicApiUrl = new URL(PUBLIC_DAWNSHARD_API_URL); +const internalApiUrl = new URL(DAWNSHARD_API_URL_SSR); + +export const handleFetch = async ({ request, fetch }) => { + const requestUrl = new URL(request.url); + if (requestUrl.origin === publicApiUrl.origin) { + // Rewrite URL to internal + const newUrl = request.url.replace(publicApiUrl.origin, internalApiUrl.origin); + console.log('Rewrote URL', requestUrl.toString(), 'to', newUrl.toString()); + + return await fetch(new Request(newUrl, request)); + } + + return await fetch(request); +}; diff --git a/Website/src/lib/components/routes.svelte b/Website/src/lib/components/routes.svelte index a8742a43d..2a7f8e454 100644 --- a/Website/src/lib/components/routes.svelte +++ b/Website/src/lib/components/routes.svelte @@ -1,15 +1,15 @@ {#each routeGroups as routeGroup} -

{routeGroup.title}

- {#each routeGroup.routes as route} - - {/each} +

{routeGroup.title}

+ {#each routeGroup.routes as route} + + {/each} {/each} diff --git a/Website/src/lib/components/typography.svelte b/Website/src/lib/components/typography.svelte index 22a568113..f76f31a18 100644 --- a/Website/src/lib/components/typography.svelte +++ b/Website/src/lib/components/typography.svelte @@ -1,18 +1,18 @@ {#if typography === 'h1'} -

+

{:else if typography === 'h2'} -

+

{:else if typography === 'h3'} -

+

{:else if typography === 'h4'} -

+

{/if} diff --git a/Website/src/lib/cookies.ts b/Website/src/lib/cookies.ts new file mode 100644 index 000000000..c7768e525 --- /dev/null +++ b/Website/src/lib/cookies.ts @@ -0,0 +1,6 @@ +enum Cookies { + ChallengeString = 'challengeString', + IdToken = 'idToken' +} + +export default Cookies; diff --git a/Website/src/lib/jwt.ts b/Website/src/lib/jwt.ts new file mode 100644 index 000000000..a7106eb28 --- /dev/null +++ b/Website/src/lib/jwt.ts @@ -0,0 +1,44 @@ +export type JwtMetadata = + | { valid: false } + | { + valid: true; + expiryTimestampMs: number; + }; + +const getJwtMetadata = (jwt: string): JwtMetadata => { + const segments = jwt.split('.'); + if (segments.length < 3) { + return { valid: false }; + } + + const payload = segments[1]; + let payloadObject; + + try { + const decodedPayload = atob(payload); + payloadObject = JSON.parse(decodedPayload); + } catch { + return { valid: false }; + } + + // We only care here if the token is expired. We are not validating signatures, etc. because that + // can be left to the main API server. This is used to inform non-security-critical things like + // whether to show the login button, or how long to store the JWT in a cookie for. + const exp = payloadObject.exp; + if (!exp || !Number.isInteger(exp)) { + return { valid: false }; + } + + const expDate = new Date(exp * 1000); + if (!Number.isInteger(expDate.valueOf())) { + return { valid: false }; + } + + return { + valid: true, + expiry: expDate, + expiryTimestampMs: exp * 1000 + }; +}; + +export default getJwtMetadata; diff --git a/Website/src/lib/routes.ts b/Website/src/lib/routes.ts index c1fd4b2be..b641f3022 100644 --- a/Website/src/lib/routes.ts +++ b/Website/src/lib/routes.ts @@ -3,22 +3,22 @@ import type { ComponentType } from 'svelte'; import * as Icons from './icons'; export type RouteGroup = { - title: string; - routes: Route[]; + title: string; + routes: Route[]; }; export type Route = { - title: string; - href: string; - icon: ComponentType; + title: string; + href: string; + icon: ComponentType; }; export const routeGroups: RouteGroup[] = [ - { - title: 'Information', - routes: [ - { title: 'Home', href: '/', icon: Icons.Home }, - { title: 'News', href: '/news', icon: Icons.Newspaper } - ] - } + { + title: 'Information', + routes: [ + { title: 'Home', href: '/', icon: Icons.Home }, + { title: 'News', href: '/news', icon: Icons.Newspaper } + ] + } ]; diff --git a/Website/src/routes/(main)/(home)/+page.svelte b/Website/src/routes/(main)/(home)/+page.svelte index 618346eed..52126dce0 100644 --- a/Website/src/routes/(main)/(home)/+page.svelte +++ b/Website/src/routes/(main)/(home)/+page.svelte @@ -1,51 +1,51 @@
@@ -58,8 +58,8 @@ possible to progress largely as normal.

-
-
+
+
How to play

Setting up access to the server involves configuring a modified version of the original @@ -72,21 +72,8 @@ community Discord server.

-
+
Android -
  1. Ensure you have the original Dragalia Lost app installed. The Dragalipatch app works by @@ -112,6 +99,21 @@ on the screen that follows.
+
+ +
iOS

For information on how to play on iOS, please see{' '} @@ -214,17 +216,17 @@

diff --git a/Website/src/routes/(main)/(home)/acknowledgement.svelte b/Website/src/routes/(main)/(home)/acknowledgement.svelte index fc9128af6..672a246f8 100644 --- a/Website/src/routes/(main)/(home)/acknowledgement.svelte +++ b/Website/src/routes/(main)/(home)/acknowledgement.svelte @@ -1,13 +1,13 @@
  • - - - -

    {name},

    + + + +

    {name},

  • diff --git a/Website/src/routes/(main)/(home)/icons/buyMeACoffee.svelte b/Website/src/routes/(main)/(home)/icons/buyMeACoffee.svelte index 82c15c645..70edf70a9 100644 --- a/Website/src/routes/(main)/(home)/icons/buyMeACoffee.svelte +++ b/Website/src/routes/(main)/(home)/icons/buyMeACoffee.svelte @@ -1,5 +1,5 @@ Buy Me A CoffeeBuy Me A Coffee diff --git a/Website/src/routes/(main)/(home)/icons/discord.svelte b/Website/src/routes/(main)/(home)/icons/discord.svelte index 3e032833a..d627c3ace 100644 --- a/Website/src/routes/(main)/(home)/icons/discord.svelte +++ b/Website/src/routes/(main)/(home)/icons/discord.svelte @@ -1,5 +1,5 @@ diff --git a/Website/src/routes/(main)/(home)/icons/github.svelte b/Website/src/routes/(main)/(home)/icons/github.svelte index 825e5815a..6434fac4d 100644 --- a/Website/src/routes/(main)/(home)/icons/github.svelte +++ b/Website/src/routes/(main)/(home)/icons/github.svelte @@ -1,7 +1,7 @@ diff --git a/Website/src/routes/(main)/(home)/icons/patreon.svelte b/Website/src/routes/(main)/(home)/icons/patreon.svelte index 6431c9fae..343672f5b 100644 --- a/Website/src/routes/(main)/(home)/icons/patreon.svelte +++ b/Website/src/routes/(main)/(home)/icons/patreon.svelte @@ -1,19 +1,19 @@ - + /> diff --git a/Website/src/routes/(main)/(home)/linkButton.svelte b/Website/src/routes/(main)/(home)/linkButton.svelte index 982b30fa3..03a876953 100644 --- a/Website/src/routes/(main)/(home)/linkButton.svelte +++ b/Website/src/routes/(main)/(home)/linkButton.svelte @@ -1,14 +1,14 @@ diff --git a/Website/src/routes/(main)/+layout.server.ts b/Website/src/routes/(main)/+layout.server.ts new file mode 100644 index 000000000..e75355a5a --- /dev/null +++ b/Website/src/routes/(main)/+layout.server.ts @@ -0,0 +1,25 @@ +import type { LayoutServerLoad } from './$types'; +import getJwtMetadata from '$lib/jwt'; +import Cookies from '$lib/cookies'; + +export const load: LayoutServerLoad = ({ cookies, depends }) => { + depends(`cookie:${Cookies.IdToken}`); + + const idToken = cookies.get(Cookies.IdToken); + if (!idToken) { + return { + hasValidJwt: false + }; + } + + const jwtMetadata = getJwtMetadata(idToken); + if (!jwtMetadata.valid || Date.now() > jwtMetadata.expiryTimestampMs) { + return { + hasValidJwt: false + }; + } + + return { + hasValidJwt: true + }; +}; diff --git a/Website/src/routes/(main)/+layout.svelte b/Website/src/routes/(main)/+layout.svelte index 0f1158f98..a745dfd41 100644 --- a/Website/src/routes/(main)/+layout.svelte +++ b/Website/src/routes/(main)/+layout.svelte @@ -1,14 +1,17 @@ -
    +
    - +
    diff --git a/Website/src/routes/(main)/header.svelte b/Website/src/routes/(main)/header.svelte index 9584255e1..b33ab9ea0 100644 --- a/Website/src/routes/(main)/header.svelte +++ b/Website/src/routes/(main)/header.svelte @@ -1,84 +1,71 @@ {#if enhance} - - + {:else} - + {/if} diff --git a/Website/src/routes/(main)/headerContents.svelte b/Website/src/routes/(main)/headerContents.svelte new file mode 100644 index 000000000..a6334b3ff --- /dev/null +++ b/Website/src/routes/(main)/headerContents.svelte @@ -0,0 +1,34 @@ + + +

    Dawnshard

    +
    + + +{#if hasValidJwt} + +{:else} + +{/if} diff --git a/Website/src/routes/(main)/login/+page.server.ts b/Website/src/routes/(main)/login/+page.server.ts new file mode 100644 index 000000000..fee8b27c6 --- /dev/null +++ b/Website/src/routes/(main)/login/+page.server.ts @@ -0,0 +1,40 @@ +import { redirect } from '@sveltejs/kit'; +import { Buffer } from 'buffer'; +import type { PageServerLoad } from './$types'; +import { PUBLIC_BAAS_URL, PUBLIC_BAAS_CLIENT_ID, PUBLIC_DAWNSHARD_URL } from '$env/static/public'; + +const redirectUri = new URL('oauth', PUBLIC_DAWNSHARD_URL); + +const getChallengeString = () => { + const buffer = new Uint8Array(8); + crypto.getRandomValues(buffer); + return Array.from(buffer, (dec) => dec.toString(16).padStart(2, '0')).join(''); +}; + +const getUrlSafeBase64Hash = async (input: string) => { + const buffer = new TextEncoder().encode(input); + const hashBuffer = await crypto.subtle.digest('SHA-256', buffer); + const base64 = Buffer.from(new Uint8Array(hashBuffer)).toString('base64'); + return base64.replace('+', '-').replace('/', '_').replace('=', ''); +}; + +export const load: PageServerLoad = async ({ cookies, url }) => { + const originalPage = url.searchParams.get('originalPage') ?? '/'; + + const challengeStringValue = getChallengeString(); + cookies.set('challengeString', challengeStringValue, { path: '/' }); + + const queryParams = new URLSearchParams({ + client_id: PUBLIC_BAAS_CLIENT_ID, + redirect_uri: redirectUri.toString(), + response_type: 'session_token_code', + scope: 'user user.birthday openid', + language: 'en-US', + session_token_code_challenge: await getUrlSafeBase64Hash(challengeStringValue), + session_token_code_challenge_method: 'S256', + state: JSON.stringify({ originalPage }) + }); + + const baasUrl = new URL(`/custom/thirdparty/auth?${queryParams}`, PUBLIC_BAAS_URL); + redirect(302, baasUrl); +}; diff --git a/Website/src/routes/(main)/logout/+page.server.ts b/Website/src/routes/(main)/logout/+page.server.ts new file mode 100644 index 000000000..5dec19bc0 --- /dev/null +++ b/Website/src/routes/(main)/logout/+page.server.ts @@ -0,0 +1,9 @@ +import type { PageServerLoad } from './$types'; +import Cookies from '$lib/cookies'; +import { redirect } from '@sveltejs/kit'; + +export const load: PageServerLoad = async ({ cookies }) => { + cookies.delete(Cookies.IdToken, { path: '/' }); + + redirect(302, '/'); +}; diff --git a/Website/src/routes/(main)/navigation/+page@.svelte b/Website/src/routes/(main)/navigation/+page@.svelte index 7039a19d0..e12d57af1 100644 --- a/Website/src/routes/(main)/navigation/+page@.svelte +++ b/Website/src/routes/(main)/navigation/+page@.svelte @@ -1,8 +1,8 @@ diff --git a/Website/src/routes/(main)/news/+page.svelte b/Website/src/routes/(main)/news/+page.svelte new file mode 100644 index 000000000..e69de29bb diff --git a/Website/src/routes/(main)/oauth/+page.server.ts b/Website/src/routes/(main)/oauth/+page.server.ts new file mode 100644 index 000000000..97fd74f89 --- /dev/null +++ b/Website/src/routes/(main)/oauth/+page.server.ts @@ -0,0 +1,115 @@ +import type { PageServerLoad } from './$types'; +import { PUBLIC_BAAS_URL, PUBLIC_BAAS_CLIENT_ID } from '$env/static/public'; +import Cookies from '$lib/cookies'; +import { redirect } from '@sveltejs/kit'; +import getJwtMetadata from '$lib/jwt'; + +const sessionTokenUrl = new URL('/connect/1.0.0/api/session_token', PUBLIC_BAAS_URL); +const sdkTokenUrl = new URL('/1.0.0/gateway/sdk/token', PUBLIC_BAAS_URL); + +const getOriginalPage = (url: URL) => { + const stateJson = url.searchParams.get('state'); + if (!stateJson) { + return null; + } + + let stateObject; + try { + stateObject = JSON.parse(stateJson); + } catch { + return null; + } + + if (!stateObject.originalPage) { + return null; + } + + return stateObject.originalPage; +}; + +export const load: PageServerLoad = async ({ cookies, url, fetch }) => { + const challengeString = cookies.get(Cookies.ChallengeString); + + if (!challengeString) { + throw new Error('Failed to get challenge string'); + } + + const sessionTokenCode = url.searchParams.get('session_token_code'); + + if (!sessionTokenCode) { + throw new Error('Failed to get session token code'); + } + + const sessionTokenCodeParams = new URLSearchParams({ + client_id: PUBLIC_BAAS_CLIENT_ID, + session_token_code: sessionTokenCode, + session_token_code_verifier: challengeString + }); + + const sessionTokenResponse = await fetch(sessionTokenUrl, { + method: 'POST', + body: sessionTokenCodeParams + }); + + if (!sessionTokenResponse.ok) { + throw new Error('Session token request failed'); + } + + const sessionTokenResponseBody = await sessionTokenResponse.json(); + const sessionToken = sessionTokenResponseBody.session_token; + + if (!sessionToken) { + throw new Error('Failed to parse session token response'); + } + + const sdkTokenRequest = { + client_id: PUBLIC_BAAS_CLIENT_ID, + session_token: sessionToken + }; + + const sdkTokenResponse = await fetch(sdkTokenUrl, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json' + }, + body: JSON.stringify(sdkTokenRequest) + }); + + if (!sdkTokenResponse.ok) { + throw new Error('SDK token request failed'); + } + + const sdkTokenResponseBody = await sdkTokenResponse.json(); + const idToken = sdkTokenResponseBody.idToken; + + if (!idToken) { + throw new Error('Failed to parse SDK token response'); + } + + const jwtMetadata = getJwtMetadata(idToken); + if (!jwtMetadata.valid) { + throw Error('Invalid JWT returned'); + } + + console.log(jwtMetadata); + + const maxAge = (jwtMetadata.expiryTimestampMs - Date.now()) / 1000; + + cookies.set(Cookies.IdToken, idToken, { + path: '/', + sameSite: 'lax', + httpOnly: true, + maxAge, + ...(import.meta.env.MODE !== 'development' && { + secure: true + }) + }); + + cookies.delete('challengeString', { + path: '/' + }); + + const destination = getOriginalPage(url) ?? '/'; + redirect(302, destination); +}; diff --git a/Website/src/routes/(main)/sideNav.svelte b/Website/src/routes/(main)/sideNav.svelte index 7f4417979..9bdd8ae28 100644 --- a/Website/src/routes/(main)/sideNav.svelte +++ b/Website/src/routes/(main)/sideNav.svelte @@ -1,21 +1,21 @@ diff --git a/Website/src/routes/(main)/user.ts b/Website/src/routes/(main)/user.ts new file mode 100644 index 000000000..17911602a --- /dev/null +++ b/Website/src/routes/(main)/user.ts @@ -0,0 +1,8 @@ +import { z } from 'zod'; + +export const userSchema = z.object({ + viewerId: z.number().int(), + name: z.string() +}); + +export type User = z.infer; diff --git a/Website/src/routes/+layout.svelte b/Website/src/routes/+layout.svelte index 17abf18a5..e163a965b 100644 --- a/Website/src/routes/+layout.svelte +++ b/Website/src/routes/+layout.svelte @@ -1,5 +1,5 @@ diff --git a/Website/svelte.config.js b/Website/svelte.config.js index c9d691feb..4d0172766 100644 --- a/Website/svelte.config.js +++ b/Website/svelte.config.js @@ -3,20 +3,20 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: [vitePreprocess({})], + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: [vitePreprocess({})], - kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter(), - alias: { - $shadcn: './src/lib/shadcn', - $static: './static' - } - } + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter(), + alias: { + $shadcn: './src/lib/shadcn', + $static: './static' + } + } }; export default config; diff --git a/Website/tailwind.config.js b/Website/tailwind.config.js index 3ff3115e9..ea97c4816 100644 --- a/Website/tailwind.config.js +++ b/Website/tailwind.config.js @@ -2,68 +2,68 @@ import { fontFamily } from 'tailwindcss/defaultTheme'; /** @type {import('tailwindcss').Config} */ const config = { - darkMode: 'selector', - content: ['./src/**/*.{html,js,svelte,ts}'], - safelist: ['dark'], - theme: { - container: { - center: true, - padding: '2rem', - screens: { - '2xl': '1400px' - } - }, - extend: { - colors: { - border: 'hsl(var(--border) / )', - input: 'hsl(var(--input) / )', - ring: 'hsl(var(--ring) / )', - background: 'hsl(var(--background) / )', - foreground: 'hsl(var(--foreground) / )', - primary: { - DEFAULT: 'hsl(var(--primary) / )', - foreground: 'hsl(var(--primary-foreground) / )' - }, - secondary: { - DEFAULT: 'hsl(var(--secondary) / )', - foreground: 'hsl(var(--secondary-foreground) / )' - }, - destructive: { - DEFAULT: 'hsl(var(--destructive) / )', - foreground: 'hsl(var(--destructive-foreground) / )' - }, - muted: { - DEFAULT: 'hsl(var(--muted) / )', - foreground: 'hsl(var(--muted-foreground) / )' - }, - accent: { - DEFAULT: 'hsl(var(--accent) / )', - foreground: 'hsl(var(--accent-foreground) / )' - }, - popover: { - DEFAULT: 'hsl(var(--popover) / )', - foreground: 'hsl(var(--popover-foreground) / )' - }, - card: { - DEFAULT: 'hsl(var(--card) / )', - foreground: 'hsl(var(--card-foreground) / )' - } - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)' - }, - fontFamily: { - sans: [...fontFamily.sans] - } - } - }, - variants: { - extend: { - backgroundImage: ['dark'] - } - } + darkMode: 'selector', + content: ['./src/**/*.{html,js,svelte,ts}'], + safelist: ['dark'], + theme: { + container: { + center: true, + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + colors: { + border: 'hsl(var(--border) / )', + input: 'hsl(var(--input) / )', + ring: 'hsl(var(--ring) / )', + background: 'hsl(var(--background) / )', + foreground: 'hsl(var(--foreground) / )', + primary: { + DEFAULT: 'hsl(var(--primary) / )', + foreground: 'hsl(var(--primary-foreground) / )' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary) / )', + foreground: 'hsl(var(--secondary-foreground) / )' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive) / )', + foreground: 'hsl(var(--destructive-foreground) / )' + }, + muted: { + DEFAULT: 'hsl(var(--muted) / )', + foreground: 'hsl(var(--muted-foreground) / )' + }, + accent: { + DEFAULT: 'hsl(var(--accent) / )', + foreground: 'hsl(var(--accent-foreground) / )' + }, + popover: { + DEFAULT: 'hsl(var(--popover) / )', + foreground: 'hsl(var(--popover-foreground) / )' + }, + card: { + DEFAULT: 'hsl(var(--card) / )', + foreground: 'hsl(var(--card-foreground) / )' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + fontFamily: { + sans: [...fontFamily.sans] + } + } + }, + variants: { + extend: { + backgroundImage: ['dark'] + } + } }; export default config; diff --git a/Website/tests/test.ts b/Website/tests/test.ts index 5816be413..589fab7b0 100644 --- a/Website/tests/test.ts +++ b/Website/tests/test.ts @@ -1,6 +1,6 @@ import { expect, test } from '@playwright/test'; test('index page has expected h1', async ({ page }) => { - await page.goto('/'); - await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); + await page.goto('/'); + await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); }); diff --git a/Website/tsconfig.json b/Website/tsconfig.json index 82081abc3..34aadc028 100644 --- a/Website/tsconfig.json +++ b/Website/tsconfig.json @@ -1,18 +1,18 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in } diff --git a/Website/vite.config.ts b/Website/vite.config.ts index c098bb5b0..64b9db012 100644 --- a/Website/vite.config.ts +++ b/Website/vite.config.ts @@ -3,8 +3,14 @@ import { enhancedImages } from '@sveltejs/enhanced-img'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [sveltekit(), enhancedImages()], - server: { - port: 3001 - } + plugins: [sveltekit(), enhancedImages()], + server: { + port: 3001, + proxy: { + '/api': { + target: 'http://localhost:5000', + changeOrigin: true + } + } + } }); diff --git a/docker-compose.dcproj b/docker-compose.dcproj index 801e27518..ab710c3f9 100644 --- a/docker-compose.dcproj +++ b/docker-compose.dcproj @@ -1,19 +1,21 @@ - - 2.1 - Linux - 6e4bcc4d-1998-4135-a474-681ec6e6af57 - None - {Scheme}://localhost:{ServicePort}/weatherforecast - dragaliaapi - dragaliaapi - - - - - docker-compose.yml - - - + + 2.1 + Linux + False + ab163a1e-1339-4cfc-82ad-e59ecfada3c2 + LaunchBrowser + {Scheme}://localhost:{ServicePort} + dragaliaapi + + + + docker-compose.yml + + + + + + \ No newline at end of file diff --git a/docker-compose.override.yml b/docker-compose.override.yml index fe4d2317c..2fe8f0757 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -4,6 +4,7 @@ services: dragaliaapi: environment: - ASPNETCORE_ENVIRONMENT=Development -# photonstatemanager: -# environment: -# - ASPNETCORE_ENVIRONMENT=Development \ No newline at end of file + + photonstatemanager: + environment: + - ASPNETCORE_ENVIRONMENT=Development \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index b2142ec33..6c224f28d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,15 +17,15 @@ services: - PostgresOptions__Database=$POSTGRES_DB ports: - "80:8080" - - "5000:8080" links: - postgres env_file: - .env + profiles: ["dragaliaapi"] photonstatemanager: hostname: photonstatemanager - image: ${DOCKER_REGISTRY-}photonstatemanager + image: photonstatemanager build: context: . dockerfile: PhotonStateManager/DragaliaAPI.Photon.StateManager/Dockerfile @@ -33,8 +33,7 @@ services: - "5001:8080" env_file: - .env - profiles: - - photon + profiles: ["photonstatemanager"] postgres: hostname: postgres @@ -52,13 +51,3 @@ services: ports: - "6379:6379" - "8001:8001" - - #seq: - # image: datalust/seq:latest - # ports: - # - 5340:80 - # - 5341:5341 - # environment: - # ACCEPT_EULA: "Y" - # volumes: - # - logs:/data diff --git a/global.json b/global.json index 75a80e90b..4e08f9588 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.0", - "rollForward": "latestMinor" + "version": "8.0.300", + "rollForward": "latestFeature" } } \ No newline at end of file diff --git a/launchSettings.json b/launchSettings.json new file mode 100644 index 000000000..dc176bd3c --- /dev/null +++ b/launchSettings.json @@ -0,0 +1,23 @@ +{ + "profiles": { + "DragaliaAPI": { + "commandName": "DockerCompose", + "commandVersion": "1.0", + "composeProfile": { + "includes": [ + "dragaliaapi" + ] + } + }, + "DragaliaAPI + PhotonStateManager": { + "commandName": "DockerCompose", + "commandVersion": "1.0", + "composeProfile": { + "includes": [ + "dragaliaapi", + "photonstatemanager" + ] + } + } + } +} \ No newline at end of file