mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-04 18:57:33 +08:00
完成鸭鸭,驭空,素裳伤害计算
This commit is contained in:
parent
8d5551007e
commit
d2d56a1c18
@ -2,7 +2,7 @@ import copy
|
|||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
from gsuid_core.logger import logger
|
from gsuid_core.logger import logger
|
||||||
|
import math
|
||||||
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
||||||
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
||||||
from ..Role import calculate_heal, calculate_damage, calculate_shield
|
from ..Role import calculate_heal, calculate_damage, calculate_shield
|
||||||
@ -2691,12 +2691,287 @@ class Mar7th(BaseAvatar):
|
|||||||
|
|
||||||
return skill_info_list
|
return skill_info_list
|
||||||
|
|
||||||
|
class Bronya(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 >= 2:
|
||||||
|
self.eidolon_attribute['SpeedAddedRatio'] = 0.3
|
||||||
|
|
||||||
|
def extra_ability(self):
|
||||||
|
self.extra_ability_attribute['AllDamageAddedRatio'] = 0.1
|
||||||
|
self.extra_ability_attribute['Normal_CriticalChance'] = 1
|
||||||
|
self.extra_ability_attribute['DefenceAddedRatio'] = 0.2
|
||||||
|
|
||||||
|
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,
|
||||||
|
)
|
||||||
|
|
||||||
|
#终结技增加伤害
|
||||||
|
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get('AttackAddedRatio', 0) + self.Skill_num('Ultra', 'Ultra_A')
|
||||||
|
add_critical_damage_base = (attribute_bonus.get('CriticalDamageBase', 0) * self.Skill_num('Ultra', 'Ultra')) + self.Skill_num('Ultra', 'Ultra_G')
|
||||||
|
attribute_bonus['CriticalDamageBase'] = attribute_bonus.get('CriticalDamageBase', 0) + add_critical_damage_base
|
||||||
|
|
||||||
|
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})
|
||||||
|
|
||||||
|
# 计算终结技
|
||||||
|
critical_damage_base_str = add_critical_damage_base * 100
|
||||||
|
damagelist2 = []
|
||||||
|
damagelist2.append(critical_damage_base_str)
|
||||||
|
skill_info_list.append({'name': '终结技提升爆伤(%)', 'damagelist': damagelist2})
|
||||||
|
|
||||||
|
return skill_info_list
|
||||||
|
|
||||||
|
class Yukong(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['SpeedAddedRatio'] = 0.1
|
||||||
|
if self.avatar_rank >= 4:
|
||||||
|
self.eidolon_attribute['AllDamageAddedRatio'] = 0.3
|
||||||
|
|
||||||
|
def extra_ability(self):
|
||||||
|
self.extra_ability_attribute['ImaginaryAddedRatio'] = 0.15
|
||||||
|
|
||||||
|
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,
|
||||||
|
)
|
||||||
|
|
||||||
|
#终结技增加伤害
|
||||||
|
attribute_bonus['AttackAddedRatio'] = attribute_bonus.get('AttackAddedRatio', 0) + self.Skill_num('BPSkill', 'BPSkill')
|
||||||
|
attribute_bonus['CriticalChanceBase'] = attribute_bonus.get('CriticalChanceBase', 0) + self.Skill_num('Ultra', 'Ultra_CC')
|
||||||
|
attribute_bonus['CriticalDamageBase'] = attribute_bonus.get('CriticalDamageBase', 0) + self.Skill_num('Ultra', 'Ultra_CD')
|
||||||
|
|
||||||
|
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_multiplier = self.Skill_num('Talent', 'Normal_add')
|
||||||
|
damagelist2 = await calculate_damage(
|
||||||
|
base_attr,
|
||||||
|
attribute_bonus,
|
||||||
|
'Normal',
|
||||||
|
'Normal',
|
||||||
|
self.avatar_element,
|
||||||
|
skill_multiplier,
|
||||||
|
self.avatar_level,
|
||||||
|
)
|
||||||
|
damagelist2[0] += damagelist1[0]
|
||||||
|
damagelist2[1] += damagelist1[1]
|
||||||
|
damagelist2[2] += damagelist1[2]
|
||||||
|
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})
|
||||||
|
|
||||||
|
return skill_info_list
|
||||||
|
|
||||||
|
class Sushang(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):
|
||||||
|
self.eidolon_attribute['SpeedAddedRatio'] = self.Skill_num('Talent', 'Talent')
|
||||||
|
if self.avatar_rank >= 6:
|
||||||
|
self.eidolon_attribute['SpeedAddedRatio'] = self.Skill_num('Talent', 'Talent') * 2
|
||||||
|
|
||||||
|
def extra_ability(self):
|
||||||
|
self.extra_ability_attribute['jianshiDmgAdd'] = 0.2
|
||||||
|
|
||||||
|
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_F')
|
||||||
|
damagelist2 = await calculate_damage(
|
||||||
|
base_attr,
|
||||||
|
attribute_bonus,
|
||||||
|
'BPSkill',
|
||||||
|
'jianshi',
|
||||||
|
self.avatar_element,
|
||||||
|
skill_multiplier,
|
||||||
|
self.avatar_level,
|
||||||
|
)
|
||||||
|
|
||||||
|
# 计算战技伤害
|
||||||
|
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill')
|
||||||
|
damagelist3 = await calculate_damage(
|
||||||
|
base_attr,
|
||||||
|
attribute_bonus,
|
||||||
|
'BPSkill',
|
||||||
|
'BPSkill',
|
||||||
|
self.avatar_element,
|
||||||
|
skill_multiplier,
|
||||||
|
self.avatar_level,
|
||||||
|
)
|
||||||
|
damagelist3[0] += damagelist2[0]
|
||||||
|
damagelist3[1] += damagelist2[1]
|
||||||
|
damagelist3[2] += damage3 + damagelist2[2]
|
||||||
|
skill_info_list.append({'name': '战技', 'damagelist': damagelist3})
|
||||||
|
|
||||||
|
# 计算强化战技伤害
|
||||||
|
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill')
|
||||||
|
damagelist4 = await calculate_damage(
|
||||||
|
base_attr,
|
||||||
|
attribute_bonus,
|
||||||
|
'BPSkill',
|
||||||
|
'BPSkill',
|
||||||
|
self.avatar_element,
|
||||||
|
skill_multiplier,
|
||||||
|
self.avatar_level,
|
||||||
|
)
|
||||||
|
damagelist4[0] += damagelist2[0] * 3
|
||||||
|
damagelist4[1] += damagelist2[1] * 3
|
||||||
|
damagelist4[2] += damage3 + damagelist2[2] * 3
|
||||||
|
skill_info_list.append({'name': '强化战技', 'damagelist': damagelist4})
|
||||||
|
|
||||||
|
skill_info_list.append({'name': '剑势附加伤害', 'damagelist': damagelist2})
|
||||||
|
|
||||||
|
# 计算终结技伤害
|
||||||
|
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||||
|
damagelist5 = await calculate_damage(
|
||||||
|
base_attr,
|
||||||
|
attribute_bonus,
|
||||||
|
'Ultra',
|
||||||
|
'Ultra',
|
||||||
|
self.avatar_element,
|
||||||
|
skill_multiplier,
|
||||||
|
self.avatar_level,
|
||||||
|
)
|
||||||
|
damagelist1[2] += damage3
|
||||||
|
skill_info_list.append({'name': '终结技', 'damagelist': damagelist5})
|
||||||
|
|
||||||
|
return skill_info_list
|
||||||
|
|
||||||
class AvatarDamage:
|
class AvatarDamage:
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||||
):
|
):
|
||||||
|
if char.id_ == 1206:
|
||||||
|
return Sushang(char, skills)
|
||||||
|
if char.id_ == 1101:
|
||||||
|
return Bronya(char, skills)
|
||||||
|
if char.id_ == 1207:
|
||||||
|
return Yukong(char, skills)
|
||||||
if char.id_ == 1001:
|
if char.id_ == 1001:
|
||||||
return Mar7th(char, skills)
|
return Mar7th(char, skills)
|
||||||
if char.id_ == 1105:
|
if char.id_ == 1105:
|
||||||
|
@ -829,5 +829,130 @@
|
|||||||
],
|
],
|
||||||
"Maze": [20],
|
"Maze": [20],
|
||||||
"Ultra_Use": [100]
|
"Ultra_Use": [100]
|
||||||
|
},
|
||||||
|
"1101": {
|
||||||
|
"Normal": [
|
||||||
|
0.5000000004656613, 0.6000000005587935, 0.7000000006519258,
|
||||||
|
0.8000000007450581, 0.9000000008381903, 1.0000000000931323,
|
||||||
|
1.1000000000931323, 1.2000000001862645, 1.3000000002793968
|
||||||
|
],
|
||||||
|
"BPSkill": [
|
||||||
|
0.33000000030733645, 0.3630000001285225, 0.3959999999497086,
|
||||||
|
0.42899999977089465, 0.46200000029057264, 0.4950000001117587,
|
||||||
|
0.5362500005867332, 0.5775000003632158, 0.6187500008381903,
|
||||||
|
0.6600000006146729, 0.693000000435859, 0.726000000257045,
|
||||||
|
0.7590000000782311, 0.7920000005979091, 0.8250000004190952
|
||||||
|
],
|
||||||
|
"Ultra": [
|
||||||
|
0.12000000011175871, 0.12399999983608723, 0.12799999956041574,
|
||||||
|
0.1319999999832362, 0.1359999997075647, 0.14000000013038516,
|
||||||
|
0.1449999997857958, 0.1500000001396984, 0.15499999979510903,
|
||||||
|
0.1600000001490116, 0.16399999987334013, 0.16799999959766865,
|
||||||
|
0.1720000000204891, 0.17599999974481761, 0.18000000016763806
|
||||||
|
],
|
||||||
|
"Ultra_A": [
|
||||||
|
0.33000000030733645, 0.35200000018812716, 0.37400000006891787,
|
||||||
|
0.3959999999497086, 0.4179999998304993, 0.44000000040978193,
|
||||||
|
0.4675000002607703, 0.4950000001117587, 0.522500000661239,
|
||||||
|
0.5500000005122274, 0.5720000003930181, 0.5940000002738088,
|
||||||
|
0.6160000001545995, 0.6380000000353903, 0.6600000006146729
|
||||||
|
],
|
||||||
|
"Ultra_G": [
|
||||||
|
0.12000000011175871, 0.12799999956041574, 0.1359999997075647,
|
||||||
|
0.14399999985471368, 0.15200000000186265, 0.1600000001490116,
|
||||||
|
0.17000000015832484, 0.18000000016763806, 0.1900000001769513,
|
||||||
|
0.20000000018626451, 0.20799999963492155, 0.21599999978207052,
|
||||||
|
0.22399999992921948, 0.23200000007636845, 0.24000000022351742
|
||||||
|
],
|
||||||
|
"Maze": [20],
|
||||||
|
"Ultra_Use": [100]
|
||||||
|
},
|
||||||
|
"1207": {
|
||||||
|
"Normal": [
|
||||||
|
0.5000000004656613, 0.6000000005587935, 0.7000000006519258,
|
||||||
|
0.8000000007450581, 0.9000000008381903, 1.0000000000931323,
|
||||||
|
1.1000000000931323, 1.2000000001862645, 1.3000000002793968
|
||||||
|
],
|
||||||
|
"BPSkill": [
|
||||||
|
0.40000000037252903, 0.44000000040978193, 0.48000000044703484,
|
||||||
|
0.5200000004842877, 0.5600000005215406, 0.6000000005587935,
|
||||||
|
0.6500000006053597, 0.7000000006519258, 0.7500000006984919,
|
||||||
|
0.8000000007450581, 0.840000000782311, 0.8800000008195639,
|
||||||
|
0.9200000008568168, 0.9600000008940697, 1
|
||||||
|
],
|
||||||
|
"Ultra_CC": [
|
||||||
|
0.21000000019557774, 0.21699999971315265, 0.22399999992921948,
|
||||||
|
0.23100000014528632, 0.23799999966286123, 0.24499999987892807,
|
||||||
|
0.25375000084750354, 0.26250000041909516, 0.2712500006891787,
|
||||||
|
0.2800000002607703, 0.2869999997783452, 0.29399999999441206,
|
||||||
|
0.3010000002104789, 0.3079999997280538, 0.31499999994412065
|
||||||
|
],
|
||||||
|
"Ultra_CD": [
|
||||||
|
0.3900000003632158, 0.41599999996833503, 0.4420000002719462,
|
||||||
|
0.4679999998770654, 0.4940000001806766, 0.5200000004842877,
|
||||||
|
0.5525000006891787, 0.5850000001955777, 0.6175000004004687,
|
||||||
|
0.6500000006053597, 0.6760000002104789, 0.7020000005140901,
|
||||||
|
0.7280000001192093, 0.7540000004228204, 0.7800000007264316
|
||||||
|
],
|
||||||
|
"Ultra": [
|
||||||
|
2.2800000002607703, 2.432000000262633, 2.5840000002644956,
|
||||||
|
2.7360000002663583, 2.888000000268221, 3.040000000037253,
|
||||||
|
3.230000000214204, 3.4200000003911555, 3.6100000005681068,
|
||||||
|
3.800000000745058, 3.9520000007469207, 4.103999999817461,
|
||||||
|
4.255999999819323, 4.407999999821186, 4.560000000521541
|
||||||
|
],
|
||||||
|
"Normal_add": [
|
||||||
|
0.40000000037252903, 0.44000000040978193, 0.48000000044703484,
|
||||||
|
0.5200000004842877, 0.5600000005215406, 0.6000000005587935,
|
||||||
|
0.6500000006053597, 0.7000000006519258, 0.7500000006984919,
|
||||||
|
0.8000000007450581, 0.840000000782311, 0.8800000008195639,
|
||||||
|
0.9200000008568168, 0.9600000008940697, 1
|
||||||
|
],
|
||||||
|
"Maze": [20],
|
||||||
|
"Ultra_Use": [130]
|
||||||
|
},
|
||||||
|
"1206": {
|
||||||
|
"Normal": [
|
||||||
|
0.5000000004656613, 0.6000000005587935, 0.7000000006519258,
|
||||||
|
0.8000000007450581, 0.9000000008381903, 1.0000000000931323,
|
||||||
|
1.1000000000931323, 1.2000000001862645, 1.3000000002793968
|
||||||
|
],
|
||||||
|
"BPSkill": [
|
||||||
|
1.0500000000465661, 1.154999999795109, 1.2600000002421439,
|
||||||
|
1.3649999999906868, 1.4700000004377216, 1.5750000001862645,
|
||||||
|
1.706250000745058, 1.8375000006053597, 1.9687500011641532,
|
||||||
|
2.1000000000931323, 2.204999999841675, 2.31000000028871,
|
||||||
|
2.415000000037253, 2.5200000004842877, 2.6250000002328306
|
||||||
|
],
|
||||||
|
"BPSkill_F": [
|
||||||
|
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
|
||||||
|
],
|
||||||
|
"Ultra_A": [
|
||||||
|
0.18000000016763806, 0.19200000003911555, 0.20399999991059303,
|
||||||
|
0.21599999978207052, 0.227999999653548, 0.24000000022351742,
|
||||||
|
0.2549999998882413, 0.2700000002514571, 0.28499999991618097,
|
||||||
|
0.3000000002793968, 0.31200000015087426, 0.32400000002235174,
|
||||||
|
0.3359999998938292, 0.3479999997653067, 0.3600000003352761
|
||||||
|
],
|
||||||
|
"Ultra": [
|
||||||
|
1.9200000008568168, 2.04799999948591, 2.1759999997448176,
|
||||||
|
2.3040000000037253, 2.432000000262633, 2.5600000005215406,
|
||||||
|
2.7200000006705523, 2.880000000819564, 3.040000000037253,
|
||||||
|
3.2000000001862645, 3.3279999997466803, 3.456000000005588,
|
||||||
|
3.5840000002644956, 3.7120000005234033, 3.840000000782311
|
||||||
|
],
|
||||||
|
"Talent": [
|
||||||
|
0.1500000001396984, 0.15499999979510903, 0.1600000001490116,
|
||||||
|
0.16499999980442226, 0.17000000015832484, 0.17499999981373549,
|
||||||
|
0.18125000060535967, 0.1875, 0.1937500007916242,
|
||||||
|
0.20000000018626451, 0.20499999984167516, 0.21000000019557774,
|
||||||
|
0.2149999998509884, 0.22000000020489097, 0.2249999998603016
|
||||||
|
],
|
||||||
|
"Maze": [20],
|
||||||
|
"Ultra_Use": [120]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user