完成鸭鸭,驭空,素裳伤害计算

This commit is contained in:
a376148946 2023-10-27 17:19:38 +08:00
parent 8d5551007e
commit d2d56a1c18
2 changed files with 401 additions and 1 deletions

View File

@ -2,7 +2,7 @@ import copy
from typing import Dict, List
from gsuid_core.logger import logger
import math
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
from ..Role import calculate_heal, calculate_damage, calculate_shield
@ -2691,12 +2691,287 @@ class Mar7th(BaseAvatar):
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:
@classmethod
def create(
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:
return Mar7th(char, skills)
if char.id_ == 1105:

View File

@ -829,5 +829,130 @@
],
"Maze": [20],
"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]
}
}