完成托帕&胀胀伤害计算

This commit is contained in:
a376148946 2023-09-24 13:23:57 +08:00 committed by qwerdvd
parent ca138cf1d1
commit 18bf9594f4
7 changed files with 145 additions and 0 deletions

View File

@ -31,6 +31,7 @@ async def cal(char_data: Dict):
1003,
1201,
1212,
1112,
]:
if char.char_id == 1213:
for skill_type in [
@ -48,6 +49,11 @@ async def cal(char_data: Dict):
role = RoleInstance(char)
im_tmp = await role.cal_damage(skill_type)
skill_info_list.append(im_tmp)
elif char.char_id == 1112:
for skill_type in ['Normal', 'BPSkill', 'Talent1']:
role = RoleInstance(char)
im_tmp = await role.cal_damage(skill_type)
skill_info_list.append(im_tmp)
elif char.char_id == 1212:
for skill_type in ['Normal', 'BPSkill', 'BPSkill1', 'Ultra']:
role = RoleInstance(char)

View File

@ -106,6 +106,7 @@ async def draw_char_img(char_data: Dict, sr_uid: str, msg: str):
1003,
1201,
1212,
1112,
]:
skill_list = skill_dict[str(char.char_id)]['skillList']
damage_len = len(skill_list)

View File

@ -424,12 +424,43 @@ class Jingliu(BaseAvatar):
'UltraAttackAddedRatio'
] = attack_added_ratio
class Topaz(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):
if self.avatar_rank >= 1:
self.eidolon_attribute['Talent_CriticalDamageBase'] = 0.5
if self.avatar_rank >= 6:
self.eidolon_attribute['Talent1_FireResistancePenetration'] = 0.1
def extra_ability(self):
logger.info('额外能力')
logger.info('托帕和账账对拥有火属性弱点的敌方目标造成的伤害提高15%')
self.extra_ability_attribute['AllDamageAddedRatio'] = 0.15
logger.info('涨幅惊人暴击伤害提高')
self.extra_ability_attribute['Talent1_CriticalDamageBase'] = self.Ultra_num('Ultra_CD')
logger.info('【负债证明】状态,使其受到的追加攻击伤害提高')
self.extra_ability_attribute['TalentDmgAdd'] = self.BPSkill_num('BPSkill_add')
class Avatar:
@classmethod
def create(
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
):
if char.id_ == 1112:
return Topaz(char, skills)
if char.id_ == 1212:
return Jingliu(char, skills)
if char.id_ == 1201:

View File

@ -607,5 +607,47 @@
"BPSkill1": ["attack", "寒川映月", 1, "BPSkill1"],
"Ultra": ["attack", "终结技", 1, "Ultra"]
}
},
"1112": {
"Normal": [
0.5000000004656613, 0.6000000005587935, 0.7000000006519258,
0.8000000007450581, 0.9000000008381903, 1.0000000000931323,
1.1000000001862645, 1.2000000002793968, 1.3000000002793968
],
"BPSkill": [
0.7500000005122274, 0.8250000006705523, 0.900000000828877,
0.975000000558794, 1.050000000214204, 1.125000000372529,
1.218750000745058, 1.312500000419095, 1.406250000860302,
1.500000000232831, 1.575000000391155, 1.65000000054948,
1.725000000707805, 1.80000000086613, 1.87500000093132
],
"BPSkill_add": [
0.2500000005122274, 0.2750000006705523, 0.300000000828877,
0.325000000558794, 0.350000000214204, 0.375000000372529,
0.406250000745058, 0.437500000419095, 0.468750000860302,
0.500000000232831, 0.5250000003911555, 0.55000000054948,
0.575000000707805, 0.60000000086613, 0.62500000093132
],
"Talent1": [
0.7500000005122274, 0.8250000006705523, 0.900000000828877,
0.975000000558794, 1.050000000214204, 1.125000000372529,
1.218750000745058, 1.312500000419095, 1.406250000860302,
1.500000000232831, 1.575000000391155, 1.65000000054948,
1.725000000707805, 1.80000000086613, 1.87500000093132
],
"Ultra_CD": [
0.1250000005122274, 0.13750000006705523, 0.150000000828877,
0.162500000558794, 0.175000000214204, 0.187500000372529,
0.203125000745058, 0.218750000419095, 0.234375000860302,
0.250000000232831, 0.262500000391155, 0.27500000054948,
0.287500000707805, 0.30000000086613, 0.31250000093132
],
"Maze": [20],
"Ultra_Use": [140],
"skillList": {
"Normal": ["attack", "普攻", 1, "Talent"],
"BPSkill": ["attack", "账账", 1, "Talent"],
"Talent1": ["attack", "强化账账", 1, "Talent1"]
}
}
}

View File

@ -653,6 +653,24 @@
0.60000000022351742
]
}
},
"23016": {
"Param": {
"CriticalDamageBase": [
0.12000000011175871,
0.14000000013038516,
0.1600000001490116,
0.18000000016763806,
0.20000000018626451
],
"TalentDmgAdd": [
0.30000000011175871,
0.3500000001396984,
0.40000000016763806,
0.45000000019557774,
0.50000000022351742
]
}
},
"21031": {
"enable": false

View File

@ -165,6 +165,9 @@ class RoleInstance:
elif self.raw_data.avatar.id_ == 1212:
skill_multiplier = self.avatar.BPSkill_num(skill_type)
skill_type = 'BPSkill'
elif self.raw_data.avatar.id_ == 1112:
skill_multiplier = self.avatar.Ultra_num(skill_type) + self.avatar.BPSkill()
skill_type = 'Talent'
else:
raise Exception('skill type error')
@ -314,6 +317,14 @@ class RoleInstance:
resistance_area = resistance_area - (
0 - Normal_Penetration
)
if self.raw_data.avatar.id_ == 1112:
if skill_info[3] == 'Talent1':
Talent1_Penetration = merged_attr.get(
'Talent1_FireResistancePenetration', 0
)
resistance_area = resistance_area - (
0 - Talent1_Penetration
)
logger.info(f'抗性区: {resistance_area}')
# 防御区

View File

@ -1686,6 +1686,39 @@ class SleepLiketheDead(BaseWeapon):
)
return attribute_bonus
# 烦恼着,幸福着
class WorrisomeBlissf(BaseWeapon):
weapon_base_attributes: Dict
def __init__(self, weapon: DamageInstanceWeapon):
super().__init__(weapon)
async def check(self):
# 装备者施放追加攻击后使目标陷入【温驯】状态该效果最多叠加2层。我方目标击中【温驯】状态下的敌方目标时每层【温驯】使造成的暴击伤害提高12%
return True
async def weapon_ability(
self,
Ultra_Use: float,
base_attr: Dict[str, float],
attribute_bonus: Dict[str, float],
):
critical_chance_base = attribute_bonus.get('TalentDmgAdd', 0)
attribute_bonus['TalentDmgAdd'] = (
critical_chance_base
+ weapon_effect['23016']['Param']['TalentDmgAdd'][
self.weapon_rank - 1
]
)
if await self.check():
critical_chance_base = attribute_bonus.get('CriticalDamageBase', 0)
attribute_bonus['CriticalDamageBase'] = (
critical_chance_base
+ weapon_effect['23016']['Param']['CriticalDamageBase'][
self.weapon_rank - 1
]
) * 2
return attribute_bonus
class Weapon:
@classmethod
@ -1749,7 +1782,10 @@ class Weapon:
20013,
20006,
23014,
23016,
]:
if weapon.id_ == 23016:
return WorrisomeBlissf(weapon)
if weapon.id_ == 23012:
return SleepLiketheDead(weapon)
if weapon.id_ == 23014: