新增:查询展柜角色的伤害计算

This commit is contained in:
KimgiaiiWuyi 2022-07-09 20:51:56 +08:00
parent 8deea2a879
commit 019308146f
11 changed files with 9527 additions and 7 deletions

View File

@ -0,0 +1,162 @@
{
"勇士": {
"2": "",
"4": "dmgBonus+30"
},
"辰砂往生录": {
"2": "",
"4": "attack+48"
},
"来歆余响": {
"2": "",
"4": ""
},
"华馆梦醒形骸记": {
"2": "",
"4": "dmgBonus+24;defense+24"
},
"海染砗磲": {
"2": "",
"4": ""
},
"绝缘之旗印": {
"2": "",
"4": "Q:dmgBonus+75%25%ce"
},
"追忆之注连": {
"2": "",
"4": "ABC:dmgBonus+50"
},
"千岩牢固": {
"2": "",
"4": "attack+20;shieldBouns+30"
},
"苍白之火": {
"2": "",
"4": "attack+18;physicalDmgBonus+25"
},
"平息鸣雷的尊者": {
"2": "",
"4": "dmgBonus+35"
},
"炽烈的炎之魔女": {
"2": "",
"4": "a+15;dmgBonus+22.5"
},
"流浪大地的乐团": {
"2": "",
"4": "B:dmgBonus+35"
},
"染血的骑士道": {
"2": "",
"4": "B:dmgBonus+50"
},
"被怜爱的少女": {
"2": "",
"4": "healBouns+20"
},
"角斗士的终幕礼": {
"2": "",
"4": "A:dmgBonus+35"
},
"渡过烈火的贤人": {
"2": "",
"4": "dmgBonus+35"
},
"悠古的磐岩": {
"2": "",
"4": ""
},
"如雷的盛怒": {
"2": "",
"4": ""
},
"沉沦之心": {
"2": "",
"4": "AB:dmgBonus+30"
},
"逆飞的流星": {
"2": "",
"4": "AB:dmgBonus+40"
},
"昔日宗室之仪": {
"2": "Q:dmgBonus+20",
"4": "attack+20"
},
"翠绿之影": {
"2": "",
"4": "g+60"
},
"冰风迷途的勇士": {
"2": "",
"4": "critrate+40"
},
"勇士之心": {
"2": "",
"4": ""
},
"教官": {
"2": "",
"4": "em+120"
},
"流放者": {
"2": "",
"4": ""
},
"战狂": {
"2": "",
"4": "critrate+24"
},
"武人": {
"2": "AB:dmgBonus+15",
"4": "AB:dmgBonus+25"
},
"学士": {
"2": "",
"4": ""
},
"赌徒": {
"2": "E:dmgBonus+20",
"4": ""
},
"奇迹": {
"2": "",
"4": ""
},
"行者之心": {
"2": "",
"4": "B:critrate+30"
},
"守护之心": {
"2": "",
"4": ""
},
"幸运儿": {
"2": "",
"4": ""
},
"冒险家": {
"2": "",
"4": ""
},
"游医": {
"2": "",
"4": ""
},
"祭冰之人": {
"2": "",
"4": ""
},
"祭雷之人": {
"2": "",
"4": ""
},
"祭火之人": {
"2": "",
"4": ""
},
"祭水之人": {
"2": "",
"4": ""
}
}

View File

@ -1,4 +1,8 @@
{
"旅行者": [
"E",
"Q"
],
"胡桃": [
"E",
"Q"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,214 @@
{
"神里绫华": {
"50": "AB:dmgBonus+30",
"70": "dmgBonus+18"
},
"琴": {
"50": "",
"70": ""
},
"旅行者": {
"50": "",
"70": ""
},
"丽莎": {
"50": "",
"70": "d+15"
},
"芭芭拉": {
"50": "",
"70": ""
},
"凯亚": {
"50": "",
"70": ""
},
"迪卢克": {
"50": "",
"70": "ABCE:dmgBonus+20"
},
"雷泽": {
"50": "",
"70": ""
},
"安柏": {
"50": "Q:critrate+10",
"70": "attack+15"
},
"温迪": {
"50": "",
"70": ""
},
"香菱": {
"50": "",
"70": "attack+10"
},
"北斗": {
"50": "",
"70": "AB:dmgBonus+15"
},
"行秋": {
"50": "",
"70": "dmgBonus+20"
},
"魈": {
"50": "dmgBonus+15",
"70": "E:dmgBonus+15"
},
"凝光": {
"50": "",
"70": "dmgBonus+12"
},
"可莉": {
"50": "B:dmgBonus+50",
"70": ""
},
"钟离": {
"50": "",
"70": "ABC:addDmg+1.39%hp;E:addDmg+1.9%hp;Q:addDmg+33%hp"
},
"菲谢尔": {
"50": "",
"70": ""
},
"班尼特": {
"50": "",
"70": ""
},
"达达利亚": {
"50": "",
"70": ""
},
"诺艾尔": {
"50": "",
"70": ""
},
"七七": {
"50": "",
"70": ""
},
"重云": {
"50": "",
"70": ""
},
"甘雨": {
"50": "B:critrate+20",
"70": "dmgBonus+20"
},
"阿贝多": {
"50": "E:dmgBonus+12",
"70": "em+125"
},
"迪奥娜": {
"50": "",
"70": ""
},
"莫娜": {
"50": "",
"70": "dmgBonus+20%ce"
},
"刻晴": {
"50": "",
"70": "Q:critrate+15;ce+15"
},
"砂糖": {
"50": "",
"70": ""
},
"辛焱": {
"50": "",
"70": "physicalDmgBonus+15"
},
"罗莎莉亚": {
"50": "E:critrate+12",
"70": ""
},
"胡桃": {
"50": "",
"70": "dmgBonus+33"
},
"枫原万叶": {
"50": "",
"70": "dmgBonus+0.04%em"
},
"烟绯": {
"50": "B:dmgBonus+15",
"70": "B:addDmg+80%attack"
},
"宵宫": {
"50": "dmgBonus+20",
"70": ""
},
"托马": {
"50": "",
"70": "E:addDmg+2.2%hp"
},
"优菈": {
"50": "",
"70": ""
},
"雷电将军": {
"50": "",
"70": "dmgBonus+0.4%ce"
},
"早柚": {
"50": "",
"70": ""
},
"珊瑚宫心海": {
"50": "",
"70": ""
},
"五郎": {
"50": "defense+25",
"70": "E:addDmg+156%defense;Q:addDmg+15.6%defense"
},
"九条裟罗": {
"50": "",
"70": ""
},
"荒泷一斗": {
"50": "",
"70": "荒泷逆袈裟连斩伤害:addDmg+35%defense;荒泷逆袈裟终结伤害:addDmg+35%defense"
},
"八重神子": {
"50": "",
"70": "E:dmgBonus+0.15%em"
},
"夜兰": {
"50": "hp+12",
"70": "dmgBonus+15"
},
"埃洛伊": {
"50": "attack+16",
"70": "BEQ:dmgBonus+35"
},
"申鹤": {
"50": "dmgBonus+15",
"70": "Q:dmgBonus+15"
},
"云堇": {
"50": "",
"70": ""
},
"久岐忍": {
"50": "",
"70": "dmgBonus+25%em"
},
"神里绫人": {
"50": "",
"70": ""
},
"阿葵丽雅": {
"50": "",
"70": ""
},
"瑶瑶": {
"50": "",
"70": ""
},
"鹿野院平藏": {
"50": "",
"70": ""
}
}

View File

@ -0,0 +1,426 @@
{
"神里绫华": {
"1": "",
"2": "",
"3": "",
"4": "d+30",
"5": "",
"6": "B:dmgBonus+298"
},
"琴": {
"1": "E:dmgBonus+40",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"旅行者": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"丽莎": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"芭芭拉": {
"1": "",
"2": "dmgBonus+15",
"3": "",
"4": "",
"5": "",
"6": ""
},
"凯亚": {
"1": "AB:critrate+15",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"迪卢克": {
"1": "dmgBonus+15",
"2": "attack+30",
"3": "",
"4": "E:dmgBonus+40",
"5": "",
"6": "A:dmgBonus+30"
},
"雷泽": {
"1": "dmgBonus+10",
"2": "",
"3": "",
"4": "d+15",
"5": "",
"6": ""
},
"安柏": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "attack+15"
},
"温迪": {
"1": "",
"2": "r+12",
"3": "",
"4": "dmgBonus+25",
"5": "",
"6": "r+20"
},
"香菱": {
"1": "r+15",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "EQ:dmgBonus+15"
},
"北斗": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "r+15"
},
"行秋": {
"1": "",
"2": "r+15",
"3": "",
"4": "E:dmgBonus+50",
"5": "",
"6": ""
},
"魈": {
"1": "",
"2": "",
"3": "",
"4": "defense+100",
"5": "",
"6": ""
},
"凝光": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"可莉": {
"1": "",
"2": "d+23",
"3": "",
"4": "",
"5": "",
"6": "dmgBonus+10"
},
"钟离": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"菲谢尔": {
"1": "A:addDmg+22%attack",
"2": "召唤伤害:addDmg+200%attack",
"3": "",
"4": "",
"5": "",
"6": ""
},
"班尼特": {
"1": "",
"2": "ce+30",
"3": "",
"4": "",
"5": "",
"6": "dmgBonus+15"
},
"达达利亚": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"诺艾尔": {
"1": "",
"2": "B:dmgBonus+15",
"3": "",
"4": "",
"5": "",
"6": "attack+50%defense"
},
"七七": {
"1": "",
"2": "AB:dmgBonus+15",
"3": "",
"4": "",
"5": "",
"6": ""
},
"重云": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "Q:dmgBonus+15"
},
"甘雨": {
"1": "r+15",
"2": "",
"3": "",
"4": "dmgBonus+15",
"5": "",
"6": ""
},
"阿贝多": {
"1": "",
"2": "",
"3": "",
"4": "C:dmgBonus+30",
"5": "",
"6": "dmgBonus+17"
},
"迪奥娜": {
"1": "",
"2": "E:dmgBonus+15;shieldBouns+15",
"3": "",
"4": "",
"5": "",
"6": "em+200"
},
"莫娜": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "B:dmgBonus+180"
},
"刻晴": {
"1": "",
"2": "",
"3": "",
"4": "attack+25",
"5": "",
"6": "dmgBonus+18"
},
"砂糖": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"辛焱": {
"1": "",
"2": "Q:critrate+100",
"3": "",
"4": "r+15",
"5": "",
"6": "B:attack+50%defense"
},
"罗莎莉亚": {
"1": "A:dmgBonus+10",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "r+20"
},
"胡桃": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"枫原万叶": {
"1": "",
"2": "em+200",
"3": "",
"4": "",
"5": "",
"6": "ABC:dmgBonus+0.2%em"
},
"烟绯": {
"1": "",
"2": "B:critrate+20",
"3": "",
"4": "",
"5": "",
"6": "B:dmgBonus+10"
},
"宵宫": {
"1": "attack+20",
"2": "dmgBonus+25",
"3": "",
"4": "",
"5": "",
"6": "A:dmgBonus+30"
},
"托马": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "ABC:dmgBonus+15"
},
"优菈": {
"1": "dmgBonus+30",
"2": "",
"3": "",
"4": "Q:dmgBonus+25",
"5": "",
"6": ""
},
"雷电将军": {
"1": "",
"2": "d+60",
"3": "",
"4": "",
"5": "",
"6": ""
},
"早柚": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "Q:addDmg+0.2%em"
},
"珊瑚宫心海": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "dmgBonus+40"
},
"五郎": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"九条裟罗": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "critdmg+60"
},
"荒泷一斗": {
"1": "",
"2": "",
"3": "",
"4": "attack+20;defense+20",
"5": "",
"6": "B:critdmg+70"
},
"八重神子": {
"1": "",
"2": "",
"3": "",
"4": "dmgBonus+20",
"5": "",
"6": "E:d+60"
},
"夜兰": {
"1": "",
"2": "Q:addDmg+14%hp",
"3": "",
"4": "hp+40",
"5": "",
"6": ""
},
"埃洛伊": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"申鹤": {
"1": "",
"2": "EQ:critdmg+15",
"3": "",
"4": "E:dmgBonus+105",
"5": "",
"6": ""
},
"云堇": {
"1": "",
"2": "A:dmgBonus+15",
"3": "",
"4": "defense+20",
"5": "",
"6": ""
},
"久岐忍": {
"1": "",
"2": "",
"3": "",
"4": "ABC:addDmg+9.7%hp",
"5": "",
"6": ""
},
"神里绫人": {
"1": "E:dmgBonus+40",
"2": "hp+50",
"3": "",
"4": "",
"5": "",
"6": ""
},
"阿葵丽雅": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"瑶瑶": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": ""
},
"鹿野院平藏": {
"1": "",
"2": "A:dmgBonus+15",
"3": "",
"4": "defense+20",
"5": "",
"6": ""
}
}

View File

@ -0,0 +1,356 @@
from pathlib import Path
from typing import List, Optional, Tuple
import json
from PIL import Image, ImageDraw, ImageFont, ImageChops
DMG_PATH = Path(__file__).parents[0]
DMG_TEXT_PATH = DMG_PATH / 'texture2d'
version = '2.7.0'
avatarName2SkillAdd_fileName = f'avatarName2SkillAdd_mapping_{version}.json'
with open(DMG_PATH / avatarName2SkillAdd_fileName, "r", encoding='UTF-8') as f:
avatarName2SkillAdd = json.load(f)
with open(DMG_PATH / 'char_action.json', "r", encoding='UTF-8') as f:
char_action = json.load(f)
with open(DMG_PATH / 'artifacts_effect.json', "r", encoding='UTF-8') as f:
artifacts_effect_map = json.load(f)
with open(DMG_PATH / 'weapons_effect.json', "r", encoding='UTF-8') as f:
weapons_effect_map = json.load(f)
with open(DMG_PATH / 'char_talent_effect.json', "r", encoding='UTF-8') as f:
char_talent_effect_map = json.load(f)
with open(DMG_PATH / 'char_skill_effect.json', "r", encoding='UTF-8') as f:
char_skill_effect_map = json.load(f)
dmgBar_1 = Image.open(DMG_TEXT_PATH / 'dmgBar_1.png')
dmgBar_2 = Image.open(DMG_TEXT_PATH / 'dmgBar_2.png')
def genshin_font_origin(size: int) -> ImageFont:
return ImageFont.truetype(str(DMG_TEXT_PATH / 'yuanshen_origin.ttf'), size=size)
async def draw_dmgCacl_img(raw_data: dict) -> Image:
char_name = raw_data['avatarName']
char_level = int(raw_data['avatarLevel'])
weaponName = raw_data['weaponInfo']['weaponName']
weaponType = raw_data['weaponInfo']['weaponType']
weaponAffix = raw_data['weaponInfo']['weaponAffix']
skillList = raw_data['avatarSkill']
a_skill_name = skillList[0]['skillName'].replace('普通攻击·', '')
prop = {}
prop['A_skill_level'] = skillList[0]['skillLevel']
e_skill_name = skillList[1]['skillName']
prop['E_skill_level'] = skillList[1]['skillLevel']
q_skill_name = skillList[-1]['skillName']
prop['Q_skill_level'] = skillList[-1]['skillLevel']
skill_add = avatarName2SkillAdd[char_name]
for skillAdd_index in range(0, 2):
if len(raw_data['talentList']) >= 3 + skillAdd_index * 2:
if skill_add[skillAdd_index] == 'E':
prop['E_skill_level'] += 3
elif skill_add[skillAdd_index] == 'Q':
prop['Q_skill_level'] += 3
fight_prop = raw_data['avatarFightProp']
prop['basehp'] = fight_prop['baseHp']
prop['baseattack'] = fight_prop['baseAtk']
prop['basedefense'] = fight_prop['baseDef']
prop['hp'] = fight_prop['hp']
prop['attack'] = fight_prop['atk']
prop['defense'] = fight_prop['def']
prop['em'] = fight_prop['elementalMastery']
prop['critrate'] = fight_prop['critRate']
prop['critdmg'] = fight_prop['critDmg']
prop['ce'] = fight_prop['energyRecharge']
prop['physicalDmgBonus'] = physicalDmgBonus = fight_prop['physicalDmgBonus']
prop['dmgBonus'] = dmgBonus = fight_prop['dmgBonus'] if fight_prop['physicalDmgBonus'] <= fight_prop['dmgBonus'] else fight_prop['physicalDmgBonus']
prop['healBouns'] = fight_prop['healBonus']
prop['shieldBouns'] = 0
power_list = char_action[char_name]
if weaponType == '法器' or char_name in ['荒泷一斗', '刻晴', '诺艾尔']:
prop['A_dmgBonus'] = dmgBonus
prop['B_dmgBonus'] = dmgBonus
prop['C_dmgBonus'] = dmgBonus
elif weaponType == '':
prop['A_dmgBonus'] = physicalDmgBonus
prop['B_dmgBonus'] = dmgBonus
prop['C_dmgBonus'] = physicalDmgBonus
else:
prop['A_dmgBonus'] = physicalDmgBonus
prop['B_dmgBonus'] = physicalDmgBonus
prop['C_dmgBonus'] = physicalDmgBonus
prop['E_dmgBonus'] = 0
prop['Q_dmgBonus'] = 0
prop['A_critrate'] = 0
prop['B_critrate'] = 0
prop['C_critrate'] = 0
prop['E_critrate'] = 0
prop['Q_critrate'] = 0
prop['A_critdmg'] = 0
prop['B_critdmg'] = 0
prop['C_critdmg'] = 0
prop['E_critdmg'] = 0
prop['Q_critdmg'] = 0
prop['A_addDmg'] = 0
prop['B_addDmg'] = 0
prop['C_addDmg'] = 0
prop['E_addDmg'] = 0
prop['Q_addDmg'] = 0
prop['hp_green'] = fight_prop['addHp']
prop['attack_green'] = fight_prop['addAtk']
prop['defense_green'] = fight_prop['addDef']
prop['r'] = 0.1
prop['d'] = 0
prop['a'] = 0
prop['g'] = 0
prop['k'] = 1
# 计算圣遗物套装
if 'equipSets' in raw_data:
equipSets = raw_data['equipSets']
else:
artifact_set_list = []
for i in raw_data['equipList']:
artifact_set_list.append(i['aritifactSetsName'])
equipSetList = set(artifact_set_list)
equipSets = {'type':'','set':''}
for equip in equipSetList:
if artifact_set_list.count(equip) >= 4:
equipSets['type'] = '4'
equipSets['set'] = equip
break
elif artifact_set_list.count(equip) == 1:
pass
elif artifact_set_list.count(equip) >= 2:
equipSets['type'] += '2'
equipSets['set'] += '|' + equip
all_effect = []
# 计算圣遗物buff
if equipSets['type'] == '4':
all_effect.append(artifacts_effect_map[equipSets['set']]['4'])
elif equipSets['type'] == '2':
all_effect.append(artifacts_effect_map[equipSets['set']]['2'])
elif equipSets['type'] == '22':
if equipSets['set'][-2] == '':
first_artifact = equipSets['set'][-3:]
else:
first_artifact = equipSets['set'][-2:]
second_artifact = equipSets['set'][:2]
temp = []
temp_number = 0
for artifacts_single_effect in artifacts_effect_map:
if first_artifact in artifacts_single_effect:
temp_number += 1
temp.append(artifacts_effect_map[artifacts_single_effect]['2'])
if temp_number >= 2:
break
all_effect.extend(temp)
# 计算武器buff
weapon_effet = weapons_effect_map[weaponName][str(weaponAffix)]
all_effect.append(weapon_effet)
# 计算技能buff
for talent in char_talent_effect_map[char_name]:
if int(talent) <= len(raw_data['talentList']):
all_effect.append(char_talent_effect_map[char_name][talent])
else:
break
# 计算角色buff
for skill in char_skill_effect_map[char_name]:
if int(skill) <= char_level:
all_effect.append(char_skill_effect_map[char_name][skill])
else:
break
power_effect = ''
if 'effect' in power_list:
for skill_effect_single in power_list['effect']:
skill_effect_name = skill_effect_single['name']
skill_effect_value = skill_effect_single['value']
skill_effect = skill_effect_single['effect']
skill_effect_level = prop['{}_skill_level'.format(skill_effect_name)]
skill_effect_value_detail = skill_effect_value[skill_effect_level]
if skill_effect[-1] == '}':
skill_effect_value_detail = skill_effect_value_detail.replace('%', '')
add_limit = skill_effect.split(':')
if len(add_limit) == 1:
for i in power_list:
if i == 'effect':
pass
else:
power_list[i]['power_name'] = '{}'.format(skill_effect_name) + power_list[i]['power_name']
else:
for i in power_list:
if i == 'effect':
pass
else:
add_type = i[0]
if '重击' in i or '蓄力' in i:
add_type = 'B'
elif '冲击伤害' in i:
add_type = 'C'
if add_type in add_limit[0]:
power_list[i]['power_name'] = '{}'.format(skill_effect_name) + power_list[i]['power_name']
power_effect = skill_effect.format(skill_effect_value_detail)
all_effect.append(power_effect)
del(power_list['effect'])
sp = []
# 计算全部的buff添加入属性
print(all_effect)
if all_effect:
all_effect = ';'.join(all_effect)
all_effect_list = all_effect.split(';')
for effect in all_effect_list:
if effect == '':
continue
effect_limit = ''
if ':' in effect:
pass
else:
effect = ':' + effect
effect_limit = effect.split(':')[0]
effect_attr = effect.split(':')[1].split('+')[0]
effect_value = effect.split(':')[1].split('+')[-1]
base_check = True
if '%' in effect_value:
effect_value_base_on_attr = effect_value.split('%')[-1]
effect_value_base_on_value = '%'.join(effect_value.split('%')[:-1])
if '%' in effect_value_base_on_value:
effect_value_base_on_max_value = effect_value_base_on_value.split('%')[0]
effect_value_base_on_value = effect_value_base_on_value.split('%')[-1]
effect_now_value = float(effect_value_base_on_value) * prop[effect_value_base_on_attr]
effect_value = float(effect_value_base_on_max_value) if \
effect_now_value >= float(effect_value_base_on_max_value) else effect_now_value
else:
effect_value = float(effect_value_base_on_value) * prop[effect_value_base_on_attr]
base_check = False
if effect_attr != 'em':
effect_value = float(effect_value) / 100
if effect_attr in ['hp', 'attack', 'defense'] and base_check:
effect_value += effect_value * prop['base{}'.format(effect_attr)]
else:
effect_value = float(effect_value)
if effect_limit:
if '\u4e00' <= effect_limit[0] <= '\u9fff':
sp.append({'effect_name': effect_limit, 'effect_attr': effect_attr, 'effect_value': effect_value})
else:
for limit in effect_limit:
prop['{}_{}'.format(limit, effect_attr)] += effect_value
else:
prop['{}'.format(effect_attr)] += effect_value
print(prop)
w = 950
h = 40 * (len(power_list) + 1)
result_img = Image.new('RGBA', (w, h), (0, 0, 0, 0))
for i in range(0, len(power_list) + 1):
if i % 2 == 0:
result_img.paste(dmgBar_1, (0, i * 40))
else:
result_img.paste(dmgBar_2, (0, i * 40))
result_draw = ImageDraw.Draw(result_img)
text_color = (255, 255, 255)
title_color = (255, 255, 100)
text_size = genshin_font_origin(28)
result_draw.text((60, 22), '角色动作', title_color, text_size, anchor='lm')
result_draw.text((450, 22), '暴击伤害', title_color, text_size, anchor='lm')
result_draw.text((690, 22), '期望伤害', title_color, text_size, anchor='lm')
for index, power_name in enumerate(power_list):
attack_type = power_name[0]
if '重击' in power_name or '瞄准射击' in power_name:
attack_type = 'B'
elif '冲击伤害' in power_name:
attack_type = 'C'
elif '' in power_name and '伤害' in power_name:
attack_type = 'A'
sp_dmgBonus = 0
sp_addDmg = 0
if sp:
for sp_single in sp:
if sp_single['effect_name'] == power_name[1:]:
if sp_single['effect_attr'] == 'dmgBouns':
sp_dmgBonus += sp_single['effect_value']
elif sp_single['effect_attr'] == 'addDmg':
sp_addDmg += sp_single['effect_value']
if '攻击' in power_list[power_name]['type']:
effect_prop = prop['attack']
elif '生命值' in power_list[power_name]['type']:
effect_prop = prop['hp']
elif '防御' in power_list[power_name]['type']:
effect_prop = prop['defense']
power = power_list[power_name]['value'][prop['{}_skill_level'.format(power_name[0])]]
power_plus = power_list[power_name]['plus']
power_percent, power_value = await power_to_value(power, power_plus)
dmgBonus_cal = prop['dmgBonus'] + prop['{}_dmgBonus'.format(attack_type)] + sp_dmgBonus
critdmg_cal = prop['critdmg'] + prop['{}_critdmg'.format(attack_type)]
critrate_cal = prop['critrate'] + prop['{}_critrate'.format(attack_type)]
d = (char_level + 100) / ((char_level + 100) + (1-prop['d']) * (char_level + 100))
r = 1 - prop['r']
e_dmg = prop['k']*(1+(2.78*prop['em'])/(prop['em']+1400)+prop['a'])
add_dmg = prop['{}_addDmg'.format(attack_type)] + sp_addDmg
if '治疗' in power_name:
crit_dmg = avg_dmg = (effect_prop * power_percent + power_value) * (1 + prop['healBouns'])
elif '护盾' in power_name:
crit_dmg = avg_dmg = (effect_prop * power_percent + power_value) * (1 + prop['shieldBouns'])
elif '提升' in power_name or '提高' in power_name:
continue
else:
crit_dmg = (effect_prop * power_percent + power_value) * (1 + critdmg_cal) * (1 + dmgBonus_cal) * d * r + add_dmg
avg_dmg = (crit_dmg - add_dmg) * critrate_cal + (1 - critrate_cal) * (effect_prop * power_percent + power_value) * (1 + dmgBonus_cal) * d * r + add_dmg
result_draw.text((60, 22 + (index + 1) * 40), power_list[power_name]['power_name'], text_color, text_size, anchor='lm')
result_draw.text((450, 22 + (index + 1) * 40), str(round(crit_dmg)), text_color, text_size, anchor='lm')
result_draw.text((690, 22 + (index + 1) * 40), str(round(avg_dmg)), text_color, text_size, anchor='lm')
return result_img, len(power_list) + 2
async def power_to_value(power: str, power_plus: int) -> List:
"""
将power转换为value
"""
if '+' in power:
power_percent = (float(power.split('+')[0].replace('%', '')) / 100) * power_plus
power_value = power.split('+')[1]
if '%' in power_value:
power_percent += float(power_value.replace('%', '')) / 100 * power_plus
power_value = 0
else:
power_value = float(power_value)
else:
power_percent = float(power.replace('%', '')) / 100 * power_plus
power_value = 0
return power_percent, power_value

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

View File

@ -0,0 +1,933 @@
{
"恶王丸": {
"1": "Q:dmgBonus+40",
"2": "Q:dmgBonus+50",
"3": "Q:dmgBonus+60",
"4": "Q:dmgBonus+70",
"5": "Q:dmgBonus+80"
},
"暗巷猎手": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"天目影打刀": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"阿莫斯之弓": {
"1": "AB:dmgBonus+52",
"2": "AB:dmgBonus+65",
"3": "AB:dmgBonus+78",
"4": "AB:dmgBonus+91",
"5": "AB:dmgBonus+104"
},
"学徒笔记": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"若水": {
"1": "dmgBonus+20",
"2": "dmgBonus+25",
"3": "dmgBonus+30",
"4": "dmgBonus+35",
"5": "dmgBonus+40"
},
"风鹰剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"新手长枪": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"黑岩绯玉": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"黑岩长剑": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"黑岩刺枪": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"黑岩斩刀": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"黑岩战弓": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"黑缨枪": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"沐浴龙血的剑": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"息灾": {
"1": "attack+19.2",
"2": "attack+24",
"3": "attack+28.8",
"4": "attack+33.6",
"5": "attack+38.4"
},
"辰砂之纺锤": {
"1": "E:addDmg+40%defense",
"2": "E:addDmg+50%defense",
"3": "E:addDmg+60%defense",
"4": "E:addDmg+70%defense",
"5": "E:addDmg+80%defense"
},
"钢轮弓": {
"1": "attack+16",
"2": "attack+20",
"3": "attack+24",
"4": "attack+28",
"5": "attack+32"
},
"冷刃": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"流月针": {
"1": "AB:addDmg+20%attack",
"2": "AB:addDmg+25%attack",
"3": "AB:addDmg+30%attack",
"4": "AB:addDmg+35%attack",
"5": "AB:addDmg+40%attack"
},
"暗铁剑": {
"1": "attack+20",
"2": "attack+25",
"3": "attack+30",
"4": "attack+35",
"5": "attack+40"
},
"决斗之枪": {
"1": "attack+24",
"2": "attack+30",
"3": "attack+36",
"4": "attack+42",
"5": "attack+48"
},
"以理服人": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"嘟嘟可故事集": {
"1": "B:dmgBonus+16;attack+8",
"2": "B:dmgBonus+20;attack+10",
"3": "B:dmgBonus+24;attack+12",
"4": "B:dmgBonus+28;attack+14",
"5": "B:dmgBonus+32;attack+16"
},
"匣里灭辰": {
"1": "dmgBonus+20",
"2": "dmgBonus+24",
"3": "dmgBonus+28",
"4": "dmgBonus+32",
"5": "dmgBonus+36"
},
"龙脊长枪": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"无锋剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"终末嗟叹之诗": {
"1": "em+100;attack+20",
"2": "em+125;attack+25",
"3": "em+150;attack+30",
"4": "em+175;attack+35",
"5": "em+200;attack+40"
},
"翡玉法球": {
"1": "attack+20",
"2": "attack+25",
"3": "attack+30",
"4": "attack+35",
"5": "attack+40"
},
"薙草之稻光": {
"1": "ce+30",
"2": "ce+35",
"3": "ce+40",
"4": "ce+45",
"5": "ce+50"
},
"不灭月华": {
"1": "A:addDmg+1%hp",
"2": "A:addDmg+1.5%hp",
"3": "A:addDmg+2%hp",
"4": "A:addDmg+2.5%hp",
"5": "A:addDmg+3%hp"
},
"昭心": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"落霞": {
"1": "dmgBonus+10",
"2": "dmgBonus+12.5",
"3": "dmgBonus+15",
"4": "dmgBonus+17.5",
"5": "dmgBonus+20"
},
"西风秘典": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"西风大剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"西风长枪": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"西风剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"西风猎弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"铁影阔剑": {
"1": "B:dmgBonus+30",
"2": "B:dmgBonus+35",
"3": "B:dmgBonus+40",
"4": "B:dmgBonus+45",
"5": "B:dmgBonus+50"
},
"腐殖之剑": {
"1": "E:dmgBonus+16;E:critrate+6",
"2": "E:dmgBonus+20;E:critrate+7.5",
"3": "E:dmgBonus+24;E:critrate+9",
"4": "E:dmgBonus+28;E:critrate+10.5",
"5": "E:dmgBonus+32;E:critrate+12"
},
"吃虎鱼刀": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"苍古自由之誓": {
"1": "dmgBonus+10;ABC:dmgBonus+16;attack+20",
"2": "dmgBonus+12.5;ABC:dmgBonus+20;attack+25",
"3": "dmgBonus+15;ABC:dmgBonus+24;attack+30",
"4": "dmgBonus+17.5;ABC:dmgBonus+28;attack+35",
"5": "dmgBonus+20;ABC:dmgBonus+32;attack+40"
},
"忍冬之果": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"白辰之环": {
"1": "dmgBonus+10",
"2": "dmgBonus+12.5",
"3": "dmgBonus+15",
"4": "dmgBonus+17.5",
"5": "dmgBonus+20"
},
"钺矛": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"破魔之弓": {
"1": "A:dmgBonus+32;B:dmgBonus+24",
"2": "A:dmgBonus+40;B:dmgBonus+30",
"3": "A:dmgBonus+48;B:dmgBonus+36",
"4": "A:dmgBonus+56;B:dmgBonus+42",
"5": "A:dmgBonus+64;B:dmgBonus+48"
},
"波乱月白经津": {
"1": "A:dmgBonus+40",
"2": "A:dmgBonus+50",
"3": "A:dmgBonus+60",
"4": "A:dmgBonus+70",
"5": "A:dmgBonus+80"
},
"黎明神剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"猎弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"铁尖枪": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"铁蜂刺": {
"1": "dmgBonus+6",
"2": "dmgBonus+7.5",
"3": "dmgBonus+9",
"4": "dmgBonus+10.5",
"5": "dmgBonus+12"
},
"神乐之真意": {
"1": "E:dmgBonus+36;dmgBonus+12",
"2": "E:dmgBonus+45;dmgBonus+15",
"3": "E:dmgBonus+54;dmgBonus+18",
"4": "E:dmgBonus+63;dmgBonus+21",
"5": "E:dmgBonus+72;dmgBonus+24"
},
"桂木斩长正": {
"1": "E:dmgBonus+6",
"2": "E:dmgBonus+7.5",
"3": "E:dmgBonus+9",
"4": "E:dmgBonus+10.5",
"5": "E:dmgBonus+12"
},
"喜多院十文字": {
"1": "E:dmgBonus+6",
"2": "E:dmgBonus+7.5",
"3": "E:dmgBonus+9",
"4": "E:dmgBonus+10.5",
"5": "E:dmgBonus+12"
},
"匣里龙吟": {
"1": "dmgBonus+20",
"2": "dmgBonus+24",
"3": "dmgBonus+28",
"4": "dmgBonus+32",
"5": "dmgBonus+36"
},
" 千岩古剑": {
"1": "attack+21;critrate+9",
"2": "attack+24;critrate+12",
"3": "attack+27;critrate+15",
"4": "attack+30;critrate+18",
"5": "attack+33;critrate+21"
},
"千岩长枪": {
"1": "attack+21;critrate+9",
"2": "attack+24;critrate+12",
"3": "attack+27;critrate+15",
"4": "attack+30;critrate+18",
"5": "attack+33;critrate+21"
},
"四风原典": {
"1": "dmgBonus+32",
"2": "dmgBonus+40",
"3": "dmgBonus+48",
"4": "dmgBonus+56",
"5": "dmgBonus+64"
},
"衔珠海皇": {
"1": "Q:dmgBonus+12",
"2": "Q:dmgBonus+15",
"3": "Q:dmgBonus+18",
"4": "Q:dmgBonus+21",
"5": "Q:dmgBonus+24"
},
"魔导绪论": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"万国诸海图谱": {
"1": "dmgBonus+16",
"2": "dmgBonus+20",
"3": "dmgBonus+24",
"4": "dmgBonus+28",
"5": "dmgBonus+32"
},
"尘世之锁": {
"1": "shieldBouns+20;attack+20",
"2": "shieldBouns+25;attack+25",
"3": "shieldBouns+30;attack+30",
"4": "shieldBouns+35;attack+35",
"5": "shieldBouns+40;attack+40"
},
"信使": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"雾切之回光": {
"1": "dmgBonus+28",
"2": "dmgBonus+35",
"3": "dmgBonus+42",
"4": "dmgBonus+49",
"5": "dmgBonus+56"
},
"幽夜华尔兹": {
"1": "AE:dmgBonus+20",
"2": "AE:dmgBonus+25",
"3": "AE:dmgBonus+30",
"4": "AE:dmgBonus+35",
"5": "AE:dmgBonus+40"
},
"曚云之月": {
"1": "Q:dmgBonus+40",
"2": "Q:dmgBonus+50",
"3": "Q:dmgBonus+60",
"4": "Q:dmgBonus+70",
"5": "Q:dmgBonus+80"
},
"证誓之明瞳": {
"1": "ce+24",
"2": "ce+30",
"3": "ce+36",
"4": "ce+42",
"5": "ce+48"
},
"佣兵重剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"异世界行记": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"口袋魔导书": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"冬极白星": {
"1": "EQ:dmgBonus+12;attack+48",
"2": "EQ:dmgBonus+15;attack+60",
"3": "EQ:dmgBonus+18;attack+72",
"4": "EQ:dmgBonus+21;attack+84",
"5": "EQ:dmgBonus+24;attack+96"
},
"掠食者": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"磐岩结绿": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"和璞鸢": {
"1": "attack+22.4;dmgBonus+12",
"2": "attack+27.3;dmgBonus+15",
"3": "attack+32.2;dmgBonus+18",
"4": "attack+37.1;dmgBonus+21",
"5": "attack+42;dmgBonus+24"
},
"试作金珀": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"试作古华": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"试作澹月": {
"1": "attack+36",
"2": "attack+45",
"3": "attack+54",
"4": "attack+63",
"5": "attack+72"
},
"试作斩岩": {
"1": "attack+16;defense+16",
"2": "attack+20;defense+20",
"3": "attack+24;defense+24",
"4": "attack+28;defense+28",
"5": "attack+32;defense+32"
},
"试作星镰": {
"1": "AB:dmgBonus+16",
"2": "AB:dmgBonus+20",
"3": "AB:dmgBonus+24",
"4": "AB:dmgBonus+28",
"5": "AB:dmgBonus+32"
},
"雨裁": {
"1": "dmgBonus+20",
"2": "dmgBonus+24",
"3": "dmgBonus+28",
"4": "dmgBonus+32",
"5": "dmgBonus+36"
},
"鸦羽弓": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"反曲弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"赤角石溃杵": {
"1": "AB:addDmg+40%defense",
"2": "AB:addDmg+50%defense",
"3": "AB:addDmg+60%defense",
"4": "AB:addDmg+70%defense",
"5": "AB:addDmg+80%defense"
},
"宗室长弓": {
"1": "critrate+14",
"2": "critrate+16",
"3": "critrate+18",
"4": "critrate+22",
"5": "critrate+24"
},
"宗室大剑": {
"1": "critrate+14",
"2": "critrate+16",
"3": "critrate+18",
"4": "critrate+22",
"5": "critrate+24"
},
"宗室秘法录": {
"1": "critrate+14",
"2": "critrate+16",
"3": "critrate+18",
"4": "critrate+22",
"5": "critrate+24"
},
"宗室长剑": {
"1": "critrate+14",
"2": "critrate+16",
"3": "critrate+18",
"4": "critrate+22",
"5": "critrate+24"
},
"宗室猎枪": {
"1": "critrate+14",
"2": "critrate+16",
"3": "critrate+18",
"4": "critrate+22",
"5": "critrate+24"
},
"弓藏": {
"1": "A:dmgBonus+40",
"2": "A:dmgBonus+50",
"3": "A:dmgBonus+60",
"4": "A:dmgBonus+70",
"5": "A:dmgBonus+80"
},
"祭礼弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"祭礼残章": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"祭礼大剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"祭礼剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"历练的猎弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"螭骨剑": {
"1": "dmgBonus+30",
"2": "dmgBonus+35",
"3": "dmgBonus+40",
"4": "dmgBonus+45",
"5": "dmgBonus+50"
},
"神射手之誓": {
"1": "B:dmgBonus+24",
"2": "B:dmgBonus+30",
"3": "B:dmgBonus+36",
"4": "B:dmgBonus+42",
"5": "B:dmgBonus+48"
},
"银剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"飞天大御剑": {
"1": "attack+24",
"2": "attack+28",
"3": "attack+32",
"4": "attack+36",
"5": "attack+40"
},
"飞天御剑": {
"1": "attack+12",
"2": "attack+15",
"3": "attack+18",
"4": "attack+21",
"5": "attack+24"
},
"天空之卷": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"天空之刃": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"天空之翼": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"天空之傲": {
"1": "dmgBonus+8",
"2": "dmgBonus+10",
"3": "dmgBonus+12",
"4": "dmgBonus+14",
"5": "dmgBonus+16"
},
"天空之脊": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"弹弓": {
"1": "AB:dmgBonus+36",
"2": "AB:dmgBonus+42",
"3": "AB:dmgBonus+48",
"4": "AB:dmgBonus+54",
"5": "AB:dmgBonus+60"
},
"雪葬的星银": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"匣里日月": {
"1": "AEQ:dmgBonus+20",
"2": "AEQ:dmgBonus+25",
"3": "AEQ:dmgBonus+30",
"4": "AEQ:dmgBonus+35",
"5": "AEQ:dmgBonus+40"
},
"松籁响起之时": {
"1": "attack+20",
"2": "attack+25",
"3": "attack+30",
"4": "attack+35",
"5": "attack+40"
},
"护摩之杖": {
"1": "attack+1.8%hp",
"2": "attack+2.2%hp",
"3": "attack+2.6%hp",
"4": "attack+3.0%hp",
"5": "attack+3.4%hp"
},
"斫峰之刃": {
"1": "shieldBouns+20;attack+20",
"2": "shieldBouns+25;attack+25",
"3": "shieldBouns+30;attack+30",
"4": "shieldBouns+35;attack+35",
"5": "shieldBouns+40;attack+40"
},
"降临之剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"暗巷闪光": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"钟剑": {
"1": "dmgBonus+12",
"2": "dmgBonus+15",
"3": "dmgBonus+18",
"4": "dmgBonus+21",
"5": "dmgBonus+24"
},
"黑剑": {
"1": "AB:dmgBonus+20",
"2": "AB:dmgBonus+25",
"3": "AB:dmgBonus+30",
"4": "AB:dmgBonus+35",
"5": "AB:dmgBonus+40"
},
"「渔获」": {
"1": "Q:dmgBonus+16;Q:critrate+6",
"2": "Q:dmgBonus+20;Q:critrate+7.5",
"3": "Q:dmgBonus+24;Q:critrate+9",
"4": "Q:dmgBonus+28;Q:critrate+10.5",
"5": "Q:dmgBonus+32;Q:critrate+12"
},
"笛剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"绝弦": {
"1": "EQ:dmgBonus+24",
"2": "EQ:dmgBonus+30",
"3": "EQ:dmgBonus+36",
"4": "EQ:dmgBonus+42",
"5": "EQ:dmgBonus+48"
},
"无工之剑": {
"1": "shieldBouns+20;attack+20",
"2": "shieldBouns+25;attack+25",
"3": "shieldBouns+30;attack+30",
"4": "shieldBouns+35;attack+35",
"5": "shieldBouns+40;attack+40"
},
"苍翠猎弓": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"流浪乐章": {
"1": "dmgBonus+48",
"2": "dmgBonus+60",
"3": "dmgBonus+72",
"4": "dmgBonus+84",
"5": "dmgBonus+96"
},
"讨龙英杰谭": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"飞雷之弦振": {
"1": "A:dmgBonus+40",
"2": "A:dmgBonus+50",
"3": "A:dmgBonus+60",
"4": "A:dmgBonus+70",
"5": "A:dmgBonus+80"
},
"旅行剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"甲级宝珏": {
"1": "attack+12",
"2": "attack+14",
"3": "attack+16",
"4": "attack+18",
"5": "attack+20"
},
"贯虹之槊": {
"1": "shieldBouns+20;attack+20",
"2": "shieldBouns+25;attack+25",
"3": "shieldBouns+30;attack+30",
"4": "shieldBouns+35;attack+35",
"5": "shieldBouns+40;attack+40"
},
"训练大剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"断浪长鳍": {
"1": "Q:dmgBonus+40",
"2": "Q:dmgBonus+50",
"3": "Q:dmgBonus+60",
"4": "Q:dmgBonus+70",
"5": "Q:dmgBonus+80"
},
"白影剑": {
"1": "attack+24;defense+24",
"2": "attack+30;defense+30",
"3": "attack+36;defense+36",
"4": "attack+42;defense+42",
"5": "attack+46;defense+46"
},
"白铁大剑": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
"白缨枪": {
"1": "A:dmgBonus+24",
"2": "A:dmgBonus+30",
"3": "A:dmgBonus+36",
"4": "A:dmgBonus+42",
"5": "A:dmgBonus+48"
},
"风花之颂": {
"1": "attack+16",
"2": "attack+20",
"3": "attack+24",
"4": "attack+28",
"5": "attack+32"
},
"暗巷的酒与诗": {
"1": "attack+20",
"2": "attack+25",
"3": "attack+30",
"4": "attack+35",
"5": "attack+40"
},
"狼的末路": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
}
}

View File

@ -9,6 +9,8 @@ from PIL import Image, ImageDraw, ImageFont, ImageChops
from httpx import get
from nonebot import logger
from .dmgCalc.dmgCalc import *
R_PATH = Path(__file__).parents[0]
TEXT_PATH = R_PATH / 'texture2D'
ICON_PATH = R_PATH / 'icon'
@ -18,9 +20,6 @@ RELIC_PATH = R_PATH / 'relicIcon'
MAP_PATH = R_PATH / 'map'
ETC_PATH = R_PATH / 'etc'
version = '2.7.0'
avatarName2SkillAdd_fileName = f'avatarName2SkillAdd_mapping_{version}.json'
COLOR_MAP = {'Anemo' : (43, 170, 163), 'Cryo': (97, 168, 202), 'Dendro': (84, 169, 62),
'Electro': (150, 62, 169), 'Geo': (169, 143, 62), 'Hydro': (66, 98, 182), 'Pyro': (169, 62, 67)}
@ -29,9 +28,6 @@ SCORE_MAP = {'暴击率': 2, '暴击伤害': 1, '元素精通': 0.25, '元素充
VALUE_MAP = {'攻击力': 4.975, '血量': 4.975, '防御力': 6.2, '元素精通': 19.75,
'元素充能效率': 5.5, '暴击率': 3.3, '暴击伤害': 6.6}
with open(MAP_PATH / avatarName2SkillAdd_fileName, "r", encoding='UTF-8') as f:
avatarName2SkillAdd = json.load(f)
# 引入ValueMap
with open(ETC_PATH / 'ValueAttrMap.json', 'r', encoding='UTF-8') as f:
@ -421,13 +417,15 @@ async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
y2 = new_h/2 + based_new_h/2 - offset_y / 2
char_img = bg_img2.crop((x1, y1, x2, y2))
img_w, img_h = 950, 1850
dmg_img, dmg_len = await draw_dmgCacl_img(raw_data)
img_w, img_h = 950, 1850 + dmg_len * 40
overlay = Image.open(TEXT_PATH / 'overlay.png')
overlay_w, overlay_h = overlay.size
if overlay_h < img_h:
new_overlay_h = img_h
new_overlay_w = math.ceil(new_overlay_h * overlay_w / overlay_h)
overlay = overlay.resize((new_overlay_w, new_overlay_h), Image.Resampling.LANCZOS)
overlay = overlay.crop((0, 0, img_w, img_h))
color_img = Image.new('RGBA', overlay.size, COLOR_MAP[raw_data['avatarElement']])
img = ImageChops.overlay(color_img, overlay)
char_info_1 = Image.open(TEXT_PATH / 'char_info_1.png')
@ -437,6 +435,7 @@ async def draw_char_card(raw_data: dict, charUrl: str = None) -> bytes:
img_temp.paste(char_img,(0,0),char_info_mask)
img.paste(img_temp, (0, 0), img_temp)
img.paste(char_info_1, (0, 0), char_info_1)
img.paste(dmg_img,(0,1850),dmg_img)
lock_img = Image.open(TEXT_PATH / 'icon_lock.png')