From dc91d2793bc8fdea80a45430ba1211b7daba84f4 Mon Sep 17 00:00:00 2001 From: CMHopeSunshine <277073121@qq.com> Date: Wed, 13 Jul 2022 14:42:34 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20ysd=E6=94=AF=E6=8C=81`=E9=B9=BF?= =?UTF-8?q?=E9=87=8E=E9=99=A2=E5=B9=B3=E8=97=8F`=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0`=E6=9E=AB=E5=8E=9F=E4=B8=87=E5=8F=B6=E3=80=81?= =?UTF-8?q?=E9=B9=BF=E9=87=8E=E9=99=A2=E5=B9=B3=E8=97=8F`=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Paimon_Info/damage_cal/common.py | 247 ++++++++++-------- Paimon_Info/damage_cal/damage.py | 1 - Paimon_Info/draw_role_card.py | 8 +- utils/enka_util.py | 11 +- utils/json_data/role_element.json | 3 +- utils/json_data/role_skill.json | 6 + utils/json_data/role_talent.json | 14 +- utils/json_data/roles_data.json | 410 ++++++++++++++++++++++++++++++ utils/json_data/score.json | 12 + utils/json_data/short_name.json | 3 +- utils/json_data/upheaval.json | 92 +++++++ 11 files changed, 695 insertions(+), 112 deletions(-) create mode 100644 utils/json_data/upheaval.json diff --git a/Paimon_Info/damage_cal/common.py b/Paimon_Info/damage_cal/common.py index 8995dce..7977829 100644 --- a/Paimon_Info/damage_cal/common.py +++ b/Paimon_Info/damage_cal/common.py @@ -35,13 +35,17 @@ def udc(dm: float, :return: 伤害 """ if crit[0] > 1: - damage = dm * (1 + crit[1]) * (1 + db) * resistance_coefficient(rcb, rcd) * defense_coefficient(sl, el, dcr, dci) * r + damage = dm * (1 + crit[1]) * (1 + db) * resistance_coefficient(rcb, rcd) * defense_coefficient(sl, el, dcr, + dci) * r return [str(int(damage)), str(int(damage))] elif crit[0] <= 0: damage = dm * (1 + db) * resistance_coefficient(rcb, rcd) * defense_coefficient(sl, el, dcr, dci) * r return [str(int(damage)), ] else: - damage = dm * (1 + crit[0] * crit[1]) * (1 + db) * resistance_coefficient(rcb, rcd) * defense_coefficient(sl, el, dcr, dci) * r + damage = dm * (1 + crit[0] * crit[1]) * (1 + db) * resistance_coefficient(rcb, rcd) * defense_coefficient(sl, + el, + dcr, + dci) * r return [str(int(damage)), str(int(damage / (1 + crit[0] * crit[1]) * (1 + crit[1])))] @@ -61,7 +65,7 @@ def resistance_coefficient(base_resistance: float = 0.1, reduction_rate: float = return 1 - (resistance / 2) -def defense_coefficient(self_level: int = 90, enemy_level: int = 90, reduction_rate: float = 0, ignore: float = 0): +def defense_coefficient(self_level: int = 90, enemy_level: int = -1, reduction_rate: float = 0, ignore: float = 0): """ 计算防御力系数 :param self_level: 角色自身等级 @@ -70,6 +74,8 @@ def defense_coefficient(self_level: int = 90, enemy_level: int = 90, reduction_r :param ignore: 无视防御系数 :return: 防御力系数 """ + if enemy_level == -1: + enemy_level = self_level return (self_level + 100) / ((self_level + 100) + (enemy_level + 100) * (1 - reduction_rate) * (1 - ignore)) @@ -85,6 +91,9 @@ def growth_reaction(mastery: int = 0, base_coefficient: float = 1.5, extra_coeff return base_coefficient * (1 + mastery_increase + extra_coefficient) +upheaval_value = load_json(path=Path(__file__).parent.parent.parent / 'utils' / 'json_data' / 'upheaval.json') + + def upheaval_reaction(level: int, type: str, mastery: int = 0, extra_coefficient: float = 0, resistance: float = 0.9): """ 计算剧变反应的伤害 @@ -105,7 +114,7 @@ def upheaval_reaction(level: int, type: str, mastery: int = 0, extra_coefficient base_ratio = 4 else: base_ratio = 4.8 - base_coefficient = 723 # 暂缺全等级剧变反应的系数,先写90级的 + base_coefficient = upheaval_value[level - 1] mastery_increase = (16 * mastery) / (mastery + 2000) return base_coefficient * base_ratio * (1 + mastery_increase + extra_coefficient) * resistance @@ -435,6 +444,8 @@ def common_fix(data: dict): attr['伤害加成'][1] += 0.225 data['伤害描述'].append('魔女满层') attr['蒸发系数'] = 0.15 + elif suit[0][0] == '翠绿之影': + attr['扩散系数'] = 0.6 elif suit[0][0] == '渡过烈火的贤人': for i, k in enumerate(attr['伤害加成']): attr['伤害加成'][i] = k + 0.5 @@ -503,7 +514,8 @@ def get_damage_multipiler(data: dict) -> dict: } if data['名称'] == '胡桃': dm = {'B:l70-增伤-*': (0.33, '半血以下',)} - dm['B:l1-攻击力'] = (float(skill_data['蝶引来生']['数值']['攻击力提高'][level_e].replace('%生命值上限', '')) / 100.0 * (data['属性']['基础生命'] + data['属性']['额外生命']), '开E后') + dm['B:l1-攻击力'] = (float(skill_data['蝶引来生']['数值']['攻击力提高'][level_e].replace('%生命值上限', '')) / 100.0 * ( + data['属性']['基础生命'] + data['属性']['额外生命']), '开E后') dm['AZ-e火:裸重击'] = float(skill_data['普通攻击·往生秘传枪法']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0 dm['AZ-e火-r蒸发1.5:重击蒸发'] = float(skill_data['普通攻击·往生秘传枪法']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0 dm['E-e火-r蒸发1.5:雪梅香蒸发'] = float(skill_data['蝶引来生']['数值']['血梅香伤害'][level_e].replace('%', '')) / 100.0 @@ -521,26 +533,26 @@ def get_damage_multipiler(data: dict) -> dict: '梦想一心重击基础': (float(qa[0].replace('%', '')) / 100.0, float(qa[1].replace('%', '')) / 100.0), '梦想一心愿力': float( skill_data['奥义·梦想真说']['数值']['愿力加成'][level_q].split('%/')[1].replace('%攻击力', '')) / 100.0 * 60, - '梦想一心能量': float(skill_data['奥义·梦想真说']['数值']['梦想一心能量恢复'][level_q]) + '梦想一心能量': float(skill_data['奥义·梦想真说']['数值']['梦想一心能量恢复'][level_q]) } if data['名称'] == '魈': a = skill_data['普通攻击·卷积微尘']['数值']['低空/高空坠地冲击伤害'][level_a].split('/') return { - 'B:l1-增伤-AX': (float(skill_data['靖妖傩舞']['数值']['普通攻击/重击/下落攻击伤害提升'][level_q].replace('%', '')) / 100, ), - 'E-e风:风轮两立': float(skill_data['风轮两立']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, + 'B:l1-增伤-AX': (float(skill_data['靖妖傩舞']['数值']['普通攻击/重击/下落攻击伤害提升'][level_q].replace('%', '')) / 100,), + 'E-e风:风轮两立': float(skill_data['风轮两立']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, 'AX-e风:低空下落首戳': float(a[0].replace('%', '')) / 100, 'AX-e风:高空下落首戳': float(a[1].replace('%', '')) / 100, } if data['名称'] == '香菱': return { - 'B:c1-减抗-*': (0.15, '锅巴减抗'), - 'E-e火:锅巴喷火': float(skill_data['锅巴出击']['数值']['喷火伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e火:旋火轮': float(skill_data['旋火轮']['数值']['旋火轮伤害'][level_q].replace('%', '')) / 100.0, + 'B:c1-减抗-*': (0.15, '锅巴减抗'), + 'E-e火:锅巴喷火': float(skill_data['锅巴出击']['数值']['喷火伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e火:旋火轮': float(skill_data['旋火轮']['数值']['旋火轮伤害'][level_q].replace('%', '')) / 100.0, 'Q-e火-r蒸发1.5:旋火轮蒸发': float(skill_data['旋火轮']['数值']['旋火轮伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '申鹤': return { - '冰翎': float(skill_data['仰灵威召将役咒']['数值']['伤害值提升'][level_e].replace('%', '')) / 100.0, + '冰翎': float(skill_data['仰灵威召将役咒']['数值']['伤害值提升'][level_e].replace('%', '')) / 100.0, '大招减抗': float(skill_data['神女遣灵真诀']['数值']['抗性降低'][level_q].replace('%', '')) / 100.0, 'e长按': float(skill_data['仰灵威召将役咒']['数值']['长按技能伤害'][level_e].replace('%', '')) / 100.0, '大招持续': float(skill_data['神女遣灵真诀']['数值']['持续伤害'][level_q].replace('%', '')) / 100.0 @@ -548,71 +560,72 @@ def get_damage_multipiler(data: dict) -> dict: if data['名称'] == '刻晴': az = skill_data['普通攻击·云来剑法']['数值']['重击伤害'][level_a].split('+') return { - 'B:l70-暴击率-*': (0.15, ), - 'B:c6-增伤-*': (0.24, '六命满层'), - 'B:c4-攻击力': (data['属性']['基础攻击'] * 0.25, '四命触发'), - 'AZ-e雷:重击': (float(az[0].replace('%', '')) / 100.0, float(az[1].replace('%', '')) / 100.0), - 'E-e雷:战技斩击': float(skill_data['星斗归位']['数值']['斩击伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e雷:大招尾刀': float(skill_data['天街巡游']['数值']['最后一击伤害'][level_q].replace('%', '')) / 100.0 + 'B:l70-暴击率-*': (0.15,), + 'B:c6-增伤-*': (0.24, '六命满层'), + 'B:c4-攻击力': (data['属性']['基础攻击'] * 0.25, '四命触发'), + 'AZ-e雷:重击': (float(az[0].replace('%', '')) / 100.0, float(az[1].replace('%', '')) / 100.0), + 'E-e雷:战技斩击': float(skill_data['星斗归位']['数值']['斩击伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e雷:大招尾刀': float(skill_data['天街巡游']['数值']['最后一击伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '可莉': return { 'B:l50-增伤-AZ': (0.5, '砰砰礼物触发'), - 'B:c2-减防-*': (0.23, '二命减防'), - 'B:c6-增伤-*': (0.1, ), - 'AZ-e火:重击': float(skill_data['普通攻击·砰砰']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, - 'E-e火:蹦蹦炸弹': float(skill_data['蹦蹦炸弹']['数值']['蹦蹦炸弹伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e火:轰轰火花': float(skill_data['轰轰火花']['数值']['轰轰火花伤害'][level_q].replace('%', '')) / 100.0, + 'B:c2-减防-*': (0.23, '二命减防'), + 'B:c6-增伤-*': (0.1,), + 'AZ-e火:重击': float(skill_data['普通攻击·砰砰']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, + 'E-e火:蹦蹦炸弹': float(skill_data['蹦蹦炸弹']['数值']['蹦蹦炸弹伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e火:轰轰火花': float(skill_data['轰轰火花']['数值']['轰轰火花伤害'][level_q].replace('%', '')) / 100.0, } if data['名称'] == '八重神子': e = '杀生樱伤害·肆阶' if len(data['命座']) >= 2 else '杀生樱伤害·叁阶' return { - 'B:l70-增伤-E': (data['属性']['元素精通'] * 0.0015, ), - 'B:c4-增伤-*': (0.2, ), - 'B:c6-减防-E': (0.6, ), - 'AZ-e雷:重击': float(skill_data['普通攻击·狐灵食罪式']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, + 'B:l70-增伤-E': (data['属性']['元素精通'] * 0.0015,), + 'B:c4-增伤-*': (0.2,), + 'B:c6-减防-E': (0.6,), + 'AZ-e雷:重击': float(skill_data['普通攻击·狐灵食罪式']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, 'E-e雷:杀生樱满阶': float(skill_data['野干役咒·杀生樱']['数值'][e][level_e].replace('%', '')) / 100.0, - 'Q-e雷:天狐霆雷': float(skill_data['大密法·天狐显真']['数值']['天狐霆雷伤害'][level_q].replace('%', '')) / 100.0, + 'Q-e雷:天狐霆雷': float(skill_data['大密法·天狐显真']['数值']['天狐霆雷伤害'][level_q].replace('%', '')) / 100.0, } if data['名称'] == '阿贝多': return { 'E-t防御力-e岩:阳华绽放': float(skill_data['创生法·拟造阳华']['数值']['刹那之花伤害'][level_e].replace('%防御力', '')) / 100.0, - 'Q-e岩:大招首段': float(skill_data['诞生式·大地之潮']['数值']['爆发伤害'][level_q].replace('%', '')) / 100.0 + 'Q-e岩:大招首段': float(skill_data['诞生式·大地之潮']['数值']['爆发伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '神里绫华': return { - 'B:l50-增伤-AZ': (0.3, ), - 'B:l70-增伤-*': (0.18, ), - 'B:c4-减防-*': (0.3, ), - 'B:c6-增伤-AZ': (2.98, '满命触发'), + 'B:l50-增伤-AZ': (0.3,), + 'B:l70-增伤-*': (0.18,), + 'B:c4-减防-*': (0.3,), + 'B:c6-增伤-AZ': (2.98, '满命触发'), 'AZ-n3-e冰:重击': float(skill_data['普通攻击·神里流·倾']['数值']['重击伤害'][level_a].replace('%*3', '')) / 100.0, - 'E-e冰:冰华伤害': float(skill_data['神里流·冰华']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e冰:霜灭每段': float(skill_data['神里流·霜灭']['数值']['切割伤害'][level_q].replace('%', '')) / 100.0, + 'E-e冰:冰华伤害': float(skill_data['神里流·冰华']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e冰:霜灭每段': float(skill_data['神里流·霜灭']['数值']['切割伤害'][level_q].replace('%', '')) / 100.0, } if data['名称'] == '行秋': e = skill_data['古华剑·画雨笼山']['数值']['技能伤害'][level_e].split('+') dm = 1.5 if len(data['命座']) >= 4 else 1.0 return { - 'B:l70-增伤-*': (0.2, ), - 'B:c2-减抗-*': (0.15, ), - 'E-e水:画雨笼山': (float(e[0].replace('%', '')) / 100.0 * dm, float(e[1].replace('%', '')) / 100.0 * dm), + 'B:l70-增伤-*': (0.2,), + 'B:c2-减抗-*': (0.15,), + 'E-e水:画雨笼山': (float(e[0].replace('%', '')) / 100.0 * dm, float(e[1].replace('%', '')) / 100.0 * dm), 'Q-e水:裁雨留虹每段': float(skill_data['古华剑·裁雨留虹']['数值']['剑雨伤害'][level_e].replace('%', '')) / 100.0 } if data['名称'] == '夜兰': return { - 'B:d': ['不计算天赋增伤'], - 'B:l50-生命值': (data['属性']['基础生命'] * 0.18, '天赋按3元素'), - 'AZ-t生命值-e水:破局矢': float(skill_data['普通攻击·潜形隐曜弓']['数值']['破局矢伤害'][level_a].replace('%生命值上限', '')) / 100.0, - 'E-t生命值-e水:元素战技': float(skill_data['萦络纵命索']['数值']['技能伤害'][level_e].replace('%生命值上限', '')) / 100.0, + 'B:d': ['不计算天赋增伤'], + 'B:l50-生命值': (data['属性']['基础生命'] * 0.18, '天赋按3元素'), + 'AZ-t生命值-e水:破局矢': float(skill_data['普通攻击·潜形隐曜弓']['数值']['破局矢伤害'][level_a].replace('%生命值上限', '')) / 100.0, + 'E-t生命值-e水:元素战技': float(skill_data['萦络纵命索']['数值']['技能伤害'][level_e].replace('%生命值上限', '')) / 100.0, 'Q-t生命值-e水-n3:大招每段': float(skill_data['渊图玲珑骰']['数值']['玄掷玲珑伤害'][level_q].replace('%生命值上限*3', '')) / 100.0, } if data['名称'] == '甘雨': - dm['B:l50-暴击率-AZ'] = (0.2, ) - dm['B:l70-增伤-AZ'] = (0.2, ) - dm['B:l70-增伤-E'] = (0.2, ) + dm['B:l50-暴击率-AZ'] = (0.2,) + dm['B:l70-增伤-AZ'] = (0.2,) + dm['B:l70-增伤-E'] = (0.2,) dm['B:c4-增伤-*'] = (0.25, '四命满层') - dm['B:c1-减抗-*'] = (0.15, ) - dm['AZ-e冰:霜华矢'] = (float(skill_data['普通攻击·流天射术']['数值']['霜华矢命中伤害'][level_a].replace('%', '')) / 100.0, float(skill_data['普通攻击·流天射术']['数值']['霜华矢·霜华绽发伤害'][level_a].replace('%', '')) / 100.0) + dm['B:c1-减抗-*'] = (0.15,) + dm['AZ-e冰:霜华矢'] = (float(skill_data['普通攻击·流天射术']['数值']['霜华矢命中伤害'][level_a].replace('%', '')) / 100.0, + float(skill_data['普通攻击·流天射术']['数值']['霜华矢·霜华绽发伤害'][level_a].replace('%', '')) / 100.0) dm['AZ-r融化1.5-e冰:霜华矢融化'] = dm['AZ-e冰:霜华矢'] dm['E-e冰:元素战技'] = float(skill_data['山泽麟迹']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0 dm['Q-e冰:冰棱伤害'] = float(skill_data['降众天华']['数值']['冰棱伤害'][level_q].replace('%', '')) / 100.0 @@ -620,41 +633,43 @@ def get_damage_multipiler(data: dict) -> dict: if data['名称'] == '优菈': n = 26 if len(data['命座']) >= 6 else 13 return { - 'B:c1-增伤-*': (0.3, ), - 'B:c4-增伤-Q': (0.25, '四命触发'), - 'B:l1-减抗-*': (float(skill_data['冰潮的涡旋']['数值']['物理抗性降低'][level_e].replace('%', '')) / 100.0, ), - 'A:普攻第一段': float(skill_data['普通攻击·西风剑术·宗室']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0, - 'E-e冰:战技长按': float(skill_data['冰潮的涡旋']['数值']['长按伤害'][level_e].replace('%', '')) / 100.0, - f'Q:光降之剑{n}层': float(skill_data['凝浪之光剑']['数值']['光降之剑基础伤害'][level_q].replace('%', '')) / 100.0 + float(skill_data['凝浪之光剑']['数值']['每层能量伤害'][level_e].replace('%', '')) / 100.0 * n, + 'B:c1-增伤-*': (0.3,), + 'B:c4-增伤-Q': (0.25, '四命触发'), + 'B:l1-减抗-*': (float(skill_data['冰潮的涡旋']['数值']['物理抗性降低'][level_e].replace('%', '')) / 100.0,), + 'A:普攻第一段': float(skill_data['普通攻击·西风剑术·宗室']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0, + 'E-e冰:战技长按': float(skill_data['冰潮的涡旋']['数值']['长按伤害'][level_e].replace('%', '')) / 100.0, + f'Q:光降之剑{n}层': float(skill_data['凝浪之光剑']['数值']['光降之剑基础伤害'][level_q].replace('%', '')) / 100.0 + float( + skill_data['凝浪之光剑']['数值']['每层能量伤害'][level_e].replace('%', '')) / 100.0 * n, } if data['名称'] == '达达利亚': e = skill_data['魔王武装·狂澜']['数值']['重击伤害'][level_e].split('+') return { - 'E-e水:近战重击': (float(e[0].replace('%', '')) / 100.0, float(e[1].replace('%', '')) / 100.0), - 'E-e水:断流·斩': float(skill_data['魔王武装·狂澜']['数值']['断流·斩伤害'][level_q].replace('%', '')) / 100.0, - 'A-e水:断流·破': float(skill_data['普通攻击·断雨']['数值']['断流·破 伤害'][level_q].replace('%', '')) / 100.0, - 'Q-e水:近战大招': float(skill_data['极恶技·尽灭闪']['数值']['技能伤害·近战'][level_q].replace('%', '')) / 100.0, + 'E-e水:近战重击': (float(e[0].replace('%', '')) / 100.0, float(e[1].replace('%', '')) / 100.0), + 'E-e水:断流·斩': float(skill_data['魔王武装·狂澜']['数值']['断流·斩伤害'][level_q].replace('%', '')) / 100.0, + 'A-e水:断流·破': float(skill_data['普通攻击·断雨']['数值']['断流·破 伤害'][level_q].replace('%', '')) / 100.0, + 'Q-e水:近战大招': float(skill_data['极恶技·尽灭闪']['数值']['技能伤害·近战'][level_q].replace('%', '')) / 100.0, 'Q-e水-r蒸发2.0:近战大招蒸发': float(skill_data['极恶技·尽灭闪']['数值']['技能伤害·近战'][level_q].replace('%', '')) / 100.0, - 'Q-e水:断流·爆': float(skill_data['极恶技·尽灭闪']['数值']['断流·爆伤害'][level_q].replace('%', '')) / 100.0 + 'Q-e水:断流·爆': float(skill_data['极恶技·尽灭闪']['数值']['断流·爆伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '迪卢克': return { - 'B:l70-增伤-*': (0.2, ), - 'B:c4-增伤-E': (0.4, '四命增伤'), - 'B:c2-攻击力': (data['属性']['基础攻击'] * 0.3, '二命满层'), - 'B:c1-增伤-*': (0.15, '一命增伤'), - 'E-e火:战技第三段': float(skill_data['逆焰之刃']['数值']['三段伤害'][level_e].replace('%', '')) / 100.0, + 'B:l70-增伤-*': (0.2,), + 'B:c4-增伤-E': (0.4, '四命增伤'), + 'B:c2-攻击力': (data['属性']['基础攻击'] * 0.3, '二命满层'), + 'B:c1-增伤-*': (0.15, '一命增伤'), + 'E-e火:战技第三段': float(skill_data['逆焰之刃']['数值']['三段伤害'][level_e].replace('%', '')) / 100.0, 'E-e火-r蒸发1.5:战技第三段蒸发': float(skill_data['逆焰之刃']['数值']['三段伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e火:大招斩击': float(skill_data['黎明']['数值']['斩击伤害'][level_q].replace('%', '')) / 100.0, - 'Q-e火-r蒸发1.5:大招斩击蒸发': float(skill_data['黎明']['数值']['斩击伤害'][level_q].replace('%', '')) / 100.0 + 'Q-e火:大招斩击': float(skill_data['黎明']['数值']['斩击伤害'][level_q].replace('%', '')) / 100.0, + 'Q-e火-r蒸发1.5:大招斩击蒸发': float(skill_data['黎明']['数值']['斩击伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '凝光': return { 'B:l70-增伤-*': (0.12, '穿屏增伤'), - 'AZ-e岩:重击': float(skill_data['普通攻击·千金掷']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, - 'AZ-e岩:星璇伤害': float(skill_data['普通攻击·千金掷']['数值']['星璇伤害'][level_a].replace('%', '').replace('每个', '')) / 100.0, - 'E-e岩:璇玑屏': float(skill_data['璇玑屏']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e岩:大招每段': float(skill_data['天权崩玉']['数值']['每颗宝石伤害'][level_q].replace('%', '').replace('每个', '')) / 100.0, + 'AZ-e岩:重击': float(skill_data['普通攻击·千金掷']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, + 'AZ-e岩:星璇伤害': float( + skill_data['普通攻击·千金掷']['数值']['星璇伤害'][level_a].replace('%', '').replace('每个', '')) / 100.0, + 'E-e岩:璇玑屏': float(skill_data['璇玑屏']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e岩:大招每段': float(skill_data['天权崩玉']['数值']['每颗宝石伤害'][level_q].replace('%', '').replace('每个', '')) / 100.0, } if data['名称'] == '菲谢尔': dm = {'A:普攻第一段': float(skill_data['普通攻击·罪灭之矢']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0} @@ -665,7 +680,8 @@ def get_damage_multipiler(data: dict) -> dict: if data['名称'] == '北斗': return { 'B:c6-减抗-*': (0.15, '六命减抗'), - 'E-e雷:完美弹反': float(skill_data['捉浪']['数值']['基础伤害'][level_e].replace('%', '')) / 100.0 + 2 * float(skill_data['捉浪']['数值']['每层伤害提升'][level_e].replace('%', '')) / 100.0, + 'E-e雷:完美弹反': float(skill_data['捉浪']['数值']['基础伤害'][level_e].replace('%', '')) / 100.0 + 2 * float( + skill_data['捉浪']['数值']['每层伤害提升'][level_e].replace('%', '')) / 100.0, 'Q-e雷:斫雷每段': float(skill_data['斫雷']['数值']['闪电伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '诺艾尔': @@ -673,61 +689,94 @@ def get_damage_multipiler(data: dict) -> dict: e = skill_data['护心铠']['数值']['吸收量'][level_e].split('+') ez = skill_data['护心铠']['数值']['治疗量'][level_e].split('+') return { - 'B:l1-攻击力': ((float(skill_data['大扫除']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 + extra) * defense, ), + 'B:l1-攻击力': ( + (float(skill_data['大扫除']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 + extra) * defense,), 'A-e岩:普攻第一段': float(skill_data['普通攻击·西风剑术·女仆']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0, - 'T:Q攻击力提高:': int((float(skill_data['大扫除']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 + extra) * defense), - 'T:E盾值': int(float(e[0].replace('%防御力', '')) / 100.0 * defense + float(e[1])), - 'T:普攻治疗量/概率': str(int((float(ez[0].replace('%防御力', '')) / 100.0 * defense + float(ez[1])) * (1 + data['属性']['治疗加成']))) + '/' + skill_data['护心铠']['数值']['治疗触发几率'][level_e] + 'T:Q攻击力提高:': int( + (float(skill_data['大扫除']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 + extra) * defense), + 'T:E盾值': int(float(e[0].replace('%防御力', '')) / 100.0 * defense + float(e[1])), + 'T:普攻治疗量/概率': str(int((float(ez[0].replace('%防御力', '')) / 100.0 * defense + float(ez[1])) * ( + 1 + data['属性']['治疗加成']))) + '/' + skill_data['护心铠']['数值']['治疗触发几率'][level_e] } if data['名称'] == '神里绫人': n = 2 if data['等级'] >= 50 else 0 return { - 'B:c1-增伤-A': (0.4, '一命增伤'), - 'B:l1-额外倍率-A': (float(skill_data['神里流·镜花']['数值']['浪闪伤害值提高'][level_e].replace('%最大生命值/层', '')) / 100.0 * n * (data['属性']['基础生命'] + data['属性']['额外生命']), ), - 'B:l1-增伤-A': (float(skill_data['神里流·水囿']['数值']['普通攻击伤害提升'][level_q].replace('%', '')) / 100.0, ), + 'B:c1-增伤-A': (0.4, '一命增伤'), + 'B:l1-额外倍率-A': ( + float(skill_data['神里流·镜花']['数值']['浪闪伤害值提高'][level_e].replace('%最大生命值/层', '')) / 100.0 * n * ( + data['属性']['基础生命'] + data['属性']['额外生命']),), + 'B:l1-增伤-A': (float(skill_data['神里流·水囿']['数值']['普通攻击伤害提升'][level_q].replace('%', '')) / 100.0,), 'A-e水:瞬水剑第一段': float(skill_data['神里流·镜花']['数值']['一段瞬水剑伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e水:大招每下': float(skill_data['神里流·水囿']['数值']['水花剑伤害'][level_q].replace('%', '')) / 100.0 + 'Q-e水:大招每下': float(skill_data['神里流·水囿']['数值']['水花剑伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '荒泷一斗': return { - 'B:d': ['开启大招'], - 'B:l70-额外倍率-AZ': (0.35 * (data['属性']['基础防御'] + data['属性']['额外防御']), ), - 'B:c6-暴击伤害-AZ': (0.7, ), - 'B:l1-攻击力': (float(skill_data['最恶鬼王·一斗轰临!!']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 * (data['属性']['基础防御'] + data['属性']['额外防御']), ), + 'B:d': ['开启大招'], + 'B:l70-额外倍率-AZ': (0.35 * (data['属性']['基础防御'] + data['属性']['额外防御']),), + 'B:c6-暴击伤害-AZ': (0.7,), + 'B:l1-攻击力': (float(skill_data['最恶鬼王·一斗轰临!!']['数值']['攻击力提高'][level_q].replace('%防御力', '')) / 100.0 * ( + data['属性']['基础防御'] + data['属性']['额外防御']),), 'AZ-e岩:荒泷逆袈裟连斩': float(skill_data['普通攻击·喧哗屋传说']['数值']['荒泷逆袈裟连斩伤害'][level_a].replace('%', '')) / 100.0, - 'E-e岩:赤牛发破': float(skill_data['魔杀绝技·赤牛发破!']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, + 'E-e岩:赤牛发破': float(skill_data['魔杀绝技·赤牛发破!']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, } if data['名称'] == '宵宫': return { - 'B:l50-增伤-*': (0.2, '被动一满层'), - 'B:c2-增伤-*': (0.25, '二命触发'), - 'A-e火-n2:普攻第一段': float(skill_data['焰硝庭火舞']['数值']['炽焰箭伤害'][level_e].replace('%普通攻击伤害', '')) / 100.0 * float(skill_data['普通攻击·烟火打扬']['数值']['一段伤害'][level_a].replace('%*2', '')) / 100.0, + 'B:l50-增伤-*': (0.2, '被动一满层'), + 'B:c2-增伤-*': (0.25, '二命触发'), + 'A-e火-n2:普攻第一段': float( + skill_data['焰硝庭火舞']['数值']['炽焰箭伤害'][level_e].replace('%普通攻击伤害', '')) / 100.0 * float( + skill_data['普通攻击·烟火打扬']['数值']['一段伤害'][level_a].replace('%*2', '')) / 100.0, 'A-e火-r蒸发1.5:普攻第三段蒸发': (float( skill_data['焰硝庭火舞']['数值']['炽焰箭伤害'][level_e].replace('%普通攻击伤害', '')) / 100.0) * float( skill_data['普通攻击·烟火打扬']['数值']['三段伤害'][level_a].replace('%', '')) / 100.0, - 'Q-e火:琉金火光爆炸': float(skill_data['琉金云间草']['数值']['琉金火光爆炸伤害'][level_q].replace('%', '')) / 100.0 + 'Q-e火:琉金火光爆炸': float(skill_data['琉金云间草']['数值']['琉金火光爆炸伤害'][level_q].replace('%', '')) / 100.0 } if data['名称'] == '烟绯': max_ = 4 if len(data['命座']) >= 6 else 3 AZB = float(skill_data['普通攻击·火漆制印']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0 - AZ = (AZB, 0.8) if data['等级'] >= 70 else (AZB, ) + AZ = (AZB, 0.8) if data['等级'] >= 70 else (AZB,) return { - 'B:l50-增伤-*': (0.05 * max_, '满层丹火印'), - 'B:c2-暴击率-AZ': (0.2, ), - 'B:l1-增伤-AZ': (float(skill_data['凭此结契']['数值']['重击伤害提升'][level_q].replace('%', '')) / 100.0,), + 'B:l50-增伤-*': (0.05 * max_, '满层丹火印'), + 'B:c2-暴击率-AZ': (0.2,), + 'B:l1-增伤-AZ': (float(skill_data['凭此结契']['数值']['重击伤害提升'][level_q].replace('%', '')) / 100.0,), 'AZ-e火:满丹火印重击': AZ, - 'E-e火:元素战技': float(skill_data['丹书立约']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, - 'Q-e火:元素爆发': float(skill_data['凭此结契']['数值']['技能伤害'][level_q].replace('%', '')) / 100.0, + 'E-e火:元素战技': float(skill_data['丹书立约']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e火:元素爆发': float(skill_data['凭此结契']['数值']['技能伤害'][level_q].replace('%', '')) / 100.0, } if data['名称'] == '珊瑚宫心海': return { - '普攻第一段': float(skill_data['普通攻击·水有常形']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0, - '水母伤害': float(skill_data['海月之誓']['数值']['波纹伤害'][level_e].replace('%', '')) / 100.0, - '水母治疗量': skill_data['海月之誓']['数值']['治疗量'][level_e].split('+'), - '大招伤害': float(skill_data['海人化羽']['数值']['技能伤害'][level_q].replace('%生命值上限', '')) / 100.0, + '普攻第一段': float(skill_data['普通攻击·水有常形']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0, + '水母伤害': float(skill_data['海月之誓']['数值']['波纹伤害'][level_e].replace('%', '')) / 100.0, + '水母治疗量': skill_data['海月之誓']['数值']['治疗量'][level_e].split('+'), + '大招伤害': float(skill_data['海人化羽']['数值']['技能伤害'][level_q].replace('%生命值上限', '')) / 100.0, '普攻伤害提升': float(skill_data['海人化羽']['数值']['普通攻击伤害提升'][level_q].replace('%生命值上限', '')) / 100.0, - 'E伤害提升': float(skill_data['海人化羽']['数值']['化海月伤害提升'][level_q].replace('%生命值上限', '')) / 100.0, - '大招治疗量': skill_data['海人化羽']['数值']['命中治疗量'][level_q].split('+') + 'E伤害提升': float(skill_data['海人化羽']['数值']['化海月伤害提升'][level_q].replace('%生命值上限', '')) / 100.0, + '大招治疗量': skill_data['海人化羽']['数值']['命中治疗量'][level_q].split('+') + } + if data['名称'] == '枫原万叶': + data['属性']['元素精通'] += 200 if len(data['命座']) >= 2 else 0 + up = data['属性']['扩散系数'] if '扩散系数' in data['属性'] else 0 + return { + 'B:d': ['技能仅计算风伤部分'], + 'B:c6-增伤-AX': (data['属性']['元素精通'] * 0.002, ), + 'AX-e风:E后高空下落': float(skill_data['普通攻击·我流剑术']['数值']['低空/高空坠地冲击伤害'][level_a].split('/')[1].replace('%', '')) / 100.0, + 'E-e风:E点按伤害': float(skill_data['千早振']['数值']['点按技能伤害'][level_e].replace('%', '')) / 100.0, + 'Q-e风:大招斩击': float(skill_data['万叶之一刀']['数值']['斩击伤害'][level_q].replace('%', '')) / 100.0, + 'Q-e风:大招持续': float(skill_data['万叶之一刀']['数值']['持续伤害'][level_q].replace('%', '')) / 100.0, + # '大招附加': float(skill_data['万叶之一刀']['数值']['附加元素伤害'][level_q].replace('%', '')) / 100.0, + 'T:扩散伤害': int(upheaval_reaction(data['等级'], '扩散', data['属性']['元素精通'], up)) + } + if data['名称'] == '鹿野院平藏': + e = skill_data['勠心拳']['数值'] + data['属性']['元素精通'] += 80 if data['等级'] >= 70 else 0 + up = data['属性']['扩散系数'] if '扩散系数' in data['属性'] else 0 + return { + 'B:c6-暴击率-E': (0.16, ), + 'B:c6-暴击伤害-E': (0.32,), + 'AZ-e风:重击': float(skill_data['普通攻击·不动流格斗术']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0, + 'E-e风:满层勠心拳': (float(e['技能伤害'][level_e].replace('%', '')) + 4 * float(e['变格伤害提升'][level_e].replace('%/层', '')) + float(e['正论伤害提升'][level_e].replace('%', ''))) / 100.0, + 'Q-e风:聚风蹴真空弹': float(skill_data['聚风蹴']['数值']['不动流·真空弹伤害'][level_q].replace('%', '')) / 100.0, + 'T:扩散伤害': int(upheaval_reaction(data['等级'], '扩散', data['属性']['元素精通'], up)) } diff --git a/Paimon_Info/damage_cal/damage.py b/Paimon_Info/damage_cal/damage.py index 0f209fb..1b4e8d4 100644 --- a/Paimon_Info/damage_cal/damage.py +++ b/Paimon_Info/damage_cal/damage.py @@ -80,7 +80,6 @@ def get_role_dmg(data: dict): return draw_dmg_pic(dmg_data) if dmg_data else None -# def get_dmg_data(dm, attack, cr, cd, db, level_role, va, ve, vq, data): def get_dmg_data(data, dm, va, ve, vq): dmg_data = {} element_type = ['物理', '火', '雷', '水', '草', '风', '岩', '冰'] diff --git a/Paimon_Info/draw_role_card.py b/Paimon_Info/draw_role_card.py index d0b455d..6ddd6e3 100644 --- a/Paimon_Info/draw_role_card.py +++ b/Paimon_Info/draw_role_card.py @@ -27,10 +27,10 @@ def get_font(size, font='hywh.ttf'): async def draw_role_card(uid, data): bg_card = load_image(res_path / 'player_card2' / f'背景_{data["元素"]}.png', mode='RGBA') - try: - dmg_img = get_role_dmg(data) - except Exception: - dmg_img = None + # try: + dmg_img = get_role_dmg(data) + # except Exception: + # dmg_img = None if dmg_img: bg = Image.new('RGBA', (1080, 1920 + dmg_img.size[1] + 20), (0, 0, 0, 0)) bg_card_center = bg_card.crop((0, 730, 1080, 1377)).resize((1080, dmg_img.size[1] + 667)) diff --git a/utils/enka_util.py b/utils/enka_util.py index e7c22ef..bad669e 100644 --- a/utils/enka_util.py +++ b/utils/enka_util.py @@ -50,11 +50,6 @@ class PlayerInfo: role_info['元素'] = role_element[role_name] role_info['天赋'] = [] - if 'talentIdList' in data: - if len(data['talentIdList']) >= 3: - data['skillLevelMap'][list(data['skillLevelMap'].keys())[ra_score['Talent'][role_name][0]]] += 3 - if len(data['talentIdList']) >= 5: - data['skillLevelMap'][list(data['skillLevelMap'].keys())[ra_score['Talent'][role_name][1]]] += 3 for skill in data['skillLevelMap']: skill_detail = {'名称': role_skill['Name'][skill], '等级': data['skillLevelMap'][skill], '图标': role_skill['Icon'][skill]} @@ -72,6 +67,10 @@ class PlayerInfo: role_info['命座'] = [] if 'talentIdList' in data: + if len(data['talentIdList']) >= 3: + data['skillLevelMap'][list(data['skillLevelMap'].keys())[ra_score['Talent'][role_name][0]]] += 3 + if len(data['talentIdList']) >= 5: + data['skillLevelMap'][list(data['skillLevelMap'].keys())[ra_score['Talent'][role_name][1]]] += 3 for talent in data['talentIdList']: talent_detail = {'名称': role_talent['Name'][str(talent)], '图标': role_talent['Icon'][str(talent)]} role_info['命座'].append(talent_detail) @@ -249,6 +248,8 @@ def get_expect_score(effective: dict): total = 0 if len(effective.keys()) == 2: average = 15 / 5 + elif effective.keys() == '西风': + average = 17 / 5 elif len(effective.keys()) == 3: average = 24 / 5 elif len(effective.keys()) == 4: diff --git a/utils/json_data/role_element.json b/utils/json_data/role_element.json index 396fc6c..a6a76a6 100644 --- a/utils/json_data/role_element.json +++ b/utils/json_data/role_element.json @@ -47,5 +47,6 @@ "申鹤": "冰", "云堇": "岩", "久岐忍": "雷", - "神里绫人": "水" + "神里绫人": "水", + "鹿野院平藏": "风" } \ No newline at end of file diff --git a/utils/json_data/role_skill.json b/utils/json_data/role_skill.json index 6fa0e80..0d48be4 100644 --- a/utils/json_data/role_skill.json +++ b/utils/json_data/role_skill.json @@ -241,6 +241,9 @@ "10582": "野干役咒·杀生樱", "10583": "元素战技(空中)", "10585": "大密法·天狐显真", + "10591": "普通攻击·不动流格斗术", + "10592": "勠心拳", + "10595": "聚风蹴", "10602": "雷影剑", "10605": "雷轰电转", "10606": "普通攻击·潜形隐曜弓", @@ -654,6 +657,9 @@ "10582": "Skill_S_Yae_01", "10583": "", "10585": "Skill_E_Yae_01", + "10591": "Skill_A_01", + "10592": "Skill_S_Heizo_01", + "10595": "Skill_E_Heizo_01", "10602": "Skill_S_PlayerElectric_01", "10605": "Skill_E_PlayerElectric_01", "10606": "Skill_A_02", diff --git a/utils/json_data/role_talent.json b/utils/json_data/role_talent.json index cf44b9d..068a729 100644 --- a/utils/json_data/role_talent.json +++ b/utils/json_data/role_talent.json @@ -276,6 +276,12 @@ "584": "绯樱引雷章", "585": "暴恶嗤笑面", "586": "大杀生咒禁", + "591": "称名少年事件簿", + "592": "殊解诸因探案集", + "593": "暗文隐语谜题册", + "594": "虚言假说百物语", + "595": "禁室密所大图鉴", + "596": "奇想天开捕物帐", "601": "与谋者,以局入局", "602": "入彀者,多多益善", "603": "晃盅者,琼畟药骰", @@ -590,7 +596,13 @@ "584": "UI_Talent_S_Yae_03", "585": "UI_Talent_U_Yae_02", "586": "UI_Talent_S_Yae_04", - "601": "UI_Talent_S_Yelan_01", + "591": "UI_Talent_S_Heizo_01", + "592": "UI_Talent_S_Heizo_02", + "593": "UI_Talent_U_Heizo_01", + "594": "UI_Talent_S_Heizo_03", + "595": "UI_Talent_U_Heizo_02", + "596": "UI_Talent_S_Heizo_01", + "601": "UI_Talent_S_Yelan_04", "602": "UI_Talent_S_Yelan_02", "603": "UI_Talent_U_Yelan_01", "604": "UI_Talent_S_Yelan_03", diff --git a/utils/json_data/roles_data.json b/utils/json_data/roles_data.json index 5466926..e9d8ad9 100644 --- a/utils/json_data/roles_data.json +++ b/utils/json_data/roles_data.json @@ -21669,5 +21669,415 @@ "夜兰的情报生涯里,有一次值得铭记的特殊经历,兼具了失败与成功。\n说失败,是因为在那次行动中,她损失了一只名为「幽奇腕阑」的祖传玉镯。\n玉镯内印有家族术法,可以传递简单的讯息。但这类小型法器需要成对使用,互为照应,如今剩下一只,仅能当作装饰。\n而说成功是因为对手同样没能在她那里讨得好处。这位对手,来头却也相当不小,乃是当今愚人众执行官第九席——「富人」。\n「富人」暗中布下的一条隐蔽商路被夜兰渗透,货物遭到拦截。其中最为珍稀的一件藏品,也被夜兰当作玉镯的赔偿拿走了。\n古有异种魔兽,取其皮毛制成大氅,能值千金,且因数量稀少,总是有价无市。\n魔兽实力强大,虽已于数百年前死去,遗骨残骸却经年不腐,皮毛更有异香阵阵。\n这件本欲呈给女皇的献礼,却被夜兰中途截走。\n不仅如此,夜兰还拒绝了至冬人为陛下精心选择的款式。\n她直接取下兽皮,混以璃月苧麻,自制了一件新式带袖霞帔。\n一连串的事件,说大可大,说小也可小。无非二字:得失。\n得到,失去,失去,得到,一如夜兰的人生。\n而她毫不介意,乐在其中。", "夜兰不总是独自行动。许久以前,她身边也有肝胆相照的同僚。\n有那么一小部分人,出于各种原因,选择与夜兰一同潜入黑暗。\n但在那时,夜兰还没有完全认清——诡计、诱饵、陷阱…光靠她擅长的这些事,未必就能应对一切。\n自制力强的敌人不会吃下诱饵,狡诈奸猾的敌人不会落入阴谋,实力骇人的敌人不会为陷阱所困。\n因而,他们付出代价。相继有人消失在前行的路上,虽说选择这条路的人早已有此觉悟…\n但在某次深渊调查任务结束,夜兰身边再无一人时,她终于还是停下了,长久地停步。\n直到某天,凝光亲自寻到了她栖身的木屋。\n「这么久不回璃月港,应是遇到什么事了罢。若想退出,倒也情有可原。」\n凝光立在门外,神态并不轻松,谈吐却仍自在。\n「但无妨。用人不疑,我愿意相信你是在这里寻找出路。退与进,本都是路。」\n门内一片死寂,无人回应。许久,才听见一句回答从背后传来——\n「你我都犯了一个错误。我们所做的事,不应波及普通人。」\n「普通人?」\n凝光才想到什么,只见一束靛青色光芒破空飞来,堪堪悬在她脑后。\n箭矢控制得极有分寸,很快化作玉珠似的水滴散落,落地前便散作华光。\n凝光回头,见夜兰自远处走来,手中提着一张弓,指尖还滴着血。\n一个弓手,定是全力,日夜磨练,才会十指带血。\n但凝光同样明白,夜兰这般个性,定是遭遇了非常人能遇的挫折,下定了非常人能做的决心,才会重新闭关习武。\n似是要给凝光一个答案,夜兰张弓搭箭,瞄准远处山头。\n一箭既出,如飞雷,似白虹,有贯天之势。霎那间,山间泉水翻涌躁动,被无形的力量呼唤着,化作数道水箭盘旋而上。\n数箭交错,汇于半空,顷刻炸出一片水幕,犹如夏夜骤雨。\n雨后却无飞蝶或虹彩,仅有一道泛着淡彩的光柱降落到夜兰手中。\n照凝光的话说,这「神之眼」恰是信号,意为:「自今日起,诸事交由不普通的夜兰阁下」。" ] + }, + "鹿野院平藏": { + "name": "鹿野院平藏", + "title": "心潮乂安", + "region": "稻妻", + "sex": "男", + "star": "4", + "type": "常驻UP", + "element": "风", + "weapon": "法器", + "date": "2022年07月13日", + "tag": "聚怪、自身伤害提升、精通加成、冲刺消耗减少", + "birthday": "7月24日", + "mission": "邀约事件·鹿野院平藏", + "introduce": "天领奉行的天才少年侦探,直觉敏锐,心思玲珑。", + "destiny_name": "幼鹿座", + "destiny": { + "称名少年事件簿": "鹿野院平藏登场后的5秒内,普通攻击的攻击速度提升15%,并获得1层勠心拳的「变格」效果,该效果每10秒最多触发一次。", + "殊解诸因探案集": "聚风蹴产生的缉拿风穴的牵引效果获得提升,并将持续时间延长至1秒。", + "暗文隐语谜题册": "勠心拳的技能等级提高3级。至多提升至15级。", + "虚言假说百物语": "在一次聚风蹴中,「聚风真眼」在第一次爆发后,将为鹿野院平藏恢复9点元素能量,此后每次爆发,都将分别为鹿野院平藏额外恢复1.5点元素能量,一次聚风蹴至多通过这种方式为鹿野院平藏恢复13.5点元素能量。", + "禁室密所大图鉴": "聚风蹴的技能等级提高3级。至多提升至15级。", + "奇想天开捕物帐": "施放勠心拳时,每层「变格」都将为本次勠心拳提升4%暴击率。拥有「正论」时,本次勠心拳的暴击伤害将提升32%。" + }, + "attribute": { + "hp": { + "1": "894", + "20": "2296", + "40": "4438", + "50": "5651", + "60": "7021", + "70": "8233", + "80": "9445", + "90": "10657" + }, + "atk": { + "1": "19", + "20": "48", + "40": "94", + "50": "119", + "60": "148", + "70": "174", + "80": "200", + "90": "225" + }, + "def": { + "1": "57", + "20": "147", + "40": "285", + "50": "363", + "60": "451", + "70": "528", + "80": "606", + "90": "684" + }, + "attribute": "风元素伤害加成", + "attributes": { + "1": "0%", + "20": "0%", + "40": "0%", + "50": "6%", + "60": "12%", + "70": "12%", + "80": "18%", + "90": "24%" + } + }, + "skill": { + "普通攻击·不动流格斗术": { + "描述": "普通攻击·不动流格斗术\n以强风加持的招式与敌人格斗,进行至多五段的攻击,造成风元素伤害。\n重击\n消耗一定体力,使出扬尘踢,造成风元素伤害。\n下落攻击\n\n凝聚强风的力量,从空中下坠冲击地面,攻击下落路径上的敌人,并在落地时造成风元素范围伤害。", + "数值": { + "一段伤害": [ + "37.5%", + "40.3%", + "43.1%", + "46.8%", + "49.7%", + "52.5%", + "56.2%", + "60.0%", + "63.7%", + "67.5%", + "71.2%", + "", + "", + "", + "" + ], + "二段伤害": [ + "36.9%", + "39.6%", + "42.4%", + "46.1%", + "48.8%", + "51.6%", + "55.3%", + "59.0%", + "62.7%", + "66.3%", + "70.0%", + "", + "", + "", + "" + ], + "三段伤害": [ + "51.1%", + "54.9%", + "58.7%", + "63.8%", + "67.7%", + "71.5%", + "76.6%", + "81.7%", + "86.8%", + "91.9%", + "97.0%", + "", + "", + "", + "" + ], + "四段伤害": [ + "14.8%+16.3%+19.2%", + "15.9%+17.5%+20.7%", + "17.0%+18.7%+22.1%", + "18.5%+20.3%+24.0%", + "19.6%+21.6%+25.5%", + "20.7%+22.8%+26.9%", + "22.2%+24.4%+28.8%", + "23.7%+26.0%+30.8%", + "25.1%+27.6%+32.7%", + "26.6%+29.3%+34.6%", + "28.1%+30.9%+36.5%", + "", + "", + "", + "" + ], + "五段伤害": [ + "61.5%", + "66.1%", + "70.7%", + "76.8%", + "81.4%", + "86.0%", + "92.2%", + "98.3%", + "104.5%", + "110.6%", + "116.8%", + "", + "", + "", + "" + ], + "重击伤害": [ + "73%", + "78%", + "84%", + "91%", + "96%", + "102%", + "110%", + "117%", + "124%", + "131%", + "139%", + "", + "", + "", + "" + ], + "重击体力消耗": [ + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "25.0点", + "", + "", + "", + "" + ], + "下坠期间伤害": [ + "56.8%", + "61.5%", + "66.1%", + "72.7%", + "77.3%", + "82.6%", + "89.9%", + "97.1%", + "104.4%", + "112.3%", + "120.3%", + "", + "", + "", + "" + ], + "低空/高空坠地冲击伤害": [ + "114%/142%", + "123%/153%", + "132%/165%", + "145%/182%", + "155%/193%", + "165%/206%", + "180%/224%", + "194%/243%", + "209%/261%", + "225%/281%", + "241%/300%", + "", + "", + "", + "" + ] + } + }, + "勠心拳": { + "描述": "点按\n驱使疾风,向前打出勠心拳,造成风元素伤害。\n长按\n积蓄力量,以施展更为强大的拳势。蓄力期间,将持续获得能提升勠心拳威力的「变格」效果;松开技能或蓄力结束时,会向前打出勠心拳,造成风元素伤害。\n变格\n提升下一次勠心拳造成的伤害,至多叠加4层。拥有4层「变格」时,将产生「正论」效果,使下一次勠心拳造成的伤害将进一步提高,并拥有更大的影响范围。\n\n看似只是简单的蓄力冲拳,但是包含了平藏想要令罪人们乖乖认罪忏悔的心意。", + "数值": { + "技能伤害": [ + "227.5%", + "224.6%", + "261.7%", + "284.4%", + "301.5%", + "318.5%", + "341.3%", + "364.0%", + "386.8%", + "409.5%", + "432.3%", + "455.0%", + "483.5%", + "", + "" + ], + "变格伤害提升": [ + "56.9%/层", + "61.2%/层", + "65.4%/层", + "71.1%/层", + "75.4%/层", + "79.6%/层", + "85.3%/层", + "91.0%/层", + "96.7%/层", + "102.4%/层", + "108.1%/层", + "113.8%/层", + "120.9%/层", + "", + "" + ], + "正论伤害提升": [ + "113.8%", + "122.3%", + "130.8%", + "142.2%", + "150.7%", + "159.3%", + "170.6%", + "182.0%", + "193.4%", + "204.8%", + "216.1%", + "227.5%", + "241.7%", + "", + "" + ], + "变格持续时间": [ + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒", + "60.0秒" + ], + "冷却时间": [ + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒", + "10.0秒" + ] + } + }, + "聚风蹴": { + "描述": "腾跃至空中,向敌人踢出不动流·真空弹,在命中时炸裂,产生缉拿风穴,牵引附近的物体与敌人,造成风元素范围伤害。\n不动流·真空弹命中处于水元素/火元素/冰元素/雷元素附着下的敌人时,会为这些敌人施加「聚风真眼」效果,该效果会在片刻后爆发消失,并造成对应元素属性的范围伤害。\n不动流·真空弹至多对4名命中的敌人施加「聚风真眼」;敌人无法同时处于多种元素属性的「聚风真眼」状态下。\n\n将风元素聚集一处并踢出的独特招式,往往能在罪人暴露、四处逃窜之时,稳当踢中其后背。", + "数值": { + "不动流·真空弹伤害": [ + "314.7%", + "338.3%", + "361.9%", + "393.4%", + "417.0%", + "440.6%", + "472.0%", + "503.5%", + "535.0%", + "566.4%", + "597.9%", + "629.4%", + "668.7%", + "", + "" + ], + "聚风真眼伤害": [ + "21.5%", + "23.1%", + "24.7%", + "26.8%", + "28.4%", + "30.0%", + "32.2%", + "34.3%", + "36.5%", + "38.6%", + "40.8%", + "42.9%", + "45.6%", + "", + "" + ], + "冷却时间": [ + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒", + "12.0秒" + ], + "元素能量": [ + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40", + "40" + ] + } + }, + "反论稽古": "鹿野院平藏在场上触发扩散反应时,将获得1层勠心拳的「变格」效果,该效果每0.1秒至多触发一次。", + "因由勘破": "勠心拳命中敌人后,队伍中所有角色(不包括鹿野院平藏自己)的元素精通提升80点,持续10秒。", + "在罪之先": "队伍中自己的角色冲刺消耗的体力降低20%。无法与效果完全相同的固有天赋叠加。" + }, + "cv": { + "cn": "林景", + "jp": "井口祐一", + "kr": "郑义陈", + "en": "凯伊冉·里根" + }, + "food": "料理未知", + "story": [ + "", + "", + "", + "", + "", + "", + "", + "" + ] } } \ No newline at end of file diff --git a/utils/json_data/score.json b/utils/json_data/score.json index 0e535e0..2b41d8e 100644 --- a/utils/json_data/score.json +++ b/utils/json_data/score.json @@ -519,6 +519,14 @@ "元素精通": 1, "元素充能效率": 1 } + }, + "鹿野院平藏": { + "常规": { + "暴击率": 1, + "暴击伤害": 1, + "攻击力": 1, + "元素精通": 1 + } } }, "Talent": { @@ -729,6 +737,10 @@ "久岐忍": [ 1, 2 + ], + "鹿野院平藏": [ + 1, + 2 ] } } \ No newline at end of file diff --git a/utils/json_data/short_name.json b/utils/json_data/short_name.json index 694baf8..2544dab 100644 --- a/utils/json_data/short_name.json +++ b/utils/json_data/short_name.json @@ -79,5 +79,6 @@ "磐岩结绿": "绿剑", "护摩之杖": "护摩", "波乱月白经津": "波乱", - "若水": "若水" + "若水": "若水", + "鹿野院平藏": "平藏" } \ No newline at end of file diff --git a/utils/json_data/upheaval.json b/utils/json_data/upheaval.json new file mode 100644 index 0000000..3fec45d --- /dev/null +++ b/utils/json_data/upheaval.json @@ -0,0 +1,92 @@ +[ + 9, + 9, + 10, + 11, + 11, + 12, + 13, + 14, + 16, + 17, + 19, + 20, + 22, + 24, + 27, + 30, + 32, + 35, + 38, + 40, + 43, + 46, + 49, + 51, + 54, + 57, + 59, + 61, + 65, + 68, + 71, + 75, + 78, + 81, + 85, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 117, + 122, + 128, + 134, + 141, + 148, + 155, + 162, + 168, + 175, + 182, + 189, + 199, + 208, + 217, + 226, + 236, + 246, + 257, + 270, + 283, + 296, + 312, + 326, + 340, + 354, + 368, + 383, + 397, + 412, + 426, + 439, + 457, + 473, + 490, + 506, + 522, + 539, + 555, + 571, + 588, + 605, + 627, + 644, + 663, + 682, + 703, + 723 +] \ No newline at end of file