mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-05 11:13:45 +08:00
🚨 pre-commit-ci
修复格式错误
This commit is contained in:
parent
087f11acef
commit
dd1c79cf10
@ -1,15 +1,15 @@
|
|||||||
import json
|
import json
|
||||||
from pathlib import Path
|
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from gsuid_core.logger import logger
|
from gsuid_core.logger import logger
|
||||||
|
|
||||||
from ..mono.Character import Character
|
|
||||||
from .AvatarDamage.AvatarDamage import AvatarDamage
|
|
||||||
from .Base.AvatarBase import BaseAvatarinfo
|
|
||||||
from .Base.model import DamageInstance
|
|
||||||
from .Relic.Relic import RelicSet, SingleRelic
|
|
||||||
from .Weapon.Weapon import Weapon
|
from .Weapon.Weapon import Weapon
|
||||||
|
from ..mono.Character import Character
|
||||||
|
from .Base.model import DamageInstance
|
||||||
|
from .Base.AvatarBase import BaseAvatarinfo
|
||||||
|
from .Relic.Relic import RelicSet, SingleRelic
|
||||||
|
from .AvatarDamage.AvatarDamage import AvatarDamage
|
||||||
|
|
||||||
Excel_path = Path(__file__).parent
|
Excel_path = Path(__file__).parent
|
||||||
with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||||
@ -37,13 +37,9 @@ class AvatarInstance:
|
|||||||
def merge_attribute_bonus(self, add_attribute: Dict[str, float]):
|
def merge_attribute_bonus(self, add_attribute: Dict[str, float]):
|
||||||
for attribute in add_attribute:
|
for attribute in add_attribute:
|
||||||
if attribute in self.attribute_bonus:
|
if attribute in self.attribute_bonus:
|
||||||
self.attribute_bonus[
|
self.attribute_bonus[attribute] += add_attribute[attribute]
|
||||||
attribute
|
|
||||||
] += add_attribute[attribute]
|
|
||||||
else:
|
else:
|
||||||
self.attribute_bonus[
|
self.attribute_bonus[attribute] = add_attribute[attribute]
|
||||||
attribute
|
|
||||||
] = add_attribute[attribute]
|
|
||||||
|
|
||||||
def cal_role_base_attr(self):
|
def cal_role_base_attr(self):
|
||||||
logger.info('cal_role_base_attr')
|
logger.info('cal_role_base_attr')
|
||||||
|
@ -3,9 +3,9 @@ from typing import Dict, List
|
|||||||
|
|
||||||
from gsuid_core.logger import logger
|
from gsuid_core.logger import logger
|
||||||
|
|
||||||
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
|
||||||
from ..Base.model import DamageInstanceAvatar, DamageInstanceSkill
|
|
||||||
from ..Role import calculate_damage
|
from ..Role import calculate_damage
|
||||||
|
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
||||||
|
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
||||||
|
|
||||||
|
|
||||||
class Seele(BaseAvatar):
|
class Seele(BaseAvatar):
|
||||||
@ -47,7 +47,7 @@ class Seele(BaseAvatar):
|
|||||||
attribute_bonus['AllDamageAddedRatio'] = self.Skill_num(
|
attribute_bonus['AllDamageAddedRatio'] = self.Skill_num(
|
||||||
'Talent', 'Talent'
|
'Talent', 'Talent'
|
||||||
) + attribute_bonus.get('AllDamageAddedRatio', 0)
|
) + attribute_bonus.get('AllDamageAddedRatio', 0)
|
||||||
|
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
base_attr,
|
base_attr,
|
||||||
attribute_bonus,
|
attribute_bonus,
|
||||||
@ -57,7 +57,7 @@ class Seele(BaseAvatar):
|
|||||||
0.44,
|
0.44,
|
||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_info_list = []
|
skill_info_list = []
|
||||||
# 计算普攻伤害
|
# 计算普攻伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||||
@ -167,7 +167,7 @@ class JingYuan(BaseAvatar):
|
|||||||
0.44,
|
0.44,
|
||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_info_list = []
|
skill_info_list = []
|
||||||
# 计算普攻伤害
|
# 计算普攻伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||||
@ -268,7 +268,7 @@ class Welt(BaseAvatar):
|
|||||||
0.44,
|
0.44,
|
||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
|
|
||||||
skill_info_list = []
|
skill_info_list = []
|
||||||
# 计算普攻伤害
|
# 计算普攻伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||||
@ -354,6 +354,7 @@ class Welt(BaseAvatar):
|
|||||||
logger.info(skill_info_list)
|
logger.info(skill_info_list)
|
||||||
return skill_info_list
|
return skill_info_list
|
||||||
|
|
||||||
|
|
||||||
class Danhengil(BaseAvatar):
|
class Danhengil(BaseAvatar):
|
||||||
Buff: BaseAvatarBuff
|
Buff: BaseAvatarBuff
|
||||||
|
|
||||||
@ -379,7 +380,7 @@ class Danhengil(BaseAvatar):
|
|||||||
logger.info('额外能力')
|
logger.info('额外能力')
|
||||||
logger.info('对拥有虚数属性弱点的敌方目标造成伤害时, 暴击伤害提高24%。')
|
logger.info('对拥有虚数属性弱点的敌方目标造成伤害时, 暴击伤害提高24%。')
|
||||||
self.extra_ability_attribute['CriticalDamageBase'] = 0.24
|
self.extra_ability_attribute['CriticalDamageBase'] = 0.24
|
||||||
|
|
||||||
async def getdamage(
|
async def getdamage(
|
||||||
self,
|
self,
|
||||||
base_attr: Dict[str, float],
|
base_attr: Dict[str, float],
|
||||||
@ -392,13 +393,13 @@ class Danhengil(BaseAvatar):
|
|||||||
start_buff = 6
|
start_buff = 6
|
||||||
add_buff = 2
|
add_buff = 2
|
||||||
max_buff = 10
|
max_buff = 10
|
||||||
|
|
||||||
injury_add = self.Skill_num('Talent', 'Talent')
|
injury_add = self.Skill_num('Talent', 'Talent')
|
||||||
critical_damage_add = self.Skill_num('BPSkill', 'BPSkill')
|
critical_damage_add = self.Skill_num('BPSkill', 'BPSkill')
|
||||||
critical_buff = 0
|
critical_buff = 0
|
||||||
if self.avatar_rank >= 4:
|
if self.avatar_rank >= 4:
|
||||||
critical_buff = critical_damage_add * 4
|
critical_buff = critical_damage_add * 4
|
||||||
|
|
||||||
skill_info_list = []
|
skill_info_list = []
|
||||||
# 计算普攻1伤害
|
# 计算普攻1伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal') / 2
|
skill_multiplier = self.Skill_num('Normal', 'Normal') / 2
|
||||||
@ -408,13 +409,15 @@ class Danhengil(BaseAvatar):
|
|||||||
for i in range(1, 3):
|
for i in range(1, 3):
|
||||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||||
add_attr_bonus['AllDamageAddedRatio'] = damage_buff * injury_add + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'AllDamageAddedRatio'
|
||||||
|
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||||
'AllDamageAddedRatio', 0
|
'AllDamageAddedRatio', 0
|
||||||
)
|
)
|
||||||
if self.avatar_rank >= 4:
|
if self.avatar_rank >= 4:
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase'
|
||||||
)
|
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
base_attr,
|
base_attr,
|
||||||
add_attr_bonus,
|
add_attr_bonus,
|
||||||
@ -437,7 +440,9 @@ class Danhengil(BaseAvatar):
|
|||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
damage_a += damage3
|
damage_a += damage3
|
||||||
skill_info_list.append({'name': '普攻', 'damagelist': [damage_c, damage_e, damage_a]})
|
skill_info_list.append(
|
||||||
|
{'name': '普攻', 'damagelist': [damage_c, damage_e, damage_a]}
|
||||||
|
)
|
||||||
|
|
||||||
# 计算瞬华伤害
|
# 计算瞬华伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal1') / 3
|
skill_multiplier = self.Skill_num('Normal', 'Normal1') / 3
|
||||||
@ -447,13 +452,15 @@ class Danhengil(BaseAvatar):
|
|||||||
for i in range(1, 4):
|
for i in range(1, 4):
|
||||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||||
add_attr_bonus['AllDamageAddedRatio'] = damage_buff * injury_add + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'AllDamageAddedRatio'
|
||||||
|
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||||
'AllDamageAddedRatio', 0
|
'AllDamageAddedRatio', 0
|
||||||
)
|
)
|
||||||
if self.avatar_rank >= 4:
|
if self.avatar_rank >= 4:
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase'
|
||||||
)
|
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
base_attr,
|
base_attr,
|
||||||
add_attr_bonus,
|
add_attr_bonus,
|
||||||
@ -476,8 +483,10 @@ class Danhengil(BaseAvatar):
|
|||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
damage_a += damage3
|
damage_a += damage3
|
||||||
skill_info_list.append({'name': '瞬华', 'damagelist': [damage_c, damage_e, damage_a]})
|
skill_info_list.append(
|
||||||
|
{'name': '瞬华', 'damagelist': [damage_c, damage_e, damage_a]}
|
||||||
|
)
|
||||||
|
|
||||||
# 计算天矢阴伤害
|
# 计算天矢阴伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal2') / 5
|
skill_multiplier = self.Skill_num('Normal', 'Normal2') / 5
|
||||||
damage_c = 0
|
damage_c = 0
|
||||||
@ -486,17 +495,21 @@ class Danhengil(BaseAvatar):
|
|||||||
for i in range(1, 6):
|
for i in range(1, 6):
|
||||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||||
add_attr_bonus['AllDamageAddedRatio'] = damage_buff * injury_add + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'AllDamageAddedRatio'
|
||||||
|
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||||
'AllDamageAddedRatio', 0
|
'AllDamageAddedRatio', 0
|
||||||
)
|
)
|
||||||
if self.avatar_rank >= 4:
|
if self.avatar_rank >= 4:
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase'
|
||||||
)
|
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||||
else:
|
else:
|
||||||
if i >= 4:
|
if i >= 4:
|
||||||
critical_buff = (i - 3) * critical_damage_add
|
critical_buff = (i - 3) * critical_damage_add
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'CriticalDamageBase'
|
||||||
|
] = critical_buff + add_attr_bonus.get(
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase', 0
|
||||||
)
|
)
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
@ -521,7 +534,9 @@ class Danhengil(BaseAvatar):
|
|||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
damage_a += damage3
|
damage_a += damage3
|
||||||
skill_info_list.append({'name': '天矢阴', 'damagelist': [damage_c, damage_e, damage_a]})
|
skill_info_list.append(
|
||||||
|
{'name': '天矢阴', 'damagelist': [damage_c, damage_e, damage_a]}
|
||||||
|
)
|
||||||
|
|
||||||
# 计算盘拏耀跃伤害
|
# 计算盘拏耀跃伤害
|
||||||
skill_multiplier = self.Skill_num('Normal', 'Normal3') / 7
|
skill_multiplier = self.Skill_num('Normal', 'Normal3') / 7
|
||||||
@ -531,17 +546,21 @@ class Danhengil(BaseAvatar):
|
|||||||
for i in range(1, 8):
|
for i in range(1, 8):
|
||||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||||
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
damage_buff = min(max_buff, start_buff + (i - 1) * add_buff)
|
||||||
add_attr_bonus['AllDamageAddedRatio'] = damage_buff * injury_add + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'AllDamageAddedRatio'
|
||||||
|
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||||
'AllDamageAddedRatio', 0
|
'AllDamageAddedRatio', 0
|
||||||
)
|
)
|
||||||
if self.avatar_rank >= 4:
|
if self.avatar_rank >= 4:
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase'
|
||||||
)
|
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||||
else:
|
else:
|
||||||
if i >= 4:
|
if i >= 4:
|
||||||
critical_buff = (i - 3) * critical_damage_add
|
critical_buff = (i - 3) * critical_damage_add
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'CriticalDamageBase'
|
||||||
|
] = critical_buff + add_attr_bonus.get(
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase', 0
|
||||||
)
|
)
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
@ -566,8 +585,10 @@ class Danhengil(BaseAvatar):
|
|||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
damage_a += damage3
|
damage_a += damage3
|
||||||
skill_info_list.append({'name': '盘拏耀跃', 'damagelist': [damage_c, damage_e, damage_a]})
|
skill_info_list.append(
|
||||||
|
{'name': '盘拏耀跃', 'damagelist': [damage_c, damage_e, damage_a]}
|
||||||
|
)
|
||||||
|
|
||||||
# 计算大招伤害
|
# 计算大招伤害
|
||||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra') / 3
|
skill_multiplier = self.Skill_num('Ultra', 'Ultra') / 3
|
||||||
damage_c = 0
|
damage_c = 0
|
||||||
@ -576,13 +597,15 @@ class Danhengil(BaseAvatar):
|
|||||||
for i in range(1, 4):
|
for i in range(1, 4):
|
||||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||||
damage_buff = min(max_buff, 10)
|
damage_buff = min(max_buff, 10)
|
||||||
add_attr_bonus['AllDamageAddedRatio'] = damage_buff * injury_add + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
|
'AllDamageAddedRatio'
|
||||||
|
] = damage_buff * injury_add + add_attr_bonus.get(
|
||||||
'AllDamageAddedRatio', 0
|
'AllDamageAddedRatio', 0
|
||||||
)
|
)
|
||||||
critical_buff = 4 * critical_damage_add
|
critical_buff = 4 * critical_damage_add
|
||||||
add_attr_bonus['CriticalDamageBase'] = critical_buff + add_attr_bonus.get(
|
add_attr_bonus[
|
||||||
'CriticalDamageBase', 0
|
'CriticalDamageBase'
|
||||||
)
|
] = critical_buff + add_attr_bonus.get('CriticalDamageBase', 0)
|
||||||
damage1, damage2, damage3 = await calculate_damage(
|
damage1, damage2, damage3 = await calculate_damage(
|
||||||
base_attr,
|
base_attr,
|
||||||
add_attr_bonus,
|
add_attr_bonus,
|
||||||
@ -605,10 +628,13 @@ class Danhengil(BaseAvatar):
|
|||||||
self.avatar_level,
|
self.avatar_level,
|
||||||
)
|
)
|
||||||
damage_a += damage3
|
damage_a += damage3
|
||||||
skill_info_list.append({'name': '终结技', 'damagelist': [damage_c, damage_e, damage_a]})
|
skill_info_list.append(
|
||||||
|
{'name': '终结技', 'damagelist': [damage_c, damage_e, damage_a]}
|
||||||
|
)
|
||||||
logger.info(skill_info_list)
|
logger.info(skill_info_list)
|
||||||
return skill_info_list
|
return skill_info_list
|
||||||
|
|
||||||
|
|
||||||
class AvatarDamage:
|
class AvatarDamage:
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import json
|
import json
|
||||||
from abc import abstractmethod
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from abc import abstractmethod
|
||||||
from typing import List, Tuple, Union
|
from typing import List, Tuple, Union
|
||||||
|
|
||||||
import msgspec
|
import msgspec
|
||||||
from msgspec import Struct
|
from msgspec import Struct
|
||||||
|
|
||||||
from ....utils.excel.model import AvatarPromotionConfig
|
|
||||||
from .model import DamageInstanceAvatar, DamageInstanceSkill
|
|
||||||
from .SkillBase import BaseSkills
|
from .SkillBase import BaseSkills
|
||||||
|
from ....utils.excel.model import AvatarPromotionConfig
|
||||||
|
from .model import DamageInstanceSkill, DamageInstanceAvatar
|
||||||
|
|
||||||
path = Path(__file__).parent.parent
|
path = Path(__file__).parent.parent
|
||||||
with Path.open(path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
with Path.open(path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
from abc import abstractmethod
|
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
from abc import abstractmethod
|
||||||
|
|
||||||
from gsuid_core.logger import logger
|
from gsuid_core.logger import logger
|
||||||
|
|
||||||
from ....utils.map.model.RelicSetSkill import RelicSetStatusAdd
|
|
||||||
from ....utils.map.SR_MAP_PATH import RelicSetSkill
|
|
||||||
from .model import DamageInstanceRelic
|
from .model import DamageInstanceRelic
|
||||||
|
from ....utils.map.SR_MAP_PATH import RelicSetSkill
|
||||||
|
from ....utils.map.model.RelicSetSkill import RelicSetStatusAdd
|
||||||
|
|
||||||
|
|
||||||
class SingleRelic:
|
class SingleRelic:
|
||||||
@ -70,7 +70,6 @@ class BaseRelicSetSkill:
|
|||||||
...
|
...
|
||||||
|
|
||||||
def set_skill_property_ability(self):
|
def set_skill_property_ability(self):
|
||||||
|
|
||||||
def add_relic_set_attribute(status_add: RelicSetStatusAdd):
|
def add_relic_set_attribute(status_add: RelicSetStatusAdd):
|
||||||
set_property = status_add.Property
|
set_property = status_add.Property
|
||||||
set_value = status_add.Value
|
set_value = status_add.Value
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import json
|
import json
|
||||||
from pathlib import Path
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from .model import DamageInstanceAvatar, DamageInstanceSkill
|
from .model import DamageInstanceSkill, DamageInstanceAvatar
|
||||||
|
|
||||||
path = Path(__file__).parent.parent
|
path = Path(__file__).parent.parent
|
||||||
with Path.open(path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
with Path.open(path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||||
@ -14,7 +14,7 @@ skill_types = {
|
|||||||
'BPSkill': 'BPSkill_',
|
'BPSkill': 'BPSkill_',
|
||||||
'Ultra': 'Ultra_',
|
'Ultra': 'Ultra_',
|
||||||
'Maze': 'Maze_',
|
'Maze': 'Maze_',
|
||||||
'': 'Talent_'
|
'': 'Talent_',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,9 +3,9 @@ from typing import Dict, List, Tuple
|
|||||||
|
|
||||||
from msgspec import Struct
|
from msgspec import Struct
|
||||||
|
|
||||||
|
from .model import DamageInstanceWeapon
|
||||||
from ....utils.excel.model import EquipmentPromotionConfig
|
from ....utils.excel.model import EquipmentPromotionConfig
|
||||||
from ....utils.map.SR_MAP_PATH import EquipmentID2AbilityProperty
|
from ....utils.map.SR_MAP_PATH import EquipmentID2AbilityProperty
|
||||||
from .model import DamageInstanceWeapon
|
|
||||||
|
|
||||||
|
|
||||||
class BaseWeaponAttribute(Struct):
|
class BaseWeaponAttribute(Struct):
|
||||||
|
@ -31,30 +31,30 @@ async def calculate_damage(
|
|||||||
|
|
||||||
damage_reduction = calculate_damage_reduction(level)
|
damage_reduction = calculate_damage_reduction(level)
|
||||||
logger.info(f'韧性区: {damage_reduction}')
|
logger.info(f'韧性区: {damage_reduction}')
|
||||||
|
|
||||||
resistance_area = calculate_resistance_area(
|
resistance_area = calculate_resistance_area(
|
||||||
merged_attr, skill_type, add_skill_type, element
|
merged_attr, skill_type, add_skill_type, element
|
||||||
)
|
)
|
||||||
logger.info(f'抗性区: {resistance_area}')
|
logger.info(f'抗性区: {resistance_area}')
|
||||||
|
|
||||||
defence_multiplier = calculate_defence_multiplier(level, merged_attr)
|
defence_multiplier = calculate_defence_multiplier(level, merged_attr)
|
||||||
logger.info(f'防御区: {defence_multiplier}')
|
logger.info(f'防御区: {defence_multiplier}')
|
||||||
|
|
||||||
injury_area, element_area = calculate_injury_area(
|
injury_area, element_area = calculate_injury_area(
|
||||||
merged_attr, skill_type, add_skill_type, element
|
merged_attr, skill_type, add_skill_type, element
|
||||||
)
|
)
|
||||||
logger.info(f'增伤区: {injury_area}')
|
logger.info(f'增伤区: {injury_area}')
|
||||||
|
|
||||||
damage_ratio = calculate_damage_ratio(
|
damage_ratio = calculate_damage_ratio(
|
||||||
merged_attr, skill_type, add_skill_type
|
merged_attr, skill_type, add_skill_type
|
||||||
)
|
)
|
||||||
logger.info(f'易伤区: {damage_ratio}')
|
logger.info(f'易伤区: {damage_ratio}')
|
||||||
|
|
||||||
critical_damage = calculate_critical_damage(
|
critical_damage = calculate_critical_damage(
|
||||||
merged_attr, skill_type, add_skill_type
|
merged_attr, skill_type, add_skill_type
|
||||||
)
|
)
|
||||||
logger.info(f'爆伤区: {critical_damage}')
|
logger.info(f'爆伤区: {critical_damage}')
|
||||||
|
|
||||||
critical_chance = calculate_critical_chance(
|
critical_chance = calculate_critical_chance(
|
||||||
merged_attr, skill_type, add_skill_type
|
merged_attr, skill_type, add_skill_type
|
||||||
)
|
)
|
||||||
@ -150,10 +150,13 @@ def calculate_resistance_area(
|
|||||||
if '_' in attr_name:
|
if '_' in attr_name:
|
||||||
skill_name = attr_name.split('_')[0]
|
skill_name = attr_name.split('_')[0]
|
||||||
skillattr_name = attr_name.split('_')[1]
|
skillattr_name = attr_name.split('_')[1]
|
||||||
if skill_name == add_skill_type and skillattr_name in (element, 'AllDamage'):
|
if skill_name == add_skill_type and skillattr_name in (
|
||||||
|
element,
|
||||||
|
'AllDamage',
|
||||||
|
):
|
||||||
enemy_status_resistance += merged_attr[attr]
|
enemy_status_resistance += merged_attr[attr]
|
||||||
# logger.info(
|
# logger.info(
|
||||||
# f'{skill_name}对{skillattr_name}属性有{merged_attr[attr]}穿透加成'
|
# f'{skill_name}对{skillattr_name}属性有{merged_attr[attr]}穿透加成'
|
||||||
# )
|
# )
|
||||||
return 1.0 - (0 - enemy_status_resistance)
|
return 1.0 - (0 - enemy_status_resistance)
|
||||||
|
|
||||||
@ -183,16 +186,16 @@ def calculate_injury_area(
|
|||||||
add_skill_type,
|
add_skill_type,
|
||||||
):
|
):
|
||||||
# logger.info(
|
# logger.info(
|
||||||
# f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 伤害加成'
|
# f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 伤害加成'
|
||||||
# )
|
# )
|
||||||
injury_area += merged_attr[attr]
|
injury_area += merged_attr[attr]
|
||||||
|
|
||||||
if 'AddedRatio' in attr and attr_name in (
|
if 'AddedRatio' in attr and attr_name in (
|
||||||
element,
|
element,
|
||||||
'AllDamage',
|
'AllDamage',
|
||||||
):
|
):
|
||||||
# logger.info(
|
# logger.info(
|
||||||
# f'{attr} 对 {element} 属性有 {merged_attr[attr]} 伤害加成'
|
# f'{attr} 对 {element} 属性有 {merged_attr[attr]} 伤害加成'
|
||||||
# )
|
# )
|
||||||
if attr_name == element:
|
if attr_name == element:
|
||||||
element_area += merged_attr[attr]
|
element_area += merged_attr[attr]
|
||||||
@ -312,7 +315,7 @@ def calculate_damage_tz(
|
|||||||
base_attr: Dict[str, float],
|
base_attr: Dict[str, float],
|
||||||
):
|
):
|
||||||
injury_add_tz = 0.0
|
injury_add_tz = 0.0
|
||||||
|
|
||||||
attack_tz = attack + 355 + base_attr['attack'] * 2.334
|
attack_tz = attack + 355 + base_attr['attack'] * 2.334
|
||||||
# logger.info(f'attack_tz: {attack_tz}')
|
# logger.info(f'attack_tz: {attack_tz}')
|
||||||
if element == 'Imaginary':
|
if element == 'Imaginary':
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import json
|
import json
|
||||||
from pathlib import Path
|
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from ..Base.model import DamageInstanceWeapon
|
|
||||||
from ..Base.WeaponBase import BaseWeapon
|
from ..Base.WeaponBase import BaseWeapon
|
||||||
|
from ..Base.model import DamageInstanceWeapon
|
||||||
|
|
||||||
path = Path(__file__).parent.parent
|
path = Path(__file__).parent.parent
|
||||||
with Path.open(path / 'Excel' / 'weapon_effect.json', encoding='utf-8') as f:
|
with Path.open(path / 'Excel' / 'weapon_effect.json', encoding='utf-8') as f:
|
||||||
|
@ -20,9 +20,16 @@ async def merge_attribute(
|
|||||||
merged_attr[attr] += base_attr[attr] * value
|
merged_attr[attr] += base_attr[attr] * value
|
||||||
else:
|
else:
|
||||||
merged_attr[attribute] = attribute_bonus[attribute]
|
merged_attr[attribute] = attribute_bonus[attribute]
|
||||||
elif attribute in ['ignore_defence', 'Atk_buff', 'Normal_buff', 'shield_added_ratio']:
|
elif attribute in [
|
||||||
|
'ignore_defence',
|
||||||
|
'Atk_buff',
|
||||||
|
'Normal_buff',
|
||||||
|
'shield_added_ratio',
|
||||||
|
]:
|
||||||
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
||||||
elif attribute.endswith(('ResistancePenetration', 'DmgAdd', 'DmgRatio')):
|
elif attribute.endswith(
|
||||||
|
('ResistancePenetration', 'DmgAdd', 'DmgRatio')
|
||||||
|
):
|
||||||
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
||||||
elif attribute.endswith('Base'):
|
elif attribute.endswith('Base'):
|
||||||
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
merged_attr[attribute] = base_attr.get(attribute, 0) + value
|
||||||
|
Loading…
x
Reference in New Issue
Block a user