diff --git a/StarRailUID/sruid_utils/api/mihomo/models.py b/StarRailUID/sruid_utils/api/mihomo/models.py
index 1d3310a..29cee23 100644
--- a/StarRailUID/sruid_utils/api/mihomo/models.py
+++ b/StarRailUID/sruid_utils/api/mihomo/models.py
@@ -4,63 +4,64 @@ from typing import List, Optional, TypedDict
class MihomoData(TypedDict):
- PlayerDetailInfo: PlayerDetailInfo
+ detailInfo: PlayerDetailInfo
class Behavior(TypedDict):
- BehaviorID: int
- Level: int
+ pointId: int
+ level: int
class Equipment(TypedDict):
- Level: int
- ID: int
- Promotion: Optional[int]
- Rank: Optional[int]
+ level: int
+ tid: int
+ promotion: Optional[int]
+ rank: Optional[int]
class Relic(TypedDict):
- RelicSubAffix: List[RelicSubAffix]
- ID: int
- MainAffixID: int
- Type: int
+ subAffixList: List[subAffixList]
+ tid: int
+ mainAffixId: int
+ type: int
class Avatar(TypedDict):
- BehaviorList: List[Behavior]
- Rank: Optional[int]
- Pos: Optional[int]
- AvatarID: int
- Level: int
- EquipmentID: Optional[Equipment]
- RelicList: List[Relic]
- Promotion: int
+ skillTreeList: List[Behavior]
+ rank: Optional[int]
+ pos: Optional[int]
+ avatarId: int
+ level: int
+ equipment: Optional[Equipment]
+ relicList: List[Relic]
+ promotion: int
class Challenge(TypedDict):
- PreMazeGroupIndex: int
+ scheduleMaxLevel: int
MazeGroupIndex: Optional[int]
PreMazeGroupIndex: Optional[int]
class PlayerSpaceInfo(TypedDict):
- ChallengeData: Challenge
- PassAreaProgress: int
- LightConeCount: int
- AvatarCount: int
- AchievementCount: int
+ challengeInfo: Challenge
+ maxRogueChallengeScore: int
+ equipmentCount: int
+ avatarCount: int
+ achievementCount: int
class PlayerDetailInfo(TypedDict):
- AssistAvatar: Avatar
- IsDisplayAvatarList: bool
- DisplayAvatarList: Optional[List[Avatar]]
- UID: int
- CurFriendCount: int
- WorldLevel: int
- NickName: str
+ assistAvatarDetail: Avatar
+ platform: str
+ isDisplayAvatar: bool
+ avatarDetailList: Optional[List[Avatar]]
+ uid: int
+ friendCount: int
+ worldLevel: int
+ nickname: str
Birthday: Optional[int]
- Level: int
- PlayerSpaceInfo: Optional[PlayerSpaceInfo]
- HeadIconID: int
- Signature: Optional[str]
+ level: int
+ recordInfo: Optional[PlayerSpaceInfo]
+ headIcon: int
+ signature: Optional[str]
diff --git a/StarRailUID/starrailuid_charinfo/to_card.py b/StarRailUID/starrailuid_charinfo/to_card.py
index 1ffb28a..7934f5b 100644
--- a/StarRailUID/starrailuid_charinfo/to_card.py
+++ b/StarRailUID/starrailuid_charinfo/to_card.py
@@ -31,6 +31,7 @@ async def api_to_card(
uid: str, enka_data: Optional[EnkaData] = None
) -> Union[str, bytes]:
char_data_list = await api_to_dict(uid, enka_data)
+ print(char_data_list)
if isinstance(char_data_list, str):
if ('服务器正在维护或者关闭中' in char_data_list) or ('网络不太稳定' in char_data_list):
return await convert_img(pic_500)
diff --git a/StarRailUID/starrailuid_charinfo/to_data.py b/StarRailUID/starrailuid_charinfo/to_data.py
index 976d57f..2783641 100644
--- a/StarRailUID/starrailuid_charinfo/to_data.py
+++ b/StarRailUID/starrailuid_charinfo/to_data.py
@@ -57,13 +57,14 @@ async def api_to_dict(
if isinstance(sr_data, str):
return []
if isinstance(sr_data, dict):
- if 'PlayerDetailInfo' not in sr_data:
+ print(sr_data)
+ if 'detailInfo' not in sr_data:
im = '服务器正在维护或者关闭中...\n检查Mihomo.me是否可以访问\n如可以访问,尝试上报Bug!'
return im
elif sr_data is None:
return []
- PlayerDetailInfo = sr_data['PlayerDetailInfo']
+ PlayerDetailInfo = sr_data['detailInfo']
path = PLAYER_PATH / str(sr_uid)
path.mkdir(parents=True, exist_ok=True)
with open(
@@ -73,28 +74,33 @@ async def api_to_dict(
with open(path / 'rawData.json', 'w', encoding='UTF-8') as file:
json.dump(sr_data, file, ensure_ascii=False)
- if 'PlayerDetailInfo' not in sr_data:
+ if 'detailInfo' not in sr_data:
return f'SR_UID{sr_uid}刷新失败!未打开角色展柜!'
char_name_list = []
char_id_list = []
im = f'UID: {sr_uid} 的角色展柜刷新成功\n'
- if PlayerDetailInfo.get('AssistAvatar'):
- if PlayerDetailInfo['AssistAvatar']['AvatarID'] not in char_id_list:
+ if PlayerDetailInfo.get('assistAvatarDetail'):
+ if (
+ PlayerDetailInfo['assistAvatarDetail']['avatarId']
+ not in char_id_list
+ ):
char_dict, avatarName = await get_data(
- PlayerDetailInfo['AssistAvatar'], sr_data, sr_uid
+ PlayerDetailInfo['assistAvatarDetail'], sr_data, sr_uid
)
im += f'支援角色 {avatarName}\n'
char_name_list.append(avatarName)
- char_id_list.append(PlayerDetailInfo['AssistAvatar']['AvatarID'])
- if PlayerDetailInfo.get('DisplayAvatarList'):
+ char_id_list.append(
+ PlayerDetailInfo['assistAvatarDetail']['avatarId']
+ )
+ if PlayerDetailInfo.get('avatarDetailList'):
im += '星海同行'
- for char in PlayerDetailInfo['DisplayAvatarList']:
- if char['AvatarID'] not in char_id_list:
+ for char in PlayerDetailInfo['avatarDetailList']:
+ if char['avatarId'] not in char_id_list:
char_dict, avatarName = await get_data(char, sr_data, sr_uid)
im += f' {avatarName}'
char_name_list.append(avatarName)
- char_id_list.append(char['AvatarID'])
+ char_id_list.append(char['avatarId'])
if not char_name_list:
im = f'UID: {sr_uid} 的角色展柜刷新失败!\n请检查UID是否正确或者角色展柜是否打开!'
@@ -104,32 +110,32 @@ async def api_to_dict(
async def get_data(char: dict, sr_data: dict, sr_uid: str):
- PlayerDetailInfo = sr_data['PlayerDetailInfo']
+ PlayerDetailInfo = sr_data['detailInfo']
path = PLAYER_PATH / str(sr_uid)
# 处理基本信息
char_data = {
'uid': str(sr_uid),
- 'nickName': PlayerDetailInfo['NickName'],
- 'avatarId': char['AvatarID'],
- 'avatarName': avatarId2Name[str(char['AvatarID'])],
- 'avatarElement': avatarId2DamageType[str(char['AvatarID'])],
- 'avatarRarity': avatarId2Rarity[str(char['AvatarID'])],
- 'avatarPromotion': char.get('Promotion', 0),
- 'avatarLevel': char['Level'],
+ 'nickName': PlayerDetailInfo['nickname'],
+ 'avatarId': char['avatarId'],
+ 'avatarName': avatarId2Name[str(char['avatarId'])],
+ 'avatarElement': avatarId2DamageType[str(char['avatarId'])],
+ 'avatarRarity': avatarId2Rarity[str(char['avatarId'])],
+ 'avatarPromotion': char.get('promotion', 0),
+ 'avatarLevel': char['level'],
'avatarSkill': [],
'avatarExtraAbility': [],
'avatarAttributeBonus': [],
'RelicInfo': [],
}
- avatarName = avatarId2Name[str(char['AvatarID'])]
- char_data['avatarEnName'] = avatarId2EnName[str(char['AvatarID'])]
+ avatarName = avatarId2Name[str(char['avatarId'])]
+ char_data['avatarEnName'] = avatarId2EnName[str(char['avatarId'])]
# 处理技能
- for behavior in char['BehaviorList']:
+ for behavior in char['skillTreeList']:
# 处理技能
- if f'{char["AvatarID"]}0' == str(behavior['BehaviorID'])[0:5]:
+ if f'{char["avatarId"]}0' == str(behavior['pointId'])[0:5]:
skill_temp = {}
skill_temp['skillId'] = (
- char['AvatarID'] * 100 + behavior['BehaviorID'] % 10
+ char['avatarId'] * 100 + behavior['pointId'] % 10
)
skill_temp['skillName'] = skillId2Name[str(skill_temp['skillId'])]
skill_temp['skillEffect'] = skillId2Effect[
@@ -138,17 +144,17 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
skill_temp['skillAttackType'] = skillId2AttackType[
str(skill_temp['skillId'])
]
- skill_temp['skillLevel'] = behavior['Level']
+ skill_temp['skillLevel'] = behavior['level']
char_data['avatarSkill'].append(skill_temp)
# 处理技能树中的额外能力
- if f'{char["AvatarID"]}1' == str(behavior['BehaviorID'])[0:5]:
+ if f'{char["avatarId"]}1' == str(behavior['pointId'])[0:5]:
extra_ability_temp = {}
- extra_ability_temp['extraAbilityId'] = behavior['BehaviorID']
- extra_ability_temp['extraAbilityLevel'] = behavior['Level']
- status_add = characterSkillTree[str(char['AvatarID'])][
- str(behavior['BehaviorID'])
- ]['levels'][str(behavior['Level'])]['status_add']
+ extra_ability_temp['extraAbilityId'] = behavior['pointId']
+ extra_ability_temp['extraAbilityLevel'] = behavior['level']
+ status_add = characterSkillTree[str(char['avatarId'])][
+ str(behavior['pointId'])
+ ]['levels'][str(behavior['level'])]['status_add']
extra_ability_temp['statusAdd'] = {}
if status_add != {}:
extra_ability_temp['statusAdd']['property'] = status_add[
@@ -161,13 +167,13 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
char_data['avatarExtraAbility'].append(extra_ability_temp)
# 处理技能树中的属性加成
- if f'{char["AvatarID"]}2' == str(behavior['BehaviorID'])[0:5]:
+ if f'{char["avatarId"]}2' == str(behavior['pointId'])[0:5]:
attribute_bonus_temp = {}
- attribute_bonus_temp['attributeBonusId'] = behavior['BehaviorID']
- attribute_bonus_temp['attributeBonusLevel'] = behavior['Level']
- status_add = characterSkillTree[str(char['AvatarID'])][
- str(behavior['BehaviorID'])
- ]['levels'][str(behavior['Level'])]['status_add']
+ attribute_bonus_temp['attributeBonusId'] = behavior['pointId']
+ attribute_bonus_temp['attributeBonusLevel'] = behavior['level']
+ status_add = characterSkillTree[str(char['avatarId'])][
+ str(behavior['pointId'])
+ ]['levels'][str(behavior['level'])]['status_add']
attribute_bonus_temp['statusAdd'] = {}
if status_add != {}:
attribute_bonus_temp['statusAdd']['property'] = status_add[
@@ -182,23 +188,23 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
char_data['avatarAttributeBonus'].append(attribute_bonus_temp)
# 处理遗器
- if char.get('RelicList'):
- for relic in char['RelicList']:
+ if char.get('relicList'):
+ for relic in char['relicList']:
relic_temp = {}
- relic_temp['relicId'] = relic['ID']
- relic_temp['relicName'] = ItemId2Name[str(relic['ID'])]
- relic_temp['SetId'] = int(RelicId2SetId[str(relic['ID'])])
+ relic_temp['relicId'] = relic['tid']
+ relic_temp['relicName'] = ItemId2Name[str(relic['tid'])]
+ relic_temp['SetId'] = int(RelicId2SetId[str(relic['tid'])])
relic_temp['SetName'] = SetId2Name[str(relic_temp['SetId'])]
- relic_temp['Level'] = relic['Level'] if 'Level' in relic else 0
- relic_temp['Type'] = relic['Type']
+ relic_temp['Level'] = relic['level'] if 'level' in relic else 0
+ relic_temp['Type'] = relic['type']
relic_temp['MainAffix'] = {}
- relic_temp['MainAffix']['AffixID'] = relic['MainAffixID']
+ relic_temp['MainAffix']['AffixID'] = relic['mainAffixId']
affix_property, value = await cal_relic_main_affix(
- relic_id=relic['ID'],
+ relic_id=relic['tid'],
set_id=str(relic_temp['SetId']),
- affix_id=relic['MainAffixID'],
- relic_type=relic['Type'],
+ affix_id=relic['mainAffixId'],
+ relic_type=relic['type'],
relic_level=relic_temp['Level'],
)
relic_temp['MainAffix']['Property'] = affix_property
@@ -206,21 +212,21 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
relic_temp['MainAffix']['Value'] = value
relic_temp['SubAffixList'] = []
- if relic.get('RelicSubAffix'):
- for sub_affix in relic['RelicSubAffix']:
+ if relic.get('subAffixList'):
+ for sub_affix in relic['subAffixList']:
sub_affix_temp = {}
- sub_affix_temp['SubAffixID'] = sub_affix['SubAffixID']
+ sub_affix_temp['SubAffixID'] = sub_affix['affixId']
sub_affix_property, value = await cal_relic_sub_affix(
- relic_id=relic['ID'],
- affix_id=sub_affix['SubAffixID'],
- cnt=sub_affix['Cnt'],
- step=sub_affix['Step'] if 'Step' in sub_affix else 0,
+ relic_id=relic['tid'],
+ affix_id=sub_affix['affixId'],
+ cnt=sub_affix['cnt'],
+ step=sub_affix['step'] if 'step' in sub_affix else 0,
)
sub_affix_temp['Property'] = sub_affix_property
sub_affix_temp['Name'] = Property2Name[sub_affix_property]
- sub_affix_temp['Cnt'] = sub_affix['Cnt']
+ sub_affix_temp['Cnt'] = sub_affix['cnt']
sub_affix_temp['Step'] = (
- sub_affix['Step'] if 'Step' in sub_affix else 0
+ sub_affix['step'] if 'step' in sub_affix else 0
)
sub_affix_temp['Value'] = value
relic_temp['SubAffixList'].append(sub_affix_temp)
@@ -228,11 +234,11 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
# 处理命座
rank_temp = []
- if 'Rank' in char:
- char_data['rank'] = char['Rank']
- for index in range(char['Rank']):
+ if 'rank' in char:
+ char_data['rank'] = char['rank']
+ for index in range(char['rank']):
rankTemp = {}
- rank_id = int(str(char['AvatarID']) + '0' + str(index + 1))
+ rank_id = int(str(char['avatarId']) + '0' + str(index + 1))
rankTemp['rankId'] = rank_id
rankTemp['rankName'] = rankId2Name[str(rank_id)]
rank_temp.append(rankTemp)
@@ -240,26 +246,26 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
# 处理基础属性
base_attributes = {}
- avatar_promotion_base = AvatarPromotion[str(char['AvatarID'])][
- str(char.get('Promotion', 0))
+ avatar_promotion_base = AvatarPromotion[str(char['avatarId'])][
+ str(char.get('promotion', 0))
]
# 攻击力
base_attributes['attack'] = str(
mp.mpf(avatar_promotion_base["AttackBase"]['Value'])
+ mp.mpf(avatar_promotion_base["AttackAdd"]['Value'])
- * (char['Level'] - 1)
+ * (char['level'] - 1)
)
# 防御力
base_attributes['defence'] = str(
mp.mpf(avatar_promotion_base["DefenceBase"]['Value'])
+ mp.mpf(avatar_promotion_base["DefenceAdd"]['Value'])
- * (char['Level'] - 1)
+ * (char['level'] - 1)
)
# 血量
base_attributes['hp'] = str(
mp.mpf(avatar_promotion_base["HPBase"]['Value'])
- + mp.mpf(avatar_promotion_base["HPAdd"]['Value']) * (char['Level'] - 1)
+ + mp.mpf(avatar_promotion_base["HPAdd"]['Value']) * (char['level'] - 1)
)
# 速度
base_attributes['speed'] = str(
@@ -283,42 +289,42 @@ async def get_data(char: dict, sr_data: dict, sr_uid: str):
# 处理武器
equipment_info = {}
- if char['EquipmentID'] != {}:
- equipment_info['equipmentID'] = char['EquipmentID']['ID']
+ if char.get('equipment'):
+ equipment_info['equipmentID'] = char['equipment']['tid']
equipment_info['equipmentName'] = EquipmentID2Name[
- str(equipment_info['equipmentID'])
+ str(char['equipment']['tid'])
]
- equipment_info['equipmentLevel'] = char['EquipmentID']['Level']
- equipment_info['equipmentPromotion'] = char['EquipmentID'].get(
- 'Promotion', 0
+ equipment_info['equipmentLevel'] = char['equipment']['level']
+ equipment_info['equipmentPromotion'] = char['equipment'].get(
+ 'promotion', 0
)
- equipment_info['equipmentRank'] = char['EquipmentID']['Rank']
+ equipment_info['equipmentRank'] = char['equipment']['rank']
equipment_info['equipmentRarity'] = EquipmentID2Rarity[
- str(equipment_info['equipmentID'])
+ str(char['equipment']['tid'])
]
equipment_base_attributes = {}
equipment_promotion_base = EquipmentPromotion[
- str(equipment_info['equipmentID'])
+ str(char['equipment']['tid'])
][str(equipment_info['equipmentPromotion'])]
# 生命值
equipment_base_attributes['hp'] = str(
mp.mpf(equipment_promotion_base["BaseHP"]['Value'])
+ mp.mpf(equipment_promotion_base["BaseHPAdd"]['Value'])
- * (equipment_info['equipmentLevel'] - 1)
+ * (char['equipment']['level'] - 1)
)
# 攻击力
equipment_base_attributes['attack'] = str(
mp.mpf(equipment_promotion_base["BaseAttack"]['Value'])
+ mp.mpf(equipment_promotion_base["BaseAttackAdd"]['Value'])
- * (equipment_info['equipmentLevel'] - 1)
+ * (char['equipment']['level'] - 1)
)
# 防御力
equipment_base_attributes['defence'] = str(
mp.mpf(equipment_promotion_base["BaseDefence"]['Value'])
+ mp.mpf(equipment_promotion_base["BaseDefenceAdd"]['Value'])
- * (equipment_info['equipmentLevel'] - 1)
+ * (char['equipment']['level'] - 1)
)
equipment_info['baseAttributes'] = equipment_base_attributes
diff --git a/StarRailUID/utils/map/data/EquipmentID2Rarity_mapping_1.0.5.json b/StarRailUID/utils/map/data/EquipmentID2Rarity_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/EquipmentID2Rarity_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/EquipmentID2Rarity_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/ItemId2Name_mapping_1.0.5.json b/StarRailUID/utils/map/data/ItemId2Name_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/ItemId2Name_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/ItemId2Name_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/Property2Name.json b/StarRailUID/utils/map/data/Property2Name.json
index e29ea87..ffc1434 100644
--- a/StarRailUID/utils/map/data/Property2Name.json
+++ b/StarRailUID/utils/map/data/Property2Name.json
@@ -1,57 +1 @@
-{
- "MaxHP": "生命值",
- "Attack": "攻击力",
- "Defence": "防御力",
- "Speed": "速度",
- "CriticalChance": "暴击率",
- "CriticalDamage": "暴击伤害",
- "BreakDamageAddedRatio": "击破特攻",
- "BreakDamageAddedRatioBase": "击破特攻",
- "HealRatio": "治疗量加成",
- "MaxSP": "能量上限",
- "SPRatio": "能量恢复效率",
- "StatusProbability": "效果命中",
- "StatusResistance": "效果抵抗",
- "CriticalChanceBase": "暴击率",
- "CriticalDamageBase": "暴击伤害",
- "HealRatioBase": "治疗量加成",
- "StanceBreakAddedRatio": "dev_失效字段",
- "SPRatioBase": "能量恢复效率",
- "StatusProbabilityBase": "效果命中",
- "StatusResistanceBase": "效果抵抗",
- "PhysicalAddedRatio": "物理属性伤害提高",
- "PhysicalResistance": "物理属性抗性提高",
- "FireAddedRatio": "火属性伤害提高",
- "FireResistance": "火属性抗性提高",
- "IceAddedRatio": "冰属性伤害提高",
- "IceResistance": "冰属性抗性提高",
- "ThunderAddedRatio": "雷属性伤害提高",
- "ThunderResistance": "雷属性抗性提高",
- "WindAddedRatio": "风属性伤害提高",
- "WindResistance": "风属性抗性提高",
- "QuantumAddedRatio": "量子属性伤害提高",
- "QuantumResistance": "量子属性抗性提高",
- "ImaginaryAddedRatio": "虚数属性伤害提高",
- "ImaginaryResistance": "虚数属性抗性提高",
- "BaseHP": "基础生命值提高#1[i]",
- "HPDelta": "生命值",
- "HPAddedRatio": "生命值百分比",
- "BaseAttack": "基础攻击力提高#1[i]",
- "AttackDelta": "攻击力",
- "AttackAddedRatio": "攻击力百分比",
- "BaseDefence": "基础防御力提高#1[i]",
- "DefenceDelta": "防御力",
- "DefenceAddedRatio": "防御力百分比",
- "BaseSpeed": "速度",
- "HealTakenRatio": "治疗量加成",
- "PhysicalResistanceDelta": "物理属性抗性提高",
- "FireResistanceDelta": "火属性抗性提高",
- "IceResistanceDelta": "冰属性抗性提高",
- "ThunderResistanceDelta": "雷属性抗性提高",
- "WindResistanceDelta": "风属性抗性提高",
- "QuantumResistanceDelta": "量子属性抗性提高",
- "ImaginaryResistanceDelta": "虚数属性抗性提高",
- "SpeedDelta": "速度",
- "SpeedAddedRatio": "速度百分比",
- "AllDamageTypeAddedRatio": "所有属性伤害提高"
-}
+{"MaxHP": "生命值", "Attack": "攻击力", "Defence": "防御力", "Speed": "速度", "CriticalChance": "暴击率", "CriticalDamage": "暴击伤害", "BreakDamageAddedRatio": "击破特攻", "BreakDamageAddedRatioBase": "击破特攻", "HealRatio": "治疗量加成", "MaxSP": "能量上限", "SPRatio": "能量恢复效率", "StatusProbability": "效果命中", "StatusResistance": "效果抵抗", "CriticalChanceBase": "暴击率", "CriticalDamageBase": "暴击伤害", "HealRatioBase": "治疗量加成", "StanceBreakAddedRatio": "dev_失效字段", "SPRatioBase": "能量恢复效率", "StatusProbabilityBase": "效果命中", "StatusResistanceBase": "效果抵抗", "PhysicalAddedRatio": "物理属性伤害提高", "PhysicalResistance": "物理属性抗性提高", "FireAddedRatio": "火属性伤害提高", "FireResistance": "火属性抗性提高", "IceAddedRatio": "冰属性伤害提高", "IceResistance": "冰属性抗性提高", "ThunderAddedRatio": "雷属性伤害提高", "ThunderResistance": "雷属性抗性提高", "WindAddedRatio": "风属性伤害提高", "WindResistance": "风属性抗性提高", "QuantumAddedRatio": "量子属性伤害提高", "QuantumResistance": "量子属性抗性提高", "ImaginaryAddedRatio": "虚数属性伤害提高", "ImaginaryResistance": "虚数属性抗性提高", "BaseHP": "基础生命值提高#1[i]", "HPDelta": "生命值", "HPAddedRatio": "生命值百分比", "BaseAttack": "基础攻击力提高#1[i]", "AttackDelta": "攻击力", "AttackAddedRatio": "攻击力百分比", "BaseDefence": "基础防御力提高#1[i]", "DefenceDelta": "防御力", "DefenceAddedRatio": "防御力百分比", "BaseSpeed": "速度", "HealTakenRatio": "治疗量加成", "PhysicalResistanceDelta": "物理属性抗性提高", "FireResistanceDelta": "火属性抗性提高", "IceResistanceDelta": "冰属性抗性提高", "ThunderResistanceDelta": "雷属性抗性提高", "WindResistanceDelta": "风属性抗性提高", "QuantumResistanceDelta": "量子属性抗性提高", "ImaginaryResistanceDelta": "虚数属性抗性提高", "SpeedDelta": "速度"}
diff --git a/StarRailUID/utils/map/data/RelicId2MainAffixGroup_mapping_1.0.5.json b/StarRailUID/utils/map/data/RelicId2MainAffixGroup_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/RelicId2MainAffixGroup_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/RelicId2MainAffixGroup_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/RelicId2Rarity_mapping_1.0.5.json b/StarRailUID/utils/map/data/RelicId2Rarity_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/RelicId2Rarity_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/RelicId2Rarity_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/RelicId2SetId_mapping_1.0.5.json b/StarRailUID/utils/map/data/RelicId2SetId_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/RelicId2SetId_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/RelicId2SetId_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/SetId2Name_mapping_1.0.5.json b/StarRailUID/utils/map/data/SetId2Name_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/SetId2Name_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/SetId2Name_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.0.5.json b/StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.1.0.json
similarity index 71%
rename from StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.1.0.json
index 1d9d0b8..1ea142c 100644
--- a/StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.0.5.json
+++ b/StarRailUID/utils/map/data/avatarId2DamageType_mapping_1.1.0.json
@@ -1 +1 @@
-{"1001": "Ice", "1002": "Wind", "1003": "Fire", "1004": "Imaginary", "1005": "Thunder", "1006": "Quantum", "1008": "Thunder", "1009": "Fire", "1013": "Ice", "1101": "Wind", "1102": "Quantum", "1103": "Thunder", "1104": "Ice", "1105": "Physical", "1106": "Ice", "1107": "Physical", "1108": "Wind", "1109": "Fire", "1201": "Quantum", "1202": "Thunder", "1203": "Imaginary", "1204": "Thunder", "1206": "Physical", "1209": "Ice", "1211": "Thunder", "8001": "Physical", "8002": "Physical", "8003": "Fire", "8004": "Fire", "9100": "Physical"}
+{"1001": "Ice", "1002": "Wind", "1003": "Fire", "1004": "Imaginary", "1005": "Thunder", "1006": "Quantum", "1008": "Thunder", "1009": "Fire", "1013": "Ice", "1101": "Wind", "1102": "Quantum", "1103": "Thunder", "1104": "Ice", "1105": "Physical", "1106": "Ice", "1107": "Physical", "1108": "Wind", "1109": "Fire", "1201": "Quantum", "1202": "Thunder", "1203": "Imaginary", "1204": "Thunder", "1206": "Physical", "1207": "Imaginary", "1209": "Ice", "1211": "Thunder", "8001": "Physical", "8002": "Physical", "8003": "Fire", "8004": "Fire"}
diff --git a/StarRailUID/utils/map/data/avatarId2EnName_mapping_1.0.5.json b/StarRailUID/utils/map/data/avatarId2EnName_mapping_1.1.0.json
similarity index 68%
rename from StarRailUID/utils/map/data/avatarId2EnName_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/avatarId2EnName_mapping_1.1.0.json
index 2788db0..b83b0f3 100644
--- a/StarRailUID/utils/map/data/avatarId2EnName_mapping_1.0.5.json
+++ b/StarRailUID/utils/map/data/avatarId2EnName_mapping_1.1.0.json
@@ -1 +1 @@
-{"1001": "March7th", "1002": "DanHeng", "1003": "Himeko", "1004": "Welt", "1005": "Kafka", "1006": "SilverWolf", "1008": "Arlan", "1009": "Asta", "1013": "Herta", "1101": "Bronya", "1102": "Seele", "1103": "Serval", "1104": "Gepard", "1105": "Natasha", "1106": "Pela", "1107": "Clara", "1108": "Sampo", "1109": "Hook", "1201": "Qingque", "1202": "Tingyun", "1203": "Luocha", "1204": "JingYuan", "1206": "Sushang", "1209": "Yanqing", "1211": "Bailu", "8001": "{NICKNAME}", "8002": "{NICKNAME}", "8003": "{NICKNAME}", "8004": "{NICKNAME}", "9100": "{NICKNAME}"}
+{"1001": "March7th", "1002": "DanHeng", "1003": "Himeko", "1004": "Welt", "1005": "Kafka", "1006": "SilverWolf", "1008": "Arlan", "1009": "Asta", "1013": "Herta", "1101": "Bronya", "1102": "Seele", "1103": "Serval", "1104": "Gepard", "1105": "Natasha", "1106": "Pela", "1107": "Clara", "1108": "Sampo", "1109": "Hook", "1201": "Qingque", "1202": "Tingyun", "1203": "Luocha", "1204": "JingYuan", "1206": "Sushang", "1207": "Yukong", "1209": "Yanqing", "1211": "Bailu", "8001": "{NICKNAME}", "8002": "{NICKNAME}", "8003": "{NICKNAME}", "8004": "{NICKNAME}"}
diff --git a/StarRailUID/utils/map/data/avatarId2Name_mapping_1.0.5.json b/StarRailUID/utils/map/data/avatarId2Name_mapping_1.1.0.json
similarity index 75%
rename from StarRailUID/utils/map/data/avatarId2Name_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/avatarId2Name_mapping_1.1.0.json
index 9f82b75..ba92c7d 100644
--- a/StarRailUID/utils/map/data/avatarId2Name_mapping_1.0.5.json
+++ b/StarRailUID/utils/map/data/avatarId2Name_mapping_1.1.0.json
@@ -1 +1 @@
-{"1001": "三月七", "1002": "丹恒", "1003": "姬子", "1004": "瓦尔特", "1005": "卡芙卡", "1006": "银狼", "1008": "阿兰", "1009": "艾丝妲", "1013": "黑塔", "1101": "布洛妮娅", "1102": "希儿", "1103": "希露瓦", "1104": "杰帕德", "1105": "娜塔莎", "1106": "佩拉", "1107": "克拉拉", "1108": "桑博", "1109": "虎克", "1201": "青雀", "1202": "停云", "1203": "罗刹", "1204": "景元", "1206": "素裳", "1209": "彦卿", "1211": "白露", "8001": "开拓者", "8002": "开拓者", "8003": "开拓者", "8004": "开拓者", "9100": "dev_测试用白板"}
+{"1001": "三月七", "1002": "丹恒", "1003": "姬子", "1004": "瓦尔特", "1005": "卡芙卡", "1006": "银狼", "1008": "阿兰", "1009": "艾丝妲", "1013": "黑塔", "1101": "布洛妮娅", "1102": "希儿", "1103": "希露瓦", "1104": "杰帕德", "1105": "娜塔莎", "1106": "佩拉", "1107": "克拉拉", "1108": "桑博", "1109": "虎克", "1201": "青雀", "1202": "停云", "1203": "罗刹", "1204": "景元", "1206": "素裳", "1207": "驭空", "1209": "彦卿", "1211": "白露", "8001": "开拓者", "8002": "开拓者", "8003": "开拓者", "8004": "开拓者"}
diff --git a/StarRailUID/utils/map/data/avatarId2Rarity_mapping_1.0.5.json b/StarRailUID/utils/map/data/avatarId2Rarity_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/avatarId2Rarity_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/avatarId2Rarity_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/avatarId2Star_mapping_1.0.5.json b/StarRailUID/utils/map/data/avatarId2Star_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/avatarId2Star_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/avatarId2Star_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/characterSkillTree_mapping_1.0.5.json b/StarRailUID/utils/map/data/characterSkillTree_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/characterSkillTree_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/characterSkillTree_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/rankId2Name_mapping_1.0.5.json b/StarRailUID/utils/map/data/rankId2Name_mapping_1.1.0.json
similarity index 100%
rename from StarRailUID/utils/map/data/rankId2Name_mapping_1.0.5.json
rename to StarRailUID/utils/map/data/rankId2Name_mapping_1.1.0.json
diff --git a/StarRailUID/utils/map/data/skillId2Name_mapping_1.0.5.json b/StarRailUID/utils/map/data/skillId2Name_mapping_1.0.5.json
deleted file mode 100644
index df86fcf..0000000
--- a/StarRailUID/utils/map/data/skillId2Name_mapping_1.0.5.json
+++ /dev/null
@@ -1 +0,0 @@
-{"100101": "极寒的弓矢", "100103": "冰刻箭雨之时", "100104": "少女的特权", "100106": "攻击", "100107": "冻人的瞬间", "100201": "云骑枪术•朔风", "100202": "云骑枪术•疾雨", "100203": "洞天幻化,长梦一觉", "100204": "寸长寸强", "100206": "攻击", "100207": "破敌锋芒", "100302": "熔核爆裂", "100306": "攻击", "100307": "不完全燃烧", "100401": "重力压制", "100402": "虚空断界", "100404": "时空扭曲", "100406": "攻击", "100501": "夜间喧嚣不止", "100502": "月光摩挲连绵", "100503": "悲剧尽头的颤音", "100504": "温柔亦同残酷", "100506": "攻击", "100507": "宽恕无关慈悲", "100801": "如雷疾行", "100802": "禁锢解除", "100803": "狂者制裁", "100804": "至痛至怒", "100806": "攻击", "100807": "极速收割", "100901": "光谱射线", "100902": "流星群落", "100903": "星空祝言", "100904": "天象学", "100906": "攻击", "100907": "灵光一现", "101301": "看什么看", "101302": "一锤子买卖", "101303": "是魔法,我加了魔法", "101304": "还是我来吧", "101306": "攻击", "101307": "可以优化一下", "110101": "驭风的子弹", "110102": "作战再部署", "110103": "贝洛伯格进行曲", "110104": "先人一步", "110106": "攻击", "110107": "在旗帜下", "110203": "乱蝶", "110206": "攻击", "110207": "幻身", "110301": "雷鸣音阶", "110302": "电光石火间", "110303": "机械热潮登场!", "110304": "燃情和弦", "110306": "攻击", "110307": "晚安,贝洛伯格", "110401": "一意之拳", "110402": "震慑之击", "110403": "永屹之壁", "110404": "不屈之身", "110406": "攻击", "110407": "有情之证", "110501": "仁慈的背面", "110502": "爱,救护与抉择", "110503": "新生之礼", "110506": "攻击", "110601": "冰点射击", "110602": "低温妨害", "110604": "数据采集", "110606": "攻击", "110607": "先发制人", "110801": "酷炫的刀花", "110802": "反复横跳的爱", "110803": "惊喜礼盒", "110806": "攻击", "110807": "你最闪亮", "110901": "喂!小心火烛", "110902": "嘿!记得虎克吗", "110903": "轰!飞来焰火", "110904": "哈!火上浇油", "110906": "攻击", "110907": "哎!瞧这一团糟", "110909": "嘿!记得虎克吗", "120101": "门前清", "120108": "杠上开花!", "120103": "四幺暗刻?和!", "120104": "帝垣琼玉", "120106": "攻击", "120107": "独弈之乐", "120201": "逐客令", "120206": "攻击", "120207": "惠风和畅", "120301": "黑渊的棘刺", "120302": "白花的祈望", "120303": "归葬的遂愿", "120304": "生息的轮转", "120306": "攻击", "120307": "愚者的悲悯", "120601": "云骑剑经 • 素霓", "120602": "云骑剑经 • 山倾", "120603": "太虚形蕴 • 烛夜", "120604": "游刃若水", "120606": "攻击", "120607": "云骑剑经 • 叩阵", "120901": "霜锋点寒芒", "120902": "遥击三尺水", "120903": "快雨燕相逐", "120904": "呼剑如影", "120906": "攻击", "120907": "御剑真诀", "121101": "望 、闻、问…蹴!", "121102": "云吟乍涌坠珠露", "121103": "匏蛟跃渊先雷音", "121106": "攻击", "121107": "徜徉灵泽病恙短", "800101": "再见安打", "800102": "安息全垒打", "800103": "星尘王牌", "800104": "牵制盗垒", "800106": "攻击", "800107": "不灭三振", "800108": "全胜•再见安打", "800109": "全胜•安息全垒打", "800201": "再见安打", "800202": "安息全垒打", "800203": "星尘王牌", "800204": "牵制盗垒", "800206": "攻击", "800207": "不灭三振", "800208": "全胜•再见安打", "800209": "全胜•安息全垒打", "800301": "穿彻坚冰的烈芒", "800308": "穿彻坚冰的烈芒", "800303": "陷阵无回的炎枪", "800304": "筑城者遗宝", "800306": "攻击", "800307": "守护者召令", "800401": "穿彻坚冰的烈芒", "800408": "穿彻坚冰的烈芒", "800403": "陷阵无回的炎枪", "800404": "筑城者遗宝", "800406": "攻击", "800407": "守护者召令", "100601": "|系统警告|", "100602": "是否允许更改?", "100603": "|账号已封禁|", "100604": "等待程序响应…", "100606": "攻击", "100607": "|强制结束进程|", "120401": "石火流光", "120402": "紫霄震曜", "120403": "吾身光明", "120404": "斩勘神形", "120406": "攻击", "909807": "dev_秘技", "110603": "领域压制", "110507": "催眠研习", "800402": "炽燃不灭的琥珀", "800302": "炽燃不灭的琥珀", "120202": "祥音和韵", "120204": "紫电扶摇", "110804": "撕风的匕首", "110504": "生机焕发", "110202": "归刃", "110204": "再现", "100301": "武装调律", "100304": "乘胜追击", "100303": "天坠之火", "110701": "我也想帮上忙", "110702": "史瓦罗在看着你", "110703": "是约定不是命令", "110704": "因为我们是家人", "110706": "攻击", "110707": "胜利的小小代价", "110201": "强袭", "121104": "奔走悬壶济世长", "120407": "摄召威灵", "100407": "画地为牢", "120102": "海底捞月", "100102": "可爱即是正义", "120203": "庆云光覆仪祷", "100403": "拟似黑洞"}
diff --git a/StarRailUID/utils/map/data/skillId2Name_mapping_1.1.0.json b/StarRailUID/utils/map/data/skillId2Name_mapping_1.1.0.json
new file mode 100644
index 0000000..ba0a9f7
--- /dev/null
+++ b/StarRailUID/utils/map/data/skillId2Name_mapping_1.1.0.json
@@ -0,0 +1 @@
+{"100101": "极寒的弓矢", "100103": "冰刻箭雨之时", "100104": "少女的特权", "100106": "攻击", "100107": "冻人的瞬间", "100201": "云骑枪术•朔风", "100202": "云骑枪术•疾雨", "100203": "洞天幻化,长梦一觉", "100206": "攻击", "100301": "武装调律", "100302": "熔核爆裂", "100303": "天坠之火", "100304": "乘胜追击", "100306": "攻击", "100307": "不完全燃烧", "100401": "重力压制", "100402": "虚空断界", "100403": "拟似黑洞", "100404": "时空扭曲", "100406": "攻击", "100407": "画地为牢", "100501": "夜间喧嚣不止", "100502": "月光摩挲连绵", "100503": "悲剧尽头的颤音", "100504": "温柔亦同残酷", "100506": "攻击", "100507": "宽恕无关慈悲", "100801": "如雷疾行", "100802": "禁锢解除", "100803": "狂者制裁", "100804": "至痛至怒", "100806": "攻击", "100807": "极速收割", "100901": "光谱射线", "100902": "流星群落", "100903": "星空祝言", "100906": "攻击", "101301": "看什么看", "101302": "一锤子买卖", "101303": "是魔法,我加了魔法", "101304": "还是我来吧", "101306": "攻击", "101307": "可以优化一下", "110101": "驭风的子弹", "110102": "作战再部署", "110103": "贝洛伯格进行曲", "110104": "先人一步", "110106": "攻击", "110107": "在旗帜下", "110201": "强袭", "110202": "归刃", "110203": "乱蝶", "110204": "再现", "110206": "攻击", "110207": "幻身", "110301": "雷鸣音阶", "110302": "电光石火间", "110303": "机械热潮登场!", "110306": "攻击", "110401": "一意之拳", "110402": "震慑之击", "110403": "永屹之壁", "110404": "不屈之身", "110406": "攻击", "110407": "有情之证", "110501": "仁慈的背面", "110502": "爱,救护与抉择", "110503": "新生之礼", "110504": "生机焕发", "110506": "攻击", "110601": "冰点射击", "110602": "低温妨害", "110606": "攻击", "110701": "我也想帮上忙", "110702": "史瓦罗在看着你", "110704": "因为我们是家人", "110706": "攻击", "110707": "胜利的小小代价", "110801": "酷炫的刀花", "110802": "反复横跳的爱", "110803": "惊喜礼盒", "110804": "撕风的匕首", "110806": "攻击", "110807": "你最闪亮", "110901": "喂!小心火烛", "110902": "嘿!记得虎克吗", "110903": "轰!飞来焰火", "110904": "哈!火上浇油", "110906": "攻击", "110907": "哎!瞧这一团糟", "110909": "嘿!记得虎克吗", "120101": "门前清", "120108": "杠上开花!", "120102": "海底捞月", "120103": "四幺暗刻?和!", "120106": "攻击", "120201": "逐客令", "120204": "紫电扶摇", "120206": "攻击", "120207": "惠风和畅", "120601": "云骑剑经 • 素霓", "120602": "云骑剑经 • 山倾", "120603": "太虚形蕴 • 烛夜", "120604": "游刃若水", "120606": "攻击", "120607": "云骑剑经 • 叩阵", "120701": "流镝", "120702": "天阙鸣弦", "120703": "贯云饮羽", "120706": "攻击", "120901": "霜锋点寒芒", "120902": "遥击三尺水", "120903": "快雨燕相逐", "120906": "攻击", "120907": "御剑真诀", "121101": "望 、闻、问…蹴!", "121102": "云吟乍涌坠珠露", "121103": "匏蛟跃渊先雷音", "121104": "奔走悬壶济世长", "121106": "攻击", "121107": "徜徉灵泽病恙短", "800101": "再见安打", "800102": "安息全垒打", "800103": "星尘王牌", "800104": "牵制盗垒", "800106": "攻击", "800107": "不灭三振", "800108": "全胜•再见安打", "800109": "全胜•安息全垒打", "800201": "再见安打", "800202": "安息全垒打", "800203": "星尘王牌", "800204": "牵制盗垒", "800206": "攻击", "800207": "不灭三振", "800208": "全胜•再见安打", "800209": "全胜•安息全垒打", "800301": "穿彻坚冰的烈芒", "800308": "穿彻坚冰的烈芒", "800302": "炽燃不灭的琥珀", "800303": "陷阵无回的炎枪", "800304": "筑城者遗宝", "800306": "攻击", "800307": "守护者召令", "800401": "穿彻坚冰的烈芒", "800408": "穿彻坚冰的烈芒", "800402": "炽燃不灭的琥珀", "800403": "陷阵无回的炎枪", "800404": "筑城者遗宝", "800406": "攻击", "800407": "守护者召令", "100601": "|系统警告|", "100606": "攻击", "120401": "石火流光", "120402": "紫霄震曜", "120403": "吾身光明", "120404": "斩勘神形", "120406": "攻击", "120407": "摄召威灵", "909807": "dev_秘技", "110603": "领域压制", "120202": "祥音和韵", "110507": "催眠研习", "120302": "白花的祈望", "120303": "归葬的遂愿", "100102": "可爱即是正义", "120301": "黑渊的棘刺", "120306": "攻击", "120904": "呼剑如影", "100603": "|账号已封禁|", "120203": "庆云光覆仪祷", "100204": "寸长寸强", "100602": "是否允许更改?", "110703": "是约定不是命令", "100207": "破敌锋芒", "100604": "等待程序响应…", "100607": "|强制结束进程|", "100904": "天象学", "100907": "灵光一现", "110304": "燃情和弦", "110307": "晚安,贝洛伯格", "110604": "数据采集", "110607": "先发制人", "120104": "帝垣琼玉", "120107": "独弈之乐", "120304": "生息的轮转", "120307": "愚者的悲悯", "120704": "箭彻七札", "120707": "云鸢逐风"}
diff --git a/StarRailUID/version.py b/StarRailUID/version.py
index cb36810..05b754c 100644
--- a/StarRailUID/version.py
+++ b/StarRailUID/version.py
@@ -1,2 +1,2 @@
StarRailUID_version = '0.1.0'
-StarRail_version = '1.0.5'
+StarRail_version = '1.1.0'