mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-06 11:43:44 +08:00
完成老杨姬子青雀伤害计算 (#73)
* 完成老杨姬子青雀伤害计算
* 🚨 `pre-commit-ci`修复格式错误
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
94ce5f64a1
commit
331f828a46
@ -100,6 +100,9 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
||||
1208,
|
||||
1104,
|
||||
1209,
|
||||
1004,
|
||||
1003,
|
||||
1201,
|
||||
]:
|
||||
skill_list = skill_dict[str(char.char_id)]['skilllist']
|
||||
damage_len = len(skill_list)
|
||||
@ -749,6 +752,9 @@ async def cal(char_data: Dict):
|
||||
1208,
|
||||
1104,
|
||||
1209,
|
||||
1004,
|
||||
1003,
|
||||
1201,
|
||||
]:
|
||||
if char.char_id == 1213:
|
||||
for skill_type in [
|
||||
@ -771,7 +777,7 @@ 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 == 1205:
|
||||
elif char.char_id in [1205, 1201]:
|
||||
for skill_type in ['Normal', 'Normal1', 'Ultra']:
|
||||
role = RoleInstance(char)
|
||||
im_tmp = await role.cal_damage(skill_type)
|
||||
@ -781,7 +787,7 @@ async def cal(char_data: Dict):
|
||||
role = RoleInstance(char)
|
||||
im_tmp = await role.cal_damage(skill_type)
|
||||
skill_info_list.append(im_tmp)
|
||||
if char.char_id in [1204, 1107, 1005, 1205, 1209]:
|
||||
if char.char_id in [1204, 1107, 1005, 1205, 1209, 1003]:
|
||||
role = RoleInstance(char)
|
||||
im_tmp = await role.cal_damage('Talent')
|
||||
skill_info_list.append(im_tmp)
|
||||
|
@ -207,7 +207,7 @@ class Blade(BaseAvatar):
|
||||
self.eidolon_attribute['CriticalChanceBase'] = mp.mpf(0.15)
|
||||
|
||||
if self.avatar_rank >= 4:
|
||||
self.extra_ability_attribute['HPAddedRatio'] = mp.mpf(0.4)
|
||||
self.eidolon_attribute['HPAddedRatio'] = mp.mpf(0.4)
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
@ -295,11 +295,103 @@ class Yanqing(BaseAvatar):
|
||||
] = critical_chance_base + mp.mpf(0.6)
|
||||
|
||||
|
||||
class Welt(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
):
|
||||
super().__init__(char=char, skills=skills)
|
||||
self.eidolon_attribute = {}
|
||||
self.extra_ability_attribute = {}
|
||||
self.eidolons()
|
||||
self.extra_ability()
|
||||
|
||||
def Technique(self):
|
||||
pass
|
||||
|
||||
def eidolons(self):
|
||||
pass
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('施放终结技时,有100%基础概率使目标受到的伤害提高12%,持续2回合。')
|
||||
logger.info('对被弱点击破的敌方目标造成的伤害提高20')
|
||||
self.extra_ability_attribute['AllDamageAddedRatio'] = mp.mpf(0.32)
|
||||
|
||||
|
||||
class Himeko(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
):
|
||||
super().__init__(char=char, skills=skills)
|
||||
self.eidolon_attribute = {}
|
||||
self.extra_ability_attribute = {}
|
||||
self.eidolons()
|
||||
self.extra_ability()
|
||||
|
||||
def Technique(self):
|
||||
pass
|
||||
|
||||
def eidolons(self):
|
||||
if self.avatar_rank >= 1:
|
||||
self.eidolon_attribute['SpeedAddedRatio'] = mp.mpf(0.1)
|
||||
if self.avatar_rank >= 2:
|
||||
self.eidolon_attribute['AllDamageAddedRatio'] = mp.mpf(0.15)
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('战技对灼烧状态下的敌方目标造成的伤害提高20%。')
|
||||
self.extra_ability_attribute['BPSkillDmgAdd'] = mp.mpf(0.2)
|
||||
logger.info('若当前生命值百分比大于等于80%,则暴击率提高15%。')
|
||||
self.extra_ability_attribute['CriticalChanceBase'] = mp.mpf(0.15)
|
||||
|
||||
|
||||
class Qingque(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
):
|
||||
super().__init__(char=char, skills=skills)
|
||||
self.eidolon_attribute = {}
|
||||
self.extra_ability_attribute = {}
|
||||
self.eidolons()
|
||||
self.extra_ability()
|
||||
|
||||
def Technique(self):
|
||||
pass
|
||||
|
||||
def eidolons(self):
|
||||
if self.avatar_rank >= 1:
|
||||
self.eidolon_attribute['UltraDmgAdd'] = mp.mpf(0.1)
|
||||
|
||||
def extra_ability(self):
|
||||
logger.info('额外能力')
|
||||
logger.info('施放强化普攻后,青雀的速度提高10%,持续1回合。')
|
||||
self.extra_ability_attribute['SpeedAddedRatio'] = mp.mpf(0.1)
|
||||
logger.info('默认4层战技加伤害')
|
||||
all_damage_added_ratio = self.BPSkill() + mp.mpf(0.1)
|
||||
self.extra_ability_attribute['AllDamageAddedRatio'] = (
|
||||
all_damage_added_ratio * 4
|
||||
)
|
||||
logger.info('默认暗杠加攻')
|
||||
self.extra_ability_attribute['AttackAddedRatio'] = self.Talent()
|
||||
|
||||
|
||||
class Avatar:
|
||||
@classmethod
|
||||
def create(
|
||||
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
):
|
||||
if char.id_ == 1201:
|
||||
return Qingque(char, skills)
|
||||
if char.id_ == 1003:
|
||||
return Himeko(char, skills)
|
||||
if char.id_ == 1004:
|
||||
return Welt(char, skills)
|
||||
if char.id_ == 1209:
|
||||
return Yanqing(char, skills)
|
||||
if char.id_ == 1104:
|
||||
|
@ -989,5 +989,239 @@
|
||||
"Ultra": ["attack","终结技", 1],
|
||||
"Talent": ["attack","附加伤害", 1]
|
||||
}
|
||||
},
|
||||
"1004": {
|
||||
"Normal": [
|
||||
0.5000000004656613,
|
||||
0.6000000005587935,
|
||||
0.7000000006519258,
|
||||
0.8000000007450581,
|
||||
0.9000000008381903,
|
||||
1.0000000000931323,
|
||||
1.1000000001862645,
|
||||
1.2000000002793968
|
||||
],
|
||||
"BPSkill": [
|
||||
1.0800000000931323,
|
||||
1.1880000001955777,
|
||||
1.2960000002980232,
|
||||
1.4040000004004687,
|
||||
1.5120000005029142,
|
||||
1.6200000006053597,
|
||||
1.7550000005587935,
|
||||
1.8900000005122274,
|
||||
2.0550000002328306,
|
||||
2.1600000001862645,
|
||||
2.26800000028871,
|
||||
2.3760000003911555,
|
||||
2.484000000493601,
|
||||
2.5920000005960464,
|
||||
2.700000000698492
|
||||
],
|
||||
"Ultra": [
|
||||
0.9000000005122274,
|
||||
0.9600000006705523,
|
||||
1.020000000828877,
|
||||
1.0800000000558794,
|
||||
1.140000000214204,
|
||||
1.200000000372529,
|
||||
1.275000000745058,
|
||||
1.350000000419095,
|
||||
1.424999999860302,
|
||||
1.500000000232831,
|
||||
1.5600000003911555,
|
||||
1.62000000054948,
|
||||
1.680000000707805,
|
||||
1.74000000086613,
|
||||
1.800000000093132
|
||||
],
|
||||
"Talent": [
|
||||
0.30000000037252903,
|
||||
0.33000000040978193,
|
||||
0.36000000044703484,
|
||||
0.3900000004842877,
|
||||
0.4200000005215406,
|
||||
0.4500000005587935,
|
||||
0.4875000006053597,
|
||||
0.525000006519258,
|
||||
0.5625000006984919,
|
||||
0.6000000007450581,
|
||||
0.63000000782311,
|
||||
0.6600000008195639,
|
||||
0.6900000008568168,
|
||||
0.7200000008940697,
|
||||
0.7500000008940697
|
||||
],
|
||||
"Maze": [
|
||||
20
|
||||
],
|
||||
"Ultra_Use": [
|
||||
120
|
||||
],
|
||||
"skilllist": {
|
||||
"Normal": ["attack","普攻", 1],
|
||||
"BPSkill": ["attack","战技", 3],
|
||||
"Ultra": ["attack","终结技", 1]
|
||||
}
|
||||
},
|
||||
"1003": {
|
||||
"Normal": [
|
||||
0.5000000004656613,
|
||||
0.6000000005587935,
|
||||
0.7000000006519258,
|
||||
0.8000000007450581,
|
||||
0.9000000008381903,
|
||||
1.0000000000931323,
|
||||
1.1000000001862645,
|
||||
1.2000000002793968
|
||||
],
|
||||
"BPSkill": [
|
||||
1.0000000000931323,
|
||||
1.1000000001955777,
|
||||
1.2000000002980232,
|
||||
1.3000000004004687,
|
||||
1.4000000005029142,
|
||||
1.5000000006053597,
|
||||
1.6250000005587935,
|
||||
1.7500000005122274,
|
||||
1.8750000002328306,
|
||||
2.0000000001862645,
|
||||
2.10000000028871,
|
||||
2.2000000003911555,
|
||||
2.300000000493601,
|
||||
2.4000000005960464,
|
||||
2.500000000698492
|
||||
],
|
||||
"Ultra": [
|
||||
1.3800000005122274,
|
||||
1.4720000006705523,
|
||||
1.564000000828877,
|
||||
1.6560000000558794,
|
||||
1.748000000214204,
|
||||
1.840000000372529,
|
||||
1.955000000745058,
|
||||
2.070000000419095,
|
||||
2.185000000860302,
|
||||
2.300000000232831,
|
||||
2.3920000003911555,
|
||||
2.48400000054948,
|
||||
2.596000000707805,
|
||||
2.66800000086613,
|
||||
2.76000000093132
|
||||
],
|
||||
"Talent": [
|
||||
0.70000000037252903,
|
||||
0.77000000040978193,
|
||||
0.84000000044703484,
|
||||
0.9100000004842877,
|
||||
0.9800000005215406,
|
||||
1.0500000005587935,
|
||||
1.1375000006053597,
|
||||
1.225000006519258,
|
||||
1.312500006984919,
|
||||
1.4000000007450581,
|
||||
1.47000000782311,
|
||||
1.5400000008195639,
|
||||
1.6100000008568168,
|
||||
1.6800000008940697,
|
||||
1.7500000008940697
|
||||
],
|
||||
"Maze": [
|
||||
20
|
||||
],
|
||||
"Ultra_Use": [
|
||||
120
|
||||
],
|
||||
"skilllist": {
|
||||
"Normal": ["attack","普攻", 1],
|
||||
"BPSkill": ["attack","战技", 3],
|
||||
"Ultra": ["attack","终结技", 1],
|
||||
"Talent": ["attack","追加攻击", 1]
|
||||
}
|
||||
},
|
||||
"1201": {
|
||||
"Normal": [
|
||||
0.5000000004656613,
|
||||
0.6000000005587935,
|
||||
0.7000000006519258,
|
||||
0.8000000007450581,
|
||||
0.9000000008381903,
|
||||
1.0000000000931323,
|
||||
1.1000000001862645,
|
||||
1.2000000002793968
|
||||
],
|
||||
"Normal1": [
|
||||
1.2000000000931323,
|
||||
1.4400000001955777,
|
||||
1.6800000002980232,
|
||||
1.9200000004004687,
|
||||
2.1600000005029142,
|
||||
2.4000000006053597,
|
||||
2.6450000005587935,
|
||||
2.8800000005122274,
|
||||
3.1200000002328306
|
||||
],
|
||||
"BPSkill": [
|
||||
0.14000000037252903,
|
||||
0.15400000040978193,
|
||||
0.16800000044703484,
|
||||
0.1820000004842877,
|
||||
0.1960000005215406,
|
||||
0.2100000005587935,
|
||||
0.2275000006053597,
|
||||
0.2450000006519258,
|
||||
0.2625000006984919,
|
||||
0.2800000007450581,
|
||||
0.294000000782311,
|
||||
0.3080000008195639,
|
||||
0.3220000008568168,
|
||||
0.3360000008940697,
|
||||
0.3500000008940697
|
||||
],
|
||||
"Ultra": [
|
||||
1.2000000005122274,
|
||||
1.2800000006705523,
|
||||
1.360000000828877,
|
||||
1.440000000558794,
|
||||
1.520000000214204,
|
||||
1.600000000372529,
|
||||
1.700000000745058,
|
||||
1.800000000419095,
|
||||
1.900000000860302,
|
||||
2.000000000232831,
|
||||
2.0800000003911555,
|
||||
2.16000000054948,
|
||||
2.240000000707805,
|
||||
2.32000000086613,
|
||||
2.40000000093132
|
||||
],
|
||||
"Talent": [
|
||||
0.36000000037252903,
|
||||
0.39600000040978193,
|
||||
0.43200000044703484,
|
||||
0.4680000004842877,
|
||||
0.5040000005215406,
|
||||
0.5400000005587935,
|
||||
0.5850000006053597,
|
||||
0.6300000006519258,
|
||||
0.6750000006984919,
|
||||
0.7200000007450581,
|
||||
0.756000000782311,
|
||||
0.7920000008195639,
|
||||
0.8280000008568168,
|
||||
0.8640000008940697,
|
||||
0.9000000008940697
|
||||
],
|
||||
"Maze": [
|
||||
20
|
||||
],
|
||||
"Ultra_Use": [
|
||||
140
|
||||
],
|
||||
"skilllist": {
|
||||
"Normal": ["attack","普攻", 1],
|
||||
"Normal1": ["attack","杠上开花!", 1],
|
||||
"Ultra": ["attack","终结技", 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -133,8 +133,18 @@ class RoleInstance:
|
||||
skill_info = self.avatar.Skill_Info(skill_type)
|
||||
if skill_type == 'Normal':
|
||||
skill_multiplier = self.avatar.Normal()
|
||||
if (
|
||||
self.raw_data.avatar.id_ == 1004
|
||||
and self.raw_data.avatar.rank >= 1
|
||||
):
|
||||
skill_multiplier = skill_multiplier + (skill_multiplier * 0.5)
|
||||
elif skill_type == 'BPSkill':
|
||||
skill_multiplier = self.avatar.BPSkill()
|
||||
if (
|
||||
self.raw_data.avatar.id_ == 1004
|
||||
and self.raw_data.avatar.rank >= 1
|
||||
):
|
||||
skill_multiplier = skill_multiplier + (skill_multiplier * 0.8)
|
||||
elif skill_type == 'Ultra':
|
||||
if self.raw_data.avatar.id_ == 1107:
|
||||
skill_multiplier = self.avatar.Talent() + self.avatar.Ultra()
|
||||
@ -153,7 +163,7 @@ class RoleInstance:
|
||||
else:
|
||||
skill_multiplier = skill_multiplier + 0.3
|
||||
else:
|
||||
if self.raw_data.avatar.id_ == 1213:
|
||||
if self.raw_data.avatar.id_ in [1213, 1201]:
|
||||
skill_multiplier = self.avatar.Normalnum(skill_type)
|
||||
skill_type = 'Normal'
|
||||
elif self.raw_data.avatar.id_ == 1005:
|
||||
@ -237,6 +247,19 @@ class RoleInstance:
|
||||
if skill_info[0] == 'attack':
|
||||
skill_multiplier = skill_multiplier / skill_info[2]
|
||||
logger.info(f'技能区单段: {skill_multiplier}')
|
||||
if self.raw_data.avatar.id_ == 1004:
|
||||
if self.raw_data.avatar.rank >= 6 and skill_type == 'BPSkill':
|
||||
skill_info[2] = skill_info[2] + 1
|
||||
multiplier_add = self.avatar.Talent()
|
||||
skill_multiplier = skill_multiplier + multiplier_add
|
||||
|
||||
if (
|
||||
self.raw_data.avatar.id_ == 1201
|
||||
and self.raw_data.avatar.rank >= 4
|
||||
and skill_type == 'Normal'
|
||||
):
|
||||
skill_info[2] = skill_info[2] + 1
|
||||
|
||||
attack = merged_attr['attack']
|
||||
if self.raw_data.avatar.id_ == 1104:
|
||||
# 杰帕德天赋加攻
|
||||
@ -479,6 +502,14 @@ class RoleInstance:
|
||||
|
||||
damage_tz_z += damage_tz
|
||||
|
||||
if (
|
||||
self.raw_data.avatar.id_ == 1003
|
||||
and self.raw_data.avatar.rank >= 6
|
||||
):
|
||||
damage_cd_z = damage_cd_z * 1.8
|
||||
damage_qw_z = damage_qw_z * 1.8
|
||||
damage_tz_z = damage_tz_z * 1.8
|
||||
|
||||
if self.avatar.avatar_element == 'Thunder':
|
||||
element_area = 0
|
||||
damage_tz_fj = (
|
||||
|
Loading…
x
Reference in New Issue
Block a user