修复托帕伤害计算错误,添加部分角色计算

This commit is contained in:
a376148946 2023-10-27 13:24:08 +08:00
parent 6aabc82254
commit b89b32ad87
3 changed files with 181 additions and 6 deletions

View File

@ -848,6 +848,40 @@ class Clara(BaseAvatar):
damagelist4[2] += damage3
skill_info_list.append({'name': '强化反击', 'damagelist': damagelist4})
# 计算1+1托帕反击伤害
skill_multiplier = self.Skill_num('Talent', 'Talent')
add_attr_bonus = copy.deepcopy(attribute_bonus)
add_attr_bonus['Talent_DmgRatio'] = add_attr_bonus.get('Talent_DmgRatio', 0) + 0.5
add_attr_bonus['Talent_CriticalDamageBase'] = add_attr_bonus.get('Talent_CriticalDamageBase', 0) + 0.74
damagelist5 = await calculate_damage(
base_attr,
add_attr_bonus,
'Talent',
'Talent',
self.avatar_element,
skill_multiplier,
self.avatar_level,
)
damagelist5[2] += damage3
skill_info_list.append({'name': '(1+1托帕)反击', 'damagelist': damagelist5})
# 计算反击伤害
skill_multiplier = self.Skill_num('Talent', 'Talent') + self.Skill_num('Ultra', 'Talent1')
add_attr_bonus = copy.deepcopy(attribute_bonus)
add_attr_bonus['Talent_DmgRatio'] = add_attr_bonus.get('Talent_DmgRatio', 0) + 0.5
add_attr_bonus['Talent_CriticalDamageBase'] = add_attr_bonus.get('Talent_CriticalDamageBase', 0) + 0.74
damagelist6 = await calculate_damage(
base_attr,
add_attr_bonus,
'Talent',
'Talent',
self.avatar_element,
skill_multiplier,
self.avatar_level,
)
damagelist6[2] += damage3
skill_info_list.append({'name': '(1+1托帕)强化反击', 'damagelist': damagelist6})
return skill_info_list
class Silverwolf(BaseAvatar):
@ -1761,7 +1795,7 @@ class Topaz(BaseAvatar):
'Talent1_CriticalDamageBase'
] = self.Skill_num('Ultra', 'Ultra_CD')
logger.info('【负债证明】状态,使其受到的追加攻击伤害提高')
self.extra_ability_attribute['TalentDmgAdd'] = self.Skill_num(
self.extra_ability_attribute['Talent_DmgRatio'] = self.Skill_num(
'BPSkill', 'BPSkill_add'
)
@ -2462,11 +2496,121 @@ class Natasha(BaseAvatar):
return skill_info_list
class Mar7th(BaseAvatar):
Buff: BaseAvatarBuff
def __init__(
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
super().__init__(char=char, skills=skills)
self.eidolon_attribute: Dict[str, float] = {}
self.extra_ability_attribute: Dict[str, float] = {}
self.eidolons()
self.extra_ability()
def Technique(self):
pass
def eidolons(self):
pass
def extra_ability(self):
pass
async def getdamage(
self,
base_attr: Dict[str, float],
attribute_bonus: Dict[str, float],
):
damage1, damage2, damage3 = await calculate_damage(
base_attr,
attribute_bonus,
'fujia',
'fujia',
'Thunder',
0.44,
self.avatar_level,
)
skill_info_list = []
# 计算普攻伤害
skill_multiplier = self.Skill_num('Normal', 'Normal')
damagelist1 = await calculate_damage(
base_attr,
attribute_bonus,
'Normal',
'Normal',
self.avatar_element,
skill_multiplier,
self.avatar_level,
)
damagelist1[2] += damage3
skill_info_list.append({'name': '普攻', 'damagelist': damagelist1})
# 计算战技护盾
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill')
skill_num = self.Skill_num('BPSkill', 'BPSkill_G')
damagelist2 = await calculate_shield(
base_attr,
attribute_bonus,
skill_multiplier,
skill_num,
)
skill_info_list.append({'name': '战技护盾量', 'damagelist': damagelist2})
# 计算终结技
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
damagelist3 = await calculate_damage(
base_attr,
attribute_bonus,
'Ultra',
'Ultra',
self.avatar_element,
skill_multiplier,
self.avatar_level,
)
damagelist3[2] += damage3
skill_info_list.append({'name': '终结技', 'damagelist': damagelist3})
# 计算追加攻击
skill_multiplier = self.Skill_num('Talent', 'Talent')
damagelist4 = await calculate_damage(
base_attr,
attribute_bonus,
'Talent',
'Talent',
self.avatar_element,
skill_multiplier,
self.avatar_level,
)
damagelist4[2] += damage3
if self.avatar_rank >= 4:
defence = base_attr['defence'] * (1 + attribute_bonus['DefenceAddedRatio']) + attribute_bonus['DefenceDelta']
damage_add = defence * 0.3
damagelist4[0] += damage_add
damagelist4[1] += damage_add
damagelist4[2] += damage_add
skill_info_list.append({'name': '追加攻击', 'damagelist': damagelist4})
# 计算2命护盾
if self.avatar_rank >= 2:
damagelist5 = await calculate_shield(
base_attr,
attribute_bonus,
0.24,
320,
)
skill_info_list.append({'name': '开场护盾(2命)', 'damagelist': damagelist5})
return skill_info_list
class AvatarDamage:
@classmethod
def create(
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
if char.id_ == 1001:
return Mar7th(char, skills)
if char.id_ == 1105:
return Natasha(char, skills)
if char.id_ == 1110:

View File

@ -798,5 +798,36 @@
],
"Maze": [20],
"Ultra_Use": [100]
},
"1001": {
"Normal": [
0.5000000004656613, 0.6000000005587935, 0.7000000006519258,
0.8000000007450581, 0.9000000008381903, 1.0000000000931323,
1.1000000000931323, 1.2000000001862645, 1.3000000002793968
],
"BPSkill": [
0.3800000003539026, 0.40375000098720193, 0.4275000002235174,
0.45125000085681677, 0.47500000009313226, 0.4940000001806766,
0.5130000002682209, 0.5320000003557652, 0.5510000004433095,
0.5700000005308539, 0.5889999999199063, 0.6080000000074506,
0.6270000000949949, 0.6460000001825392, 0.6650000002700835
],
"BPSkill_G": [190, 304, 389, 475, 532, 589, 631, 674, 717, 760, 803, 845, 888, 931, 973],
"Ultra": [
0.9000000008381903, 0.9600000008940697, 1.0200000000186265,
1.0800000000745058, 1.1400000001303852, 1.2000000001862645,
1.2749999999068677, 1.350000000325963, 1.4250000000465661,
1.5000000004656613, 1.5600000005215406, 1.62000000057742,
1.6800000006332994, 1.7400000006891787, 1.800000000745058
],
"Talent": [
0.5000000004656613, 0.5500000005122274, 0.6000000005587935,
0.6500000006053597, 0.7000000006519258, 0.7500000006984919,
0.8125000009313226, 0.8750000004656613, 0.9375000006984919,
1, 1.0500000000465661, 1.1000000000931323,
1.1500000001396984, 1.2000000001862645, 1.2500000002328306
],
"Maze": [20],
"Ultra_Use": [100]
}
}

View File

@ -581,19 +581,19 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
relic_img, RELIC_POS[str(relic['Type'])], relic_img
)
relic_score += single_relic_score
if relic_score > 230:
if relic_score > 210:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconSSS.png')
char_info.paste(relic_value_level, (825, 963), relic_value_level)
elif relic_score > 210:
elif relic_score > 190:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconSS.png')
char_info.paste(relic_value_level, (825, 963), relic_value_level)
elif relic_score > 180:
elif relic_score > 160:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconS.png')
char_info.paste(relic_value_level, (825, 963), relic_value_level)
elif relic_score > 150:
elif relic_score > 130:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconA.png')
char_info.paste(relic_value_level, (825, 963), relic_value_level)
elif relic_score > 100:
elif relic_score > 80:
relic_value_level = Image.open(TEXT_PATH / 'CommonIconB.png')
char_info.paste(relic_value_level, (825, 963), relic_value_level)
elif relic_score > 0: