commit 6f4604c5f5f96abe585f5ed643671e964509ec73 Author: AzenKain Date: Thu Jun 25 22:52:26 2026 +0700 feat: v4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..35e98fb --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.aar filter=lfs diff=lfs merge=lfs -text diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..d7bf867 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,125 @@ +<<<<<<< HEAD +name: Build +run-name: ${{ gitea.actor }} build 🚀 + +on: + push: + branches: + - master + + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set Up JDK + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + + - name: Setup Android SDK + uses: amyu/setup-android@v5 + with: + cache-disabled: true + + - name: Grant execute permissions + run: | + chmod +x ./gradlew + chmod +x ./script/release-uploader + + - name: Download AAR manually + run: | + FILE="app/libs/firefly-go.aar" + URL="https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/media/branch/master/app/libs/firefly-go.aar" + echo "📥 Downloading $FILE from $URL" + curl -L -o "$FILE" "$URL" + + - name: Build signed release APK + env: + KEYSTORE_PATH: ${{ github.workspace }}/KeyStore.jks + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + run: | + ./gradlew assembleRelease \ + -Pandroid.injected.signing.store.file=$KEYSTORE_PATH \ + -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \ + -Pandroid.injected.signing.key.alias=$KEY_ALIAS \ + -Pandroid.injected.signing.key.password=$KEY_PASSWORD + + - name: Find and rename release APK + run: | + APK_FILE=$(ls app/build/outputs/apk/release/*.apk | head -n 1) + echo "Found APK: $APK_FILE" + mv "$APK_FILE" app/build/outputs/apk/release/firefly_go_android.apk + + - name: Upload release + env: + REPO_TOKEN: ${{ secrets.REPO_TOKEN }} + run: script/release-uploader -token=$REPO_TOKEN -release-url="https://git.kain.io.vn/api/v1/repos/Firefly-Shelter/FireflyGo_Android/releases" -files="app/build/outputs/apk/release/firefly_go_android.apk" +======= +name: Build +run-name: ${{ gitea.actor }} build 🚀 + +on: + push: + branches: + - master + + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set Up JDK + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + + - name: Setup Android SDK + uses: amyu/setup-android@v5 + with: + cache-disabled: true + + - name: Grant execute permissions + run: | + chmod +x ./gradlew + chmod +x ./script/release-uploader + + - name: Download AAR manually + run: | + FILE="app/libs/firefly-go.aar" + URL="https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Android/media/branch/master/app/libs/firefly-go.aar" + echo "📥 Downloading $FILE from $URL" + curl -L -o "$FILE" "$URL" + + - name: Build signed release APK + env: + KEYSTORE_PATH: ${{ github.workspace }}/KeyStore.jks + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + KEY_ALIAS: ${{ secrets.KEY_ALIAS }} + KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} + run: | + ./gradlew assembleRelease \ + -Pandroid.injected.signing.store.file=$KEYSTORE_PATH \ + -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \ + -Pandroid.injected.signing.key.alias=$KEY_ALIAS \ + -Pandroid.injected.signing.key.password=$KEY_PASSWORD + + - name: Find and rename release APK + run: | + APK_FILE=$(ls app/build/outputs/apk/release/*.apk | head -n 1) + echo "Found APK: $APK_FILE" + mv "$APK_FILE" app/build/outputs/apk/release/firefly_go_android.apk + + - name: Upload release + env: + REPO_TOKEN: ${{ secrets.REPO_TOKEN }} + run: script/release-uploader -token=$REPO_TOKEN -release-url="https://git.kain.io.vn/api/v1/repos/Firefly-Shelter/FireflyGo_Android/releases" -files="app/build/outputs/apk/release/firefly_go_android.apk" +>>>>>>> 2459650 (feat: v4) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..591f584 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/app/release +/app/build +/captures +.externalNativeBuild +.cxx +local.properties +.history/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..c698716 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +FireflyGoAndroid \ No newline at end of file diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..7643783 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,123 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml new file mode 100644 index 0000000..91f9558 --- /dev/null +++ b/.idea/deviceManager.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..91ce435 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..f0c6ad0 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,50 @@ + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..c224ad5 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/markdown.xml b/.idea/markdown.xml new file mode 100644 index 0000000..c61ea33 --- /dev/null +++ b/.idea/markdown.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..6c5519f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/KeyStore.jks b/KeyStore.jks new file mode 100644 index 0000000..2a749d7 Binary files /dev/null and b/KeyStore.jks differ diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..884a392 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,111 @@ +@file:Suppress("UnstableApiUsage") + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) +} +kotlin { + jvmToolchain(17) +} + +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) + } +} +android { + namespace = "com.example.firefly_go_android" + compileSdk = 36 + + defaultConfig { + applicationId = "com.kain344.firefly_go_android" + minSdk = 24 + targetSdk = 35 + versionCode = 2 + versionName = "1.0.1" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + + } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + ndk { + abiFilters.addAll(listOf("arm64-v8a")) + } + } + } + + buildFeatures { + compose = true + viewBinding = true + } + + composeOptions { + kotlinCompilerExtensionVersion = "1.5.0" + } + buildToolsVersion = "36.0.0" + ndkVersion = "27.2.12479018" + dependenciesInfo { + includeInApk = false + includeInBundle = false + } +} + +dependencies { + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx.v293) + implementation(libs.androidx.activity.compose.v1101) + // Compose UI + implementation(libs.ui) + implementation(libs.ui.graphics) + implementation(libs.ui.tooling.preview) + + // Foundation & Animation + implementation(libs.androidx.foundation) + implementation(libs.androidx.animation) + implementation(libs.androidx.animation.core) + + // Material & Material3 + implementation(libs.androidx.material) + implementation(libs.androidx.material.icons.extended) + implementation(libs.material3) + implementation(libs.androidx.material3.window.size.class1) + + // Auto updater library + implementation(libs.autoupdater) + +<<<<<<< HEAD +======= + // OkHttp Client + implementation("com.squareup.okhttp3:okhttp:4.12.0") + + // Chrome Custom Tabs + implementation("androidx.browser:browser:1.8.0") + +>>>>>>> 2459650 (feat: v4) + // Unit Test + testImplementation(libs.junit) + + // Android Instrumentation Test + androidTestImplementation(libs.androidx.junit.v130) + androidTestImplementation(libs.androidx.espresso.core.v370) + androidTestImplementation(libs.ui.test.junit4) + + // Debug + debugImplementation(libs.ui.tooling) + debugImplementation(libs.ui.test.manifest) + + // Local AAR library + implementation(files("libs/firefly-go.aar")) + + implementation(libs.slf4j.android) +} diff --git a/app/libs/firefly-go-sources.jar b/app/libs/firefly-go-sources.jar new file mode 100644 index 0000000..49e9892 Binary files /dev/null and b/app/libs/firefly-go-sources.jar differ diff --git a/app/libs/firefly-go.aar b/app/libs/firefly-go.aar new file mode 100644 index 0000000..d91e493 Binary files /dev/null and b/app/libs/firefly-go.aar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/firefly_go_android/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/example/firefly_go_android/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..5c62642 --- /dev/null +++ b/app/src/androidTest/java/com/example/firefly_go_android/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.firefly_go_android + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.example.fireflypsandorid", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8d44fbb --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,138 @@ +<<<<<<< HEAD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +======= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 2459650 (feat: v4) + \ No newline at end of file diff --git a/app/src/main/assets/data-in-game.json b/app/src/main/assets/data-in-game.json new file mode 100644 index 0000000..16920c6 --- /dev/null +++ b/app/src/main/assets/data-in-game.json @@ -0,0 +1,588 @@ +{ + "leader": 2, + "lineups": { + "0": 1409, + "1": 1407, + "2": 1406, + "3": 1403 + }, + "position": { + "x": -4030, + "z": -13006, + "y": 0, + "rot_y": 270000 + }, + "scene": { + "plane_id": 10000, + "floor_id": 10000000, + "entry_id": 100000104 + }, + "player_outfit": [ + 1003 + ], + "char_path": { + "main": 8008, + "march_7": 1224 + }, + "char_enhanced": { + "1004": 1, + "1005": 0, + "1006": 1, + "1102": 1, + "1205": 1, + "1212": 1, + "1217": 1, + "1306": 1, + "1307": 1, + "1310": 1 + }, + "challenge": { + "challenge_id": 0, + "skip_half": 0, + "random_seed": 0, + "blessings": [], + "is_in_challenge": false, + "current_stage_id": 0, + "path_resonance_id": 0, + "maze_buff": 0, + "first_lineup": [], + "second_lineup": [] + }, + "challenge_tierce": { + "challenge_id": 0, + "current_stage_id": 0, + "maze_buff": 0, + "path_resonance_id": 0, + "is_in_challenge": false, + "is_single_stage": false, + "challenge_tierce_data": { + "20245": { + "stage_1": { + "blessing": 3031361, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 40000, + "lineup": [ + 1407, + 1413, + 1415, + 1409 + ] + }, + "stage_2": { + "blessing": 3031361, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 40000, + "lineup": [ + 1310, + 1225, + 1321, + 1222 + ] + }, + "stage_3": { + "blessing": 3031362, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 40000, + "lineup": [ + 1506, + 1502, + 1501, + 1217 + ] + } + }, + "30185": { + "stage_1": { + "blessing": 3111090, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 3932, + "lineup": [ + 1501, + 1502, + 1414, + 1506 + ] + }, + "stage_2": { + "blessing": 3111085, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 3913, + "lineup": [ + 1310, + 1225, + 1303, + 1321 + ] + }, + "stage_3": { + "blessing": 3111071, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 4000, + "lineup": [ + 1415, + 1413, + 1407, + 1409 + ] + } + }, + "5213": { + "stage_1": { + "blessing": 0, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1407, + 1413, + 1415, + 1409 + ] + }, + "stage_2": { + "blessing": 0, + "cycle_count": 1, + "battle_status": 1, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1310, + 1321, + 1225, + 1222 + ] + }, + "stage_3": { + "blessing": 0, + "cycle_count": 0, + "battle_status": 1, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1506, + 1502, + 1501, + 1414 + ] + } + }, + "5313": { + "stage_1": { + "blessing": 0, + "cycle_count": 0, + "battle_status": 3, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1510, + 8001, + 1004, + 1414 + ] + }, + "stage_2": { + "blessing": 0, + "cycle_count": 0, + "battle_status": 0, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1302 + ] + }, + "stage_3": { + "blessing": 0, + "cycle_count": 0, + "battle_status": 0, + "DeadCount": 0, + "score": 0, + "lineup": [ + 1321 + ] + } + } + } + }, + "challenge_peak": { + "current_mode": "Knight", + "group_id": 8, + "is_in_challenge_peak": false, + "challenge_peak_data": { + "1": { + "checkmate_data": { + "challenge_id": 104, + "blessing": 3033006, + "lineup": [ + 1413, + 1409, + 1407, + 1403 + ], + "stage_id": 30501022, + "is_hard_mode": true + }, + "knight_data": { + "current_challenge_id": 103, + "details_data": [ + { + "lineup": [ + 1222, + 1225, + 1310, + 1303 + ], + "stage_id": 30501011, + "challenge_id": 101 + }, + { + "lineup": [ + 1412, + 1414, + 1408, + 1313 + ], + "stage_id": 30501012, + "challenge_id": 102 + }, + { + "lineup": [ + 1407, + 1403, + 1409, + 1413 + ], + "stage_id": 30501013, + "challenge_id": 103 + } + ] + } + }, + "2": { + "checkmate_data": { + "challenge_id": 204, + "blessing": 3033021, + "lineup": [ + 1415, + 1413, + 1409, + 1407 + ], + "stage_id": 30502022, + "is_hard_mode": true + }, + "knight_data": { + "current_challenge_id": 203, + "details_data": [ + { + "lineup": [ + 1302, + 1309, + 1410 + ], + "stage_id": 30502011, + "challenge_id": 201 + }, + { + "lineup": [ + 1221, + 1222 + ], + "stage_id": 30502012, + "challenge_id": 202 + }, + { + "lineup": [ + 1415, + 8001, + 1414, + 1313 + ], + "stage_id": 30502013, + "challenge_id": 203 + } + ] + } + }, + "3": { + "checkmate_data": { + "challenge_id": 304, + "blessing": 3033032, + "lineup": [ + 1222, + 1225, + 1310, + 1321 + ], + "stage_id": 30503021, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 302, + "details_data": [ + { + "lineup": [ + 1003 + ], + "stage_id": 30503011, + "challenge_id": 301 + }, + { + "lineup": [ + 1315 + ], + "stage_id": 30503012, + "challenge_id": 302 + }, + { + "lineup": [ + 8001 + ], + "stage_id": 30503013, + "challenge_id": 303 + } + ] + } + }, + "4": { + "checkmate_data": { + "challenge_id": 404, + "blessing": 3033045, + "lineup": [ + 1310 + ], + "stage_id": 30504021, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 401, + "details_data": [ + { + "lineup": [ + 1302 + ], + "stage_id": 30504011, + "challenge_id": 401 + }, + { + "lineup": [ + 1321 + ], + "stage_id": 30504012, + "challenge_id": 402 + }, + { + "lineup": [ + 1218 + ], + "stage_id": 30504013, + "challenge_id": 403 + } + ] + } + }, + "5": { + "checkmate_data": { + "challenge_id": 504, + "blessing": 3033050, + "lineup": [ + 1415, + 1413, + 1407, + 1409 + ], + "stage_id": 30505021, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 501, + "details_data": [ + { + "lineup": [ + 1310 + ], + "stage_id": 30505011, + "challenge_id": 501 + }, + { + "lineup": [ + 1407 + ], + "stage_id": 30505012, + "challenge_id": 502 + }, + { + "lineup": [ + 1502 + ], + "stage_id": 30505013, + "challenge_id": 503 + } + ] + } + }, + "6": { + "checkmate_data": { + "challenge_id": 604, + "blessing": 3033053, + "lineup": [ + 1505, + 1217, + 1502, + 8001 + ], + "stage_id": 30506021, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 602, + "details_data": [ + { + "lineup": [ + 1309 + ], + "stage_id": 30506011, + "challenge_id": 601 + }, + { + "lineup": [ + 1321, + 1310, + 1225, + 1303 + ], + "stage_id": 30506012, + "challenge_id": 602 + }, + { + "lineup": [ + 1415, + 1413, + 1409, + 1407 + ], + "stage_id": 30506013, + "challenge_id": 603 + } + ] + } + }, + "7": { + "checkmate_data": { + "challenge_id": 704, + "blessing": 3033061, + "lineup": [ + 1505, + 1502, + 1414, + 1410 + ], + "stage_id": 30507021, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 703, + "details_data": [ + { + "lineup": [ + 1414 + ], + "stage_id": 30507011, + "challenge_id": 701 + }, + { + "lineup": [ + 1501 + ], + "stage_id": 30507012, + "challenge_id": 702 + }, + { + "lineup": [ + 1507, + 1222 + ], + "stage_id": 30507013, + "challenge_id": 703 + } + ] + } + }, + "8": { + "checkmate_data": { + "challenge_id": 0, + "blessing": 0, + "lineup": null, + "stage_id": 0, + "is_hard_mode": false + }, + "knight_data": { + "current_challenge_id": 0, + "details_data": null + } + } + } + }, + "theory_craft": { + "hp": { + "1": [ + 200000, + 1000000, + 200000 + ], + "2": [ + 2000000000, + 2000000000, + 2000000000 + ], + "3": [] + }, + "cycle_count": 1, + "stage_id": 30118121, + "mode": false, + "custom_lineup": [] + }, + "profile_data": { + "cur_chat_bubble_id": 220009, + "cur_phone_theme_id": 221012, + "cur_phone_case_id": 254001, + "cur_pam_skin_id": 252000, + "cur_pet_id": 0, + "cur_avatar_player_icon": 202034, + "cur_player_personal_card": 253001, + "cur_signature": "Firefly GO By Kain", + "cur_nickname": "Firefly GO", + "cur_display_avatar": [ + 1310, + 1309, + 1407, + 1413, + 1412 + ], + "cur_is_display_avatar": true + }, + "skin_data": { + "1001": 1100101, + "1310": 1131001, + "1407": 1140701, + "1415": 1141501 + }, + "extra_setting": { + "censorship": false, + "cm": false, + "first_person": false, + "hide_ui": false + } +} \ No newline at end of file diff --git a/app/src/main/assets/freesr-data.json b/app/src/main/assets/freesr-data.json new file mode 100644 index 0000000..a4f6620 --- /dev/null +++ b/app/src/main/assets/freesr-data.json @@ -0,0 +1,18465 @@ +{ + "lightcones": [ + { + "level": 80, + "item_id": 21016, + "rank": 5, + "promotion": 6, + "internal_uid": 0, + "equip_avatar": 1001 + }, + { + "level": 80, + "item_id": 24004, + "rank": 5, + "promotion": 6, + "internal_uid": 1, + "equip_avatar": 1003 + }, + { + "level": 80, + "item_id": 23043, + "rank": 1, + "promotion": 6, + "internal_uid": 2, + "equip_avatar": 1004 + }, + { + "level": 80, + "item_id": 23043, + "rank": 1, + "promotion": 6, + "internal_uid": 3, + "equip_avatar": 1005 + }, + { + "level": 80, + "item_id": 23043, + "rank": 1, + "promotion": 6, + "internal_uid": 4, + "equip_avatar": 1006 + }, + { + "level": 80, + "item_id": 23034, + "rank": 1, + "promotion": 6, + "internal_uid": 5, + "equip_avatar": 1009 + }, + { + "level": 80, + "item_id": 23010, + "rank": 1, + "promotion": 6, + "internal_uid": 6, + "equip_avatar": 1013 + }, + { + "level": 80, + "item_id": 23045, + "rank": 1, + "promotion": 6, + "internal_uid": 7, + "equip_avatar": 1014 + }, + { + "level": 80, + "item_id": 23046, + "rank": 1, + "promotion": 6, + "internal_uid": 8, + "equip_avatar": 1015 + }, + { + "level": 80, + "item_id": 21018, + "rank": 5, + "promotion": 6, + "internal_uid": 9, + "equip_avatar": 1101 + }, + { + "level": 80, + "item_id": 21062, + "rank": 5, + "promotion": 6, + "internal_uid": 10, + "equip_avatar": 1102 + }, + { + "level": 80, + "item_id": 21015, + "rank": 5, + "promotion": 6, + "internal_uid": 11, + "equip_avatar": 1106 + }, + { + "level": 80, + "item_id": 23016, + "rank": 1, + "promotion": 6, + "internal_uid": 12, + "equip_avatar": 1112 + }, + { + "level": 80, + "item_id": 21018, + "rank": 5, + "promotion": 6, + "internal_uid": 13, + "equip_avatar": 1202 + }, + { + "level": 80, + "item_id": 23013, + "rank": 5, + "promotion": 6, + "internal_uid": 14, + "equip_avatar": 1203 + }, + { + "level": 80, + "item_id": 23010, + "rank": 1, + "promotion": 6, + "internal_uid": 15, + "equip_avatar": 1204 + }, + { + "level": 80, + "item_id": 23009, + "rank": 1, + "promotion": 6, + "internal_uid": 16, + "equip_avatar": 1205 + }, + { + "level": 80, + "item_id": 23011, + "rank": 1, + "promotion": 6, + "internal_uid": 17, + "equip_avatar": 1208 + }, + { + "level": 80, + "item_id": 21055, + "rank": 5, + "promotion": 6, + "internal_uid": 18, + "equip_avatar": 1211 + }, + { + "level": 80, + "item_id": 23039, + "rank": 1, + "promotion": 6, + "internal_uid": 19, + "equip_avatar": 1212 + }, + { + "level": 80, + "item_id": 20012, + "rank": 5, + "promotion": 6, + "internal_uid": 20, + "equip_avatar": 1215 + }, + { + "level": 80, + "item_id": 21007, + "rank": 5, + "promotion": 6, + "internal_uid": 21, + "equip_avatar": 1217 + }, + { + "level": 80, + "item_id": 23056, + "rank": 1, + "promotion": 6, + "internal_uid": 22, + "equip_avatar": 1220 + }, + { + "level": 80, + "item_id": 23030, + "rank": 1, + "promotion": 6, + "internal_uid": 23, + "equip_avatar": 1221 + }, + { + "level": 80, + "item_id": 23008, + "rank": 1, + "promotion": 6, + "internal_uid": 24, + "equip_avatar": 1222 + }, + { + "level": 80, + "item_id": 21010, + "rank": 5, + "promotion": 6, + "internal_uid": 25, + "equip_avatar": 1223 + }, + { + "level": 80, + "item_id": 23056, + "rank": 1, + "promotion": 6, + "internal_uid": 26, + "equip_avatar": 1224 + }, + { + "level": 80, + "item_id": 23035, + "rank": 1, + "promotion": 6, + "internal_uid": 27, + "equip_avatar": 1225 + }, + { + "level": 80, + "item_id": 23008, + "rank": 1, + "promotion": 6, + "internal_uid": 28, + "equip_avatar": 1301 + }, + { + "level": 1, + "item_id": 20013, + "rank": 5, + "promotion": 0, + "internal_uid": 29, + "equip_avatar": 1302 + }, + { + "level": 80, + "item_id": 21018, + "rank": 5, + "promotion": 6, + "internal_uid": 30, + "equip_avatar": 1303 + }, + { + "level": 80, + "item_id": 23011, + "rank": 1, + "promotion": 6, + "internal_uid": 31, + "equip_avatar": 1304 + }, + { + "level": 80, + "item_id": 23020, + "rank": 1, + "promotion": 6, + "internal_uid": 32, + "equip_avatar": 1305 + }, + { + "level": 80, + "item_id": 23034, + "rank": 1, + "promotion": 6, + "internal_uid": 33, + "equip_avatar": 1306 + }, + { + "level": 80, + "item_id": 23022, + "rank": 1, + "promotion": 6, + "internal_uid": 34, + "equip_avatar": 1307 + }, + { + "level": 80, + "item_id": 23024, + "rank": 1, + "promotion": 6, + "internal_uid": 35, + "equip_avatar": 1308 + }, + { + "level": 80, + "item_id": 21046, + "rank": 5, + "promotion": 6, + "internal_uid": 36, + "equip_avatar": 1309 + }, + { + "level": 80, + "item_id": 23044, + "rank": 1, + "promotion": 6, + "internal_uid": 37, + "equip_avatar": 1310 + }, + { + "level": 80, + "item_id": 23034, + "rank": 1, + "promotion": 6, + "internal_uid": 38, + "equip_avatar": 1313 + }, + { + "level": 80, + "item_id": 23028, + "rank": 5, + "promotion": 6, + "internal_uid": 39, + "equip_avatar": 1314 + }, + { + "level": 80, + "item_id": 21047, + "rank": 5, + "promotion": 6, + "internal_uid": 40, + "equip_avatar": 1315 + }, + { + "level": 80, + "item_id": 23033, + "rank": 1, + "promotion": 6, + "internal_uid": 41, + "equip_avatar": 1317 + }, + { + "level": 80, + "item_id": 23050, + "rank": 1, + "promotion": 6, + "internal_uid": 42, + "equip_avatar": 1321 + }, + { + "level": 80, + "item_id": 23037, + "rank": 1, + "promotion": 6, + "internal_uid": 43, + "equip_avatar": 1401 + }, + { + "level": 80, + "item_id": 23036, + "rank": 1, + "promotion": 6, + "internal_uid": 44, + "equip_avatar": 1402 + }, + { + "level": 80, + "item_id": 21018, + "rank": 5, + "promotion": 6, + "internal_uid": 45, + "equip_avatar": 1403 + }, + { + "level": 80, + "item_id": 23039, + "rank": 1, + "promotion": 6, + "internal_uid": 46, + "equip_avatar": 1404 + }, + { + "level": 80, + "item_id": 23041, + "rank": 1, + "promotion": 6, + "internal_uid": 47, + "equip_avatar": 1405 + }, + { + "level": 80, + "item_id": 23043, + "rank": 1, + "promotion": 6, + "internal_uid": 48, + "equip_avatar": 1406 + }, + { + "level": 80, + "item_id": 23040, + "rank": 1, + "promotion": 6, + "internal_uid": 49, + "equip_avatar": 1407 + }, + { + "level": 80, + "item_id": 23044, + "rank": 1, + "promotion": 6, + "internal_uid": 50, + "equip_avatar": 1408 + }, + { + "level": 80, + "item_id": 23042, + "rank": 1, + "promotion": 6, + "internal_uid": 51, + "equip_avatar": 1409 + }, + { + "level": 80, + "item_id": 23047, + "rank": 1, + "promotion": 6, + "internal_uid": 52, + "equip_avatar": 1410 + }, + { + "level": 80, + "item_id": 23048, + "rank": 1, + "promotion": 6, + "internal_uid": 53, + "equip_avatar": 1412 + }, + { + "level": 80, + "item_id": 23049, + "rank": 1, + "promotion": 6, + "internal_uid": 54, + "equip_avatar": 1413 + }, + { + "level": 80, + "item_id": 23051, + "rank": 1, + "promotion": 6, + "internal_uid": 55, + "equip_avatar": 1414 + }, + { + "level": 80, + "item_id": 23052, + "rank": 1, + "promotion": 6, + "internal_uid": 56, + "equip_avatar": 1415 + }, + { + "level": 80, + "item_id": 23053, + "rank": 1, + "promotion": 6, + "internal_uid": 57, + "equip_avatar": 1501 + }, + { + "level": 80, + "item_id": 23054, + "rank": 1, + "promotion": 6, + "internal_uid": 58, + "equip_avatar": 1502 + }, + { + "level": 80, + "item_id": 23056, + "rank": 1, + "promotion": 6, + "internal_uid": 59, + "equip_avatar": 1504 + }, + { + "level": 80, + "item_id": 23058, + "rank": 1, + "promotion": 6, + "internal_uid": 60, + "equip_avatar": 1505 + }, + { + "level": 80, + "item_id": 23057, + "rank": 1, + "promotion": 6, + "internal_uid": 61, + "equip_avatar": 1506 + }, + { + "level": 80, + "item_id": 23059, + "rank": 1, + "promotion": 6, + "internal_uid": 62, + "equip_avatar": 1507 + }, + { + "level": 80, + "item_id": 23061, + "rank": 1, + "promotion": 6, + "internal_uid": 63, + "equip_avatar": 1508 + }, + { + "level": 80, + "item_id": 23062, + "rank": 1, + "promotion": 6, + "internal_uid": 64, + "equip_avatar": 1509 + }, + { + "level": 80, + "item_id": 23060, + "rank": 1, + "promotion": 6, + "internal_uid": 65, + "equip_avatar": 1510 + }, + { + "level": 80, + "item_id": 21018, + "rank": 5, + "promotion": 6, + "internal_uid": 66, + "equip_avatar": 8006 + }, + { + "level": 80, + "item_id": 22006, + "rank": 5, + "promotion": 6, + "internal_uid": 67, + "equip_avatar": 8007 + }, + { + "level": 80, + "item_id": 24005, + "rank": 5, + "promotion": 6, + "internal_uid": 68, + "equip_avatar": 8008 + }, + { + "level": 80, + "item_id": 21064, + "rank": 5, + "promotion": 6, + "internal_uid": 69, + "equip_avatar": 8009 + }, + { + "level": 80, + "item_id": 24006, + "rank": 5, + "promotion": 6, + "internal_uid": 70, + "equip_avatar": 8010 + } + ], + "relics": [ + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 0, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + } + ], + "internal_uid": 1, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + } + ], + "internal_uid": 2, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 4 + } + ], + "internal_uid": 3, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + } + ], + "internal_uid": 4, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 5, + "equip_avatar": 1001 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + } + ], + "internal_uid": 6, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + } + ], + "internal_uid": 7, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + } + ], + "internal_uid": 8, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 9, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 10, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 11, + "equip_avatar": 1003 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + } + ], + "internal_uid": 12, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 13, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 14, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + } + ], + "internal_uid": 15, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + } + ], + "internal_uid": 16, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 1 + } + ], + "internal_uid": 17, + "equip_avatar": 1004 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 1 + } + ], + "internal_uid": 18, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 19, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 7, + "step": 8 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 20, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 21, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 22, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 1 + } + ], + "internal_uid": 23, + "equip_avatar": 1005 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + } + ], + "internal_uid": 24, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 2 + } + ], + "internal_uid": 25, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + } + ], + "internal_uid": 26, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 3 + } + ], + "internal_uid": 27, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 28, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + } + ], + "internal_uid": 29, + "equip_avatar": 1006 + }, + { + "level": 15, + "relic_id": 61141, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + } + ], + "internal_uid": 30, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 61142, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 31, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 61143, + "relic_set_id": 114, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + } + ], + "internal_uid": 32, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 61144, + "relic_set_id": 114, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + } + ], + "internal_uid": 33, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 4 + } + ], + "internal_uid": 34, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 35, + "equip_avatar": 1009 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + } + ], + "internal_uid": 36, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + } + ], + "internal_uid": 37, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + } + ], + "internal_uid": 38, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 8 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + } + ], + "internal_uid": 39, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + } + ], + "internal_uid": 40, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + } + ], + "internal_uid": 41, + "equip_avatar": 1013 + }, + { + "level": 15, + "relic_id": 61261, + "relic_set_id": 126, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 4 + } + ], + "internal_uid": 42, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 61262, + "relic_set_id": 126, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + } + ], + "internal_uid": 43, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 61263, + "relic_set_id": 126, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 6, + "step": 5 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + } + ], + "internal_uid": 44, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 61264, + "relic_set_id": 126, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 45, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 63065, + "relic_set_id": 306, + "main_affix_id": 8, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 46, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 63066, + "relic_set_id": 306, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 47, + "equip_avatar": 1014 + }, + { + "level": 15, + "relic_id": 61081, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + } + ], + "internal_uid": 48, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 61082, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + } + ], + "internal_uid": 49, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 61083, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 50, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 61084, + "relic_set_id": 108, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + } + ], + "internal_uid": 51, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 63095, + "relic_set_id": 309, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + } + ], + "internal_uid": 52, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 63096, + "relic_set_id": 309, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 3 + } + ], + "internal_uid": 53, + "equip_avatar": 1015 + }, + { + "level": 15, + "relic_id": 61141, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 54, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 61142, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + } + ], + "internal_uid": 55, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + } + ], + "internal_uid": 56, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + } + ], + "internal_uid": 57, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 9 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 58, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + } + ], + "internal_uid": 59, + "equip_avatar": 1101 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + } + ], + "internal_uid": 60, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + } + ], + "internal_uid": 61, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 62, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + } + ], + "internal_uid": 63, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 63185, + "relic_set_id": 318, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + } + ], + "internal_uid": 64, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 63186, + "relic_set_id": 318, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + } + ], + "internal_uid": 65, + "equip_avatar": 1102 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + } + ], + "internal_uid": 66, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + } + ], + "internal_uid": 67, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + } + ], + "internal_uid": 68, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + } + ], + "internal_uid": 69, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 4 + } + ], + "internal_uid": 70, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 4, + "step": 8 + } + ], + "internal_uid": 71, + "equip_avatar": 1106 + }, + { + "level": 15, + "relic_id": 61241, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 72, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 61242, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 73, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 61243, + "relic_set_id": 124, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 74, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 61244, + "relic_set_id": 124, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 75, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 63155, + "relic_set_id": 315, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 76, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 63156, + "relic_set_id": 315, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 77, + "equip_avatar": 1107 + }, + { + "level": 15, + "relic_id": 61151, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 7 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 78, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 61152, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + } + ], + "internal_uid": 79, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 61153, + "relic_set_id": 115, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 80, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 61154, + "relic_set_id": 115, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + } + ], + "internal_uid": 81, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 63265, + "relic_set_id": 326, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 82, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 63266, + "relic_set_id": 326, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + } + ], + "internal_uid": 83, + "equip_avatar": 1112 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + } + ], + "internal_uid": 84, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 8 + } + ], + "internal_uid": 85, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + } + ], + "internal_uid": 86, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + } + ], + "internal_uid": 87, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + } + ], + "internal_uid": 88, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + } + ], + "internal_uid": 89, + "equip_avatar": 1202 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 4, + "step": 4 + } + ], + "internal_uid": 90, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + } + ], + "internal_uid": 91, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 92, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 93, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + } + ], + "internal_uid": 94, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + } + ], + "internal_uid": 95, + "equip_avatar": 1203 + }, + { + "level": 15, + "relic_id": 61151, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 96, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 61152, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 0 + } + ], + "internal_uid": 97, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 61153, + "relic_set_id": 115, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 98, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 61154, + "relic_set_id": 115, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 1 + } + ], + "internal_uid": 99, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 63155, + "relic_set_id": 315, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 100, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 63156, + "relic_set_id": 315, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 101, + "equip_avatar": 1204 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 0 + } + ], + "internal_uid": 102, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + } + ], + "internal_uid": 103, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 104, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 4, + "step": 6 + } + ], + "internal_uid": 105, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 63195, + "relic_set_id": 319, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 106, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 63196, + "relic_set_id": 319, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 1 + } + ], + "internal_uid": 107, + "equip_avatar": 1205 + }, + { + "level": 15, + "relic_id": 61131, + "relic_set_id": 113, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + } + ], + "internal_uid": 108, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 61132, + "relic_set_id": 113, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 109, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 61133, + "relic_set_id": 113, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 110, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 61134, + "relic_set_id": 113, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 1 + } + ], + "internal_uid": 111, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 63195, + "relic_set_id": 319, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + } + ], + "internal_uid": 112, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 63196, + "relic_set_id": 319, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + } + ], + "internal_uid": 113, + "equip_avatar": 1208 + }, + { + "level": 15, + "relic_id": 61141, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + } + ], + "internal_uid": 114, + "equip_avatar": 1211 + }, + { + "level": 15, + "relic_id": 61142, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 115, + "equip_avatar": 1211 + }, + { + "level": 15, + "relic_id": 61143, + "relic_set_id": 114, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + } + ], + "internal_uid": 116, + "equip_avatar": 1211 + }, + { + "level": 15, + "relic_id": 61144, + "relic_set_id": 114, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + } + ], + "internal_uid": 117, + "equip_avatar": 1211 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 118, + "equip_avatar": 1211 + }, + { + "level": 15, + "relic_id": 61221, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + } + ], + "internal_uid": 119, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 61222, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 120, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 61223, + "relic_set_id": 122, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 121, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 61224, + "relic_set_id": 122, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + } + ], + "internal_uid": 122, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 63095, + "relic_set_id": 309, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 123, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 63096, + "relic_set_id": 309, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + } + ], + "internal_uid": 124, + "equip_avatar": 1212 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 125, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + } + ], + "internal_uid": 126, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 127, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + } + ], + "internal_uid": 128, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + } + ], + "internal_uid": 129, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 130, + "equip_avatar": 1215 + }, + { + "level": 15, + "relic_id": 61251, + "relic_set_id": 125, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 8 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + } + ], + "internal_uid": 131, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 61252, + "relic_set_id": 125, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 7 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + } + ], + "internal_uid": 132, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 61253, + "relic_set_id": 125, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + } + ], + "internal_uid": 133, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 61254, + "relic_set_id": 125, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + } + ], + "internal_uid": 134, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 135, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 3, + "step": 4 + } + ], + "internal_uid": 136, + "equip_avatar": 1217 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 137, + "equip_avatar": 1218 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 138, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 9 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 139, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + } + ], + "internal_uid": 140, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + } + ], + "internal_uid": 141, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 63265, + "relic_set_id": 326, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 5 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + } + ], + "internal_uid": 142, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 63266, + "relic_set_id": 326, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 143, + "equip_avatar": 1220 + }, + { + "level": 15, + "relic_id": 61201, + "relic_set_id": 120, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 144, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 61202, + "relic_set_id": 120, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 5 + } + ], + "internal_uid": 145, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 61203, + "relic_set_id": 120, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 2 + } + ], + "internal_uid": 146, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 61204, + "relic_set_id": 120, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 147, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 63155, + "relic_set_id": 315, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 148, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 63156, + "relic_set_id": 315, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 4 + } + ], + "internal_uid": 149, + "equip_avatar": 1221 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 150, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + } + ], + "internal_uid": 151, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + } + ], + "internal_uid": 152, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 153, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 154, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 155, + "equip_avatar": 1222 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + } + ], + "internal_uid": 156, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + } + ], + "internal_uid": 157, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + } + ], + "internal_uid": 158, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 4 + } + ], + "internal_uid": 159, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + } + ], + "internal_uid": 160, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 161, + "equip_avatar": 1223 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 2 + } + ], + "internal_uid": 162, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 163, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 2 + } + ], + "internal_uid": 164, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + } + ], + "internal_uid": 165, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 10, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 166, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 167, + "equip_avatar": 1224 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + } + ], + "internal_uid": 168, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + } + ], + "internal_uid": 169, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + } + ], + "internal_uid": 170, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + } + ], + "internal_uid": 171, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + } + ], + "internal_uid": 172, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + } + ], + "internal_uid": 173, + "equip_avatar": 1225 + }, + { + "level": 15, + "relic_id": 61141, + "relic_set_id": 114, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + } + ], + "internal_uid": 174, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 61252, + "relic_set_id": 125, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 175, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 61253, + "relic_set_id": 125, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + } + ], + "internal_uid": 176, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 61144, + "relic_set_id": 114, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + } + ], + "internal_uid": 177, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 178, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + } + ], + "internal_uid": 179, + "equip_avatar": 1301 + }, + { + "level": 15, + "relic_id": 61021, + "relic_set_id": 102, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + } + ], + "internal_uid": 180, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 181, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + } + ], + "internal_uid": 182, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + } + ], + "internal_uid": 183, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 184, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + } + ], + "internal_uid": 185, + "equip_avatar": 1302 + }, + { + "level": 15, + "relic_id": 61181, + "relic_set_id": 118, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 4, + "step": 4 + } + ], + "internal_uid": 186, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 61182, + "relic_set_id": 118, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 0 + } + ], + "internal_uid": 187, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 61183, + "relic_set_id": 118, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 1 + } + ], + "internal_uid": 188, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 61184, + "relic_set_id": 118, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 4 + } + ], + "internal_uid": 189, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 4, + "step": 3 + } + ], + "internal_uid": 190, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 191, + "equip_avatar": 1303 + }, + { + "level": 15, + "relic_id": 61281, + "relic_set_id": 128, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + } + ], + "internal_uid": 192, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 61282, + "relic_set_id": 128, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + } + ], + "internal_uid": 193, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 61283, + "relic_set_id": 128, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + } + ], + "internal_uid": 194, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 61284, + "relic_set_id": 128, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + } + ], + "internal_uid": 195, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 3, + "step": 1 + } + ], + "internal_uid": 196, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + } + ], + "internal_uid": 197, + "equip_avatar": 1304 + }, + { + "level": 15, + "relic_id": 61171, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 9, + "step": 7 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + } + ], + "internal_uid": 198, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 61172, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 199, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 61173, + "relic_set_id": 117, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 200, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 61174, + "relic_set_id": 117, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + } + ], + "internal_uid": 201, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 63065, + "relic_set_id": 306, + "main_affix_id": 10, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + } + ], + "internal_uid": 202, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 63066, + "relic_set_id": 306, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 203, + "equip_avatar": 1305 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 12 + } + ], + "internal_uid": 204, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + } + ], + "internal_uid": 205, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + } + ], + "internal_uid": 206, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + } + ], + "internal_uid": 207, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 17, + "step": 17 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + } + ], + "internal_uid": 208, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + } + ], + "internal_uid": 209, + "equip_avatar": 1306 + }, + { + "level": 15, + "relic_id": 61161, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 4 + } + ], + "internal_uid": 210, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 61162, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 211, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 61163, + "relic_set_id": 116, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 6, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + } + ], + "internal_uid": 212, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 61164, + "relic_set_id": 116, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 1 + } + ], + "internal_uid": 213, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 63225, + "relic_set_id": 322, + "main_affix_id": 8, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + } + ], + "internal_uid": 214, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 63226, + "relic_set_id": 322, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + } + ], + "internal_uid": 215, + "equip_avatar": 1307 + }, + { + "level": 15, + "relic_id": 61171, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 6, + "step": 7 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 216, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 61172, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + } + ], + "internal_uid": 217, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 61173, + "relic_set_id": 117, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 0 + } + ], + "internal_uid": 218, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 61174, + "relic_set_id": 117, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 219, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 63145, + "relic_set_id": 314, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 7 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 4 + } + ], + "internal_uid": 220, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 63146, + "relic_set_id": 314, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 8 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 221, + "equip_avatar": 1308 + }, + { + "level": 15, + "relic_id": 61161, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 4, + "step": 4 + } + ], + "internal_uid": 222, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 61162, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 223, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 61203, + "relic_set_id": 120, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 224, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 61204, + "relic_set_id": 120, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 0 + } + ], + "internal_uid": 225, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 1 + } + ], + "internal_uid": 226, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 227, + "equip_avatar": 1309 + }, + { + "level": 15, + "relic_id": 61191, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + } + ], + "internal_uid": 228, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 61192, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 4 + } + ], + "internal_uid": 229, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 61193, + "relic_set_id": 119, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + } + ], + "internal_uid": 230, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 61194, + "relic_set_id": 119, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + } + ], + "internal_uid": 231, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 63165, + "relic_set_id": 316, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + } + ], + "internal_uid": 232, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 63166, + "relic_set_id": 316, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 5, + "step": 7 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + } + ], + "internal_uid": 233, + "equip_avatar": 1310 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + } + ], + "internal_uid": 234, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + } + ], + "internal_uid": 235, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 236, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 237, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 3 + } + ], + "internal_uid": 238, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 4, + "step": 5 + } + ], + "internal_uid": 239, + "equip_avatar": 1313 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 240, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 1 + } + ], + "internal_uid": 241, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + } + ], + "internal_uid": 242, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + } + ], + "internal_uid": 243, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + } + ], + "internal_uid": 244, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + } + ], + "internal_uid": 245, + "equip_avatar": 1314 + }, + { + "level": 15, + "relic_id": 61191, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 5, + "step": 3 + } + ], + "internal_uid": 246, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 61192, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 4, + "step": 5 + } + ], + "internal_uid": 247, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 61193, + "relic_set_id": 119, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 2 + } + ], + "internal_uid": 248, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 61194, + "relic_set_id": 119, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 4, + "step": 6 + } + ], + "internal_uid": 249, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 63165, + "relic_set_id": 316, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 4 + } + ], + "internal_uid": 250, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 63166, + "relic_set_id": 316, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 2 + } + ], + "internal_uid": 251, + "equip_avatar": 1315 + }, + { + "level": 15, + "relic_id": 61191, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 11, + "step": 22 + }, + { + "sub_affix_id": 5, + "count": 6, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 0, + "step": 0 + } + ], + "internal_uid": 252, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 61192, + "relic_set_id": 119, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 1, + "count": 0, + "step": 0 + } + ], + "internal_uid": 253, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 61193, + "relic_set_id": 119, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 16, + "step": 14 + }, + { + "sub_affix_id": 7, + "count": 10, + "step": 10 + }, + { + "sub_affix_id": 11, + "count": 26, + "step": 49 + } + ], + "internal_uid": 254, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 61194, + "relic_set_id": 119, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 0, + "step": 0 + } + ], + "internal_uid": 255, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 63165, + "relic_set_id": 316, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 0, + "step": 0 + } + ], + "internal_uid": 256, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 63166, + "relic_set_id": 316, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 0, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 0, + "step": 0 + } + ], + "internal_uid": 257, + "equip_avatar": 1317 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + } + ], + "internal_uid": 258, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + } + ], + "internal_uid": 259, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 260, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + } + ], + "internal_uid": 261, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + } + ], + "internal_uid": 262, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 263, + "equip_avatar": 1321 + }, + { + "level": 15, + "relic_id": 61221, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 3 + } + ], + "internal_uid": 264, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 61222, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 5 + } + ], + "internal_uid": 265, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 61223, + "relic_set_id": 122, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 5 + } + ], + "internal_uid": 266, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 61224, + "relic_set_id": 122, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 267, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 63145, + "relic_set_id": 314, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 8, + "step": 10 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 268, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 63146, + "relic_set_id": 314, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 4 + } + ], + "internal_uid": 269, + "equip_avatar": 1401 + }, + { + "level": 15, + "relic_id": 61231, + "relic_set_id": 123, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + } + ], + "internal_uid": 270, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 61232, + "relic_set_id": 123, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 5, + "step": 9 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + } + ], + "internal_uid": 271, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 61233, + "relic_set_id": 123, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + } + ], + "internal_uid": 272, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 61234, + "relic_set_id": 123, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + } + ], + "internal_uid": 273, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 63185, + "relic_set_id": 318, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 1 + } + ], + "internal_uid": 274, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 63186, + "relic_set_id": 318, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + } + ], + "internal_uid": 275, + "equip_avatar": 1402 + }, + { + "level": 15, + "relic_id": 61241, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 276, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 61242, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 0 + } + ], + "internal_uid": 277, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 61243, + "relic_set_id": 124, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 278, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 61244, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 279, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 280, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 281, + "equip_avatar": 1403 + }, + { + "level": 15, + "relic_id": 61221, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 4, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + } + ], + "internal_uid": 282, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 61222, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + } + ], + "internal_uid": 283, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 61223, + "relic_set_id": 122, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 284, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 61224, + "relic_set_id": 122, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 0 + } + ], + "internal_uid": 285, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 63195, + "relic_set_id": 319, + "main_affix_id": 10, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + } + ], + "internal_uid": 286, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 63196, + "relic_set_id": 319, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 287, + "equip_avatar": 1404 + }, + { + "level": 15, + "relic_id": 61081, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + } + ], + "internal_uid": 288, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 61082, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + } + ], + "internal_uid": 289, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 61083, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + } + ], + "internal_uid": 290, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 61084, + "relic_set_id": 108, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + } + ], + "internal_uid": 291, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 63095, + "relic_set_id": 309, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 292, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 63096, + "relic_set_id": 309, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + } + ], + "internal_uid": 293, + "equip_avatar": 1405 + }, + { + "level": 15, + "relic_id": 61171, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 8, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + } + ], + "internal_uid": 294, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 61172, + "relic_set_id": 117, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 295, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 61173, + "relic_set_id": 117, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 1 + } + ], + "internal_uid": 296, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 61174, + "relic_set_id": 117, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 297, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 63265, + "relic_set_id": 326, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 3 + } + ], + "internal_uid": 298, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 63266, + "relic_set_id": 326, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 1 + } + ], + "internal_uid": 299, + "equip_avatar": 1406 + }, + { + "level": 15, + "relic_id": 61241, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 300, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 61242, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + } + ], + "internal_uid": 301, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 61243, + "relic_set_id": 124, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + } + ], + "internal_uid": 302, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 61244, + "relic_set_id": 124, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + } + ], + "internal_uid": 303, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 63195, + "relic_set_id": 319, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 304, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 63196, + "relic_set_id": 319, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 305, + "equip_avatar": 1407 + }, + { + "level": 15, + "relic_id": 61261, + "relic_set_id": 126, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 9 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 306, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 61262, + "relic_set_id": 126, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 307, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 61263, + "relic_set_id": 126, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + } + ], + "internal_uid": 308, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 61264, + "relic_set_id": 126, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 6, + "step": 9 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 0, + "step": 0 + } + ], + "internal_uid": 309, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 63215, + "relic_set_id": 321, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 5 + } + ], + "internal_uid": 310, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 63216, + "relic_set_id": 321, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 311, + "equip_avatar": 1408 + }, + { + "level": 15, + "relic_id": 61251, + "relic_set_id": 125, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + } + ], + "internal_uid": 312, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 61252, + "relic_set_id": 125, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 313, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 61253, + "relic_set_id": 125, + "main_affix_id": 6, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + } + ], + "internal_uid": 314, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 61254, + "relic_set_id": 125, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + } + ], + "internal_uid": 315, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 63105, + "relic_set_id": 310, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + } + ], + "internal_uid": 316, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 63106, + "relic_set_id": 310, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + } + ], + "internal_uid": 317, + "equip_avatar": 1409 + }, + { + "level": 15, + "relic_id": 61161, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 5, + "step": 7 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 318, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 61162, + "relic_set_id": 116, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 6, + "step": 10 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 0 + } + ], + "internal_uid": 319, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 61163, + "relic_set_id": 116, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 5, + "count": 4, + "step": 5 + } + ], + "internal_uid": 320, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 61164, + "relic_set_id": 116, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 4, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + } + ], + "internal_uid": 321, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 63225, + "relic_set_id": 322, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + } + ], + "internal_uid": 322, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 63226, + "relic_set_id": 322, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 4, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + } + ], + "internal_uid": 323, + "equip_avatar": 1410 + }, + { + "level": 15, + "relic_id": 61211, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + } + ], + "internal_uid": 324, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 61212, + "relic_set_id": 121, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 325, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 61213, + "relic_set_id": 121, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + } + ], + "internal_uid": 326, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 61214, + "relic_set_id": 121, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + } + ], + "internal_uid": 327, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + } + ], + "internal_uid": 328, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 329, + "equip_avatar": 1412 + }, + { + "level": 15, + "relic_id": 61271, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 330, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 61272, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + } + ], + "internal_uid": 331, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 61273, + "relic_set_id": 127, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 332, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 61274, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + } + ], + "internal_uid": 333, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 63195, + "relic_set_id": 319, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + } + ], + "internal_uid": 334, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 63196, + "relic_set_id": 319, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 8 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + } + ], + "internal_uid": 335, + "equip_avatar": 1413 + }, + { + "level": 15, + "relic_id": 61281, + "relic_set_id": 128, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + } + ], + "internal_uid": 336, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 61282, + "relic_set_id": 128, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + } + ], + "internal_uid": 337, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 61283, + "relic_set_id": 128, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 0 + } + ], + "internal_uid": 338, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 61284, + "relic_set_id": 128, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 5 + } + ], + "internal_uid": 339, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 63175, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + } + ], + "internal_uid": 340, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 63176, + "relic_set_id": 317, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 341, + "equip_avatar": 1414 + }, + { + "level": 15, + "relic_id": 61271, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 9, + "step": 14 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 342, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 61272, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 6, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + } + ], + "internal_uid": 343, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 61273, + "relic_set_id": 127, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 1 + } + ], + "internal_uid": 344, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 61274, + "relic_set_id": 127, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 4, + "step": 6 + } + ], + "internal_uid": 345, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 1 + } + ], + "internal_uid": 346, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 347, + "equip_avatar": 1415 + }, + { + "level": 15, + "relic_id": 61291, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 348, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 61292, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 6 + } + ], + "internal_uid": 349, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 61293, + "relic_set_id": 129, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 1 + } + ], + "internal_uid": 350, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 61294, + "relic_set_id": 129, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + } + ], + "internal_uid": 351, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 63255, + "relic_set_id": 325, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 23, + "step": 46 + } + ], + "internal_uid": 352, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 63256, + "relic_set_id": 325, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 1 + } + ], + "internal_uid": 353, + "equip_avatar": 1501 + }, + { + "level": 15, + "relic_id": 61301, + "relic_set_id": 130, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + } + ], + "internal_uid": 354, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 61302, + "relic_set_id": 130, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + } + ], + "internal_uid": 355, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 61303, + "relic_set_id": 130, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + } + ], + "internal_uid": 356, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 61304, + "relic_set_id": 130, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + } + ], + "internal_uid": 357, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 63255, + "relic_set_id": 325, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 358, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 63256, + "relic_set_id": 325, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 8 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + } + ], + "internal_uid": 359, + "equip_avatar": 1502 + }, + { + "level": 15, + "relic_id": 61151, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + } + ], + "internal_uid": 360, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 61152, + "relic_set_id": 115, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 8 + } + ], + "internal_uid": 361, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 61153, + "relic_set_id": 115, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 5, + "step": 8 + } + ], + "internal_uid": 362, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 61154, + "relic_set_id": 115, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 4, + "step": 8 + } + ], + "internal_uid": 363, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 63265, + "relic_set_id": 326, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 4 + } + ], + "internal_uid": 364, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 63266, + "relic_set_id": 326, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 365, + "equip_avatar": 1504 + }, + { + "level": 15, + "relic_id": 61291, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 6 + } + ], + "internal_uid": 366, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 61292, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 10 + } + ], + "internal_uid": 367, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 61293, + "relic_set_id": 129, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + } + ], + "internal_uid": 368, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 61294, + "relic_set_id": 129, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 10 + } + ], + "internal_uid": 369, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 63255, + "relic_set_id": 325, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + } + ], + "internal_uid": 370, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 63256, + "relic_set_id": 325, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 7 + } + ], + "internal_uid": 371, + "equip_avatar": 1505 + }, + { + "level": 15, + "relic_id": 61291, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + } + ], + "internal_uid": 372, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 61292, + "relic_set_id": 129, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 373, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 61293, + "relic_set_id": 129, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 4 + } + ], + "internal_uid": 374, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 61294, + "relic_set_id": 129, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + } + ], + "internal_uid": 375, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 63255, + "relic_set_id": 325, + "main_affix_id": 8, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 7 + } + ], + "internal_uid": 376, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 63256, + "relic_set_id": 325, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 6 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + } + ], + "internal_uid": 377, + "equip_avatar": 1506 + }, + { + "level": 15, + "relic_id": 61321, + "relic_set_id": 132, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 6, + "step": 8 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 0 + } + ], + "internal_uid": 378, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 61322, + "relic_set_id": 132, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + } + ], + "internal_uid": 379, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 61323, + "relic_set_id": 132, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 380, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 61324, + "relic_set_id": 132, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 2, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 381, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 382, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 1 + } + ], + "internal_uid": 383, + "equip_avatar": 1507 + }, + { + "level": 15, + "relic_id": 61081, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + } + ], + "internal_uid": 384, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 61082, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 1, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 385, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 61083, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 1, + "step": 2 + } + ], + "internal_uid": 386, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 61084, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 2 + } + ], + "internal_uid": 387, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 63125, + "relic_set_id": 312, + "main_affix_id": 9, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + } + ], + "internal_uid": 388, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 63126, + "relic_set_id": 312, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + } + ], + "internal_uid": 389, + "equip_avatar": 1508 + }, + { + "level": 15, + "relic_id": 61081, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 1 + } + ], + "internal_uid": 390, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 61082, + "relic_set_id": 108, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 11, + "count": 3, + "step": 2 + } + ], + "internal_uid": 391, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 61083, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + } + ], + "internal_uid": 392, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 61084, + "relic_set_id": 108, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 4, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 1, + "count": 2, + "step": 1 + } + ], + "internal_uid": 393, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 63285, + "relic_set_id": 328, + "main_affix_id": 7, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 4, + "step": 6 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 2 + } + ], + "internal_uid": 394, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 63286, + "relic_set_id": 328, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + } + ], + "internal_uid": 395, + "equip_avatar": 1509 + }, + { + "level": 15, + "relic_id": 61311, + "relic_set_id": 131, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 11, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 5, + "step": 9 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 2 + } + ], + "internal_uid": 396, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 61312, + "relic_set_id": 131, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 1, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + } + ], + "internal_uid": 397, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 61313, + "relic_set_id": 131, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 4, + "step": 3 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 0 + } + ], + "internal_uid": 398, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 61314, + "relic_set_id": 131, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 3, + "step": 3 + } + ], + "internal_uid": 399, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 63275, + "relic_set_id": 327, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 12, + "count": 4, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + } + ], + "internal_uid": 400, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 63276, + "relic_set_id": 327, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 8, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 2, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 2 + } + ], + "internal_uid": 401, + "equip_avatar": 1510 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + } + ], + "internal_uid": 402, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + } + ], + "internal_uid": 403, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 6 + } + ], + "internal_uid": 404, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 12, + "count": 6, + "step": 12 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 405, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 6 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 2 + } + ], + "internal_uid": 406, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 4, + "step": 8 + }, + { + "sub_affix_id": 12, + "count": 3, + "step": 6 + } + ], + "internal_uid": 407, + "equip_avatar": 8006 + }, + { + "level": 15, + "relic_id": 61271, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 5 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 3 + } + ], + "internal_uid": 408, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 61272, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 7 + } + ], + "internal_uid": 409, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 61273, + "relic_set_id": 127, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 0 + } + ], + "internal_uid": 410, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 61274, + "relic_set_id": 127, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 3 + } + ], + "internal_uid": 411, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 63235, + "relic_set_id": 323, + "main_affix_id": 3, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 2 + }, + { + "sub_affix_id": 10, + "count": 1, + "step": 1 + } + ], + "internal_uid": 412, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 63236, + "relic_set_id": 323, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 4, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 5 + } + ], + "internal_uid": 413, + "equip_avatar": 8007 + }, + { + "level": 15, + "relic_id": 61271, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 5, + "step": 11 + }, + { + "sub_affix_id": 6, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 4 + } + ], + "internal_uid": 414, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 61272, + "relic_set_id": 127, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 5, + "step": 10 + } + ], + "internal_uid": 415, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 61273, + "relic_set_id": 127, + "main_affix_id": 5, + "sub_affixes": [ + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 2, + "count": 3, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 5, + "count": 2, + "step": 0 + } + ], + "internal_uid": 416, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 61274, + "relic_set_id": 127, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 2, + "step": 4 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 3, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 9, + "count": 4, + "step": 4 + } + ], + "internal_uid": 417, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 5, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 2, + "count": 4, + "step": 7 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 2 + } + ], + "internal_uid": 418, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 1, + "step": 0 + }, + { + "sub_affix_id": 3, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 9, + "count": 6, + "step": 3 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 3 + } + ], + "internal_uid": 419, + "equip_avatar": 8008 + }, + { + "level": 15, + "relic_id": 61101, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 8, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 11, + "count": 2, + "step": 2 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 1 + } + ], + "internal_uid": 420, + "equip_avatar": 8010 + }, + { + "level": 15, + "relic_id": 61102, + "relic_set_id": 110, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 5 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 4, + "count": 2, + "step": 0 + } + ], + "internal_uid": 421, + "equip_avatar": 8010 + }, + { + "level": 15, + "relic_id": 61103, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 7, + "count": 3, + "step": 4 + }, + { + "sub_affix_id": 9, + "count": 1, + "step": 1 + }, + { + "sub_affix_id": 12, + "count": 2, + "step": 3 + }, + { + "sub_affix_id": 5, + "count": 3, + "step": 4 + } + ], + "internal_uid": 422, + "equip_avatar": 8010 + }, + { + "level": 15, + "relic_id": 61104, + "relic_set_id": 110, + "main_affix_id": 4, + "sub_affixes": [ + { + "sub_affix_id": 1, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 2 + }, + { + "sub_affix_id": 9, + "count": 3, + "step": 1 + }, + { + "sub_affix_id": 10, + "count": 2, + "step": 4 + } + ], + "internal_uid": 423, + "equip_avatar": 8010 + }, + { + "level": 15, + "relic_id": 63085, + "relic_set_id": 308, + "main_affix_id": 1, + "sub_affixes": [ + { + "sub_affix_id": 11, + "count": 3, + "step": 3 + }, + { + "sub_affix_id": 6, + "count": 2, + "step": 1 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 1, + "step": 0 + } + ], + "internal_uid": 424, + "equip_avatar": 8010 + }, + { + "level": 15, + "relic_id": 63086, + "relic_set_id": 308, + "main_affix_id": 2, + "sub_affixes": [ + { + "sub_affix_id": 6, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 7, + "count": 3, + "step": 2 + }, + { + "sub_affix_id": 8, + "count": 2, + "step": 0 + }, + { + "sub_affix_id": 4, + "count": 1, + "step": 0 + } + ], + "internal_uid": 425, + "equip_avatar": 8010 + } + ], + "avatars": { + "1001": { + "owner_uid": 0, + "avatar_id": 1001, + "data": { + "rank": 0, + "skills": { + "1001001": 6, + "1001002": 10, + "1001003": 10, + "1001004": 10, + "1001007": 1, + "1001101": 1, + "1001102": 1, + "1001103": 1, + "1001201": 1, + "1001202": 1, + "1001203": 1, + "1001204": 1, + "1001205": 1, + "1001206": 1, + "1001207": 1, + "1001208": 1, + "1001209": 1, + "1001210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1002": { + "owner_uid": 0, + "avatar_id": 1002, + "data": { + "rank": 0, + "skills": { + "1002001": 6, + "1002002": 10, + "1002003": 10, + "1002004": 10, + "1002007": 1, + "1002101": 1, + "1002102": 1, + "1002103": 1, + "1002201": 1, + "1002202": 1, + "1002203": 1, + "1002204": 1, + "1002205": 1, + "1002206": 1, + "1002207": 1, + "1002208": 1, + "1002209": 1, + "1002210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1003": { + "owner_uid": 0, + "avatar_id": 1003, + "data": { + "rank": 0, + "skills": { + "1003001": 6, + "1003002": 10, + "1003003": 10, + "1003004": 10, + "1003007": 1, + "1003101": 1, + "1003102": 1, + "1003103": 1, + "1003201": 1, + "1003202": 1, + "1003203": 1, + "1003204": 1, + "1003205": 1, + "1003206": 1, + "1003207": 1, + "1003208": 1, + "1003209": 1, + "1003210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1004": { + "owner_uid": 0, + "avatar_id": 1004, + "data": { + "rank": 4, + "skills": { + "11004001": 6, + "11004002": 10, + "11004003": 10, + "11004004": 10, + "11004007": 1, + "11004101": 1, + "11004102": 1, + "11004103": 1, + "11004201": 1, + "11004202": 1, + "11004203": 1, + "11004204": 1, + "11004205": 1, + "11004206": 1, + "11004207": 1, + "11004208": 1, + "11004209": 1, + "11004210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120, + "enhanced_id": 1 + }, + "1005": { + "owner_uid": 0, + "avatar_id": 1005, + "data": { + "rank": 0, + "skills": { + "1005001": 6, + "1005002": 10, + "1005003": 10, + "1005004": 10, + "1005007": 1, + "1005101": 1, + "1005102": 1, + "1005103": 1, + "1005201": 1, + "1005202": 1, + "1005203": 1, + "1005204": 1, + "1005205": 1, + "1005206": 1, + "1005207": 1, + "1005208": 1, + "1005209": 1, + "1005210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1006": { + "owner_uid": 0, + "avatar_id": 1006, + "data": { + "rank": 0, + "skills": { + "11006001": 6, + "11006002": 10, + "11006003": 10, + "11006004": 10, + "11006007": 1, + "11006101": 1, + "11006102": 1, + "11006103": 1, + "11006201": 1, + "11006202": 1, + "11006203": 1, + "11006204": 1, + "11006205": 1, + "11006206": 1, + "11006207": 1, + "11006208": 1, + "11006209": 1, + "11006210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110, + "enhanced_id": 1 + }, + "1008": { + "owner_uid": 0, + "avatar_id": 1008, + "data": { + "rank": 0, + "skills": { + "1008001": 6, + "1008002": 10, + "1008003": 10, + "1008004": 10, + "1008007": 1, + "1008101": 1, + "1008102": 1, + "1008103": 1, + "1008201": 1, + "1008202": 1, + "1008203": 1, + "1008204": 1, + "1008205": 1, + "1008206": 1, + "1008207": 1, + "1008208": 1, + "1008209": 1, + "1008210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1009": { + "owner_uid": 0, + "avatar_id": 1009, + "data": { + "rank": 0, + "skills": { + "1009001": 6, + "1009002": 10, + "1009003": 10, + "1009004": 10, + "1009007": 1, + "1009101": 1, + "1009102": 1, + "1009103": 1, + "1009201": 1, + "1009202": 1, + "1009203": 1, + "1009204": 1, + "1009205": 1, + "1009206": 1, + "1009207": 1, + "1009208": 1, + "1009209": 1, + "1009210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1013": { + "owner_uid": 0, + "avatar_id": 1013, + "data": { + "rank": 6, + "skills": { + "1013001": 6, + "1013002": 10, + "1013003": 10, + "1013004": 10, + "1013007": 1, + "1013101": 1, + "1013102": 1, + "1013103": 1, + "1013201": 1, + "1013202": 1, + "1013203": 1, + "1013204": 1, + "1013205": 1, + "1013206": 1, + "1013207": 1, + "1013208": 1, + "1013209": 1, + "1013210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 101301 + ], + "sp_value": 55, + "sp_max": 110 + }, + "1014": { + "owner_uid": 0, + "avatar_id": 1014, + "data": { + "rank": 0, + "skills": { + "1014001": 6, + "1014002": 10, + "1014003": 10, + "1014004": 10, + "1014007": 1, + "1014101": 1, + "1014102": 1, + "1014103": 1, + "1014201": 1, + "1014202": 1, + "1014203": 1, + "1014204": 1, + "1014205": 1, + "1014206": 1, + "1014207": 1, + "1014208": 1, + "1014209": 1, + "1014210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 180, + "sp_max": 360 + }, + "1015": { + "owner_uid": 0, + "avatar_id": 1015, + "data": { + "rank": 1, + "skills": { + "1015001": 6, + "1015002": 10, + "1015003": 10, + "1015004": 10, + "1015007": 1, + "1015101": 1, + "1015102": 1, + "1015103": 1, + "1015201": 1, + "1015202": 1, + "1015203": 1, + "1015204": 1, + "1015205": 1, + "1015206": 1, + "1015207": 1, + "1015208": 1, + "1015209": 1, + "1015210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 101501 + ], + "sp_value": 110, + "sp_max": 220 + }, + "1101": { + "owner_uid": 0, + "avatar_id": 1101, + "data": { + "rank": 4, + "skills": { + "1101001": 6, + "1101002": 10, + "1101003": 10, + "1101004": 10, + "1101007": 1, + "1101101": 1, + "1101102": 1, + "1101103": 1, + "1101201": 1, + "1101202": 1, + "1101203": 1, + "1101204": 1, + "1101205": 1, + "1101206": 1, + "1101207": 1, + "1101208": 1, + "1101209": 1, + "1101210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 110101 + ], + "sp_value": 60, + "sp_max": 120 + }, + "1102": { + "owner_uid": 0, + "avatar_id": 1102, + "data": { + "rank": 0, + "skills": { + "1102001": 6, + "1102002": 10, + "1102003": 10, + "1102004": 10, + "1102007": 1, + "1102101": 1, + "1102102": 1, + "1102103": 1, + "1102201": 1, + "1102202": 1, + "1102203": 1, + "1102204": 1, + "1102205": 1, + "1102206": 1, + "1102207": 1, + "1102208": 1, + "1102209": 1, + "1102210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1103": { + "owner_uid": 0, + "avatar_id": 1103, + "data": { + "rank": 0, + "skills": { + "1103001": 6, + "1103002": 10, + "1103003": 10, + "1103004": 10, + "1103007": 1, + "1103101": 1, + "1103102": 1, + "1103103": 1, + "1103201": 1, + "1103202": 1, + "1103203": 1, + "1103204": 1, + "1103205": 1, + "1103206": 1, + "1103207": 1, + "1103208": 1, + "1103209": 1, + "1103210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1104": { + "owner_uid": 0, + "avatar_id": 1104, + "data": { + "rank": 0, + "skills": { + "1104001": 6, + "1104002": 10, + "1104003": 10, + "1104004": 10, + "1104007": 1, + "1104101": 1, + "1104102": 1, + "1104103": 1, + "1104201": 1, + "1104202": 1, + "1104203": 1, + "1104204": 1, + "1104205": 1, + "1104206": 1, + "1104207": 1, + "1104208": 1, + "1104209": 1, + "1104210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1105": { + "owner_uid": 0, + "avatar_id": 1105, + "data": { + "rank": 0, + "skills": { + "1105001": 6, + "1105002": 10, + "1105003": 10, + "1105004": 10, + "1105007": 1, + "1105101": 1, + "1105102": 1, + "1105103": 1, + "1105201": 1, + "1105202": 1, + "1105203": 1, + "1105204": 1, + "1105205": 1, + "1105206": 1, + "1105207": 1, + "1105208": 1, + "1105209": 1, + "1105210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 45, + "sp_max": 90 + }, + "1106": { + "owner_uid": 0, + "avatar_id": 1106, + "data": { + "rank": 6, + "skills": { + "1106001": 6, + "1106002": 10, + "1106003": 10, + "1106004": 10, + "1106007": 1, + "1106101": 1, + "1106102": 1, + "1106103": 1, + "1106201": 1, + "1106202": 1, + "1106203": 1, + "1106204": 1, + "1106205": 1, + "1106206": 1, + "1106207": 1, + "1106208": 1, + "1106209": 1, + "1106210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1107": { + "owner_uid": 0, + "avatar_id": 1107, + "data": { + "rank": 0, + "skills": { + "1107001": 6, + "1107002": 10, + "1107003": 10, + "1107004": 10, + "1107007": 1, + "1107101": 1, + "1107102": 1, + "1107103": 1, + "1107201": 1, + "1107202": 1, + "1107203": 1, + "1107204": 1, + "1107205": 1, + "1107206": 1, + "1107207": 1, + "1107208": 1, + "1107209": 1, + "1107210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1108": { + "owner_uid": 0, + "avatar_id": 1108, + "data": { + "rank": 0, + "skills": { + "1108001": 6, + "1108002": 10, + "1108003": 10, + "1108004": 10, + "1108007": 1, + "1108101": 1, + "1108102": 1, + "1108103": 1, + "1108201": 1, + "1108202": 1, + "1108203": 1, + "1108204": 1, + "1108205": 1, + "1108206": 1, + "1108207": 1, + "1108208": 1, + "1108209": 1, + "1108210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1109": { + "owner_uid": 0, + "avatar_id": 1109, + "data": { + "rank": 0, + "skills": { + "1109001": 6, + "1109002": 10, + "1109003": 10, + "1109004": 10, + "1109007": 1, + "1109101": 1, + "1109102": 1, + "1109103": 1, + "1109201": 1, + "1109202": 1, + "1109203": 1, + "1109204": 1, + "1109205": 1, + "1109206": 1, + "1109207": 1, + "1109208": 1, + "1109209": 1, + "1109210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1110": { + "owner_uid": 0, + "avatar_id": 1110, + "data": { + "rank": 0, + "skills": { + "1110001": 6, + "1110002": 10, + "1110003": 10, + "1110004": 10, + "1110007": 1, + "1110101": 1, + "1110102": 1, + "1110103": 1, + "1110201": 1, + "1110202": 1, + "1110203": 1, + "1110204": 1, + "1110205": 1, + "1110206": 1, + "1110207": 1, + "1110208": 1, + "1110209": 1, + "1110210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1111": { + "owner_uid": 0, + "avatar_id": 1111, + "data": { + "rank": 0, + "skills": { + "1111001": 6, + "1111002": 10, + "1111003": 10, + "1111004": 10, + "1111007": 1, + "1111101": 1, + "1111102": 1, + "1111103": 1, + "1111201": 1, + "1111202": 1, + "1111203": 1, + "1111204": 1, + "1111205": 1, + "1111206": 1, + "1111207": 1, + "1111208": 1, + "1111209": 1, + "1111210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1112": { + "owner_uid": 0, + "avatar_id": 1112, + "data": { + "rank": 0, + "skills": { + "1112001": 6, + "1112002": 10, + "1112003": 10, + "1112004": 10, + "1112007": 1, + "1112101": 1, + "1112102": 1, + "1112103": 1, + "1112201": 1, + "1112202": 1, + "1112203": 1, + "1112204": 1, + "1112205": 1, + "1112206": 1, + "1112207": 1, + "1112208": 1, + "1112209": 1, + "1112210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1201": { + "owner_uid": 0, + "avatar_id": 1201, + "data": { + "rank": 0, + "skills": { + "1201001": 6, + "1201002": 10, + "1201003": 10, + "1201004": 10, + "1201007": 1, + "1201101": 1, + "1201102": 1, + "1201103": 1, + "1201201": 1, + "1201202": 1, + "1201203": 1, + "1201204": 1, + "1201205": 1, + "1201206": 1, + "1201207": 1, + "1201208": 1, + "1201209": 1, + "1201210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1202": { + "owner_uid": 0, + "avatar_id": 1202, + "data": { + "rank": 6, + "skills": { + "1202001": 6, + "1202002": 10, + "1202003": 10, + "1202004": 10, + "1202007": 1, + "1202101": 1, + "1202102": 1, + "1202103": 1, + "1202201": 1, + "1202202": 1, + "1202203": 1, + "1202204": 1, + "1202205": 1, + "1202206": 1, + "1202207": 1, + "1202208": 1, + "1202209": 1, + "1202210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 130, + "sp_max": 130 + }, + "1203": { + "owner_uid": 0, + "avatar_id": 1203, + "data": { + "rank": 0, + "skills": { + "1203001": 6, + "1203002": 10, + "1203003": 10, + "1203004": 10, + "1203007": 1, + "1203101": 1, + "1203102": 1, + "1203103": 1, + "1203201": 1, + "1203202": 1, + "1203203": 1, + "1203204": 1, + "1203205": 1, + "1203206": 1, + "1203207": 1, + "1203208": 1, + "1203209": 1, + "1203210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1204": { + "owner_uid": 0, + "avatar_id": 1204, + "data": { + "rank": 0, + "skills": { + "1204001": 6, + "1204002": 10, + "1204003": 10, + "1204004": 10, + "1204007": 1, + "1204101": 1, + "1204102": 1, + "1204103": 1, + "1204201": 1, + "1204202": 1, + "1204203": 1, + "1204204": 1, + "1204205": 1, + "1204206": 1, + "1204207": 1, + "1204208": 1, + "1204209": 1, + "1204210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1205": { + "owner_uid": 0, + "avatar_id": 1205, + "data": { + "rank": 0, + "skills": { + "1205001": 6, + "1205002": 10, + "1205003": 10, + "1205004": 10, + "1205007": 1, + "1205101": 1, + "1205102": 1, + "1205103": 1, + "1205201": 1, + "1205202": 1, + "1205203": 1, + "1205204": 1, + "1205205": 1, + "1205206": 1, + "1205207": 1, + "1205208": 1, + "1205209": 1, + "1205210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1206": { + "owner_uid": 0, + "avatar_id": 1206, + "data": { + "rank": 0, + "skills": { + "1206001": 6, + "1206002": 10, + "1206003": 10, + "1206004": 10, + "1206007": 1, + "1206101": 1, + "1206102": 1, + "1206103": 1, + "1206201": 1, + "1206202": 1, + "1206203": 1, + "1206204": 1, + "1206205": 1, + "1206206": 1, + "1206207": 1, + "1206208": 1, + "1206209": 1, + "1206210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1207": { + "owner_uid": 0, + "avatar_id": 1207, + "data": { + "rank": 0, + "skills": { + "1207001": 6, + "1207002": 10, + "1207003": 10, + "1207004": 10, + "1207007": 1, + "1207101": 1, + "1207102": 1, + "1207103": 1, + "1207201": 1, + "1207202": 1, + "1207203": 1, + "1207204": 1, + "1207205": 1, + "1207206": 1, + "1207207": 1, + "1207208": 1, + "1207209": 1, + "1207210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1208": { + "owner_uid": 0, + "avatar_id": 1208, + "data": { + "rank": 0, + "skills": { + "1208001": 6, + "1208002": 10, + "1208003": 10, + "1208004": 10, + "1208007": 1, + "1208101": 1, + "1208102": 1, + "1208103": 1, + "1208201": 1, + "1208202": 1, + "1208203": 1, + "1208204": 1, + "1208205": 1, + "1208206": 1, + "1208207": 1, + "1208208": 1, + "1208209": 1, + "1208210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 68, + "sp_max": 135 + }, + "1209": { + "owner_uid": 0, + "avatar_id": 1209, + "data": { + "rank": 0, + "skills": { + "1209001": 6, + "1209002": 10, + "1209003": 10, + "1209004": 10, + "1209007": 1, + "1209101": 1, + "1209102": 1, + "1209103": 1, + "1209201": 1, + "1209202": 1, + "1209203": 1, + "1209204": 1, + "1209205": 1, + "1209206": 1, + "1209207": 1, + "1209208": 1, + "1209209": 1, + "1209210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1210": { + "owner_uid": 0, + "avatar_id": 1210, + "data": { + "rank": 0, + "skills": { + "1210001": 6, + "1210002": 10, + "1210003": 10, + "1210004": 10, + "1210007": 1, + "1210101": 1, + "1210102": 1, + "1210103": 1, + "1210201": 1, + "1210202": 1, + "1210203": 1, + "1210204": 1, + "1210205": 1, + "1210206": 1, + "1210207": 1, + "1210208": 1, + "1210209": 1, + "1210210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1211": { + "owner_uid": 0, + "avatar_id": 1211, + "data": { + "rank": 0, + "skills": { + "1211001": 6, + "1211002": 10, + "1211003": 10, + "1211004": 10, + "1211007": 1, + "1211101": 1, + "1211102": 1, + "1211103": 1, + "1211201": 1, + "1211202": 1, + "1211203": 1, + "1211204": 1, + "1211205": 1, + "1211206": 1, + "1211207": 1, + "1211208": 1, + "1211209": 1, + "1211210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1212": { + "owner_uid": 0, + "avatar_id": 1212, + "data": { + "rank": 0, + "skills": { + "11212001": 6, + "11212002": 10, + "11212003": 10, + "11212004": 10, + "11212007": 1, + "11212101": 1, + "11212102": 1, + "11212103": 1, + "11212201": 1, + "11212202": 1, + "11212203": 1, + "11212204": 1, + "11212205": 1, + "11212206": 1, + "11212207": 1, + "11212208": 1, + "11212209": 1, + "11212210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1213": { + "owner_uid": 0, + "avatar_id": 1213, + "data": { + "rank": 0, + "skills": { + "1213001": 6, + "1213002": 10, + "1213003": 10, + "1213004": 10, + "1213007": 1, + "1213101": 1, + "1213102": 1, + "1213103": 1, + "1213201": 1, + "1213202": 1, + "1213203": 1, + "1213204": 1, + "1213205": 1, + "1213206": 1, + "1213207": 1, + "1213208": 1, + "1213209": 1, + "1213210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1214": { + "owner_uid": 0, + "avatar_id": 1214, + "data": { + "rank": 0, + "skills": { + "1214001": 6, + "1214002": 10, + "1214003": 10, + "1214004": 10, + "1214007": 1, + "1214101": 1, + "1214102": 1, + "1214103": 1, + "1214201": 1, + "1214202": 1, + "1214203": 1, + "1214204": 1, + "1214205": 1, + "1214206": 1, + "1214207": 1, + "1214208": 1, + "1214209": 1, + "1214210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1215": { + "owner_uid": 0, + "avatar_id": 1215, + "data": { + "rank": 0, + "skills": { + "1215001": 6, + "1215002": 10, + "1215003": 10, + "1215004": 10, + "1215007": 1, + "1215101": 1, + "1215102": 1, + "1215103": 1, + "1215201": 1, + "1215202": 1, + "1215203": 1, + "1215204": 1, + "1215205": 1, + "1215206": 1, + "1215207": 1, + "1215208": 1, + "1215209": 1, + "1215210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1217": { + "owner_uid": 0, + "avatar_id": 1217, + "data": { + "rank": 0, + "skills": { + "11217001": 6, + "11217002": 10, + "11217003": 10, + "11217004": 10, + "11217007": 1, + "11217101": 1, + "11217102": 1, + "11217103": 1, + "11217201": 1, + "11217202": 1, + "11217203": 1, + "11217204": 1, + "11217205": 1, + "11217206": 1, + "11217207": 1, + "11217208": 1, + "11217209": 1, + "11217210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 121701 + ], + "sp_value": 70, + "sp_max": 140, + "enhanced_id": 1 + }, + "1218": { + "owner_uid": 0, + "avatar_id": 1218, + "data": { + "rank": 0, + "skills": { + "1218001": 6, + "1218002": 10, + "1218003": 10, + "1218004": 10, + "1218007": 1, + "1218101": 1, + "1218102": 1, + "1218103": 1, + "1218201": 1, + "1218202": 1, + "1218203": 1, + "1218204": 1, + "1218205": 1, + "1218206": 1, + "1218207": 1, + "1218208": 1, + "1218209": 1, + "1218210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1220": { + "owner_uid": 0, + "avatar_id": 1220, + "data": { + "rank": 0, + "skills": { + "1220001": 6, + "1220002": 10, + "1220003": 10, + "1220004": 10, + "1220007": 1, + "1220101": 1, + "1220102": 1, + "1220103": 1, + "1220201": 1, + "1220202": 1, + "1220203": 1, + "1220204": 1, + "1220205": 1, + "1220206": 1, + "1220207": 1, + "1220208": 1, + "1220209": 1, + "1220210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 6, + "sp_max": 12 + }, + "1221": { + "owner_uid": 0, + "avatar_id": 1221, + "data": { + "rank": 0, + "skills": { + "1221001": 6, + "1221002": 10, + "1221003": 10, + "1221004": 10, + "1221007": 1, + "1221101": 1, + "1221102": 1, + "1221103": 1, + "1221201": 1, + "1221202": 1, + "1221203": 1, + "1221204": 1, + "1221205": 1, + "1221206": 1, + "1221207": 1, + "1221208": 1, + "1221209": 1, + "1221210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 120, + "sp_max": 240 + }, + "1222": { + "owner_uid": 0, + "avatar_id": 1222, + "data": { + "rank": 0, + "skills": { + "1222001": 6, + "1222002": 10, + "1222003": 10, + "1222004": 10, + "1222007": 1, + "1222101": 1, + "1222102": 1, + "1222103": 1, + "1222201": 1, + "1222202": 1, + "1222203": 1, + "1222204": 1, + "1222205": 1, + "1222206": 1, + "1222207": 1, + "1222208": 1, + "1222209": 1, + "1222210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1223": { + "owner_uid": 0, + "avatar_id": 1223, + "data": { + "rank": 6, + "skills": { + "1223001": 6, + "1223002": 10, + "1223003": 10, + "1223004": 10, + "1223007": 1, + "1223101": 1, + "1223102": 1, + "1223103": 1, + "1223201": 1, + "1223202": 1, + "1223203": 1, + "1223204": 1, + "1223205": 1, + "1223206": 1, + "1223207": 1, + "1223208": 1, + "1223209": 1, + "1223210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1224": { + "owner_uid": 0, + "avatar_id": 1224, + "data": { + "rank": 0, + "skills": { + "1224001": 6, + "1224002": 10, + "1224003": 10, + "1224004": 10, + "1224007": 1, + "1224101": 1, + "1224102": 1, + "1224103": 1, + "1224201": 1, + "1224202": 1, + "1224203": 1, + "1224204": 1, + "1224205": 1, + "1224206": 1, + "1224207": 1, + "1224208": 1, + "1224209": 1, + "1224210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1225": { + "owner_uid": 0, + "avatar_id": 1225, + "data": { + "rank": 0, + "skills": { + "1225001": 6, + "1225002": 10, + "1225003": 10, + "1225004": 10, + "1225007": 1, + "1225101": 1, + "1225102": 1, + "1225103": 1, + "1225201": 1, + "1225202": 1, + "1225203": 1, + "1225204": 1, + "1225205": 1, + "1225206": 1, + "1225207": 1, + "1225208": 1, + "1225209": 1, + "1225210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 122501 + ], + "sp_value": 65, + "sp_max": 130 + }, + "1301": { + "owner_uid": 0, + "avatar_id": 1301, + "data": { + "rank": 6, + "skills": { + "1301001": 6, + "1301002": 10, + "1301003": 10, + "1301004": 10, + "1301007": 1, + "1301101": 1, + "1301102": 1, + "1301103": 1, + "1301201": 1, + "1301202": 1, + "1301203": 1, + "1301204": 1, + "1301205": 1, + "1301206": 1, + "1301207": 1, + "1301208": 1, + "1301209": 1, + "1301210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1302": { + "owner_uid": 0, + "avatar_id": 1302, + "data": { + "rank": 0, + "skills": { + "1302001": 6, + "1302002": 10, + "1302003": 10, + "1302004": 10, + "1302007": 1, + "1302101": 1, + "1302102": 1, + "1302103": 1, + "1302201": 1, + "1302202": 1, + "1302203": 1, + "1302204": 1, + "1302205": 1, + "1302206": 1, + "1302207": 1, + "1302208": 1, + "1302209": 1, + "1302210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 90, + "sp_max": 180 + }, + "1303": { + "owner_uid": 0, + "avatar_id": 1303, + "data": { + "rank": 0, + "skills": { + "1303001": 6, + "1303002": 10, + "1303003": 10, + "1303004": 10, + "1303007": 1, + "1303101": 1, + "1303102": 1, + "1303103": 1, + "1303201": 1, + "1303202": 1, + "1303203": 1, + "1303204": 1, + "1303205": 1, + "1303206": 1, + "1303207": 1, + "1303208": 1, + "1303209": 1, + "1303210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1304": { + "owner_uid": 0, + "avatar_id": 1304, + "data": { + "rank": 0, + "skills": { + "1304001": 6, + "1304002": 10, + "1304003": 10, + "1304004": 10, + "1304007": 1, + "1304101": 1, + "1304102": 1, + "1304103": 1, + "1304201": 1, + "1304202": 1, + "1304203": 1, + "1304204": 1, + "1304205": 1, + "1304206": 1, + "1304207": 1, + "1304208": 1, + "1304209": 1, + "1304210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1305": { + "owner_uid": 0, + "avatar_id": 1305, + "data": { + "rank": 0, + "skills": { + "1305001": 6, + "1305002": 10, + "1305003": 10, + "1305004": 10, + "1305007": 1, + "1305101": 1, + "1305102": 1, + "1305103": 1, + "1305201": 1, + "1305202": 1, + "1305203": 1, + "1305204": 1, + "1305205": 1, + "1305206": 1, + "1305207": 1, + "1305208": 1, + "1305209": 1, + "1305210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1306": { + "owner_uid": 0, + "avatar_id": 1306, + "data": { + "rank": 0, + "skills": { + "11306001": 6, + "11306002": 10, + "11306003": 10, + "11306004": 10, + "11306007": 1, + "11306101": 1, + "11306102": 1, + "11306103": 1, + "11306201": 1, + "11306202": 1, + "11306203": 1, + "11306204": 1, + "11306205": 1, + "11306206": 1, + "11306207": 1, + "11306208": 1, + "11306209": 1, + "11306210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 130602, + 130601 + ], + "sp_value": 55, + "sp_max": 110, + "enhanced_id": 1 + }, + "1307": { + "owner_uid": 0, + "avatar_id": 1307, + "data": { + "rank": 0, + "skills": { + "1307001": 6, + "1307002": 10, + "1307003": 10, + "1307004": 10, + "1307007": 1, + "1307101": 1, + "1307102": 1, + "1307103": 1, + "1307201": 1, + "1307202": 1, + "1307203": 1, + "1307204": 1, + "1307205": 1, + "1307206": 1, + "1307207": 1, + "1307208": 1, + "1307209": 1, + "1307210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "1308": { + "owner_uid": 0, + "avatar_id": 1308, + "data": { + "rank": 0, + "skills": { + "1308001": 6, + "1308002": 10, + "1308003": 10, + "1308004": 10, + "1308007": 1, + "1308101": 1, + "1308102": 1, + "1308103": 1, + "1308201": 1, + "1308202": 1, + "1308203": 1, + "1308204": 1, + "1308205": 1, + "1308206": 1, + "1308207": 1, + "1308208": 1, + "1308209": 1, + "1308210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 130801, + 130802, + 130803 + ], + "sp_value": 5, + "sp_max": 9 + }, + "1309": { + "owner_uid": 0, + "avatar_id": 1309, + "data": { + "rank": 0, + "skills": { + "1309001": 6, + "1309002": 10, + "1309003": 10, + "1309004": 10, + "1309007": 1, + "1309101": 1, + "1309102": 1, + "1309103": 1, + "1309201": 1, + "1309202": 1, + "1309203": 1, + "1309204": 1, + "1309205": 1, + "1309206": 1, + "1309207": 1, + "1309208": 1, + "1309209": 1, + "1309210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "1310": { + "owner_uid": 0, + "avatar_id": 1310, + "data": { + "rank": 2, + "skills": { + "1310001": 6, + "1310002": 10, + "1310003": 10, + "1310004": 10, + "1310007": 1, + "1310101": 1, + "1310102": 1, + "1310103": 1, + "1310201": 1, + "1310202": 1, + "1310203": 1, + "1310204": 1, + "1310205": 1, + "1310206": 1, + "1310207": 1, + "1310208": 1, + "1310209": 1, + "1310210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 131001, + 131002 + ], + "sp_value": 120, + "sp_max": 240 + }, + "1312": { + "owner_uid": 0, + "avatar_id": 1312, + "data": { + "rank": 0, + "skills": { + "1312001": 6, + "1312002": 10, + "1312003": 10, + "1312004": 10, + "1312007": 1, + "1312101": 1, + "1312102": 1, + "1312103": 1, + "1312201": 1, + "1312202": 1, + "1312203": 1, + "1312204": 1, + "1312205": 1, + "1312206": 1, + "1312207": 1, + "1312208": 1, + "1312209": 1, + "1312210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 50, + "sp_max": 100 + }, + "1313": { + "owner_uid": 0, + "avatar_id": 1313, + "data": { + "rank": 0, + "skills": { + "1313001": 6, + "1313002": 10, + "1313003": 10, + "1313004": 10, + "1313007": 1, + "1313101": 1, + "1313102": 1, + "1313103": 1, + "1313201": 1, + "1313202": 1, + "1313203": 1, + "1313204": 1, + "1313205": 1, + "1313206": 1, + "1313207": 1, + "1313208": 1, + "1313209": 1, + "1313210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 131301 + ], + "sp_value": 65, + "sp_max": 130 + }, + "1314": { + "owner_uid": 0, + "avatar_id": 1314, + "data": { + "rank": 6, + "skills": { + "1314001": 6, + "1314002": 10, + "1314003": 10, + "1314004": 10, + "1314007": 1, + "1314101": 1, + "1314102": 1, + "1314103": 1, + "1314201": 1, + "1314202": 1, + "1314203": 1, + "1314204": 1, + "1314205": 1, + "1314206": 1, + "1314207": 1, + "1314208": 1, + "1314209": 1, + "1314210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 131401 + ], + "sp_value": 70, + "sp_max": 140 + }, + "1315": { + "owner_uid": 0, + "avatar_id": 1315, + "data": { + "rank": 0, + "skills": { + "1315001": 6, + "1315002": 10, + "1315003": 10, + "1315004": 10, + "1315007": 1, + "1315101": 1, + "1315102": 1, + "1315103": 1, + "1315201": 1, + "1315202": 1, + "1315203": 1, + "1315204": 1, + "1315205": 1, + "1315206": 1, + "1315207": 1, + "1315208": 1, + "1315209": 1, + "1315210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 58, + "sp_max": 115 + }, + "1317": { + "owner_uid": 0, + "avatar_id": 1317, + "data": { + "rank": 0, + "skills": { + "1317001": 6, + "1317002": 10, + "1317003": 10, + "1317004": 10, + "1317007": 1, + "1317101": 1, + "1317102": 1, + "1317103": 1, + "1317201": 1, + "1317202": 1, + "1317203": 1, + "1317204": 1, + "1317205": 1, + "1317206": 1, + "1317207": 1, + "1317208": 1, + "1317209": 1, + "1317210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "1321": { + "owner_uid": 0, + "avatar_id": 1321, + "data": { + "rank": 0, + "skills": { + "1321001": 6, + "1321002": 10, + "1321003": 10, + "1321004": 10, + "1321007": 1, + "1321101": 1, + "1321102": 1, + "1321103": 1, + "1321201": 1, + "1321202": 1, + "1321203": 1, + "1321204": 1, + "1321205": 1, + "1321206": 1, + "1321207": 1, + "1321208": 1, + "1321209": 1, + "1321210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 132101 + ], + "sp_value": 65, + "sp_max": 130 + }, + "1401": { + "owner_uid": 0, + "avatar_id": 1401, + "data": { + "rank": 0, + "skills": { + "1401001": 6, + "1401002": 10, + "1401003": 10, + "1401004": 10, + "1401007": 1, + "1401101": 1, + "1401102": 1, + "1401103": 1, + "1401201": 1, + "1401202": 1, + "1401203": 1, + "1401204": 1, + "1401205": 1, + "1401206": 1, + "1401207": 1, + "1401208": 1, + "1401209": 1, + "1401210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140101, + 140102 + ], + "sp_value": 110, + "sp_max": 220 + }, + "1402": { + "owner_uid": 0, + "avatar_id": 1402, + "data": { + "rank": 0, + "skills": { + "1402001": 6, + "1402002": 10, + "1402003": 10, + "1402004": 10, + "1402007": 1, + "1402101": 1, + "1402102": 1, + "1402103": 1, + "1402201": 1, + "1402202": 1, + "1402203": 1, + "1402204": 1, + "1402205": 1, + "1402206": 1, + "1402207": 1, + "1402208": 1, + "1402209": 1, + "1402210": 1, + "1402301": 6, + "1402302": 6 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140201, + 140202 + ], + "sp_value": 185, + "sp_max": 350 + }, + "1403": { + "owner_uid": 0, + "avatar_id": 1403, + "data": { + "rank": 0, + "skills": { + "1403001": 6, + "1403002": 10, + "1403003": 10, + "1403004": 10, + "1403007": 1, + "1403101": 1, + "1403102": 1, + "1403103": 1, + "1403201": 1, + "1403202": 1, + "1403203": 1, + "1403204": 1, + "1403205": 1, + "1403206": 1, + "1403207": 1, + "1403208": 1, + "1403209": 1, + "1403210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140301 + ], + "sp_value": 60, + "sp_max": 120 + }, + "1404": { + "owner_uid": 0, + "avatar_id": 1404, + "data": { + "rank": 0, + "skills": { + "1404001": 6, + "1404002": 10, + "1404003": 10, + "1404004": 10, + "1404007": 1, + "1404101": 1, + "1404102": 1, + "1404103": 1, + "1404201": 1, + "1404202": 1, + "1404203": 1, + "1404204": 1, + "1404205": 1, + "1404206": 1, + "1404207": 1, + "1404208": 1, + "1404209": 1, + "1404210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "1405": { + "owner_uid": 0, + "avatar_id": 1405, + "data": { + "rank": 0, + "skills": { + "1405001": 6, + "1405002": 10, + "1405003": 10, + "1405004": 10, + "1405007": 1, + "1405101": 1, + "1405102": 1, + "1405103": 1, + "1405201": 1, + "1405202": 1, + "1405203": 1, + "1405204": 1, + "1405205": 1, + "1405206": 1, + "1405207": 1, + "1405208": 1, + "1405209": 1, + "1405210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140501, + 140502, + 140503 + ], + "sp_value": 70, + "sp_max": 140 + }, + "1406": { + "owner_uid": 0, + "avatar_id": 1406, + "data": { + "rank": 0, + "skills": { + "1406001": 6, + "1406002": 10, + "1406003": 10, + "1406004": 10, + "1406007": 1, + "1406101": 1, + "1406102": 1, + "1406103": 1, + "1406201": 1, + "1406202": 1, + "1406203": 1, + "1406204": 1, + "1406205": 1, + "1406206": 1, + "1406207": 1, + "1406208": 1, + "1406209": 1, + "1406210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 65, + "sp_max": 130 + }, + "1407": { + "owner_uid": 0, + "avatar_id": 1407, + "data": { + "rank": 2, + "skills": { + "1407001": 6, + "1407002": 10, + "1407003": 10, + "1407004": 10, + "1407007": 1, + "1407101": 1, + "1407102": 1, + "1407103": 1, + "1407201": 1, + "1407202": 1, + "1407203": 1, + "1407204": 1, + "1407205": 1, + "1407206": 1, + "1407207": 1, + "1407208": 1, + "1407209": 1, + "1407210": 1, + "1407301": 6, + "1407302": 6 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140703, + 140704, + 140701, + 140702 + ], + "sp_value": 0, + "sp_max": 100 + }, + "1408": { + "owner_uid": 0, + "avatar_id": 1408, + "data": { + "rank": 2, + "skills": { + "1408001": 6, + "1408002": 10, + "1408003": 10, + "1408004": 10, + "1408007": 1, + "1408101": 1, + "1408102": 1, + "1408103": 1, + "1408201": 1, + "1408202": 1, + "1408203": 1, + "1408204": 1, + "1408205": 1, + "1408206": 1, + "1408207": 1, + "1408208": 1, + "1408209": 1, + "1408210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140802, + 140801 + ], + "sp_value": 6, + "sp_max": 12 + }, + "1409": { + "owner_uid": 0, + "avatar_id": 1409, + "data": { + "rank": 0, + "skills": { + "1409001": 6, + "1409002": 10, + "1409003": 10, + "1409004": 10, + "1409007": 1, + "1409101": 1, + "1409102": 1, + "1409103": 1, + "1409201": 1, + "1409202": 1, + "1409203": 1, + "1409204": 1, + "1409205": 1, + "1409206": 1, + "1409207": 1, + "1409208": 1, + "1409209": 1, + "1409210": 1, + "1409301": 6, + "1409302": 6 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 140901 + ], + "sp_value": 70, + "sp_max": 140 + }, + "1410": { + "owner_uid": 0, + "avatar_id": 1410, + "data": { + "rank": 0, + "skills": { + "1410001": 6, + "1410002": 10, + "1410003": 10, + "1410004": 10, + "1410007": 1, + "1410101": 1, + "1410102": 1, + "1410103": 1, + "1410201": 1, + "1410202": 1, + "1410203": 1, + "1410204": 1, + "1410205": 1, + "1410206": 1, + "1410207": 1, + "1410208": 1, + "1410209": 1, + "1410210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 55, + "sp_max": 110 + }, + "1412": { + "owner_uid": 0, + "avatar_id": 1412, + "data": { + "rank": 0, + "skills": { + "1412001": 6, + "1412002": 10, + "1412003": 10, + "1412004": 10, + "1412007": 1, + "1412101": 1, + "1412102": 1, + "1412103": 1, + "1412201": 1, + "1412202": 1, + "1412203": 1, + "1412204": 1, + "1412205": 1, + "1412206": 1, + "1412207": 1, + "1412208": 1, + "1412209": 1, + "1412210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 141202, + 141203, + 141201 + ], + "sp_value": 65, + "sp_max": 130 + }, + "1413": { + "owner_uid": 0, + "avatar_id": 1413, + "data": { + "rank": 0, + "skills": { + "1413001": 6, + "1413002": 10, + "1413003": 10, + "1413004": 10, + "1413007": 1, + "1413101": 1, + "1413102": 1, + "1413103": 1, + "1413201": 1, + "1413202": 1, + "1413203": 1, + "1413204": 1, + "1413205": 1, + "1413206": 1, + "1413207": 1, + "1413208": 1, + "1413209": 1, + "1413210": 1, + "1413301": 6, + "1413302": 6 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 141301 + ], + "sp_value": 120, + "sp_max": 240 + }, + "1414": { + "owner_uid": 0, + "avatar_id": 1414, + "data": { + "rank": 0, + "skills": { + "1414001": 6, + "1414002": 10, + "1414003": 10, + "1414004": 10, + "1414007": 1, + "1414101": 1, + "1414102": 1, + "1414103": 1, + "1414201": 1, + "1414202": 1, + "1414203": 1, + "1414204": 1, + "1414205": 1, + "1414206": 1, + "1414207": 1, + "1414208": 1, + "1414209": 1, + "1414210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 141404, + 141401, + 141402, + 141403 + ], + "sp_value": 68, + "sp_max": 135 + }, + "1415": { + "owner_uid": 0, + "avatar_id": 1415, + "data": { + "rank": 0, + "skills": { + "1415001": 6, + "1415002": 10, + "1415003": 10, + "1415004": 10, + "1415007": 1, + "1415101": 1, + "1415102": 1, + "1415103": 1, + "1415201": 1, + "1415202": 1, + "1415203": 1, + "1415204": 1, + "1415205": 1, + "1415206": 1, + "1415207": 1, + "1415208": 1, + "1415209": 1, + "1415210": 1, + "1415301": 6, + "1415302": 6 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 141501, + 141502, + 141503 + ], + "sp_value": 12, + "sp_max": 24 + }, + "1501": { + "owner_uid": 0, + "avatar_id": 1501, + "data": { + "rank": 0, + "skills": { + "1501001": 6, + "1501002": 10, + "1501003": 10, + "1501004": 10, + "1501007": 1, + "1501101": 1, + "1501102": 1, + "1501103": 1, + "1501201": 1, + "1501202": 1, + "1501203": 1, + "1501204": 1, + "1501205": 1, + "1501206": 1, + "1501207": 1, + "1501208": 1, + "1501209": 1, + "1501210": 1, + "1501420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "1502": { + "owner_uid": 0, + "avatar_id": 1502, + "data": { + "rank": 0, + "skills": { + "1502001": 6, + "1502002": 10, + "1502003": 10, + "1502004": 10, + "1502007": 1, + "1502101": 1, + "1502102": 1, + "1502103": 1, + "1502201": 1, + "1502202": 1, + "1502203": 1, + "1502204": 1, + "1502205": 1, + "1502206": 1, + "1502207": 1, + "1502208": 1, + "1502209": 1, + "1502210": 1, + "1502420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 150201, + 150202 + ], + "sp_value": 90, + "sp_max": 180 + }, + "1504": { + "owner_uid": 0, + "avatar_id": 1504, + "data": { + "rank": 0, + "skills": { + "1504001": 6, + "1504002": 10, + "1504003": 10, + "1504004": 10, + "1504007": 1, + "1504101": 1, + "1504102": 1, + "1504103": 1, + "1504201": 1, + "1504202": 1, + "1504203": 1, + "1504204": 1, + "1504205": 1, + "1504206": 1, + "1504207": 1, + "1504208": 1, + "1504209": 1, + "1504210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 150401 + ], + "sp_value": 75, + "sp_max": 150 + }, + "1505": { + "owner_uid": 0, + "avatar_id": 1505, + "data": { + "rank": 0, + "skills": { + "1505001": 6, + "1505002": 10, + "1505003": 10, + "1505004": 10, + "1505007": 1, + "1505101": 1, + "1505102": 1, + "1505103": 1, + "1505201": 1, + "1505202": 1, + "1505203": 1, + "1505204": 1, + "1505205": 1, + "1505206": 1, + "1505207": 1, + "1505208": 1, + "1505209": 1, + "1505210": 1, + "1505420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 150501 + ], + "sp_value": 240, + "sp_max": 480 + }, + "1506": { + "owner_uid": 0, + "avatar_id": 1506, + "data": { + "rank": 0, + "skills": { + "1506001": 6, + "1506002": 10, + "1506003": 10, + "1506004": 10, + "1506007": 1, + "1506101": 1, + "1506102": 1, + "1506103": 1, + "1506201": 1, + "1506202": 1, + "1506203": 1, + "1506204": 1, + "1506205": 1, + "1506206": 1, + "1506207": 1, + "1506208": 1, + "1506209": 1, + "1506210": 1, + "1506420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 30, + "sp_max": 60 + }, + "1507": { + "owner_uid": 0, + "avatar_id": 1507, + "data": { + "rank": 0, + "skills": { + "1507001": 6, + "1507002": 10, + "1507003": 10, + "1507004": 10, + "1507007": 1, + "1507101": 1, + "1507102": 1, + "1507103": 1, + "1507201": 1, + "1507202": 1, + "1507203": 1, + "1507204": 1, + "1507205": 1, + "1507206": 1, + "1507207": 1, + "1507208": 1, + "1507209": 1, + "1507210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 40, + "sp_max": 80 + }, + "1508": { + "owner_uid": 0, + "avatar_id": 1508, + "data": { + "rank": 0, + "skills": { + "1508001": 6, + "1508002": 10, + "1508003": 10, + "1508004": 10, + "1508007": 1, + "1508101": 1, + "1508102": 1, + "1508103": 1, + "1508201": 1, + "1508202": 1, + "1508203": 1, + "1508204": 1, + "1508205": 1, + "1508206": 1, + "1508207": 1, + "1508208": 1, + "1508209": 1, + "1508210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "1509": { + "owner_uid": 0, + "avatar_id": 1509, + "data": { + "rank": 0, + "skills": { + "1509001": 6, + "1509002": 10, + "1509003": 10, + "1509004": 10, + "1509007": 1, + "1509101": 1, + "1509102": 1, + "1509103": 1, + "1509201": 1, + "1509202": 1, + "1509203": 1, + "1509204": 1, + "1509205": 1, + "1509206": 1, + "1509207": 1, + "1509208": 1, + "1509209": 1, + "1509210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 300, + "sp_max": 600 + }, + "1510": { + "owner_uid": 0, + "avatar_id": 1510, + "data": { + "rank": 0, + "skills": { + "1510001": 6, + "1510002": 10, + "1510003": 10, + "1510004": 10, + "1510007": 1, + "1510101": 1, + "1510102": 1, + "1510103": 1, + "1510201": 1, + "1510202": 1, + "1510203": 1, + "1510204": 1, + "1510205": 1, + "1510206": 1, + "1510207": 1, + "1510208": 1, + "1510209": 1, + "1510210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "8001": { + "owner_uid": 0, + "avatar_id": 8001, + "data": { + "rank": 0, + "skills": { + "8001001": 6, + "8001002": 10, + "8001003": 10, + "8001004": 10, + "8001007": 1, + "8001101": 1, + "8001102": 1, + "8001103": 1, + "8001201": 1, + "8001202": 1, + "8001203": 1, + "8001204": 1, + "8001205": 1, + "8001206": 1, + "8001207": 1, + "8001208": 1, + "8001209": 1, + "8001210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "8002": { + "owner_uid": 0, + "avatar_id": 8002, + "data": { + "rank": 0, + "skills": { + "8002001": 6, + "8002002": 10, + "8002003": 10, + "8002004": 10, + "8002007": 1, + "8002101": 1, + "8002102": 1, + "8002103": 1, + "8002201": 1, + "8002202": 1, + "8002203": 1, + "8002204": 1, + "8002205": 1, + "8002206": 1, + "8002207": 1, + "8002208": 1, + "8002209": 1, + "8002210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "8003": { + "owner_uid": 0, + "avatar_id": 8003, + "data": { + "rank": 0, + "skills": { + "8003001": 6, + "8003002": 10, + "8003003": 10, + "8003004": 10, + "8003007": 1, + "8003101": 1, + "8003102": 1, + "8003103": 1, + "8003201": 1, + "8003202": 1, + "8003203": 1, + "8003204": 1, + "8003205": 1, + "8003206": 1, + "8003207": 1, + "8003208": 1, + "8003209": 1, + "8003210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "8004": { + "owner_uid": 0, + "avatar_id": 8004, + "data": { + "rank": 0, + "skills": { + "8004001": 6, + "8004002": 10, + "8004003": 10, + "8004004": 10, + "8004007": 1, + "8004101": 1, + "8004102": 1, + "8004103": 1, + "8004201": 1, + "8004202": 1, + "8004203": 1, + "8004204": 1, + "8004205": 1, + "8004206": 1, + "8004207": 1, + "8004208": 1, + "8004209": 1, + "8004210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 60, + "sp_max": 120 + }, + "8005": { + "owner_uid": 0, + "avatar_id": 8005, + "data": { + "rank": 0, + "skills": { + "8005001": 6, + "8005002": 10, + "8005003": 10, + "8005004": 10, + "8005007": 1, + "8005101": 1, + "8005102": 1, + "8005103": 1, + "8005201": 1, + "8005202": 1, + "8005203": 1, + "8005204": 1, + "8005205": 1, + "8005206": 1, + "8005207": 1, + "8005208": 1, + "8005209": 1, + "8005210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 70, + "sp_max": 140 + }, + "8006": { + "owner_uid": 0, + "avatar_id": 8006, + "data": { + "rank": 6, + "skills": { + "8006001": 6, + "8006002": 10, + "8006003": 10, + "8006004": 10, + "8006007": 1, + "8006101": 1, + "8006102": 1, + "8006103": 1, + "8006201": 1, + "8006202": 1, + "8006203": 1, + "8006204": 1, + "8006205": 1, + "8006206": 1, + "8006207": 1, + "8006208": 1, + "8006209": 1, + "8006210": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 800501 + ], + "sp_value": 70, + "sp_max": 140 + }, + "8007": { + "owner_uid": 0, + "avatar_id": 8007, + "data": { + "rank": 0, + "skills": { + "8007001": 6, + "8007002": 10, + "8007003": 10, + "8007004": 10, + "8007007": 1, + "8007101": 1, + "8007102": 1, + "8007103": 1, + "8007201": 1, + "8007202": 1, + "8007203": 1, + "8007204": 1, + "8007205": 1, + "8007206": 1, + "8007207": 1, + "8007208": 1, + "8007209": 1, + "8007210": 1, + "8007301": 6, + "8007302": 6, + "8007501": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6, + "21": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "8008": { + "owner_uid": 0, + "avatar_id": 8008, + "data": { + "rank": 6, + "skills": { + "8008001": 6, + "8008002": 10, + "8008003": 10, + "8008004": 10, + "8008007": 1, + "8008101": 1, + "8008102": 1, + "8008103": 1, + "8008201": 1, + "8008202": 1, + "8008203": 1, + "8008204": 1, + "8008205": 1, + "8008206": 1, + "8008207": 1, + "8008208": 1, + "8008209": 1, + "8008210": 1, + "8008301": 6, + "8008302": 6, + "8008501": 1 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "19": 6, + "20": 6, + "21": 1 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 800701 + ], + "sp_value": 80, + "sp_max": 160 + }, + "8009": { + "owner_uid": 0, + "avatar_id": 8009, + "data": { + "rank": 0, + "skills": { + "8009001": 6, + "8009002": 10, + "8009003": 10, + "8009004": 10, + "8009007": 1, + "8009101": 1, + "8009102": 1, + "8009103": 1, + "8009201": 1, + "8009202": 1, + "8009203": 1, + "8009204": 1, + "8009205": 1, + "8009206": 1, + "8009207": 1, + "8009208": 1, + "8009209": 1, + "8009210": 1, + "8009420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [], + "sp_value": 80, + "sp_max": 160 + }, + "8010": { + "owner_uid": 0, + "avatar_id": 8010, + "data": { + "rank": 6, + "skills": { + "8010001": 6, + "8010002": 10, + "8010003": 10, + "8010004": 10, + "8010007": 1, + "8010101": 1, + "8010102": 1, + "8010103": 1, + "8010201": 1, + "8010202": 1, + "8010203": 1, + "8010204": 1, + "8010205": 1, + "8010206": 1, + "8010207": 1, + "8010208": 1, + "8010209": 1, + "8010210": 1, + "8010420": 10 + }, + "skills_by_anchor_type": { + "1": 6, + "2": 10, + "3": 10, + "4": 10, + "5": 1, + "6": 1, + "7": 1, + "8": 1, + "9": 1, + "10": 1, + "11": 1, + "12": 1, + "13": 1, + "14": 1, + "15": 1, + "16": 1, + "17": 1, + "18": 1, + "22": 10 + } + }, + "level": 80, + "promotion": 6, + "techniques": [ + 800901, + 800902 + ], + "sp_value": 80, + "sp_max": 160 + } + }, + "battle_config": { + "battle_type": "CE", + "blessings": [], + "custom_stats": [], + "cycle_count": 30, + "stage_id": 0, + "path_resonance_id": 0, + "monsters": [ + [ + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + }, + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + }, + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + } + ], + [ + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + }, + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + }, + { + "monster_id": 101302009, + "level": 95, + "amount": 1 + } + ] + ] + } +} \ No newline at end of file diff --git a/app/src/main/assets/version.json b/app/src/main/assets/version.json new file mode 100644 index 0000000..38e0e58 --- /dev/null +++ b/app/src/main/assets/version.json @@ -0,0 +1,170 @@ +{ + "CNBETAAndroid4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAAndroid4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAAndroid4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "CNBETAAndroid4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + }, + "CNBETAWin4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAWin4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAWin4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "CNBETAWin4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + }, + "CNBETAiOS4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAiOS4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "CNBETAiOS4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "CNBETAiOS4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + }, + "OSBETAAndroid4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAAndroid4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAAndroid4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "OSBETAAndroid4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + }, + "OSBETAWin4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAWin4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAWin4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "OSBETAWin4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + }, + "OSBETAiOS4.3.51": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15261247_f6e6db2125cf_369da465b36faf", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15235885_6091fd15561a_83828f542dc1f3", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15265964_c2fbb1eb05fc_f2238199ee2b6e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15242148_d40f856defc0_599b68a0adf7bd", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAiOS4.3.52": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15305566_fea016d35145_54bbf8ab4009f5", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15318724_a7af31327e74_b3328eb95329b2", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15305751_09783637ccc4_d16f9c81138ab3", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15265964_799df4f0ecef_5a94550ba64cff" + }, + "OSBETAiOS4.3.53": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15378434_99bffafdeff7_5d97713dcef07f", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15385668_07011a79dadf_1111728953724e", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15378559_7514340ac82f_70dad6c56b8bc7", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_15384138_4e4be8cf97ac_1e3fcfa0a93bef" + }, + "OSBETAiOS4.3.54": { + "asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "asset_bundle_url_b": "https://autopatchos.starrails.com/asb/BetaLive/output_15440751_fb99372e1e48_fd11e486274779", + "ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15497648_6ef97acf9b45_ea8ed0ff303308", + "lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15440843_4201511c48d0_34717e44c82e30", + "ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4" + } +} \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..f65cac6 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/example/firefly_go_android/GolangServerService.kt b/app/src/main/java/com/example/firefly_go_android/GolangServerService.kt new file mode 100644 index 0000000..33a42ff --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/GolangServerService.kt @@ -0,0 +1,350 @@ +<<<<<<< HEAD +package com.example.firefly_go_android + +import android.annotation.SuppressLint +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.app.Service +import android.content.Intent +import android.content.pm.ServiceInfo +import android.graphics.BitmapFactory +import android.os.Build +import android.os.IBinder +import android.os.PowerManager +import android.util.Log +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.core.app.NotificationCompat +import androidx.core.content.ContextCompat +import libandroid.Libandroid +import androidx.core.content.edit + +class GolangServerService : Service() { + + companion object { + const val CHANNEL_ID = "GolangServerChannel" + const val NOTIFICATION_ID = 1 + private const val TAG = "GolangServerService" + var isRunning by mutableStateOf(false) + } + + private var wakeLock: PowerManager.WakeLock? = null + + override fun onCreate() { + super.onCreate() + createNotificationChannel() + } + + @SuppressLint("WakelockTimeout") + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (isRunning) { + Log.d(TAG, "Server is already running") + return START_STICKY + } + isRunning = true + Log.d(TAG, "onStartCommand called") + + val notificationIntent = Intent(this, MainActivity::class.java) + val pendingIntent = PendingIntent.getActivity( + this, + 0, + notificationIntent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + val largeIcon = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher) + + val notification = NotificationCompat.Builder(this, CHANNEL_ID) + .setSmallIcon(R.mipmap.ic_launcher_round) + .setLargeIcon(largeIcon) + .setContentTitle("FireflyGO Server") + .setContentText("Server is running...") + .setColor(ContextCompat.getColor(this, R.color.teal_700)) + .setOngoing(true) + .setOnlyAlertOnce(true) + .setContentIntent(pendingIntent) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setShowWhen(false) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .build() + + if (Build.VERSION.SDK_INT >= 34) { + startForeground( + NOTIFICATION_ID, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE + ) + } else if (Build.VERSION.SDK_INT >= 29) { + startForeground( + NOTIFICATION_ID, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST + ) + } else { + startForeground(NOTIFICATION_ID, notification) + } + + // Khởi tạo WakeLock và WifiLock + try { + val powerManager = getSystemService(POWER_SERVICE) as PowerManager + wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock") + wakeLock?.acquire() + Log.d(TAG, "WakeLock acquired") + } catch (e: Exception) { + Log.e(TAG, "Lock failed", e) + } + + Thread { + try { + val sharedPrefs = getSharedPreferences("AppPrefs", MODE_PRIVATE) + var appDataPath = intent?.getStringExtra("appDataPath") + + if (appDataPath != null) { + sharedPrefs.edit { putString("saved_app_data_path", appDataPath) } + } else { + appDataPath = sharedPrefs.getString("saved_app_data_path", null) + } + + if (appDataPath != null) { + Libandroid.setPathDataLocal(appDataPath) + Log.d(TAG, "Set path data: $appDataPath") + } else { + isRunning = false + Log.e(TAG, "appDataPath not received and not found in SharedPreferences") + stopSelf() + return@Thread + } + + Libandroid.setServerRunning(true) + isRunning = true + Log.d(TAG, "Server started") + } catch (e: Exception) { + isRunning = false + Log.e(TAG, "Error starting server", e) + stopSelf() + } + }.start() + + return START_STICKY + } + + override fun onDestroy() { + super.onDestroy() + Log.d(TAG, "onDestroy called") + + try { + val result = Libandroid.setServerRunning(false) + isRunning = false + Log.d(TAG, "Server shutdown result: $result") + } catch (e: Exception) { + Log.e(TAG, "Error shutting down server", e) + } + + // Nhả các khóa tài nguyên + try { + wakeLock?.let { + if (it.isHeld) { + it.release() + Log.d(TAG, "WakeLock released") + } + } + } catch (e: Exception) { + Log.e(TAG, "Failed to release Locks", e) + } + isRunning = false + } + + override fun onBind(intent: Intent?): IBinder? = null + + private fun createNotificationChannel() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val channel = NotificationChannel( + CHANNEL_ID, + "Golang Server Channel", + NotificationManager.IMPORTANCE_LOW + ).apply { + description = "Channel for running Golang backend in foreground" + } + + val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + manager.createNotificationChannel(channel) + Log.d(TAG, "Notification channel created") + } + } +======= +package com.example.firefly_go_android + +import android.annotation.SuppressLint +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.app.Service +import android.content.Intent +import android.content.pm.ServiceInfo +import android.graphics.BitmapFactory +import android.os.Build +import android.os.IBinder +import android.os.PowerManager +import android.util.Log +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.core.app.NotificationCompat +import androidx.core.content.ContextCompat +import libandroid.Libandroid +import androidx.core.content.edit + +class GolangServerService : Service() { + + companion object { + const val CHANNEL_ID = "GolangServerChannel" + const val NOTIFICATION_ID = 1 + private const val TAG = "GolangServerService" + var isRunning by mutableStateOf(false) + } + + private var wakeLock: PowerManager.WakeLock? = null + + override fun onCreate() { + super.onCreate() + createNotificationChannel() + } + + @SuppressLint("WakelockTimeout") + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (isRunning) { + Log.d(TAG, "Server is already running") + return START_STICKY + } + isRunning = true + Log.d(TAG, "onStartCommand called") + + val notificationIntent = Intent(this, MainActivity::class.java) + val pendingIntent = PendingIntent.getActivity( + this, + 0, + notificationIntent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + val largeIcon = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher) + + val notification = NotificationCompat.Builder(this, CHANNEL_ID) + .setSmallIcon(R.mipmap.ic_launcher_round) + .setLargeIcon(largeIcon) + .setContentTitle("FireflyGO Server") + .setContentText("Server is running...") + .setColor(ContextCompat.getColor(this, R.color.teal_700)) + .setOngoing(true) + .setOnlyAlertOnce(true) + .setContentIntent(pendingIntent) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setShowWhen(false) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .build() + + if (Build.VERSION.SDK_INT >= 34) { + startForeground( + NOTIFICATION_ID, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE + ) + } else if (Build.VERSION.SDK_INT >= 29) { + startForeground( + NOTIFICATION_ID, + notification, + ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST + ) + } else { + startForeground(NOTIFICATION_ID, notification) + } + + // Khởi tạo WakeLock và WifiLock + try { + val powerManager = getSystemService(POWER_SERVICE) as PowerManager + wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "GolangServer::WakeLock") + wakeLock?.acquire() + Log.d(TAG, "WakeLock acquired") + } catch (e: Exception) { + Log.e(TAG, "Lock failed", e) + } + + Thread { + try { + val sharedPrefs = getSharedPreferences("AppPrefs", MODE_PRIVATE) + var appDataPath = intent?.getStringExtra("appDataPath") + + if (appDataPath != null) { + sharedPrefs.edit { putString("saved_app_data_path", appDataPath) } + } else { + appDataPath = sharedPrefs.getString("saved_app_data_path", null) + } + + if (appDataPath != null) { + Libandroid.setPathDataLocal(appDataPath) + Log.d(TAG, "Set path data: $appDataPath") + } else { + isRunning = false + Log.e(TAG, "appDataPath not received and not found in SharedPreferences") + stopSelf() + return@Thread + } + + Libandroid.setServerRunning(true) + isRunning = true + Log.d(TAG, "Server started") + } catch (e: Exception) { + isRunning = false + Log.e(TAG, "Error starting server", e) + stopSelf() + } + }.start() + + return START_STICKY + } + + override fun onDestroy() { + super.onDestroy() + Log.d(TAG, "onDestroy called") + + try { + val result = Libandroid.setServerRunning(false) + isRunning = false + Log.d(TAG, "Server shutdown result: $result") + } catch (e: Exception) { + Log.e(TAG, "Error shutting down server", e) + } + + // Nhả các khóa tài nguyên + try { + wakeLock?.let { + if (it.isHeld) { + it.release() + Log.d(TAG, "WakeLock released") + } + } + } catch (e: Exception) { + Log.e(TAG, "Failed to release Locks", e) + } + isRunning = false + } + + override fun onBind(intent: Intent?): IBinder? = null + + private fun createNotificationChannel() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val channel = NotificationChannel( + CHANNEL_ID, + "Golang Server Channel", + NotificationManager.IMPORTANCE_LOW + ).apply { + description = "Channel for running Golang backend in foreground" + } + + val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + manager.createNotificationChannel(channel) + Log.d(TAG, "Notification channel created") + } + } +>>>>>>> 2459650 (feat: v4) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/firefly_go_android/MainActivity.kt b/app/src/main/java/com/example/firefly_go_android/MainActivity.kt new file mode 100644 index 0000000..d5a196d --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/MainActivity.kt @@ -0,0 +1,1136 @@ +package com.example.firefly_go_android + +import AutoUpdaterManager +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.Environment +import android.util.Log +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.autoupdater.UpdateFeatures +import com.example.firefly_go_android.ui.theme.FireflyPsAndoridTheme +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.io.* +import androidx.compose.animation.* +import androidx.compose.animation.core.* +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +<<<<<<< HEAD +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState +======= +import androidx.compose.foundation.border +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.collectIsPressedAsState +>>>>>>> 2459650 (feat: v4) +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.BugReport +import androidx.compose.material.icons.filled.CloudDownload +import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.material.icons.filled.PlayCircleFilled +import androidx.compose.material.icons.filled.RestartAlt +import androidx.compose.material.icons.filled.Stop +import androidx.compose.material.icons.filled.StopCircle +import androidx.compose.material.icons.rounded.AutoAwesome +import androidx.compose.material.icons.rounded.CheckCircle +import androidx.compose.material.icons.rounded.Download +import androidx.compose.material.icons.rounded.InstallMobile +import androidx.compose.material.icons.rounded.SystemUpdate +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.scale +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import kotlinx.coroutines.delay +import org.json.JSONObject +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontFamily +import android.os.PowerManager +import android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS +import androidx.core.content.ContextCompat +import androidx.core.net.toUri +import android.provider.Settings + +<<<<<<< HEAD +======= +import com.example.firefly_go_android.network.AuthManager +import com.example.firefly_go_android.ui.ScamWarningDialog +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.launch + +>>>>>>> 2459650 (feat: v4) +data class AppVersion( + val latestVersion: String, + val changelog: String, + val apkUrl: String +) + +class MainActivity : ComponentActivity() { +<<<<<<< HEAD +======= + private lateinit var authManager: AuthManager + private var onAuthStatusChanged: (() -> Unit)? = null + +>>>>>>> 2459650 (feat: v4) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + requestBatteryExemption(this) + requestInstallPermission(this) + requestStoragePermission(this) + +<<<<<<< HEAD +======= + authManager = AuthManager(this) + +>>>>>>> 2459650 (feat: v4) + val appDataPath = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "FireflyGo").absolutePath + val dataDir = File("$appDataPath/data") + if (!dataDir.exists()) dataDir.mkdirs() + + val sharedPrefs = getSharedPreferences("AppPrefs", MODE_PRIVATE) + +<<<<<<< HEAD + // Lấy thông tin Package +======= +>>>>>>> 2459650 (feat: v4) + val packageInfo = if (Build.VERSION.SDK_INT >= 33) { + packageManager.getPackageInfo(packageName, android.content.pm.PackageManager.PackageInfoFlags.of(0)) + } else { + @Suppress("DEPRECATION") + packageManager.getPackageInfo(packageName, 0) + } + + val currentVersionCode = if (Build.VERSION.SDK_INT >= 33) packageInfo.longVersionCode else packageInfo.versionCode.toLong() + val currentLastUpdateTime = packageInfo.lastUpdateTime + + val savedVersionCode = sharedPrefs.getLong("last_version_code", 0L) + val savedLastUpdateTime = sharedPrefs.getLong("last_update_time", 0L) + + val isFolderEmpty = dataDir.listFiles()?.isEmpty() ?: true + + val shouldOverride = currentVersionCode > savedVersionCode || + currentLastUpdateTime > savedLastUpdateTime || + isFolderEmpty + + Log.i("AppUpdate", "Code: $currentVersionCode, LastUpdate: $currentLastUpdateTime") + Log.i("AppUpdate", "SavedCode: $savedVersionCode, SavedUpdate: $savedLastUpdateTime") + Log.i("AppUpdate", "Should Override: $shouldOverride") + + if (copyRawToFile(this, dataDir, shouldOverride)) { + if (shouldOverride) { + sharedPrefs.edit() + .putLong("last_version_code", currentVersionCode) + .putLong("last_update_time", currentLastUpdateTime) + .apply() + Log.i("AppUpdate", "Updated SharedPreferences with new version and time") + } + } + + val jsonString = try { + resources.openRawResource(R.raw.app_version_json).use { input -> + input.bufferedReader().use { it.readText() } + } + } catch (e: Exception) { + "{}" + } + + val jsonObject = if (jsonString.isNotEmpty()) JSONObject(jsonString) else JSONObject() + val latestVersion = jsonObject.optString("latest_version", "1.0.0") + val changelog = jsonObject.optString("changelog", "") + val apkUrl = jsonObject.optString("apk_url", "") + + val appVersion = AppVersion(latestVersion, changelog, apkUrl) + +<<<<<<< HEAD + enableEdgeToEdge() + setContent { + FireflyPsAndoridTheme { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Box(modifier = Modifier.fillMaxSize()) { + ServerControlScreen(appDataPath, dataDir, appVersion, Modifier.padding(innerPadding)) + AutoUpdateDialog(onDismiss = {}, appVersion, dataDir, true) +======= + handleDeepLink(intent) + + enableEdgeToEdge() + setContent { + FireflyPsAndoridTheme { + var isCheckingAuth by remember { mutableStateOf(authManager.isLoggedIn) } + var authStateTrigger by remember { mutableIntStateOf(0) } + var hasCheckedUpdate by remember { mutableStateOf(false) } + var showScamWarning by remember { mutableStateOf(true) } + + onAuthStatusChanged = { + authStateTrigger++ + } + + LaunchedEffect(Unit) { + if (authManager.isLoggedIn) { + authManager.accessToken?.let { token -> + val result = authManager.fetchProfileAndVerifyRole(token) + if (result.isFailure) { + onAuthStatusChanged?.invoke() + } + } + } + isCheckingAuth = false + } + + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + Box(modifier = Modifier.fillMaxSize()) { + key(authStateTrigger) { + ServerControlScreen(appDataPath, dataDir, appVersion, authManager, Modifier.padding(innerPadding)) + if (!showScamWarning && !hasCheckedUpdate) { + AutoUpdateDialog( + onDismiss = { hasCheckedUpdate = true }, + appVersion, + dataDir, + true + ) + } + } + if (showScamWarning) { + ScamWarningDialog(onDismiss = { showScamWarning = false }) + } +>>>>>>> 2459650 (feat: v4) + } + } + } + } + + } + +<<<<<<< HEAD +======= + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + handleDeepLink(intent) + } + + private fun handleDeepLink(intent: Intent?) { + val data = intent?.data ?: return + if (data.scheme == "firefly-launcher" && data.host == "auth" && data.path == "/discord") { + val token = data.getQueryParameter("token") + if (!token.isNullOrBlank()) { + authManager.accessToken = token + lifecycleScope.launch { + val result = authManager.fetchProfileAndVerifyRole(token) + if (result.isSuccess) { + Toast.makeText(this@MainActivity, "Logged in via Discord successfully!", Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this@MainActivity, "Failed to get Discord profile: ${result.exceptionOrNull()?.message}", Toast.LENGTH_SHORT).show() + } + onAuthStatusChanged?.invoke() + } + } + } + } + +>>>>>>> 2459650 (feat: v4) +} +@SuppressLint("BatteryLife") + +fun requestBatteryExemption(context: Context) { + val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager + if (!powerManager.isIgnoringBatteryOptimizations(context.packageName)) { + val intent = Intent().apply { + action = ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS + data = "package:${context.packageName}".toUri() + } + context.startActivity(intent) + } +} + +fun requestInstallPermission(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (!context.packageManager.canRequestPackageInstalls()) { + val intent = Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).apply { + data = "package:${context.packageName}".toUri() + } + context.startActivity(intent) + Toast.makeText(context, "Please allow installing unknown apps to update", Toast.LENGTH_LONG).show() + } + } +} + +fun requestStoragePermission(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (!Environment.isExternalStorageManager()) { + try { + val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply { + data = "package:${context.packageName}".toUri() + } + context.startActivity(intent) + Toast.makeText(context, "Please allow All Files Access to load game data", Toast.LENGTH_LONG).show() + } catch (e: Exception) { + try { + val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + context.startActivity(intent) + } catch (ex: Exception) { + Log.e("StoragePermission", "Failed to open settings", ex) + } + } + } + } +} +<<<<<<< HEAD +======= + +>>>>>>> 2459650 (feat: v4) +fun copyRawToFile(context: Context, targetDir: File, override: Boolean = false): Boolean { + val files = listOf( + "data-in-game.json" to "data-in-game.json", + "freesr-data.json" to "freesr-data.json", + "version.json" to "version.json" + ) + + return try { + if (!targetDir.exists()) targetDir.mkdirs() + + for ((assetFile, outName) in files) { + val outFile = File(targetDir, outName) + + if (outFile.exists() && !override) { + Log.i("CopyRaw", "Skipping $outName (already exists and no override)") + continue + } + + Log.i("CopyRaw", "Copying $assetFile to ${outFile.absolutePath} (Override: $override)") + context.assets.open(assetFile).use { input -> + FileOutputStream(outFile).use { output -> + input.copyTo(output) + output.fd.sync() + } + } + } + + true + } catch (e: Exception) { + Log.e("CopyRaw", "Error copying asset file: ${e.message}", e) + false + } +} + +fun removeFile(targetDir: File, fileName: String): Boolean { + val file = File(targetDir, fileName) + return if (file.exists()) { + try { + if (file.delete()) { + Log.i("FileRemove", "Removed $fileName from ${file.absolutePath}") + true + } else { + Log.e("FileRemove", "Failed to remove $fileName from ${file.absolutePath}") + false + } + } catch (e: Exception) { + Log.e("FileRemove", "Error removing $fileName: ${e.message}") + false + } + } else { + Log.i("FileRemove", "$fileName does not exist in ${targetDir.absolutePath}") + false + } +} + + +<<<<<<< HEAD +@SuppressLint("ImplicitSamInstance") +@Composable +fun ServerControlScreen(appDataPath: String, dataDir: File, appVersion: AppVersion, modifier: Modifier = Modifier) { + val context = LocalContext.current + val isRunning = GolangServerService.isRunning + + var showResetDialog by remember { mutableStateOf(false) } + var showUpdateDialog by remember { mutableStateOf(false) } + var showLogs by remember { mutableStateOf(false) } + Box( + modifier = modifier.fillMaxSize() + ) { + // Background image + Image( + painter = painterResource(id = R.drawable.background), + contentDescription = "Background", + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + + Box( + modifier = Modifier + .fillMaxSize() + .background(Color.Black.copy(alpha = 0.3f)) + ) + + Column( + modifier = Modifier + .fillMaxSize() + .padding(24.dp), + verticalArrangement = Arrangement.SpaceBetween, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // Title + Text( + text = "Firefly GO for Android", + fontSize = 26.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(top = 24.dp), + color = Color.White, + style = TextStyle( + shadow = Shadow( + color = Color.Black, + offset = Offset(2f, 2f), + blurRadius = 4f + ) + ) + ) + + // Server status with icon + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + modifier = Modifier.padding(8.dp) + ) { + Icon( + imageVector = if (isRunning) Icons.Default.PlayCircleFilled else Icons.Default.StopCircle, + contentDescription = null, + tint = if (isRunning) Color(0xFF4CAF50) else Color.Gray, + modifier = Modifier.size(40.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = if (isRunning) "Server is running" else "Server is stopped", + fontSize = 30.sp, + color = Color.White, + fontWeight = FontWeight.Medium, + style = TextStyle( + shadow = Shadow( + color = Color.Black, + offset = Offset(1f, 1f), + blurRadius = 2f + ) + ) + ) + } + + + Spacer(modifier = Modifier.height(200.dp)) + // Toggle button + Button( + onClick = { + try { + if (!isRunning) { + val intent = Intent(context, GolangServerService::class.java) + intent.putExtra("appDataPath", appDataPath) + ContextCompat.startForegroundService(context, intent) + } else { + context.stopService(Intent(context, GolangServerService::class.java)) + } + } catch (e: Exception) { + Toast.makeText(context, "Error: ${e.message}", Toast.LENGTH_SHORT).show() + } + }, + colors = ButtonDefaults.buttonColors( + containerColor = if (isRunning) Color(0xFFB71C1C) else Color(0xFF2196F3), + contentColor = Color.White + ), + shape = RoundedCornerShape(12.dp), + modifier = Modifier + .fillMaxWidth(0.8f) + .height(50.dp) + ) { + Icon( + imageVector = if (isRunning) Icons.Default.Stop else Icons.Default.PlayArrow, + contentDescription = null, + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = if (isRunning) "Stop Server" else "Start Server", + fontSize = 20.sp + ) + } + + Spacer(modifier = Modifier.height(4.dp)) + + // Widget icons row + Row( + modifier = Modifier.fillMaxWidth(0.85f), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically + ) { + + // Check Update widget + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .width(80.dp) + .clickable { showUpdateDialog = true } + .background( + Color.White.copy(alpha = 0.8f), + RoundedCornerShape(8.dp) + ) + .padding(12.dp) + ) { + Icon( + imageVector = Icons.Default.CloudDownload, + contentDescription = "Check Update", + tint = Color.Gray, + modifier = Modifier.size(32.dp) + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = "Update", + fontSize = 12.sp, + color = Color.Black, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium + ) + } + + // Reset Data widget + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .width(80.dp) + .clickable { showResetDialog = true } + .background( + Color.White.copy(alpha = 0.8f), + RoundedCornerShape(8.dp) + ) + .padding(12.dp) + ) { + Icon( + imageVector = Icons.Default.RestartAlt, + contentDescription = "Reset Data", + tint = Color.Gray, + modifier = Modifier.size(32.dp) + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = "Reset", + fontSize = 12.sp, + color = Color.Black, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium + ) + } + + // Logcat (Lynx) widget + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier + .width(80.dp) + .clickable { + showLogs = true // mở popup log + } + .background( + Color.White.copy(alpha = 0.8f), + RoundedCornerShape(8.dp) + ) + .padding(12.dp) + ) { + Icon( + imageVector = Icons.Default.BugReport, + contentDescription = "Open Logcat", + tint = Color.Gray, + modifier = Modifier.size(32.dp) + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = "Logs", + fontSize = 12.sp, + color = Color.Black, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium + ) + } + } + + Spacer(modifier = Modifier.height(75.dp)) + } + } + + if (showLogs) { + LogPopup(onDismiss = { showLogs = false }) + } + // Reset Data Confirmation Dialog + if (showResetDialog) { + AlertDialog( + onDismissRequest = { showResetDialog = false }, + title = { + Text(text = "Reset Data") + }, + text = { + Text(text = "Do you want reset all data? This action can not rollback.") + }, + confirmButton = { + TextButton( + onClick = { + showResetDialog = false + try { + copyRawToFile(context, dataDir, true) + Toast.makeText(context, "Data has been reset successfully", Toast.LENGTH_SHORT).show() + } catch (e: Exception) { + Toast.makeText(context, "Reset failed: ${e.message}", Toast.LENGTH_SHORT).show() + } + } + ) { + Text("Yes", color = Color(0xFFFF0606)) + } + }, + dismissButton = { + TextButton( + onClick = { showResetDialog = false } + ) { + Text("No") + } + } + ) + } + + // Auto Update Dialog + if (showUpdateDialog) { + AutoUpdateDialog( + onDismiss = { showUpdateDialog = false }, + appVersion, + dataDir + ) + } +} + +fun parseGoLogLine(line: String): String? { + val regex = Regex(""".*GoLog\s*:?\s*(.*)""") + val match = regex.find(line) + val content = match?.groupValues?.getOrNull(1)?.trim() + + return if (content.isNullOrBlank()) null else content +} + + +fun parseAnsi(text: String, defaultColor: Color): AnnotatedString { + val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m") + val builder = buildAnnotatedString { + var lastIndex = 0 + var currentColor = defaultColor + + for (match in regex.findAll(text)) { + val start = match.range.first + + // 1. Thêm phần text TRƯỚC mã ANSI với màu HIỆN TẠI + val before = text.substring(lastIndex, start) + if (before.isNotEmpty()) { + withStyle(SpanStyle(color = currentColor)) { + append(before) + } + } + + // 2. Lấy mã code (ví dụ 31, 36, hoặc 0) + val code = try { + match.groupValues[1].toInt() + } catch (e: NumberFormatException) { + 0 + } + + currentColor = when (code) { + 0 -> defaultColor + 30 -> Color.Black + 31 -> Color.Red + 32 -> Color(0xFF00C853) // Green + 33 -> Color(0xFFFFD600) // Yellow + 34 -> Color(0xFF2962FF) // Blue + 35 -> Color(0xFFD500F9) // Magenta + 36 -> Color(0xFF00B8D4) // Cyan + 37 -> Color.White + else -> currentColor + } + + lastIndex = match.range.last + 1 + } + + if (lastIndex < text.length) { + val remain = text.substring(lastIndex) + if (remain.isNotEmpty()) { + withStyle(SpanStyle(color = currentColor)) { + append(remain) + } + } + } + } + + return builder +} + +@Composable +fun LogPopup( + onDismiss: () -> Unit +) { + var logs by remember { mutableStateOf(listOf()) } + val scope = rememberCoroutineScope() + + LaunchedEffect(Unit) { + scope.launch(Dispatchers.IO) { + try { + val process = Runtime.getRuntime().exec("logcat -s GoLog") + val reader = BufferedReader(InputStreamReader(process.inputStream)) + + var line: String? + while (reader.readLine().also { line = it } != null) { + val clean = parseGoLogLine(line!!) + if (!clean.isNullOrBlank()) { + logs = (logs + clean).takeLast(200) + } + } + } catch (e: Exception) { + logs = logs + "Error reading logcat: ${e.message}" + } + } + } + val listState = rememberLazyListState() + + LaunchedEffect(logs.size) { + if (logs.isNotEmpty()) { + listState.animateScrollToItem(logs.size - 1) + } + } + + val defaultTextColor = LocalContentColor.current + + Dialog(onDismissRequest = { onDismiss() }) { + Surface( + shape = RoundedCornerShape(12.dp), + tonalElevation = 8.dp, + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.7f) + ) { + Column(modifier = Modifier.padding(16.dp)) { + Text( + text = "GoLog Output", + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold + ) + Spacer(modifier = Modifier.height(8.dp)) + + LazyColumn(state = listState, modifier = Modifier.weight(1f)) { + items(logs.size) { index -> + Text( + text = parseAnsi(logs[index], defaultTextColor), + fontSize = 12.sp, + + // 2. DÙNG FONT MONOSPACE + fontFamily = FontFamily.Monospace, + + // 3. (Tuỳ chọn) Giảm chiều cao dòng để logo liền mạch + lineHeight = 14.sp, + + modifier = Modifier.padding(vertical = 2.dp) + ) + } + } + + Spacer(modifier = Modifier.height(8.dp)) + Button( + onClick = { onDismiss() }, + modifier = Modifier.align(Alignment.End) + ) { + Text("Close") + } + } + } + } +} + + + +@Composable +fun AutoUpdateDialog( + onDismiss: () -> Unit, + appVersion: AppVersion, + dataDir: File, + isFirstOpen: Boolean = false +) { + val context = LocalContext.current + val autoUpdaterManager = AutoUpdaterManager(context) + var update by remember { mutableStateOf(null) } + var progress by remember { mutableStateOf(0) } + var showDialog by remember { mutableStateOf(false) } + var isDownloading by remember { mutableStateOf(false) } + var downloadComplete by remember { mutableStateOf(false) } + val coroutineScope = rememberCoroutineScope() + + val progressAnimation by animateFloatAsState( + targetValue = progress / 100f, + animationSpec = tween(300, easing = FastOutSlowInEasing), + label = "progress" + ) + + val scaleAnimation by animateFloatAsState( + targetValue = if (showDialog) 1f else 0.8f, + animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy), + label = "scale" + ) + + // Check for update + LaunchedEffect(Unit) { + val result = withContext(Dispatchers.IO) { + autoUpdaterManager.checkForUpdate( + JSONfileURL = "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Andoid/raw/branch/master/app/src/main/res/raw/app_version_json.json" + ) + } + + val hasUpdate = result != null && appVersion.latestVersion != result.latestversion + + update = if (hasUpdate) result else null + + showDialog = if (isFirstOpen) { + hasUpdate + } else { + result != null + } + } + + + // Download progress + LaunchedEffect(progress) { + if (progress >= 100 && isDownloading) { + downloadComplete = true + } + } + + if (showDialog) { + Dialog( + onDismissRequest = { + if (!isDownloading) showDialog = false + onDismiss() + }, + properties = DialogProperties( + dismissOnBackPress = !isDownloading, + dismissOnClickOutside = !isDownloading + ) + ) { + Card( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .scale(scaleAnimation) + .animateContentSize(), + shape = RoundedCornerShape(24.dp), + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface), + elevation = CardDefaults.cardElevation(defaultElevation = 8.dp) + ) { + Column( + modifier = Modifier.padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + // Header icon + Box( + modifier = Modifier + .size(72.dp) + .background( + MaterialTheme.colorScheme.primaryContainer, + CircleShape + ), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = if (update != null) Icons.Rounded.SystemUpdate + else Icons.Rounded.CheckCircle, + contentDescription = null, + modifier = Modifier.size(36.dp), + tint = MaterialTheme.colorScheme.onPrimaryContainer + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + // Title + Text( + text = if (update != null) "Update Available" else "No Update Available", + style = MaterialTheme.typography.headlineSmall, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(12.dp)) + + if (update != null) { + VersionInfoSection(update!!) + ChangelogSection(update!!) + DownloadProgressSection( + isDownloading = isDownloading, + downloadComplete = downloadComplete, + progress = progressAnimation + ) + ActionButtons( + isDownloading = isDownloading, + downloadComplete = downloadComplete, + onDownloadClick = { + isDownloading = true + coroutineScope.launch { + withContext(Dispatchers.IO) { + autoUpdaterManager.downloadapk( + context, + update!!.apk_url, + "FireflyGO_${update!!.latestversion}.apk" + ) { prog -> progress = prog } + } + } + }, + onDismiss = { showDialog = false; onDismiss() } + ) + } else { + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = "Your app is up to date", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.7f), + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(24.dp)) + + + Button( + onClick = { showDialog = false; onDismiss() }, + modifier = Modifier.wrapContentWidth(), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors( + containerColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.onPrimary + ), + contentPadding = PaddingValues(horizontal = 32.dp, vertical = 12.dp) + ) { + Text( + text = "OK", + style = MaterialTheme.typography.labelMedium + ) + } + } + } + } + } + } + } +} + +// Version info card +@Composable +fun VersionInfoSection(update: UpdateFeatures) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant.copy(alpha = 0.7f) + ), + shape = RoundedCornerShape(12.dp) + ) { + Column(modifier = Modifier.padding(16.dp)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "Latest Version", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + Surface( + shape = RoundedCornerShape(8.dp), + color = MaterialTheme.colorScheme.primary + ) { + Text( + text = "v${update.latestversion}", + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), + style = MaterialTheme.typography.labelSmall, + color = MaterialTheme.colorScheme.onPrimary, + fontWeight = FontWeight.Medium + ) + } + } + } + } + Spacer(modifier = Modifier.height(12.dp)) +} + +// Changelog section +@Composable +fun ChangelogSection(update: UpdateFeatures) { + Column(modifier = Modifier.fillMaxWidth()) { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon( + imageVector = Icons.Rounded.AutoAwesome, + contentDescription = null, + modifier = Modifier.size(16.dp), + tint = MaterialTheme.colorScheme.primary + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = "What's New", + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.Medium, + color = MaterialTheme.colorScheme.onSurface + ) + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = update.changelog, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + lineHeight = 20.sp + ) + } +} + +// Progress section +@Composable +fun DownloadProgressSection( + isDownloading: Boolean, + downloadComplete: Boolean, + progress: Float +) { + if (!isDownloading && !downloadComplete) return + Spacer(modifier = Modifier.height(16.dp)) + Column(modifier = Modifier.fillMaxWidth()) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = if (downloadComplete) "Installation Ready" else "Downloading...", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.primary, + fontWeight = FontWeight.Medium + ) + Text( + text = "${(progress*100).toInt()}%", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + Spacer(modifier = Modifier.height(8.dp)) + LinearProgressIndicator( + progress = { progress }, + modifier = Modifier + .fillMaxWidth() + .height(8.dp) + .clip(RoundedCornerShape(4.dp)), + color = if (downloadComplete) MaterialTheme.colorScheme.tertiary else MaterialTheme.colorScheme.primary, + trackColor = MaterialTheme.colorScheme.surfaceVariant, + ) + } +} + +// Action buttons +@Composable +fun ActionButtons( + isDownloading: Boolean, + downloadComplete: Boolean, + onDownloadClick: () -> Unit, + onDismiss: () -> Unit +) { + Spacer(modifier = Modifier.height(24.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = if (!isDownloading && !downloadComplete) Arrangement.spacedBy(12.dp) else Arrangement.Center + ) { + if (!downloadComplete) { + OutlinedButton( + onClick = onDismiss, + modifier = Modifier.weight(1f), + enabled = !isDownloading, + shape = RoundedCornerShape(12.dp) + ) { + Text(text = "Later", style = MaterialTheme.typography.labelLarge) + } + } + + Button( + onClick = onDownloadClick, + modifier = if (downloadComplete) Modifier.widthIn(min = 160.dp) else Modifier.weight(1f), + enabled = !isDownloading || downloadComplete, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors( + containerColor = if (downloadComplete) MaterialTheme.colorScheme.tertiary else MaterialTheme.colorScheme.primary + ) + ) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center) { + when { + downloadComplete -> { + Icon(Icons.Rounded.InstallMobile, contentDescription = null, modifier = Modifier.size(18.dp)) + Spacer(modifier = Modifier.width(8.dp)) + Text("Install Now", style = MaterialTheme.typography.labelLarge, fontWeight = FontWeight.Medium) + } + isDownloading -> { + CircularProgressIndicator(modifier = Modifier.size(24.dp), color = MaterialTheme.colorScheme.onPrimary) + } + else -> { + Icon( + imageVector = Icons.Rounded.Download, + contentDescription = "Download", + modifier = Modifier.size(24.dp) + ) + } + } + } + } + } +======= +@Composable +fun Modifier.bounceClick( + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + onClick: () -> Unit +): Modifier { + val isPressed by interactionSource.collectIsPressedAsState() + val scale by animateFloatAsState( + targetValue = if (isPressed) 0.93f else 1f, + animationSpec = spring( + dampingRatio = Spring.DampingRatioMediumBouncy, + stiffness = Spring.StiffnessLow + ), + label = "bounceScale" + ) + return this + .scale(scale) + .clickable( + interactionSource = interactionSource, + indication = null, + onClick = onClick + ) +>>>>>>> 2459650 (feat: v4) +} diff --git a/app/src/main/java/com/example/firefly_go_android/network/AuthManager.kt b/app/src/main/java/com/example/firefly_go_android/network/AuthManager.kt new file mode 100644 index 0000000..1ac57a2 --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/network/AuthManager.kt @@ -0,0 +1,128 @@ +package com.example.firefly_go_android.network + +import android.content.Context +import android.util.Log +import okhttp3.* +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject +import java.io.IOException +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class AuthManager(private val context: Context) { + private val sharedPrefs = context.getSharedPreferences("auth_prefs", Context.MODE_PRIVATE) + private val client = OkHttpClient() + + companion object { + private const val BASE_URL = "https://api.punklorde.org" + private const val TOKEN_KEY = "access_token" + private const val EMAIL_KEY = "user_email" + private const val IS_PLAYER_KEY = "is_player" + } + + var accessToken: String? + get() = sharedPrefs.getString(TOKEN_KEY, null) + set(value) = sharedPrefs.edit().putString(TOKEN_KEY, value).apply() + + var userEmail: String? + get() = sharedPrefs.getString(EMAIL_KEY, null) + set(value) = sharedPrefs.edit().putString(EMAIL_KEY, value).apply() + + var isPlayer: Boolean + get() = sharedPrefs.getBoolean(IS_PLAYER_KEY, false) + set(value) = sharedPrefs.edit().putBoolean(IS_PLAYER_KEY, value).apply() + + val isLoggedIn: Boolean + get() = accessToken != null + + suspend fun login(email: String, password: String): Result = withContext(Dispatchers.IO) { + val json = JSONObject().apply { + put("email", email) + put("password", password) + } + val body = json.toString().toRequestBody("application/json; charset=utf-8".toMediaType()) + val request = Request.Builder() + .url("$BASE_URL/auth/signin") + .post(body) + .build() + + try { + client.newCall(request).execute().use { response -> + val bodyStr = response.body?.string() ?: "" + if (!response.isSuccessful) { + val errMsg = try { + JSONObject(bodyStr).getString("message") + } catch (e: Exception) { + "Login failed: ${response.code}" + } + return@withContext Result.failure(Exception(errMsg)) + } + + val jsonResponse = JSONObject(bodyStr) + if (!jsonResponse.getBoolean("status")) { + return@withContext Result.failure(Exception(jsonResponse.optString("message", "Login failed"))) + } + + val data = jsonResponse.getJSONObject("data") + val token = data.getString("access_token") + accessToken = token + userEmail = email + + // Fetch user profile to verify role + return@withContext fetchProfileAndVerifyRole(token) + } + } catch (e: Exception) { + return@withContext Result.failure(e) + } + } + + suspend fun fetchProfileAndVerifyRole(token: String): Result = withContext(Dispatchers.IO) { + val request = Request.Builder() + .url("$BASE_URL/users/current") + .header("Authorization", "Bearer $token") + .get() + .build() + + try { + client.newCall(request).execute().use { response -> + val bodyStr = response.body?.string() ?: "" + if (!response.isSuccessful) { + // Token might have expired, clear local credentials + if (response.code == 401) { + logout() + } + return@withContext Result.failure(Exception("Failed to fetch profile: ${response.code}")) + } + + val jsonResponse = JSONObject(bodyStr) + if (!jsonResponse.getBoolean("status")) { + return@withContext Result.failure(Exception(jsonResponse.optString("message", "Failed to fetch profile"))) + } + + val data = jsonResponse.getJSONObject("data") + val rolesArray = data.getJSONArray("roles") + var hasPlayerRole = false + for (i in 0 until rolesArray.length()) { + val roleObj = rolesArray.getJSONObject(i) + val roleName = roleObj.getString("name").uppercase() + if (roleName == "PLAYER" || roleName == "ADMIN" || roleName == "MOD") { + hasPlayerRole = true + break + } + } + + isPlayer = hasPlayerRole + return@withContext Result.success(hasPlayerRole) + } + } catch (e: Exception) { + return@withContext Result.failure(e) + } + } + + fun logout() { + accessToken = null + userEmail = null + isPlayer = false + } +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/AutoUpdateDialog.kt b/app/src/main/java/com/example/firefly_go_android/ui/AutoUpdateDialog.kt new file mode 100644 index 0000000..b779f9c --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/AutoUpdateDialog.kt @@ -0,0 +1,376 @@ +package com.example.firefly_go_android + +import AutoUpdaterManager +import android.content.Context +import androidx.compose.animation.animateContentSize +import androidx.compose.animation.core.FastOutSlowInEasing +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.scale +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import androidx.compose.ui.res.stringResource +import com.example.firefly_go_android.R +import com.example.autoupdater.UpdateFeatures +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.io.File + +@Composable +fun AutoUpdateDialog( + onDismiss: () -> Unit, + appVersion: AppVersion, + dataDir: File, + isFirstOpen: Boolean = false +) { + val context = LocalContext.current + val autoUpdaterManager = AutoUpdaterManager(context) + var update by remember { mutableStateOf(null) } + var progress by remember { mutableStateOf(0) } + var showDialog by remember { mutableStateOf(false) } + var isDownloading by remember { mutableStateOf(false) } + var downloadComplete by remember { mutableStateOf(false) } + val coroutineScope = rememberCoroutineScope() + + val progressAnimation by animateFloatAsState( + targetValue = progress / 100f, + animationSpec = tween(300, easing = FastOutSlowInEasing), + label = "progress" + ) + + val scaleAnimation by animateFloatAsState( + targetValue = if (showDialog) 1f else 0.8f, + animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy), + label = "scale" + ) + + // Check for update + LaunchedEffect(Unit) { + val result = withContext(Dispatchers.IO) { + autoUpdaterManager.checkForUpdate( + JSONfileURL = "https://git.kain.io.vn/Firefly-Shelter/FireflyGo_Andoid/raw/branch/master/app/src/main/res/raw/app_version_json.json" + ) + } + + val hasUpdate = result != null && appVersion.latestVersion != result.latestversion + + update = if (hasUpdate) result else null + + showDialog = if (isFirstOpen) { + hasUpdate + } else { + result != null + } + } + + + // Download progress + LaunchedEffect(progress) { + if (progress >= 100 && isDownloading) { + downloadComplete = true + } + } + + if (showDialog) { + Dialog( + onDismissRequest = { + if (!isDownloading) showDialog = false + onDismiss() + }, + properties = DialogProperties( + dismissOnBackPress = !isDownloading, + dismissOnClickOutside = !isDownloading, + usePlatformDefaultWidth = false + ) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.9f) + .scale(scaleAnimation) + .animateContentSize() + .background(Color.Black.copy(alpha = 0.85f), RoundedCornerShape(24.dp)) + .border(1.5.dp, Color.White.copy(alpha = 0.2f), RoundedCornerShape(24.dp)) + ) { + Column( + modifier = Modifier.padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Box( + modifier = Modifier + .size(72.dp) + .background( + Color.White.copy(alpha = 0.1f), + CircleShape + ), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = if (update != null) Icons.Rounded.SystemUpdate + else Icons.Rounded.CheckCircle, + contentDescription = null, + modifier = Modifier.size(36.dp), + tint = if (update != null) Color(0xFF2196F3) else Color(0xFF4CAF50) + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = if (update != null) stringResource(id = R.string.update_available) else stringResource(id = R.string.no_update_available), + style = MaterialTheme.typography.headlineSmall, + fontWeight = FontWeight.Bold, + color = Color.White, + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(12.dp)) + + if (update != null) { + VersionInfoSection(update!!) + ChangelogSection(update!!) + DownloadProgressSection( + isDownloading = isDownloading, + downloadComplete = downloadComplete, + progress = progressAnimation + ) + ActionButtons( + isDownloading = isDownloading, + downloadComplete = downloadComplete, + onDownloadClick = { + isDownloading = true + coroutineScope.launch { + withContext(Dispatchers.IO) { + autoUpdaterManager.downloadapk( + context, + update!!.apk_url, + "FireflyGO_${update!!.latestversion}.apk" + ) { prog -> progress = prog } + } + } + }, + onDismiss = { showDialog = false; onDismiss() } + ) + } else { + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = stringResource(id = R.string.app_up_to_date), + style = MaterialTheme.typography.bodyMedium, + color = Color.White.copy(alpha = 0.7f), + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(24.dp)) + + + Button( + onClick = { showDialog = false; onDismiss() }, + modifier = Modifier.wrapContentWidth(), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Color(0xCC0D47A1), + contentColor = Color.White + ), + contentPadding = PaddingValues(horizontal = 32.dp, vertical = 12.dp) + ) { + Text( + text = stringResource(id = R.string.ok), + style = MaterialTheme.typography.labelMedium + ) + } + } + } + } + } + } + } +} + +@Composable +fun VersionInfoSection(update: UpdateFeatures) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = Color.White.copy(alpha = 0.08f) + ), + shape = RoundedCornerShape(12.dp) + ) { + Column(modifier = Modifier.padding(16.dp)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(id = R.string.latest_version), + style = MaterialTheme.typography.labelMedium, + color = Color.White.copy(alpha = 0.7f) + ) + Surface( + shape = RoundedCornerShape(8.dp), + color = Color(0xCC0D47A1) + ) { + Text( + text = "v${update.latestversion}", + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), + style = MaterialTheme.typography.labelSmall, + color = Color.White, + fontWeight = FontWeight.Medium + ) + } + } + } + } + Spacer(modifier = Modifier.height(12.dp)) +} + +@Composable +fun ChangelogSection(update: UpdateFeatures) { + Column(modifier = Modifier.fillMaxWidth()) { + Row(verticalAlignment = Alignment.CenterVertically) { + Icon( + imageVector = Icons.Rounded.AutoAwesome, + contentDescription = null, + modifier = Modifier.size(16.dp), + tint = Color(0xFF4CAF50) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = stringResource(id = R.string.whats_new), + style = MaterialTheme.typography.titleSmall, + fontWeight = FontWeight.Medium, + color = Color.White + ) + } + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = update.changelog, + style = MaterialTheme.typography.bodyMedium, + color = Color.White.copy(alpha = 0.8f), + lineHeight = 20.sp + ) + } +} + +@Composable +fun DownloadProgressSection( + isDownloading: Boolean, + downloadComplete: Boolean, + progress: Float +) { + if (!isDownloading && !downloadComplete) return + Spacer(modifier = Modifier.height(16.dp)) + Column(modifier = Modifier.fillMaxWidth()) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = if (downloadComplete) stringResource(id = R.string.installation_ready) else stringResource(id = R.string.downloading), + style = MaterialTheme.typography.labelMedium, + color = Color.White, + fontWeight = FontWeight.Medium + ) + Text( + text = "${(progress * 100).toInt()}%", + style = MaterialTheme.typography.labelMedium, + color = Color.White.copy(alpha = 0.8f) + ) + } + Spacer(modifier = Modifier.height(8.dp)) + LinearProgressIndicator( + progress = { progress }, + modifier = Modifier + .fillMaxWidth() + .height(8.dp) + .clip(RoundedCornerShape(4.dp)), + color = if (downloadComplete) Color(0xFF4CAF50) else Color(0xFF2196F3), + trackColor = Color.White.copy(alpha = 0.15f), + ) + } +} + +@Composable +fun ActionButtons( + isDownloading: Boolean, + downloadComplete: Boolean, + onDownloadClick: () -> Unit, + onDismiss: () -> Unit +) { + Spacer(modifier = Modifier.height(24.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = if (!isDownloading && !downloadComplete) Arrangement.spacedBy(12.dp) else Arrangement.Center + ) { + if (!downloadComplete) { + OutlinedButton( + onClick = onDismiss, + modifier = Modifier.weight(1f), + enabled = !isDownloading, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.White), + border = BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)) + ) { + Text(text = stringResource(id = R.string.later), style = MaterialTheme.typography.labelLarge) + } + } + + Button( + onClick = onDownloadClick, + modifier = if (downloadComplete) Modifier.widthIn(min = 160.dp) else Modifier.weight(1f), + enabled = !isDownloading || downloadComplete, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors( + containerColor = if (downloadComplete) Color(0xFF4CAF50) else Color(0xCC0D47A1) + ) + ) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center) { + when { + downloadComplete -> { + Icon(Icons.Rounded.InstallMobile, contentDescription = null, modifier = Modifier.size(18.dp), tint = Color.White) + Spacer(modifier = Modifier.width(8.dp)) + Text(stringResource(id = R.string.install_now), style = MaterialTheme.typography.labelLarge, fontWeight = FontWeight.Medium, color = Color.White) + } + isDownloading -> { + CircularProgressIndicator(modifier = Modifier.size(24.dp), color = Color.White) + } + else -> { + Icon( + imageVector = Icons.Rounded.Download, + contentDescription = "Download", + modifier = Modifier.size(24.dp), + tint = Color.White + ) + } + } + } + } + } +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/LogPopup.kt b/app/src/main/java/com/example/firefly_go_android/ui/LogPopup.kt new file mode 100644 index 0000000..e28d391 --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/LogPopup.kt @@ -0,0 +1,254 @@ +package com.example.firefly_go_android + +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.ui.window.DialogProperties +import androidx.compose.ui.res.stringResource +import com.example.firefly_go_android.R +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.Dialog +import androidx.compose.foundation.clickable +import androidx.compose.foundation.shape.CircleShape +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.withContext +import java.io.BufferedReader +import java.io.InputStreamReader + +data class LogEntry(val id: Long, val text: String) + +@Composable +fun LogPopup( + onDismiss: () -> Unit +) { + val logs = remember { mutableStateListOf() } + var nextLogId by remember { mutableLongStateOf(0L) } + var autoScroll by remember { mutableStateOf(true) } + val listState = rememberLazyListState() + + LaunchedEffect(Unit) { + withContext(Dispatchers.IO) { + var process: Process? = null + var reader: BufferedReader? = null + try { + process = Runtime.getRuntime().exec("logcat -T 300 -s GoLog") + reader = BufferedReader(InputStreamReader(process.inputStream)) + + // Safely destroy the logcat process and close the stream when the coroutine is cancelled + coroutineContext[Job]?.invokeOnCompletion { + try { + process?.destroy() + reader?.close() + } catch (e: Exception) { + // ignore + } + } + + var line: String? + while (reader.readLine().also { line = it } != null) { + val clean = parseGoLogLine(line!!) + if (!clean.isNullOrBlank()) { + withContext(Dispatchers.Main) { + logs.add(LogEntry(nextLogId++, clean)) + if (logs.size > 500) { + logs.removeAt(0) + } + } + } + } + } catch (e: Exception) { + withContext(Dispatchers.Main) { + logs.add(LogEntry(nextLogId++, "Error reading logcat: ${e.message}")) + } + } finally { + try { + process?.destroy() + reader?.close() + } catch (e: Exception) { + // ignore + } + Log.i("LogPopup", "Logcat process destroyed and stream closed successfully") + } + } + } + + LaunchedEffect(logs.size) { + if (autoScroll && logs.isNotEmpty()) { + listState.scrollToItem(logs.size - 1) + } + } + + val defaultTextColor = Color.White.copy(alpha = 0.9f) + + Dialog( + onDismissRequest = { onDismiss() }, + properties = DialogProperties(usePlatformDefaultWidth = false) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.9f) + .fillMaxHeight(0.7f) + .background(Color.Black.copy(alpha = 0.8f), RoundedCornerShape(16.dp)) + .border(1.5.dp, Color.White.copy(alpha = 0.2f), RoundedCornerShape(16.dp)) + ) { + Column(modifier = Modifier.padding(16.dp)) { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(id = R.string.golog_output), + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold, + color = Color.White + ) + + // Auto-Scroll Toggle Button + val activeColor = Color(0xFF4CAF50) + val inactiveColor = Color.White.copy(alpha = 0.4f) + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .clickable { autoScroll = !autoScroll } + .padding(4.dp) + ) { + Box( + modifier = Modifier + .size(8.dp) + .background(if (autoScroll) activeColor else inactiveColor, CircleShape) + ) + Spacer(modifier = Modifier.width(6.dp)) + Text( + text = stringResource(id = R.string.auto_scroll), + fontSize = 11.sp, + color = if (autoScroll) Color.White else Color.White.copy(alpha = 0.5f), + fontWeight = FontWeight.Medium + ) + } + } + + Spacer(modifier = Modifier.height(8.dp)) + + LazyColumn(state = listState, modifier = Modifier.weight(1f)) { + items( + items = logs, + key = { log -> log.id } + ) { log -> + Text( + text = parseAnsi(log.text, defaultTextColor), + fontSize = 12.sp, + fontFamily = FontFamily.Monospace, + lineHeight = 14.sp, + modifier = Modifier.padding(vertical = 2.dp) + ) + } + } + + Spacer(modifier = Modifier.height(8.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + TextButton( + onClick = { + logs.clear() + try { + Runtime.getRuntime().exec("logcat -c") + } catch (e: Exception) { + // ignore + } + } + ) { + Text(stringResource(id = R.string.clear), color = Color(0xFFE53935), fontWeight = FontWeight.SemiBold) + } + + TextButton( + onClick = { onDismiss() } + ) { + Text(stringResource(id = R.string.close), color = Color.White) + } + } + } + } + } +} + +fun parseGoLogLine(line: String): String? { + val regex = Regex(""".*GoLog\s*:?\s*(.*)""") + val match = regex.find(line) + val content = match?.groupValues?.getOrNull(1)?.trim() + + return if (content.isNullOrBlank()) null else content +} + +fun parseAnsi(text: String, defaultColor: Color): AnnotatedString { + val regex = Regex("\u001B\\[(\\d+)(;\\d+)*m") + val builder = buildAnnotatedString { + var lastIndex = 0 + var currentColor = defaultColor + + for (match in regex.findAll(text)) { + val start = match.range.first + + val before = text.substring(lastIndex, start) + if (before.isNotEmpty()) { + withStyle(SpanStyle(color = currentColor)) { + append(before) + } + } + + val code = try { + match.groupValues[1].toInt() + } catch (e: NumberFormatException) { + 0 + } + + currentColor = when (code) { + 0 -> defaultColor + 30 -> Color.Black + 31 -> Color.Red + 32 -> Color(0xFF00C853) // Green + 33 -> Color(0xFFFFD600) // Yellow + 34 -> Color(0xFF2962FF) // Blue + 35 -> Color(0xFFD500F9) // Magenta + 36 -> Color(0xFF00B8D4) // Cyan + 37 -> Color.White + else -> currentColor + } + + lastIndex = match.range.last + 1 + } + + if (lastIndex < text.length) { + val remain = text.substring(lastIndex) + if (remain.isNotEmpty()) { + withStyle(SpanStyle(color = currentColor)) { + append(remain) + } + } + } + } + + return builder +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/LoginDialog.kt b/app/src/main/java/com/example/firefly_go_android/ui/LoginDialog.kt new file mode 100644 index 0000000..2d1f89b --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/LoginDialog.kt @@ -0,0 +1,328 @@ +package com.example.firefly_go_android + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import android.content.Intent +import android.net.Uri +import androidx.browser.customtabs.CustomTabsIntent +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.foundation.BorderStroke +import androidx.compose.ui.res.stringResource +import com.example.firefly_go_android.network.AuthManager +import kotlinx.coroutines.launch + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LoginDialog( + authManager: AuthManager, + onDismiss: () -> Unit, + onLoginSuccess: () -> Unit +) { + val coroutineScope = rememberCoroutineScope() + var email by remember { mutableStateOf("") } + var password by remember { mutableStateOf("") } + var passwordVisible by remember { mutableStateOf(false) } + var isLoading by remember { mutableStateOf(false) } + var errorMessage by remember { mutableStateOf(null) } + + val focusRequester = remember { FocusRequester() } + val keyboardController = LocalSoftwareKeyboardController.current + + LaunchedEffect(Unit) { + kotlinx.coroutines.delay(250) + try { + focusRequester.requestFocus() + keyboardController?.show() + } catch (e: Exception) { + // ignore + } + } + + Dialog( + onDismissRequest = { if (!isLoading) { keyboardController?.hide(); onDismiss() } }, + properties = DialogProperties( + usePlatformDefaultWidth = false + ) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.9f) + .background(Color.Black.copy(alpha = 0.85f), RoundedCornerShape(20.dp)) + .border(1.5.dp, Color.White.copy(alpha = 0.2f), RoundedCornerShape(20.dp)) + .padding(24.dp) + ) { + if (authManager.isLoggedIn) { + // Profile & Logout view + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = stringResource(id = R.string.account_profile), + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = stringResource(id = R.string.logged_in_as), + fontSize = 12.sp, + color = Color.White.copy(alpha = 0.6f) + ) + Text( + text = authManager.userEmail ?: "Unknown User", + fontSize = 16.sp, + fontWeight = FontWeight.Medium, + color = Color.White + ) + Spacer(modifier = Modifier.height(12.dp)) + + Text( + text = stringResource(id = R.string.auto_update_status), + fontSize = 12.sp, + color = Color.White.copy(alpha = 0.6f) + ) + val statusText = if (authManager.isPlayer) stringResource(id = R.string.unlocked_player) else stringResource(id = R.string.locked_no_permission) + val statusColor = if (authManager.isPlayer) Color(0xFF4CAF50) else Color(0xFFE53935) + Text( + text = statusText, + fontSize = 15.sp, + fontWeight = FontWeight.SemiBold, + color = statusColor + ) + + Spacer(modifier = Modifier.height(28.dp)) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + OutlinedButton( + onClick = { keyboardController?.hide(); onDismiss() }, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.White), + border = BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)) + ) { + Text(stringResource(id = R.string.back)) + } + + Button( + onClick = { + keyboardController?.hide() + authManager.logout() + onLoginSuccess() // triggers UI refresh + onDismiss() + }, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFD32F2F)) + ) { + Text(stringResource(id = R.string.logout), color = Color.White) + } + } + } + } else { + // Sign In view + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = stringResource(id = R.string.sign_in), + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + Spacer(modifier = Modifier.height(16.dp)) + + val pleaseEnterBothText = stringResource(id = R.string.please_enter_both) + + TextField( + value = email, + onValueChange = { email = it; errorMessage = null }, + placeholder = { Text(stringResource(id = R.string.email), color = Color.White.copy(alpha = 0.4f)) }, + colors = TextFieldDefaults.colors( + focusedTextColor = Color.White, + unfocusedTextColor = Color.White, + focusedContainerColor = Color.White.copy(alpha = 0.08f), + unfocusedContainerColor = Color.White.copy(alpha = 0.04f), + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + cursorColor = Color.White + ), + shape = RoundedCornerShape(12.dp), + singleLine = true, + modifier = Modifier + .fillMaxWidth() + .border(1.dp, Color.White.copy(alpha = 0.15f), RoundedCornerShape(12.dp)) + .focusRequester(focusRequester), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email) + ) + + Spacer(modifier = Modifier.height(12.dp)) + + TextField( + value = password, + onValueChange = { password = it; errorMessage = null }, + placeholder = { Text(stringResource(id = R.string.password), color = Color.White.copy(alpha = 0.4f)) }, + visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(), + trailingIcon = { + val image = if (passwordVisible) Icons.Filled.Visibility else Icons.Filled.VisibilityOff + IconButton(onClick = { passwordVisible = !passwordVisible }) { + Icon(imageVector = image, contentDescription = "Toggle password visibility", tint = Color.White.copy(alpha = 0.5f)) + } + }, + colors = TextFieldDefaults.colors( + focusedTextColor = Color.White, + unfocusedTextColor = Color.White, + focusedContainerColor = Color.White.copy(alpha = 0.08f), + unfocusedContainerColor = Color.White.copy(alpha = 0.04f), + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + cursorColor = Color.White + ), + shape = RoundedCornerShape(12.dp), + singleLine = true, + modifier = Modifier + .fillMaxWidth() + .border(1.dp, Color.White.copy(alpha = 0.15f), RoundedCornerShape(12.dp)), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password) + ) + + if (errorMessage != null) { + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = errorMessage!!, + color = Color(0xFFE53935), + fontSize = 13.sp, + fontWeight = FontWeight.Medium, + modifier = Modifier.align(Alignment.Start) + ) + } + + Spacer(modifier = Modifier.height(24.dp)) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + OutlinedButton( + onClick = { keyboardController?.hide(); onDismiss() }, + modifier = Modifier.weight(1f), + enabled = !isLoading, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.White), + border = BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)) + ) { + Text(stringResource(id = R.string.cancel)) + } + + Button( + onClick = { + if (email.isBlank() || password.isBlank()) { + errorMessage = pleaseEnterBothText + return@Button + } + keyboardController?.hide() + isLoading = true + coroutineScope.launch { + val result = authManager.login(email, password) + isLoading = false + if (result.isSuccess) { + onLoginSuccess() + onDismiss() + } else { + errorMessage = result.exceptionOrNull()?.message ?: "Login failed" + } + } + }, + modifier = Modifier.weight(1f), + enabled = !isLoading, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xCC0D47A1)) + ) { + if (isLoading) { + CircularProgressIndicator(modifier = Modifier.size(20.dp), color = Color.White, strokeWidth = 2.dp) + } else { + Text(stringResource(id = R.string.login), color = Color.White) + } + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + // Divider "or" + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth() + ) { + HorizontalDivider( + modifier = Modifier.weight(1f), + color = Color.White.copy(alpha = 0.2f) + ) + Text( + text = stringResource(id = R.string.or), + fontSize = 11.sp, + color = Color.White.copy(alpha = 0.5f), + modifier = Modifier.padding(horizontal = 8.dp) + ) + HorizontalDivider( + modifier = Modifier.weight(1f), + color = Color.White.copy(alpha = 0.2f) + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + val context = LocalContext.current + Button( + onClick = { + keyboardController?.hide() + val url = "https://api.punklorde.org/auth/discord/login?redirect=https://area999.punklorde.org/auth/launcher/discord&origin=firefly-launcher&is_return_token=true" + try { + val customTabsIntent = CustomTabsIntent.Builder() + .setShowTitle(true) + .build() + customTabsIntent.launchUrl(context, Uri.parse(url)) + } catch (e: Exception) { + // Fallback to system browser + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + context.startActivity(intent) + } + }, + modifier = Modifier.fillMaxWidth().height(48.dp), + enabled = !isLoading, + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xCC5865F2)) + ) { + Text(stringResource(id = R.string.login_with_discord), color = Color.White, fontWeight = FontWeight.Medium) + } + } + } + } + } +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/ScamWarningDialog.kt b/app/src/main/java/com/example/firefly_go_android/ui/ScamWarningDialog.kt new file mode 100644 index 0000000..03bcb52 --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/ScamWarningDialog.kt @@ -0,0 +1,87 @@ +package com.example.firefly_go_android.ui + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Warning +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import com.example.firefly_go_android.R + +@Composable +fun ScamWarningDialog( + onDismiss: () -> Unit +) { + Dialog( + onDismissRequest = onDismiss, + properties = DialogProperties( + dismissOnBackPress = false, + dismissOnClickOutside = false, + usePlatformDefaultWidth = false + ) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.9f) + .background(Color.Black.copy(alpha = 0.85f), RoundedCornerShape(20.dp)) + .border(1.5.dp, Color.White.copy(alpha = 0.2f), RoundedCornerShape(20.dp)) + .padding(24.dp) + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Icon( + imageVector = Icons.Default.Warning, + contentDescription = "Warning", + tint = Color(0xFFFFB300), + modifier = Modifier.size(48.dp) + ) + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = stringResource(id = R.string.scam_warning_title), + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + Spacer(modifier = Modifier.height(12.dp)) + + Text( + text = stringResource(id = R.string.scam_warning_text), + fontSize = 14.sp, + color = Color.White.copy(alpha = 0.85f), + textAlign = TextAlign.Center, + lineHeight = 20.sp + ) + + Spacer(modifier = Modifier.height(28.dp)) + + Button( + onClick = onDismiss, + modifier = Modifier.fillMaxWidth().height(48.dp), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF0D47A1)) + ) { + Text( + text = stringResource(id = R.string.i_understand), + color = Color.White, + fontWeight = FontWeight.SemiBold + ) + } + } + } + } +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/ServerControlScreen.kt b/app/src/main/java/com/example/firefly_go_android/ui/ServerControlScreen.kt new file mode 100644 index 0000000..e244acb --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/ServerControlScreen.kt @@ -0,0 +1,429 @@ +package com.example.firefly_go_android + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.widget.Toast +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.* +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.content.ContextCompat +import com.example.firefly_go_android.network.AuthManager +import java.io.File +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import androidx.compose.foundation.BorderStroke + +@SuppressLint("ImplicitSamInstance") +@Composable +fun ServerControlScreen( + appDataPath: String, + dataDir: File, + appVersion: AppVersion, + authManager: AuthManager, + modifier: Modifier = Modifier +) { + val context = LocalContext.current + val isRunning = GolangServerService.isRunning + + var showResetDialog by remember { mutableStateOf(false) } + var showUpdateDialog by remember { mutableStateOf(false) } + var showLoginDialog by remember { mutableStateOf(false) } + var showLogs by remember { mutableStateOf(false) } + var refreshTrigger by remember { mutableIntStateOf(0) } // Used to trigger UI refresh on login/logout + + Box( + modifier = modifier.fillMaxSize() + ) { + // Background image + Image( + painter = painterResource(id = R.drawable.background), + contentDescription = "Background", + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + + Box( + modifier = Modifier + .fillMaxSize() + .background(Color.Black.copy(alpha = 0.3f)) + ) + + Column( + modifier = Modifier + .fillMaxSize() + .padding(horizontal = 24.dp, vertical = 16.dp), + horizontalAlignment = Alignment.CenterHorizontally + ) { + // Header Row (Branding and Account Status Chip) + Row( + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + // Brand Title + Column { + Text( + text = stringResource(id = R.string.app_name), + fontSize = 24.sp, + fontWeight = FontWeight.Bold, + color = Color.White, + style = TextStyle( + shadow = Shadow( + color = Color.Black, + offset = Offset(2f, 2f), + blurRadius = 4f + ) + ) + ) + Text( + text = stringResource(id = R.string.android_edition), + fontSize = 12.sp, + fontWeight = FontWeight.Medium, + color = Color.White.copy(alpha = 0.7f), + style = TextStyle( + shadow = Shadow( + color = Color.Black, + offset = Offset(1f, 1f), + blurRadius = 2f + ) + ) + ) + } + + // Brand Logo / Icon (instead of Login Chip since login is disabled) + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .size(42.dp) + .background(Color.White.copy(alpha = 0.08f), CircleShape) + .border(1.dp, Color.White.copy(alpha = 0.15f), CircleShape) + ) { + Icon( + imageVector = Icons.Default.Android, + contentDescription = "Logo", + tint = Color.White, + modifier = Modifier.size(28.dp) + ) + } + } + + Spacer(modifier = Modifier.height(28.dp)) + + // Server status capsule + val statusColor = if (isRunning) Color(0xFF4CAF50) else Color(0xFF9E9E9E) + val statusText = if (isRunning) stringResource(id = R.string.server_running) else stringResource(id = R.string.server_stopped) + + Box( + modifier = Modifier + .background(Color.Black.copy(alpha = 0.4f), RoundedCornerShape(20.dp)) + .border(1.dp, Color.White.copy(alpha = 0.15f), RoundedCornerShape(20.dp)) + .padding(horizontal = 20.dp, vertical = 8.dp) + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center + ) { + Box( + modifier = Modifier + .size(10.dp) + .background(statusColor, CircleShape) + ) + Spacer(modifier = Modifier.width(10.dp)) + Text( + text = statusText, + fontSize = 18.sp, + color = Color.White, + fontWeight = FontWeight.Medium + ) + } + } + + Spacer(modifier = Modifier.weight(1.8f).heightIn(min = 24.dp)) + // Toggle button + val buttonColor by animateColorAsState( + targetValue = if (isRunning) Color(0xCCB71C1C) else Color(0xCC0D47A1), + label = "buttonColor" + ) + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .fillMaxWidth(0.75f) + .height(54.dp) + .bounceClick { + try { + if (!isRunning) { + val intent = Intent(context, GolangServerService::class.java) + intent.putExtra("appDataPath", appDataPath) + ContextCompat.startForegroundService(context, intent) + } else { + context.stopService(Intent(context, GolangServerService::class.java)) + } + } catch (e: Exception) { + Toast.makeText(context, "Error: ${e.message}", Toast.LENGTH_SHORT).show() + } + } + .background(buttonColor, RoundedCornerShape(14.dp)) + .border(1.dp, Color.White.copy(alpha = 0.25f), RoundedCornerShape(14.dp)) + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center + ) { + Icon( + imageVector = if (isRunning) Icons.Default.Stop else Icons.Default.PlayArrow, + contentDescription = null, + tint = Color.White, + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = if (isRunning) stringResource(id = R.string.stop_server) else stringResource(id = R.string.start_server), + fontSize = 18.sp, + color = Color.White, + fontWeight = FontWeight.SemiBold + ) + } + } + + Spacer(modifier = Modifier.height(20.dp)) + + // Widget icons row + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + // Check Update widget (Now shown for all users since login is disabled) + if (true) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .weight(1f) + .height(96.dp) + .bounceClick { showUpdateDialog = true } + .background( + Color.White.copy(alpha = 0.15f), + RoundedCornerShape(16.dp) + ) + .border( + 1.dp, + Color.White.copy(alpha = 0.2f), + RoundedCornerShape(16.dp) + ) + .padding(horizontal = 8.dp) + ) { + Icon( + imageVector = Icons.Default.CloudDownload, + contentDescription = "Check Update", + tint = Color.White.copy(alpha = 0.85f), + modifier = Modifier.size(28.dp) + ) + Spacer(modifier = Modifier.height(6.dp)) + Text( + text = stringResource(id = R.string.update), + fontSize = 12.sp, + color = Color.White, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium, + maxLines = 2 + ) + } + } + + // Reset Data widget + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .weight(1f) + .height(96.dp) + .bounceClick { showResetDialog = true } + .background( + Color.White.copy(alpha = 0.15f), + RoundedCornerShape(16.dp) + ) + .border( + 1.dp, + Color.White.copy(alpha = 0.2f), + RoundedCornerShape(16.dp) + ) + .padding(horizontal = 8.dp) + ) { + Icon( + imageVector = Icons.Default.RestartAlt, + contentDescription = "Reset Data", + tint = Color.White.copy(alpha = 0.85f), + modifier = Modifier.size(28.dp) + ) + Spacer(modifier = Modifier.height(6.dp)) + Text( + text = stringResource(id = R.string.reset), + fontSize = 12.sp, + color = Color.White, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium, + maxLines = 2 + ) + } + + // Logcat (Lynx) widget + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .weight(1f) + .height(96.dp) + .bounceClick { showLogs = true } + .background( + Color.White.copy(alpha = 0.15f), + RoundedCornerShape(16.dp) + ) + .border( + 1.dp, + Color.White.copy(alpha = 0.2f), + RoundedCornerShape(16.dp) + ) + .padding(horizontal = 8.dp) + ) { + Icon( + imageVector = Icons.Default.BugReport, + contentDescription = "Open Logcat", + tint = Color.White.copy(alpha = 0.85f), + modifier = Modifier.size(28.dp) + ) + Spacer(modifier = Modifier.height(6.dp)) + Text( + text = stringResource(id = R.string.logs), + fontSize = 12.sp, + color = Color.White, + textAlign = TextAlign.Center, + fontWeight = FontWeight.Medium, + maxLines = 2 + ) + } + } + + Spacer(modifier = Modifier.weight(0.4f).heightIn(min = 16.dp)) + } + } + + if (showLogs) { + LogPopup(onDismiss = { showLogs = false }) + } + + if (showLoginDialog) { + LoginDialog( + authManager = authManager, + onDismiss = { showLoginDialog = false }, + onLoginSuccess = { + refreshTrigger++ // Force UI update + } + ) + } + + // Reset Data Confirmation Dialog + if (showResetDialog) { + Dialog( + onDismissRequest = { showResetDialog = false }, + properties = DialogProperties(usePlatformDefaultWidth = false) + ) { + Box( + modifier = Modifier + .fillMaxWidth(0.9f) + .background(Color.Black.copy(alpha = 0.85f), RoundedCornerShape(20.dp)) + .border(1.5.dp, Color.White.copy(alpha = 0.2f), RoundedCornerShape(20.dp)) + .padding(24.dp) + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = stringResource(id = R.string.reset_data_title), + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + color = Color.White + ) + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = stringResource(id = R.string.reset_data_confirm), + fontSize = 14.sp, + color = Color.White.copy(alpha = 0.8f), + textAlign = TextAlign.Center + ) + + Spacer(modifier = Modifier.height(28.dp)) + + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(12.dp) + ) { + OutlinedButton( + onClick = { showResetDialog = false }, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.White), + border = BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)) + ) { + Text(stringResource(id = R.string.no)) + } + + Button( + onClick = { + showResetDialog = false + try { + copyRawToFile(context, dataDir, true) + Toast.makeText(context, "Data has been reset successfully", Toast.LENGTH_SHORT).show() + } catch (e: Exception) { + Toast.makeText(context, "Reset failed: ${e.message}", Toast.LENGTH_SHORT).show() + } + }, + modifier = Modifier.weight(1f), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFD32F2F)) + ) { + Text(stringResource(id = R.string.yes), color = Color.White) + } + } + } + } + } + } + + // Auto Update Dialog + if (showUpdateDialog) { + AutoUpdateDialog( + onDismiss = { showUpdateDialog = false }, + appVersion, + dataDir + ) + } +} diff --git a/app/src/main/java/com/example/firefly_go_android/ui/theme/Color.kt b/app/src/main/java/com/example/firefly_go_android/ui/theme/Color.kt new file mode 100644 index 0000000..8a45439 --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.example.firefly_go_android.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/app/src/main/java/com/example/firefly_go_android/ui/theme/Theme.kt b/app/src/main/java/com/example/firefly_go_android/ui/theme/Theme.kt new file mode 100644 index 0000000..4c9b204 --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/theme/Theme.kt @@ -0,0 +1,57 @@ +package com.example.firefly_go_android.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun FireflyPsAndoridTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/firefly_go_android/ui/theme/Type.kt b/app/src/main/java/com/example/firefly_go_android/ui/theme/Type.kt new file mode 100644 index 0000000..42ec6be --- /dev/null +++ b/app/src/main/java/com/example/firefly_go_android/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.example.firefly_go_android.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/res/drawable/background.jpg b/app/src/main/res/drawable/background.jpg new file mode 100644 index 0000000..e4c790f Binary files /dev/null and b/app/src/main/res/drawable/background.jpg differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..c7b0017 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,151 @@ +<<<<<<< HEAD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +======= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>>>>>>> 2459650 (feat: v4) diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..16c5094 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,12 @@ +<<<<<<< HEAD + + + + +======= + + + + +>>>>>>> 2459650 (feat: v4) + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..16c5094 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,12 @@ +<<<<<<< HEAD + + + + +======= + + + + +>>>>>>> 2459650 (feat: v4) + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..bcf2280 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..38f1066 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..817557f Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..ffc4bdd Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..ae86bbe Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..f9dc3f3 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..3953758 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..c0bafee Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..bc09ca9 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..fe77a20 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..f8679ca Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..67778a6 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..4552de7 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..7ca5434 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..fd74d68 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/raw/app_version_json.json b/app/src/main/res/raw/app_version_json.json new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000..be7aaea --- /dev/null +++ b/app/src/main/res/values-ja/strings.xml @@ -0,0 +1,57 @@ + + Firefly Go + Android版 + サインイン + サーバー稼働中 + サーバー停止 + サーバー起動 + サーバー停止 + アップデート + リセット + ログ + データリセット + すべてのデータをリセットしますか?この操作は取り消せません。 + いいえ + はい + + + セキュリティ警告 + これはオープンソースプロジェクトです。もし誰かからこのアプリを購入した場合、あなたは詐欺に遭っています。 + 了解しました + + + アカウントプロフィール + ログイン中: + 自動更新ステータス: + ロック解除 (PLAYER) + ロック中 (権限なし) + 戻る + ログアウト + メールアドレス + パスワード + キャンセル + ログイン + または + Discordでログイン + メールアドレスとパスワードを入力してください + ログイン失敗 + プロフィールの取得に失敗しました + + + アップデートがあります + アップデートはありません + アプリは最新状態です + 確定 + 最新バージョン + 更新内容 + ダウンロード中... + インストールの準備完了 + 後で + 今すぐインストール + + + GoLog出力 + 自動スクロール + 消去 + 閉じる + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000..e5cad30 --- /dev/null +++ b/app/src/main/res/values-ko/strings.xml @@ -0,0 +1,57 @@ + + Firefly Go + 안드로이드 버전 + 로그인 + 서버 실행 중 + 서버 정지됨 + 서버 시작 + 서버 정지 + 업데이트 + 초기화 + 로그 + 데이터 초기화 + 모든 데이터를 초기화하시겠습니까? 이 작업은 취소할 수 없습니다. + 아니오 + + + + 보안 경고 + 이것은 오픈 소스 프로젝트입니다. 누군가로부터 이 앱을 구매하셨다면, 귀하는 사기를 당한 것입니다. + 확인했습니다 + + + 계정 프로필 + 로그인 계정: + 자동 업데이트 상태: + 잠금 해제 (PLAYER) + 잠김 (권한 없음) + 뒤로 + 로그아웃 + 이메일 + 비밀번호 + 취소 + 로그인 + 또는 + Discord로 로그인 + 이메일과 비밀번호를 모두 입력하세요 + 로그인 실패 + 프로필을 불러오지 못했습니다 + + + 업데이트 가능 + 업데이트 없음 + 앱이 최신 상태입니다 + 확인 + 최신 버전 + 업데이트 내역 + 다운로드 중... + 설치 준비 완료 + 나중에 + 지금 설치 + + + GoLog 출력 + 자동 스크롤 + 지우기 + 닫기 + diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000..fd75878 --- /dev/null +++ b/app/src/main/res/values-vi/strings.xml @@ -0,0 +1,57 @@ + + Firefly Go + Phiên bản Android + Đăng nhập + Máy chủ đang chạy + Máy chủ đã dừng + Khởi động máy chủ + Dừng máy chủ + Cập nhật + Đặt lại + Nhật ký + Đặt lại dữ liệu + Bạn có muốn đặt lại tất cả dữ liệu? Hành động này không thể hoàn tác. + Không + + + + Cảnh báo bảo mật + Đây là dự án mã nguồn mở. Nếu bạn mua ứng dụng này từ bất kỳ ai, bạn đã bị lừa đảo (scam). + Tôi đã hiểu + + + Thông tin tài khoản + Đăng nhập bằng: + Trạng thái tự cập nhật: + Đã mở khóa (PLAYER) + Bị khóa (Không có quyền) + Quay lại + Đăng xuất + Email + Mật khẩu + Hủy + Đăng nhập + HOẶC + Đăng nhập bằng Discord + Vui lòng nhập cả Email và Mật khẩu + Đăng nhập thất bại + Không thể tải thông tin cá nhân + + + Có bản cập nhật mới + Không có bản cập nhật + Ứng dụng đã được cập nhật mới nhất + Đồng ý + Phiên bản mới nhất + Có gì mới + Đang tải xuống... + Sẵn sàng cài đặt + Để sau + Cài đặt ngay + + + Nhật ký GoLog + Tự động cuộn + Xóa + Đóng + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml new file mode 100644 index 0000000..0b9011a --- /dev/null +++ b/app/src/main/res/values-zh/strings.xml @@ -0,0 +1,57 @@ + + Firefly Go + 安卓版 + 登录 + 服务器正在运行 + 服务器已停止 + 启动服务器 + 停止服务器 + 更新 + 重置 + 日志 + 重置数据 + 您确定要重置所有数据吗?此操作无法撤销。 + 取消 + 确定 + + + 安全警告 + 这是一个开源项目。如果您是从别人那里购买的这个应用,您就被骗了(欺诈)。 + 我已知晓 + + + 账户信息 + 已登录为: + 自动更新状态: + 已解锁 (PLAYER) + 已锁定 (无权限) + 返回 + 退出登录 + 邮箱 + 密码 + 取消 + 登录 + + 使用 Discord 登录 + 请输入邮箱和密码 + 登录失败 + 获取个人资料失败 + + + 有可用更新 + 没有可用更新 + 您的应用已是最新版本 + 确定 + 最新版本 + 更新日志 + 正在下载... + 准备安装 + 稍后 + 立即安装 + + + GoLog 输出 + 自动滚动 + 清除 + 关闭 + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..8f619ca --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,60 @@ + + Firefly Go +<<<<<<< HEAD +======= + Android Edition + Sign In + Server is running + Server is stopped + Start Server + Stop Server + Update + Reset + Logs + Reset Data + Do you want to reset all data? This action cannot be rolled back. + No + Yes + + + Security Warning + This is an open-source project. If you bought this application from someone, you have been scammed (fraud). + I Understand + + + Account Profile + Logged in as: + Auto-Update Status: + Unlocked (PLAYER) + Locked (No permission) + Back + Logout + Email + Password + Cancel + Login + OR + Login with Discord + Please enter both Email and Password + Login failed + Failed to fetch profile + + + Update Available + No Update Available + Your app is up to date + OK + Latest Version + What\'s New + Downloading... + Installation Ready + Later + Install Now + + + GoLog Output + Auto-Scroll + Clear + Close +>>>>>>> 2459650 (feat: v4) + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..69733d7 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +