This commit is contained in:
qwerdvd 2023-12-27 13:43:17 +08:00
parent 47beeedf75
commit 2c7c61188a
No known key found for this signature in database
GPG Key ID: A3AF89C783404769
6 changed files with 380 additions and 372 deletions

View File

@ -49,10 +49,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(uid) char_id_list, char_data_dict = await api_to_dict(uid)
if isinstance(char_id_list, str): if isinstance(char_id_list, str):
raise MihomoRequestError msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None: if char_data_dict is None:
raise MihomoRequestError msg = "char_data_dict is None"
raise MihomoRequestError(msg)
if char_id not in char_id_list: if char_id not in char_id_list:
raise NotInCharacterShowcaseError raise NotInCharacterShowcaseError
@ -72,10 +74,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data) char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data)
if isinstance(char_id_list, str): if isinstance(char_id_list, str):
raise MihomoRequestError msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None: if char_data_dict is None:
raise MihomoRequestError msg = "char_data_dict is None"
raise MihomoRequestError(msg)
if char_id not in char_id_list: if char_id not in char_id_list:
raise NotInCharacterShowcaseError raise NotInCharacterShowcaseError
@ -89,10 +93,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data) char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data)
if isinstance(char_id_list, str): if isinstance(char_id_list, str):
raise MihomoRequestError msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None: if char_data_dict is None:
raise MihomoRequestError msg = "char_data_dict is None"
raise MihomoRequestError(msg)
damage_dict = {} damage_dict = {}
@ -107,10 +113,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(uid=uid) char_id_list, char_data_dict = await api_to_dict(uid=uid)
if isinstance(char_id_list, str): if isinstance(char_id_list, str):
raise MihomoRequestError msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None: if char_data_dict is None:
raise MihomoRequestError msg = "char_data_dict is None"
raise MihomoRequestError(msg)
damage_dict = {} damage_dict = {}

View File

@ -1,9 +1,12 @@
from typing import Union
class UidNotfoundError(Exception): class UidNotfoundError(Exception):
def __init__(self, uid: str): def __init__(self, uid: str):
self.uid = uid self.uid = uid
def __str__(self): def __str__(self):
return repr(self.uid) return self.uid
class CharNameError(Exception): class CharNameError(Exception):
@ -11,11 +14,28 @@ class CharNameError(Exception):
self.char_name = char_name self.char_name = char_name
def __str__(self): def __str__(self):
return repr(self.char_name) return self.char_name
class MihomoModelError(Exception):
def __init__(self, exce: Union[Exception, str]):
self.exce = exce.args[0] if isinstance(exce, Exception) else exce
def __str__(self):
return self.exce
class MihomoQueueTimeoutError(Exception):
def __str__(self):
return "Mihomo queue timeout, please try again later."
class MihomoRequestError(Exception): class MihomoRequestError(Exception):
pass def __init__(self, exce: Union[Exception, str]):
self.exce = exce.args[0] if isinstance(exce, Exception) else exce
def __str__(self):
return self.exce
class NotInCharacterShowcaseError(Exception): class NotInCharacterShowcaseError(Exception):
@ -27,4 +47,4 @@ class CharacterShowcaseNotOpenError(Exception):
self.uid = uid self.uid = uid
def __str__(self): def __str__(self):
return repr(self.uid) return self.uid

View File

@ -47,11 +47,11 @@ class Challenge(Struct):
class PlayerSpaceInfo(Struct): class PlayerSpaceInfo(Struct):
challengeInfo: Challenge
maxRogueChallengeScore: int maxRogueChallengeScore: int
equipmentCount: int equipmentCount: int
avatarCount: int avatarCount: int
achievementCount: int achievementCount: int
challengeInfo: Union[int, None] = None
class PlayerDetailInfo(Struct): class PlayerDetailInfo(Struct):

View File

@ -1,10 +1,13 @@
from __future__ import annotations from __future__ import annotations
import json
from pathlib import Path from pathlib import Path
import msgspec
from httpx import AsyncClient from httpx import AsyncClient
from msgspec import convert from msgspec import convert
from starrail_damage_cal.exception import MihomoModelError, MihomoQueueTimeoutError
from starrail_damage_cal.mihomo.models import MihomoData from starrail_damage_cal.mihomo.models import MihomoData
_HEADER = {"User-Agent": "StarRailDamageCal/"} _HEADER = {"User-Agent": "StarRailDamageCal/"}
@ -25,4 +28,11 @@ async def get_char_card_info(
path.mkdir(parents=True, exist_ok=True) path.mkdir(parents=True, exist_ok=True)
with Path.open(path / f"{uid!s}.json", "w") as file: with Path.open(path / f"{uid!s}.json", "w") as file:
file.write(req.text) file.write(req.text)
return convert(req.json(), type=MihomoData) try:
return convert(req.json(), type=MihomoData)
except msgspec.ValidationError as e:
if req.text == '{"detail":"Queue timeout"}':
raise MihomoQueueTimeoutError from e
raise MihomoModelError(e) from e
except json.decoder.JSONDecodeError as e:
raise MihomoModelError(e) from e

View File

@ -43,10 +43,7 @@ async def api_to_dict(
if not mihomo_raw: if not mihomo_raw:
if not uid: if not uid:
raise KeyError raise KeyError
try: sr_data = await get_char_card_info(uid)
sr_data = await get_char_card_info(uid)
except Exception as e: # noqa: BLE001
raise MihomoRequestError from e
else: else:
sr_data = mihomo_raw sr_data = mihomo_raw

View File

@ -1,399 +1,142 @@
{ {
"detailInfo": { "detailInfo": {
"level": 69,
"worldLevel": 6, "worldLevel": 6,
"nickname": "qwerdvd", "level": 70,
"headIcon": 201102, "friendCount": 53,
"nickname": "\u5c0f\u590f",
"avatarDetailList": [ "avatarDetailList": [
{ {
"level": 80,
"skillTreeList": [
{ "pointId": 1212001, "level": 6 },
{ "pointId": 1212002, "level": 10 },
{ "pointId": 1212003, "level": 10 },
{ "pointId": 1212004, "level": 10 },
{ "pointId": 1212007, "level": 1 },
{ "pointId": 1212101, "level": 1 },
{ "pointId": 1212102, "level": 1 },
{ "pointId": 1212103, "level": 1 },
{ "pointId": 1212201, "level": 1 },
{ "pointId": 1212202, "level": 1 },
{ "pointId": 1212203, "level": 1 },
{ "pointId": 1212204, "level": 1 },
{ "pointId": 1212205, "level": 1 },
{ "pointId": 1212206, "level": 1 },
{ "pointId": 1212207, "level": 1 },
{ "pointId": 1212208, "level": 1 },
{ "pointId": 1212209, "level": 1 },
{ "pointId": 1212210, "level": 1 }
],
"relicList": [ "relicList": [
{ {
"mainAffixId": 1, "tid": 61041,
"tid": 61021,
"type": 1, "type": 1,
"subAffixList": [ "subAffixList": [
{ "affixId": 3, "cnt": 1 }, { "affixId": 5, "cnt": 3, "step": 4 },
{ "affixId": 5, "cnt": 3, "step": 5 }, { "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 6, "cnt": 1, "step": 1 }, { "affixId": 9, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 3, "step": 4 } { "affixId": 11, "cnt": 1, "step": 1 }
], ],
"mainAffixId": 1,
"level": 15 "level": 15
}, },
{ {
"mainAffixId": 1, "tid": 61042,
"tid": 61022,
"type": 2, "type": 2,
"subAffixList": [ "subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 }, { "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 5, "cnt": 2, "step": 4 }, { "affixId": 8, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 3, "step": 3 }, { "affixId": 9, "cnt": 2, "step": 1 },
{ "affixId": 10, "cnt": 1, "step": 1 } { "affixId": 11, "cnt": 3, "step": 3 }
], ],
"mainAffixId": 1,
"level": 15 "level": 15
}, },
{ {
"mainAffixId": 5, "tid": 61043,
"tid": 61023,
"type": 3, "type": 3,
"subAffixList": [ "subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 }, { "affixId": 1, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 4 }, { "affixId": 3, "cnt": 1 },
{ "affixId": 6, "cnt": 2, "step": 1 }, { "affixId": 5, "cnt": 5, "step": 6 },
{ "affixId": 8, "cnt": 2, "step": 2 } { "affixId": 11, "cnt": 1, "step": 2 }
], ],
"mainAffixId": 5,
"level": 15 "level": 15
}, },
{ {
"mainAffixId": 2, "tid": 61044,
"tid": 61024,
"type": 4, "type": 4,
"subAffixList": [ "subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 }, { "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 4, "cnt": 3, "step": 3 }, { "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 8, "cnt": 3, "step": 4 }, { "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 12, "cnt": 1, "step": 2 } { "affixId": 8, "cnt": 2 }
], ],
"mainAffixId": 4,
"level": 15 "level": 15
}, },
{ {
"mainAffixId": 10,
"tid": 63095, "tid": 63095,
"type": 5, "type": 5,
"subAffixList": [ "subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 2 }, { "affixId": 4, "cnt": 2, "step": 4 },
{ "affixId": 9, "cnt": 2, "step": 3 }, { "affixId": 5, "cnt": 3, "step": 5 },
{ "affixId": 10, "cnt": 2, "step": 1 }, { "affixId": 6, "cnt": 1, "step": 2 },
{ "affixId": 12, "cnt": 2, "step": 2 } { "affixId": 9, "cnt": 3, "step": 2 }
], ],
"mainAffixId": 6,
"level": 15 "level": 15
}, },
{ {
"mainAffixId": 4,
"tid": 63096, "tid": 63096,
"type": 6, "type": 6,
"subAffixList": [ "subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 }, { "affixId": 1, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 1 }, { "affixId": 8, "cnt": 2, "step": 3 },
{ "affixId": 9, "cnt": 1, "step": 1 },
{ "affixId": 12, "cnt": 3, "step": 3 }
],
"level": 15
}
],
"equipment": { "tid": 23015, "promotion": 6, "rank": 1, "level": 80 },
"level": 80,
"avatarId": 1213,
"promotion": 6,
"skillTreeList": [
{ "pointId": 1213001, "level": 6 },
{ "pointId": 1213002, "level": 10 },
{ "pointId": 1213003, "level": 10 },
{ "pointId": 1213004, "level": 10 },
{ "pointId": 1213007, "level": 1 },
{ "pointId": 1213101, "level": 1 },
{ "pointId": 1213102, "level": 1 },
{ "pointId": 1213103, "level": 1 },
{ "pointId": 1213201, "level": 1 },
{ "pointId": 1213202, "level": 1 },
{ "pointId": 1213203, "level": 1 },
{ "pointId": 1213204, "level": 1 },
{ "pointId": 1213205, "level": 1 },
{ "pointId": 1213206, "level": 1 },
{ "pointId": 1213207, "level": 1 },
{ "pointId": 1213208, "level": 1 },
{ "pointId": 1213209, "level": 1 },
{ "pointId": 1213210, "level": 1 }
]
},
{
"relicList": [
{
"mainAffixId": 1,
"tid": 61081,
"type": 1,
"subAffixList": [
{ "affixId": 8, "cnt": 1 },
{ "affixId": 9, "cnt": 2, "step": 3 }, { "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 11, "cnt": 2, "step": 3 }, { "affixId": 11, "cnt": 2, "step": 3 }
{ "affixId": 12, "cnt": 3, "step": 3 }
], ],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61082,
"type": 2,
"subAffixList": [
{ "affixId": 1, "cnt": 3, "step": 4 },
{ "affixId": 3, "cnt": 3, "step": 5 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 4, "mainAffixId": 4,
"tid": 61083,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 1 },
{ "affixId": 4, "cnt": 3, "step": 2 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 10, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61084,
"type": 4,
"subAffixList": [
{ "affixId": 3, "cnt": 4, "step": 6 },
{ "affixId": 4, "cnt": 1, "step": 2 },
{ "affixId": 7, "cnt": 1, "step": 1 },
{ "affixId": 10, "cnt": 2, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 3,
"tid": 63035,
"type": 5,
"exp": 830,
"subAffixList": [
{ "affixId": 5, "cnt": 2, "step": 3 },
{ "affixId": 8, "cnt": 1 },
{ "affixId": 9, "cnt": 2, "step": 1 },
{ "affixId": 10, "cnt": 1, "step": 2 }
],
"level": 11
},
{
"mainAffixId": 2,
"tid": 63036,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 3, "step": 5 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 12, "cnt": 2, "step": 4 }
],
"level": 15 "level": 15
} }
], ],
"equipment": { "tid": 22000, "promotion": 6, "rank": 5, "level": 80 }, "avatarId": 1212,
"level": 80,
"avatarId": 1006,
"rank": 1,
"promotion": 6, "promotion": 6,
"pos": 1, "equipment": { "tid": 24000, "level": 80, "promotion": 6, "rank": 5 }
"skillTreeList": [
{ "pointId": 1006001, "level": 6 },
{ "pointId": 1006002, "level": 10 },
{ "pointId": 1006003, "level": 10 },
{ "pointId": 1006004, "level": 10 },
{ "pointId": 1006007, "level": 1 },
{ "pointId": 1006101, "level": 1 },
{ "pointId": 1006102, "level": 1 },
{ "pointId": 1006103, "level": 1 },
{ "pointId": 1006201, "level": 1 },
{ "pointId": 1006202, "level": 1 },
{ "pointId": 1006203, "level": 1 },
{ "pointId": 1006204, "level": 1 },
{ "pointId": 1006205, "level": 1 },
{ "pointId": 1006206, "level": 1 },
{ "pointId": 1006207, "level": 1 },
{ "pointId": 1006208, "level": 1 },
{ "pointId": 1006209, "level": 1 },
{ "pointId": 1006210, "level": 1 }
]
},
{
"relicList": [
{
"mainAffixId": 1,
"tid": 61081,
"type": 1,
"subAffixList": [
{ "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 3, "step": 4 },
{ "affixId": 12, "cnt": 1 }
],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61082,
"type": 2,
"subAffixList": [
{ "affixId": 6, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 2, "step": 2 },
{ "affixId": 10, "cnt": 3, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 5,
"tid": 61083,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 3, "step": 1 },
{ "affixId": 6, "cnt": 1 },
{ "affixId": 8, "cnt": 2, "step": 3 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61084,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 3 },
{ "affixId": 7, "cnt": 3, "step": 3 },
{ "affixId": 11, "cnt": 2, "step": 3 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 9,
"tid": 63065,
"type": 5,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 2 },
{ "affixId": 3, "cnt": 1 },
{ "affixId": 8, "cnt": 3, "step": 6 },
{ "affixId": 12, "cnt": 2, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 4,
"tid": 63066,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 1, "step": 2 },
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 5, "step": 6 },
{ "affixId": 11, "cnt": 1, "step": 2 }
],
"level": 15
}
],
"equipment": { "tid": 24001, "promotion": 6, "rank": 5, "level": 80 },
"level": 80,
"avatarId": 1102,
"promotion": 6,
"pos": 2,
"skillTreeList": [
{ "pointId": 1102001, "level": 6 },
{ "pointId": 1102002, "level": 10 },
{ "pointId": 1102003, "level": 10 },
{ "pointId": 1102004, "level": 10 },
{ "pointId": 1102007, "level": 1 },
{ "pointId": 1102101, "level": 1 },
{ "pointId": 1102102, "level": 1 },
{ "pointId": 1102103, "level": 1 },
{ "pointId": 1102201, "level": 1 },
{ "pointId": 1102202, "level": 1 },
{ "pointId": 1102203, "level": 1 },
{ "pointId": 1102204, "level": 1 },
{ "pointId": 1102205, "level": 1 },
{ "pointId": 1102206, "level": 1 },
{ "pointId": 1102207, "level": 1 },
{ "pointId": 1102208, "level": 1 },
{ "pointId": 1102209, "level": 1 },
{ "pointId": 1102210, "level": 1 }
]
} }
], ],
"recordInfo": {
"avatarCount": 29,
"achievementCount": 378,
"maxRogueChallengeScore": 8,
"equipmentCount": 151
},
"uid": 102840119,
"isDisplayAvatar": true,
"assistAvatarDetail": { "assistAvatarDetail": {
"relicList": [
{
"mainAffixId": 1,
"tid": 61021,
"type": 1,
"subAffixList": [
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 5 },
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 3, "step": 4 }
],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61022,
"type": 2,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 1, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 5,
"tid": 61023,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 5, "cnt": 3, "step": 4 },
{ "affixId": 6, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61024,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 4, "cnt": 3, "step": 3 },
{ "affixId": 8, "cnt": 3, "step": 4 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 10,
"tid": 63095,
"type": 5,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 10, "cnt": 2, "step": 1 },
{ "affixId": 12, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 4,
"tid": 63096,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 1, "step": 1 },
{ "affixId": 12, "cnt": 3, "step": 3 }
],
"level": 15
}
],
"equipment": { "tid": 23015, "promotion": 6, "rank": 1, "level": 80 },
"level": 80, "level": 80,
"avatarId": 1213,
"promotion": 6,
"skillTreeList": [ "skillTreeList": [
{ "pointId": 1005001, "level": 5 },
{ "pointId": 1005002, "level": 9 },
{ "pointId": 1005003, "level": 8 },
{ "pointId": 1005004, "level": 9 },
{ "pointId": 1005007, "level": 1 },
{ "pointId": 1005101, "level": 1 },
{ "pointId": 1005102, "level": 1 },
{ "pointId": 1005103, "level": 1 },
{ "pointId": 1005201, "level": 1 },
{ "pointId": 1005202, "level": 1 },
{ "pointId": 1005203, "level": 1 },
{ "pointId": 1005204, "level": 1 },
{ "pointId": 1005205, "level": 1 },
{ "pointId": 1005206, "level": 1 },
{ "pointId": 1005207, "level": 1 },
{ "pointId": 1005210, "level": 1 },
{ "pointId": 1213001, "level": 6 }, { "pointId": 1213001, "level": 6 },
{ "pointId": 1213002, "level": 10 }, { "pointId": 1213002, "level": 9 },
{ "pointId": 1213003, "level": 10 }, { "pointId": 1213003, "level": 10 },
{ "pointId": 1213004, "level": 10 }, { "pointId": 1213004, "level": 9 },
{ "pointId": 1213007, "level": 1 }, { "pointId": 1213007, "level": 1 },
{ "pointId": 1213101, "level": 1 }, { "pointId": 1213101, "level": 1 },
{ "pointId": 1213102, "level": 1 }, { "pointId": 1213102, "level": 1 },
@ -407,19 +150,249 @@
{ "pointId": 1213207, "level": 1 }, { "pointId": 1213207, "level": 1 },
{ "pointId": 1213208, "level": 1 }, { "pointId": 1213208, "level": 1 },
{ "pointId": 1213209, "level": 1 }, { "pointId": 1213209, "level": 1 },
{ "pointId": 1213210, "level": 1 } { "pointId": 1213210, "level": 1 },
] { "pointId": 1205001, "level": 6 },
{ "pointId": 1205002, "level": 10 },
{ "pointId": 1205003, "level": 9 },
{ "pointId": 1205004, "level": 7 },
{ "pointId": 1205007, "level": 1 },
{ "pointId": 1205101, "level": 1 },
{ "pointId": 1205102, "level": 1 },
{ "pointId": 1205103, "level": 1 },
{ "pointId": 1205201, "level": 1 },
{ "pointId": 1205202, "level": 1 },
{ "pointId": 1205203, "level": 1 },
{ "pointId": 1205205, "level": 1 },
{ "pointId": 1205206, "level": 1 },
{ "pointId": 1205207, "level": 1 },
{ "pointId": 1205208, "level": 1 },
{ "pointId": 1205209, "level": 1 },
{ "pointId": 1205210, "level": 1 }
],
"relicList": [
{
"tid": 61091,
"type": 1,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 11, "cnt": 2, "step": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61092,
"type": 2,
"subAffixList": [
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 3, "step": 4 },
{ "affixId": 10, "cnt": 3, "step": 4 },
{ "affixId": 11, "cnt": 2, "step": 3 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61093,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 1, "step": 2 },
{ "affixId": 7, "cnt": 3, "step": 4 },
{ "affixId": 8, "cnt": 2, "step": 4 },
{ "affixId": 10, "cnt": 3, "step": 2 }
],
"mainAffixId": 2,
"level": 15
},
{
"tid": 61094,
"type": 4,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 3, "cnt": 2, "step": 1 },
{ "affixId": 5, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 1, "step": 2 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 63015,
"type": 5,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 2, "cnt": 3, "step": 4 },
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 3 }
],
"mainAffixId": 7,
"level": 15
},
{
"tid": 63016,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 3, "step": 4 },
{ "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 6, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 1, "step": 2 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 61021,
"type": 1,
"subAffixList": [
{ "affixId": 5, "cnt": 4, "step": 4 },
{ "affixId": 7, "cnt": 1 },
{ "affixId": 8, "cnt": 2, "step": 3 },
{ "affixId": 9, "cnt": 2 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61022,
"type": 2,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 3, "cnt": 2 },
{ "affixId": 9, "cnt": 4, "step": 3 },
{ "affixId": 12, "cnt": 2, "step": 2 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61023,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 2 },
{ "affixId": 2, "cnt": 1 },
{ "affixId": 3, "cnt": 4, "step": 2 },
{ "affixId": 5, "cnt": 1 }
],
"mainAffixId": 5,
"level": 15
},
{
"tid": 61024,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 4, "step": 4 },
{ "affixId": 10, "cnt": 1 },
{ "affixId": 11, "cnt": 2, "step": 1 }
],
"mainAffixId": 2,
"level": 15
},
{
"tid": 63095,
"type": 5,
"subAffixList": [
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 2, "step": 4 },
{ "affixId": 11, "cnt": 2, "step": 4 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"mainAffixId": 10,
"level": 15
},
{
"tid": 63096,
"type": 6,
"subAffixList": [
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 1, "step": 1 },
{ "affixId": 9, "cnt": 3, "step": 5 },
{ "affixId": 11, "cnt": 3, "step": 5 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 61131,
"type": 1,
"subAffixList": [
{ "affixId": 6, "cnt": 2, "step": 2 },
{ "affixId": 8, "cnt": 4, "step": 3 },
{ "affixId": 9, "cnt": 1, "step": 2 },
{ "affixId": 10, "cnt": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61132,
"type": 2,
"subAffixList": [
{ "affixId": 6, "cnt": 5, "step": 4 },
{ "affixId": 8, "cnt": 1, "step": 1 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 12, "cnt": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61133,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 3, "cnt": 4, "step": 3 },
{ "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 6, "cnt": 2, "step": 1 }
],
"mainAffixId": 5,
"level": 15
},
{
"tid": 61134,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 2 },
{ "affixId": 5, "cnt": 3, "step": 3 },
{ "affixId": 9, "cnt": 2, "step": 2 },
{ "affixId": 12, "cnt": 2, "step": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 63065,
"type": 5,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 1 },
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 4, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 2, "step": 4 }
],
"mainAffixId": 8,
"level": 15
},
{
"tid": 63066,
"type": 6,
"subAffixList": [
{ "affixId": 1, "cnt": 3, "step": 2 },
{ "affixId": 2, "cnt": 1 },
{ "affixId": 5, "cnt": 1 },
{ "affixId": 8, "cnt": 4, "step": 6 }
],
"mainAffixId": 3,
"level": 15
}
],
"avatarId": 1205,
"promotion": 6,
"equipment": { "tid": 23009, "level": 80, "promotion": 6, "rank": 1 },
"pos": 2
}, },
"friendCount": 18, "platform": "IOS",
"recordInfo": { "headIcon": 200107
"achievementCount": 276,
"avatarCount": 24,
"maxRogueChallengeScore": 7,
"challengeInfo": { "noneScheduleMaxLevel": 16 },
"equipmentCount": 154
},
"uid": 100086290,
"platform": "PC",
"isDisplayAvatar": true
} }
} }