mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-06 19:53:44 +08:00
修改面板光锥技能显示问题与部分bug
This commit is contained in:
parent
b22241e0ad
commit
f6be3ee238
@ -418,10 +418,14 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
|
|||||||
desc = desc.replace(f'#{i + 1}[f1]%', f'{temp!s}%')
|
desc = desc.replace(f'#{i + 1}[f1]%', f'{temp!s}%')
|
||||||
for i in range(len(desc_params)):
|
for i in range(len(desc_params)):
|
||||||
desc = desc.replace(f'#{i + 1}[i]', str(desc_params[i]))
|
desc = desc.replace(f'#{i + 1}[i]', str(desc_params[i]))
|
||||||
draw_text_by_line(
|
desclist = desc.split()
|
||||||
weapon_bg, (210, 115), desc, sr_font_24, '#F9F9F9', 350
|
desctexty = 115
|
||||||
|
for desctext in desclist:
|
||||||
|
desctexty = draw_text_by_line(
|
||||||
|
weapon_bg, (210, desctexty), desctext, sr_font_24, '#F9F9F9', 370
|
||||||
)
|
)
|
||||||
char_info.paste(weapon_bg, (-10, 870), weapon_bg)
|
desctexty += 28
|
||||||
|
char_info.paste(weapon_bg, (0, 855), weapon_bg)
|
||||||
else:
|
else:
|
||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(525, 1005),
|
(525, 1005),
|
||||||
|
@ -642,6 +642,17 @@
|
|||||||
0.08000000022351742
|
0.08000000022351742
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"23012": {
|
||||||
|
"Param": {
|
||||||
|
"CriticalChance": [
|
||||||
|
0.36000000011175871,
|
||||||
|
0.4200000001396984,
|
||||||
|
0.48000000016763806,
|
||||||
|
0.54000000019557774,
|
||||||
|
0.60000000022351742
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"21031": {
|
"21031": {
|
||||||
"enable": false
|
"enable": false
|
||||||
|
@ -1680,6 +1680,32 @@ class Thisbodyisasword(BaseWeapon):
|
|||||||
|
|
||||||
return attribute_bonus
|
return attribute_bonus
|
||||||
|
|
||||||
|
# 如泥酣眠
|
||||||
|
class SleepLiketheDead(BaseWeapon):
|
||||||
|
weapon_base_attributes: Dict
|
||||||
|
|
||||||
|
def __init__(self, weapon: DamageInstanceWeapon):
|
||||||
|
super().__init__(weapon)
|
||||||
|
|
||||||
|
async def check(self):
|
||||||
|
# 当装备者的普攻或战技伤害未造成暴击时,使自身暴击率提高36%
|
||||||
|
return True
|
||||||
|
|
||||||
|
async def weapon_ability(
|
||||||
|
self,
|
||||||
|
Ultra_Use: float,
|
||||||
|
base_attr: Dict[str, float],
|
||||||
|
attribute_bonus: Dict[str, float],
|
||||||
|
):
|
||||||
|
if await self.check():
|
||||||
|
critical_chance_base = attribute_bonus.get('CriticalChanceBase', 0)
|
||||||
|
attribute_bonus['CriticalChanceBase'] = (
|
||||||
|
critical_chance_base
|
||||||
|
+ weapon_effect['23012']['Param']['CriticalChance'][
|
||||||
|
self.weapon_rank - 1
|
||||||
|
]
|
||||||
|
)
|
||||||
|
return attribute_bonus
|
||||||
|
|
||||||
class Weapon:
|
class Weapon:
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -1744,6 +1770,8 @@ class Weapon:
|
|||||||
20006,
|
20006,
|
||||||
23014,
|
23014,
|
||||||
]:
|
]:
|
||||||
|
if weapon.id_ == 23012:
|
||||||
|
return SleepLiketheDead(weapon)
|
||||||
if weapon.id_ == 23014:
|
if weapon.id_ == 23014:
|
||||||
return Thisbodyisasword(weapon)
|
return Thisbodyisasword(weapon)
|
||||||
if weapon.id_ == 20006:
|
if weapon.id_ == 20006:
|
||||||
|
@ -103,23 +103,13 @@ async def get_char_args(
|
|||||||
if index == 0:
|
if index == 0:
|
||||||
fake_name, talent_num = await get_fake_char_str(part)
|
fake_name, talent_num = await get_fake_char_str(part)
|
||||||
# 判断是否开启fake_char
|
# 判断是否开启fake_char
|
||||||
if '遗器' in msg:
|
|
||||||
char_data = await get_fake_char_data(
|
|
||||||
char_data, fake_name, changeuid
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
char_data = await get_char_data(uid, fake_name)
|
char_data = await get_char_data(uid, fake_name)
|
||||||
if isinstance(char_data, str):
|
if isinstance(char_data, str):
|
||||||
return char_data
|
return char_data
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if '遗器' in part:
|
if '遗器' in part:
|
||||||
fake_data = await get_char_data(
|
char_data = await get_fake_char_data(char_data, part.replace('遗器', '').replace(changeuid, ''), changeuid)
|
||||||
changeuid, part.replace('遗器', '').replace(changeuid, '')
|
|
||||||
)
|
|
||||||
if isinstance(fake_data, str):
|
|
||||||
return fake_data
|
|
||||||
char_data = await get_fake_char_data(fake_data, fake_name, uid)
|
|
||||||
if isinstance(char_data, str):
|
if isinstance(char_data, str):
|
||||||
return char_data
|
return char_data
|
||||||
else:
|
else:
|
||||||
@ -188,38 +178,13 @@ async def get_fake_weapon_str(msg: str) -> Tuple[str, Optional[int]]:
|
|||||||
|
|
||||||
|
|
||||||
async def get_fake_char_data(
|
async def get_fake_char_data(
|
||||||
char_data: Dict, fake_name: str, uid: str
|
char_data: Dict, change_name: str, changeuid: str
|
||||||
) -> Union[Dict, str]:
|
) -> Union[Dict, str]:
|
||||||
fake_name = await alias_to_char_name(fake_name)
|
original_data = await get_char_data(changeuid, change_name)
|
||||||
original_data = await get_char_data(uid, fake_name)
|
|
||||||
if isinstance(original_data, str):
|
if isinstance(original_data, str):
|
||||||
return original_data
|
return original_data
|
||||||
if isinstance(original_data, Dict):
|
if isinstance(original_data, Dict):
|
||||||
char_data['RelicInfo'] = original_data['RelicInfo']
|
char_data['RelicInfo'] = original_data['RelicInfo']
|
||||||
char_data['avatarAttributeBonus'] = original_data[
|
|
||||||
'avatarAttributeBonus'
|
|
||||||
]
|
|
||||||
char_data['rankList'] = original_data['rankList']
|
|
||||||
char_data['avatarSkill'] = original_data['avatarSkill']
|
|
||||||
char_data['avatarExtraAbility'] = original_data['avatarExtraAbility']
|
|
||||||
char_data['equipmentInfo'] = original_data['equipmentInfo']
|
|
||||||
char_data['baseAttributes'] = original_data['baseAttributes']
|
|
||||||
char_data['uid'] = original_data['uid']
|
|
||||||
char_data['rank'] = original_data['rank']
|
|
||||||
char_data['nickName'] = original_data['nickName']
|
|
||||||
char_data['avatarRarity'] = original_data['avatarRarity']
|
|
||||||
char_data['avatarPromotion'] = original_data['avatarPromotion']
|
|
||||||
char_data['avatarName'] = fake_name
|
|
||||||
char_data['avatarId'] = await name_to_avatar_id(fake_name)
|
|
||||||
en_name: str = avatarId2EnName(char_data['avatarId']) # type: ignore
|
|
||||||
char_data['avatarEnName'] = en_name
|
|
||||||
if str(char_data['avatarId']) in avatarId2DamageType:
|
|
||||||
char_data['avatarElement'] = avatarId2DamageType[
|
|
||||||
str(char_data['avatarId'])
|
|
||||||
]
|
|
||||||
else:
|
|
||||||
return '要查询的角色不存在...'
|
|
||||||
char_data['avatarLevel'] = '80'
|
|
||||||
|
|
||||||
return char_data
|
return char_data
|
||||||
|
|
||||||
@ -263,6 +228,19 @@ async def get_char_data(
|
|||||||
return json.load(fp)
|
return json.load(fp)
|
||||||
|
|
||||||
|
|
||||||
|
async def get_rank_list(
|
||||||
|
char_id: str,
|
||||||
|
talent_num: int,
|
||||||
|
):
|
||||||
|
rank_temp = []
|
||||||
|
for index in range(talent_num):
|
||||||
|
rankTemp = {}
|
||||||
|
rank_id = int(str(char_id) + '0' + str(index + 1))
|
||||||
|
rankTemp['rankId'] = rank_id
|
||||||
|
rankTemp['rankName'] = rankId2Name[str(rank_id)]
|
||||||
|
rank_temp.append(rankTemp)
|
||||||
|
return rank_temp
|
||||||
|
|
||||||
async def get_char(
|
async def get_char(
|
||||||
char_data: dict,
|
char_data: dict,
|
||||||
weapon: Optional[str] = None,
|
weapon: Optional[str] = None,
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 5.0 KiB |
Loading…
x
Reference in New Issue
Block a user