mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-05 03:03:45 +08:00
完成托帕&胀胀伤害计算
This commit is contained in:
parent
ca138cf1d1
commit
18bf9594f4
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
@ -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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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}')
|
||||
|
||||
# 防御区
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user