修改面板光锥技能显示问题与部分bug

This commit is contained in:
a376148946 2023-09-19 12:25:14 +08:00 committed by qwerdvd
parent b22241e0ad
commit f6be3ee238
5 changed files with 64 additions and 43 deletions

View File

@ -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),

View File

@ -642,6 +642,17 @@
0.08000000022351742
]
}
},
"23012": {
"Param": {
"CriticalChance": [
0.36000000011175871,
0.4200000001396984,
0.48000000016763806,
0.54000000019557774,
0.60000000022351742
]
}
},
"21031": {
"enable": false

View File

@ -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:

View File

@ -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