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}%')
|
||||
for i in range(len(desc_params)):
|
||||
desc = desc.replace(f'#{i + 1}[i]', str(desc_params[i]))
|
||||
draw_text_by_line(
|
||||
weapon_bg, (210, 115), desc, sr_font_24, '#F9F9F9', 350
|
||||
)
|
||||
char_info.paste(weapon_bg, (-10, 870), weapon_bg)
|
||||
desclist = desc.split()
|
||||
desctexty = 115
|
||||
for desctext in desclist:
|
||||
desctexty = draw_text_by_line(
|
||||
weapon_bg, (210, desctexty), desctext, sr_font_24, '#F9F9F9', 370
|
||||
)
|
||||
desctexty += 28
|
||||
char_info.paste(weapon_bg, (0, 855), weapon_bg)
|
||||
else:
|
||||
char_img_draw.text(
|
||||
(525, 1005),
|
||||
|
@ -642,6 +642,17 @@
|
||||
0.08000000022351742
|
||||
]
|
||||
}
|
||||
},
|
||||
"23012": {
|
||||
"Param": {
|
||||
"CriticalChance": [
|
||||
0.36000000011175871,
|
||||
0.4200000001396984,
|
||||
0.48000000016763806,
|
||||
0.54000000019557774,
|
||||
0.60000000022351742
|
||||
]
|
||||
}
|
||||
},
|
||||
"21031": {
|
||||
"enable": false
|
||||
|
@ -1680,6 +1680,32 @@ class Thisbodyisasword(BaseWeapon):
|
||||
|
||||
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:
|
||||
@classmethod
|
||||
@ -1744,6 +1770,8 @@ class Weapon:
|
||||
20006,
|
||||
23014,
|
||||
]:
|
||||
if weapon.id_ == 23012:
|
||||
return SleepLiketheDead(weapon)
|
||||
if weapon.id_ == 23014:
|
||||
return Thisbodyisasword(weapon)
|
||||
if weapon.id_ == 20006:
|
||||
|
@ -103,23 +103,13 @@ async def get_char_args(
|
||||
if index == 0:
|
||||
fake_name, talent_num = await get_fake_char_str(part)
|
||||
# 判断是否开启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):
|
||||
return char_data
|
||||
continue
|
||||
|
||||
if '遗器' in part:
|
||||
fake_data = await get_char_data(
|
||||
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)
|
||||
char_data = await get_fake_char_data(char_data, part.replace('遗器', '').replace(changeuid, ''), changeuid)
|
||||
if isinstance(char_data, str):
|
||||
return char_data
|
||||
else:
|
||||
@ -188,38 +178,13 @@ async def get_fake_weapon_str(msg: str) -> Tuple[str, Optional[int]]:
|
||||
|
||||
|
||||
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]:
|
||||
fake_name = await alias_to_char_name(fake_name)
|
||||
original_data = await get_char_data(uid, fake_name)
|
||||
original_data = await get_char_data(changeuid, change_name)
|
||||
if isinstance(original_data, str):
|
||||
return original_data
|
||||
if isinstance(original_data, Dict):
|
||||
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
|
||||
|
||||
@ -263,6 +228,19 @@ async def get_char_data(
|
||||
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(
|
||||
char_data: dict,
|
||||
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