mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-06 11:43:44 +08:00
✨实验性支持评分
This commit is contained in:
parent
0a8c4b9e50
commit
cdc70a4dfe
@ -15,8 +15,13 @@ from .mono.Character import Character
|
||||
from ..utils.error_reply import CHAR_HINT
|
||||
from ..utils.fonts.first_world import fw_font_28
|
||||
from ..utils.excel.read_excel import light_cone_ranks
|
||||
from ..utils.map.SR_MAP_PATH import RelicId2Rarity, avatarId2Name
|
||||
from ..utils.map.name_covert import name_to_avatar_id, alias_to_char_name
|
||||
from ..utils.map.SR_MAP_PATH import (
|
||||
RelicId2Rarity,
|
||||
AvatarRelicScore,
|
||||
avatarId2Name,
|
||||
avatarId2DamageType,
|
||||
)
|
||||
from ..utils.resource.RESOURCE_PATH import (
|
||||
RELIC_PATH,
|
||||
SKILL_PATH,
|
||||
@ -61,7 +66,6 @@ skill_type_map = {
|
||||
'Maze': ('秘技', 'technique'),
|
||||
}
|
||||
|
||||
|
||||
RELIC_POS = {
|
||||
'1': (26, 1162),
|
||||
'2': (367, 1162),
|
||||
@ -265,7 +269,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str, url: Optional[str]):
|
||||
char_info.paste(attr_bg, (475, 300), attr_bg)
|
||||
|
||||
# 命座
|
||||
for rank in range(0, 6):
|
||||
for rank in range(6):
|
||||
rank_bg = Image.open(TEXT_PATH / 'mz_bg.png')
|
||||
rank_no_bg = Image.open(TEXT_PATH / 'mz_no_bg.png')
|
||||
if rank < char.char_rank:
|
||||
@ -401,6 +405,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str, url: Optional[str]):
|
||||
relic_score = 0
|
||||
|
||||
for relic in char.char_relic:
|
||||
print(relic)
|
||||
rarity = RelicId2Rarity[str(relic["relicId"])]
|
||||
relic_img = Image.open(TEXT_PATH / f'yq_bg{rarity}.png')
|
||||
if str(relic["SetId"])[0] == '3':
|
||||
@ -438,6 +443,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str, url: Optional[str]):
|
||||
# 主属性
|
||||
main_value = mp.mpf(relic['MainAffix']['Value'])
|
||||
main_name: str = relic['MainAffix']['Name']
|
||||
main_property: str = relic['MainAffix']['Property']
|
||||
main_level: int = relic['Level']
|
||||
|
||||
if main_name in ['攻击力', '生命值', '防御力', '速度']:
|
||||
@ -473,14 +479,35 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str, url: Optional[str]):
|
||||
anchor='mm',
|
||||
)
|
||||
|
||||
single_relic_score = 0
|
||||
main_value_score = await get_relic_score(
|
||||
relic['MainAffix']['Property'], main_value, char_name, True
|
||||
)
|
||||
if main_property.__contains__('AddedRatio') and relic['Type'] == 5:
|
||||
attr_name = main_property.split('AddedRatio')[0]
|
||||
if attr_name == avatarId2DamageType[str(char.char_id)]:
|
||||
for item in AvatarRelicScore:
|
||||
if item['role'] == char_name:
|
||||
weight_dict = item
|
||||
add_value = (
|
||||
(main_value + 1)
|
||||
* 1
|
||||
* weight_dict['AttributeAddedRatio']
|
||||
* 10
|
||||
)
|
||||
single_relic_score += add_value
|
||||
print(f'main_value_score: {main_value_score}')
|
||||
single_relic_score += main_value_score
|
||||
for index, i in enumerate(relic['SubAffixList']):
|
||||
subName: str = i['Name']
|
||||
subValue = mp.mpf(i['Value'])
|
||||
subProperty = i['Property']
|
||||
if subProperty == 'CriticalDamageBase':
|
||||
relic_score += subValue
|
||||
if subProperty == 'CriticalChanceBase':
|
||||
relic_score += subValue * 2
|
||||
|
||||
tmp_score = await get_relic_score(
|
||||
subProperty, subValue, char_name, False
|
||||
)
|
||||
single_relic_score += tmp_score
|
||||
|
||||
if subName in ['攻击力', '生命值', '防御力', '速度']:
|
||||
subValueStr = nstr(subValue, 3)
|
||||
else:
|
||||
@ -503,17 +530,26 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str, url: Optional[str]):
|
||||
sr_font_26,
|
||||
anchor='rm',
|
||||
)
|
||||
relic_img_draw.text(
|
||||
(210, 195),
|
||||
'{}分'.format(int(single_relic_score)),
|
||||
(255, 255, 255),
|
||||
sr_font_28,
|
||||
anchor='rm',
|
||||
)
|
||||
|
||||
char_info.paste(
|
||||
relic_img, RELIC_POS[str(relic["Type"])], relic_img
|
||||
)
|
||||
if relic_score > 1:
|
||||
relic_score += single_relic_score
|
||||
print(relic_score)
|
||||
if relic_score > 200:
|
||||
relic_value_level = Image.open(TEXT_PATH / 'CommonIconS.png')
|
||||
char_info.paste(relic_value_level, (780, 963), relic_value_level)
|
||||
elif relic_score > 0.6:
|
||||
elif relic_score > 150:
|
||||
relic_value_level = Image.open(TEXT_PATH / 'CommonIconA.png')
|
||||
char_info.paste(relic_value_level, (780, 963), relic_value_level)
|
||||
elif relic_score > 0.3:
|
||||
elif relic_score > 100:
|
||||
relic_value_level = Image.open(TEXT_PATH / 'CommonIconB.png')
|
||||
char_info.paste(relic_value_level, (780, 963), relic_value_level)
|
||||
elif relic_score > 0:
|
||||
@ -590,3 +626,64 @@ async def get_char_data(
|
||||
with open(path, 'r', encoding='utf8') as fp:
|
||||
char_data = json.load(fp)
|
||||
return char_data
|
||||
|
||||
|
||||
async def get_relic_score(
|
||||
subProperty: str, subValue, char_name: str, is_main: bool
|
||||
) -> float:
|
||||
relic_score = 0
|
||||
weight_dict = {}
|
||||
for item in AvatarRelicScore:
|
||||
if item['role'] == char_name:
|
||||
weight_dict = item
|
||||
if weight_dict == {}:
|
||||
return 0
|
||||
if subProperty == 'CriticalDamageBase':
|
||||
add_value = (subValue + 1) * 1 * weight_dict['CriticalDamageBase'] * 10
|
||||
relic_score += add_value
|
||||
if subProperty == 'CriticalChanceBase':
|
||||
add_value = (subValue + 1) * 2 * weight_dict['CriticalChanceBase'] * 10
|
||||
relic_score += add_value
|
||||
if subProperty == 'AttackDelta' and not is_main:
|
||||
add_value = subValue * 0.3 * 0.5 * weight_dict['AttackDelta'] * 0.1
|
||||
relic_score += add_value
|
||||
if subProperty == 'DefenceDelta' and not is_main:
|
||||
add_value = subValue * 0.3 * 0.5 * weight_dict['DefenceDelta'] * 0.1
|
||||
relic_score += add_value
|
||||
if subProperty == 'HPDelta' and not is_main:
|
||||
add_value = subValue * 0.3 * 0.5 * weight_dict['HPDelta'] * 0.1
|
||||
relic_score += add_value
|
||||
if subProperty == 'AttackAddedRatio':
|
||||
add_value = (subValue + 1) * 1.5 * weight_dict['AttackAddedRatio'] * 10
|
||||
relic_score += add_value
|
||||
if subProperty == 'DefenceAddedRatio':
|
||||
add_value = (
|
||||
(subValue + 1) * 1.19 * weight_dict['DefenceAddedRatio'] * 10
|
||||
)
|
||||
relic_score += add_value
|
||||
if subProperty == 'HPAddedRatio':
|
||||
add_value = (subValue + 1) * 1.5 * weight_dict['HPAddedRatio'] * 10
|
||||
relic_score += add_value
|
||||
if subProperty == 'SpeedDelta':
|
||||
add_value = subValue * 2.53 * weight_dict['SpeedDelta']
|
||||
relic_score += add_value
|
||||
if subProperty == 'BreakDamageAddedRatioBase':
|
||||
add_value = (
|
||||
(subValue + 1)
|
||||
* 1.0
|
||||
* weight_dict['BreakDamageAddedRatioBase']
|
||||
* 10
|
||||
)
|
||||
relic_score += add_value
|
||||
if subProperty == 'StatusProbabilityBase':
|
||||
add_value = (
|
||||
(subValue + 1) * 1.49 * weight_dict['StatusProbabilityBase'] * 10
|
||||
)
|
||||
relic_score += add_value
|
||||
if subProperty == 'StatusResistanceBase':
|
||||
add_value = (
|
||||
(subValue + 1) * 1.49 * weight_dict['StatusResistanceBase'] * 10
|
||||
)
|
||||
relic_score += add_value
|
||||
print(f'{subProperty} : {relic_score}')
|
||||
return relic_score
|
||||
|
@ -33,17 +33,14 @@ async def api_to_card(
|
||||
) -> 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)
|
||||
else:
|
||||
return await convert_img(pic_500)
|
||||
else:
|
||||
if char_data_list == []:
|
||||
if (
|
||||
not isinstance(char_data_list, str)
|
||||
and char_data_list == []
|
||||
or isinstance(char_data_list, str)
|
||||
):
|
||||
return await convert_img(pic_500)
|
||||
|
||||
img = await draw_enka_card(uid=uid, char_list=char_data_list, showfrom=1)
|
||||
return img
|
||||
return await draw_enka_card(uid=uid, char_list=char_data_list, showfrom=1)
|
||||
|
||||
|
||||
async def draw_enka_card(
|
||||
@ -60,13 +57,10 @@ async def draw_enka_card(
|
||||
)
|
||||
if showfrom == 0:
|
||||
line1 = f'展柜内有 {len(char_data_list)} 个角色!'
|
||||
elif char_data_list is None:
|
||||
return await convert_img(Image.new('RGBA', (0, 1), (255, 255, 255)))
|
||||
else:
|
||||
if char_data_list is None:
|
||||
return await convert_img(
|
||||
Image.new('RGBA', (0, 1), (255, 255, 255))
|
||||
)
|
||||
else:
|
||||
line1 = f'UID {str(uid)} 刷新成功'
|
||||
line1 = f'UID {uid} 刷新成功'
|
||||
# print(char_list)
|
||||
line2 = f'可以使用 sr查询{char_data_list[0]["avatarName"]} 查询详情角色面板'
|
||||
char_num = len(char_data_list)
|
||||
@ -163,10 +157,11 @@ async def draw_enka_char(index: int, img: Image.Image, char_data: dict):
|
||||
char_temp.paste(char_img, (8, 8), char_img)
|
||||
char_card.paste(char_temp, (0, 0), char_mask)
|
||||
if index <= 7:
|
||||
if img.size[0] <= 1100:
|
||||
x = 60 + (index % 4) * 220
|
||||
else:
|
||||
x = 160 + (index % 4) * 220
|
||||
x = (
|
||||
60 + (index % 4) * 220
|
||||
if img.size[0] <= 1100
|
||||
else 160 + (index % 4) * 220
|
||||
)
|
||||
img.paste(
|
||||
char_card,
|
||||
(x, 187 + (index // 4) * 220),
|
||||
|
@ -47,9 +47,7 @@ async def api_to_dict(
|
||||
"""
|
||||
if '未找到绑定的UID' in sr_uid:
|
||||
return UID_HINT
|
||||
if sr_data:
|
||||
pass
|
||||
else:
|
||||
if not sr_data:
|
||||
try:
|
||||
sr_data = await get_char_card_info(sr_uid)
|
||||
except ReadTimeout:
|
||||
|
@ -34,6 +34,7 @@ ItemId2Name_fileName = f'ItemId2Name_mapping_{version}.json'
|
||||
RelicId2MainAffixGroup_fileName = (
|
||||
f'RelicId2MainAffixGroup_mapping_{version}.json'
|
||||
)
|
||||
AvatarRelicScore_fileName = 'AvatarRelicScore.json'
|
||||
|
||||
|
||||
class TS(TypedDict):
|
||||
@ -110,3 +111,6 @@ with open(MAP / ItemId2Name_fileName, 'r', encoding='UTF-8') as f:
|
||||
|
||||
with open(MAP / RelicId2MainAffixGroup_fileName, 'r', encoding='UTF-8') as f:
|
||||
RelicId2MainAffixGroup = msgjson.decode(f.read(), type=Dict[str, int])
|
||||
|
||||
with open(MAP / AvatarRelicScore_fileName, 'r', encoding='UTF-8') as f:
|
||||
AvatarRelicScore = msgjson.decode(f.read(), type=List[Dict])
|
||||
|
434
StarRailUID/utils/map/data/AvatarRelicScore.json
Normal file
434
StarRailUID/utils/map/data/AvatarRelicScore.json
Normal file
@ -0,0 +1,434 @@
|
||||
[
|
||||
{
|
||||
"role": "景元",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "希儿",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "布洛妮娅",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "杰帕德",
|
||||
"HPDelta": 0.5,
|
||||
"HPAddedRatio": 0.5,
|
||||
"AttackDelta": 0.0,
|
||||
"AttackAddedRatio": 0.0,
|
||||
"DefenceDelta": 1.0,
|
||||
"DefenceAddedRatio": 1.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.5,
|
||||
"StatusResistanceBase": 0.5,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "姬子",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.5,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "瓦尔特",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 1.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "彦卿",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.75,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "白露",
|
||||
"HPDelta": 1.0,
|
||||
"HPAddedRatio": 1.0,
|
||||
"AttackDelta": 0.0,
|
||||
"AttackAddedRatio": 0.0,
|
||||
"DefenceDelta": 0.5,
|
||||
"DefenceAddedRatio": 0.5,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 1,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.5,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "克拉拉",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "三月七",
|
||||
"HPDelta": 0.5,
|
||||
"HPAddedRatio": 0.5,
|
||||
"AttackDelta": 0.0,
|
||||
"AttackAddedRatio": 0.0,
|
||||
"DefenceDelta": 1.0,
|
||||
"DefenceAddedRatio": 1.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.5,
|
||||
"StatusResistanceBase": 0.5,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "丹恒",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "阿兰",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "艾丝妲",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.75,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "黑塔",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "希露瓦",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "娜塔莎",
|
||||
"HPDelta": 1.0,
|
||||
"HPAddedRatio": 1.0,
|
||||
"AttackDelta": 0.0,
|
||||
"AttackAddedRatio": 0.0,
|
||||
"DefenceDelta": 0.5,
|
||||
"DefenceAddedRatio": 0.5,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 1,
|
||||
"SPRatio": 0.75,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.5,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "佩拉",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 1.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "桑博",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 1.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "虎克",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "青雀",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "停云",
|
||||
"HPDelta": 0.5,
|
||||
"HPAddedRatio": 0.5,
|
||||
"AttackDelta": 1.0,
|
||||
"AttackAddedRatio": 1.0,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 1.0,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "素裳",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.5,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
},
|
||||
{
|
||||
"role": "开拓者火",
|
||||
"HPDelta": 0.5,
|
||||
"HPAddedRatio": 0.5,
|
||||
"AttackDelta": 0.0,
|
||||
"AttackAddedRatio": 0.0,
|
||||
"DefenceDelta": 0.1,
|
||||
"DefenceAddedRatio": 0.1,
|
||||
"SpeedDelta": 1.0,
|
||||
"CriticalChanceBase": 0,
|
||||
"CriticalDamageBase": 0,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.0,
|
||||
"StatusProbabilityBase": 1.0,
|
||||
"StatusResistanceBase": 0.5,
|
||||
"AttributeAddedRatio": 0
|
||||
},
|
||||
{
|
||||
"role": "开拓者物理",
|
||||
"HPDelta": 0.0,
|
||||
"HPAddedRatio": 0.0,
|
||||
"AttackDelta": 0.75,
|
||||
"AttackAddedRatio": 0.75,
|
||||
"DefenceDelta": 0.0,
|
||||
"DefenceAddedRatio": 0.0,
|
||||
"SpeedDelta": 0.75,
|
||||
"CriticalChanceBase": 1,
|
||||
"CriticalDamageBase": 1,
|
||||
"BreakDamageAddedRatioBase": 0.0,
|
||||
"HealRatio": 0,
|
||||
"SPRatio": 0.5,
|
||||
"StatusProbabilityBase": 0.0,
|
||||
"StatusResistanceBase": 0.0,
|
||||
"AttributeAddedRatio": 1
|
||||
}
|
||||
]
|
24
poetry.lock
generated
24
poetry.lock
generated
@ -598,14 +598,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "3.6.0"
|
||||
version = "3.8.0"
|
||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "platformdirs-3.6.0-py3-none-any.whl", hash = "sha256:ffa199e3fbab8365778c4a10e1fbf1b9cd50707de826eb304b50e57ec0cc8d38"},
|
||||
{file = "platformdirs-3.6.0.tar.gz", hash = "sha256:57e28820ca8094678b807ff529196506d7a21e17156cb1cddb3e74cebce54640"},
|
||||
{file = "platformdirs-3.8.0-py3-none-any.whl", hash = "sha256:ca9ed98ce73076ba72e092b23d3c93ea6c4e186b3f1c3dad6edd98ff6ffcca2e"},
|
||||
{file = "platformdirs-3.8.0.tar.gz", hash = "sha256:b0cabcb11063d21a0b261d557acb0a9d2126350e63b70cdf7db6347baea456dc"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@ -614,14 +614,14 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "1.1.0"
|
||||
version = "1.2.0"
|
||||
description = "plugin and hook calling mechanisms for python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pluggy-1.1.0-py3-none-any.whl", hash = "sha256:d81d19a3a88d82ed06998353ce5d5c02587ef07ee2d808ae63904ab0ccef0087"},
|
||||
{file = "pluggy-1.1.0.tar.gz", hash = "sha256:c500b592c5512df35622e4faf2135aa0b7e989c7d31344194b4afb9d5e47b1bf"},
|
||||
{file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"},
|
||||
{file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@ -758,14 +758,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "7.3.2"
|
||||
version = "7.4.0"
|
||||
description = "pytest: simple powerful testing with Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"},
|
||||
{file = "pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"},
|
||||
{file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
|
||||
{file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -887,14 +887,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "67.8.0"
|
||||
version = "68.0.0"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"},
|
||||
{file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"},
|
||||
{file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
|
||||
{file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
|
Loading…
x
Reference in New Issue
Block a user