mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-05 19:23:45 +08:00
🚨 pre-commit-ci
修复格式错误
This commit is contained in:
parent
fec83e38d5
commit
5f123dc52b
@ -7,14 +7,14 @@ from gsuid_core.sv import SV
|
||||
from gsuid_core.bot import Bot
|
||||
from gsuid_core.models import Event
|
||||
|
||||
from .cal_damage import cal_info
|
||||
from .to_card import api_to_card
|
||||
from ..utils.convert import get_uid
|
||||
from ..utils.sr_prefix import PREFIX
|
||||
from ..utils.error_reply import UID_HINT
|
||||
from .draw_char_img import get_char_data
|
||||
from .get_char_img import draw_char_info_img
|
||||
from ..utils.image.convert import convert_img
|
||||
from .draw_char_img import get_char_data
|
||||
from .cal_damage import cal_info
|
||||
from ..utils.resource.RESOURCE_PATH import TEMP_PATH
|
||||
|
||||
sv_char_info_config = SV('sr面板设置', pm=2)
|
||||
@ -22,6 +22,7 @@ sv_get_char_info = SV('sr面板查询', priority=10)
|
||||
sv_get_sr_original_pic = SV('sr查看面板原图', priority=5)
|
||||
sv_char_damage_cal = SV('sr伤害计算')
|
||||
|
||||
|
||||
@sv_char_damage_cal.on_prefix(f'{PREFIX}伤害计算')
|
||||
async def send_damage_msg(bot: Bot, ev: Event):
|
||||
msg = ''.join(re.findall('[\u4e00-\u9fa5 ]', ev.text))
|
||||
|
@ -33,8 +33,8 @@ async def cal(char_data: Dict):
|
||||
return skill_info_list
|
||||
return '角色伤害计算未完成'
|
||||
|
||||
|
||||
async def cal_info(char_data: Dict):
|
||||
char = await cal_char_info(char_data)
|
||||
avatar = AvatarInstance(char)
|
||||
skill_info_list = await avatar.gat_damage()
|
||||
return skill_info_list
|
||||
return await avatar.gat_damage()
|
||||
|
@ -1,16 +1,14 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import List, Union
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
|
||||
from .Base.AvatarBase import BaseAvatarinfo
|
||||
from .AvatarDamage.AvatarDamage import AvatarDamage
|
||||
from .Weapon.Weapon import Weapon
|
||||
from .utils import merge_attribute
|
||||
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
|
||||
with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||
@ -20,7 +18,9 @@ with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||
class AvatarInstance:
|
||||
def __init__(self, raw_data: Character):
|
||||
self.raw_data = DamageInstance(raw_data)
|
||||
self.avatardamage = AvatarDamage.create(self.raw_data.avatar, self.raw_data.skill)
|
||||
self.avatardamage = AvatarDamage.create(
|
||||
self.raw_data.avatar, self.raw_data.skill
|
||||
)
|
||||
self.avatar = BaseAvatarinfo(self.raw_data.avatar)
|
||||
self.weapon = Weapon.create(self.raw_data.weapon)
|
||||
self.relic_set = RelicSet().create(self.raw_data.relic)
|
||||
@ -77,7 +77,7 @@ class AvatarInstance:
|
||||
self.attribute_bonus[
|
||||
attribute
|
||||
] = set_skill.relicSetAttribute[attribute]
|
||||
|
||||
|
||||
def cal_avatar_eidolon_add(self):
|
||||
for attribute in self.avatardamage.eidolon_attribute:
|
||||
if attribute in self.attribute_bonus:
|
||||
@ -97,7 +97,7 @@ class AvatarInstance:
|
||||
self.attribute_bonus[
|
||||
attribute
|
||||
] = self.avatardamage.extra_ability_attribute[attribute]
|
||||
|
||||
|
||||
def cal_avatar_attr_add(self):
|
||||
attribute_bonus = self.avatar.avatar_attribute_bonus
|
||||
if attribute_bonus:
|
||||
@ -126,7 +126,7 @@ class AvatarInstance:
|
||||
logger.info(self.base_attr)
|
||||
logger.info('attribute_bonus')
|
||||
logger.info(self.attribute_bonus)
|
||||
|
||||
|
||||
logger.info('检查武器战斗生效的buff')
|
||||
Ultra_Use = self.avatar.Ultra_Use()
|
||||
logger.info('Ultra_Use')
|
||||
@ -143,10 +143,7 @@ class AvatarInstance:
|
||||
if self.attribute_bonus is None:
|
||||
raise Exception('attribute_bonus is None')
|
||||
logger.info(self.attribute_bonus)
|
||||
|
||||
return await self.avatardamage.getdamage(self.base_attr, self.attribute_bonus)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return await self.avatardamage.getdamage(
|
||||
self.base_attr, self.attribute_bonus
|
||||
)
|
||||
|
@ -1,14 +1,16 @@
|
||||
from typing import Dict, List
|
||||
import json
|
||||
from pathlib import Path
|
||||
import copy
|
||||
from typing import Dict, List
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
||||
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
||||
|
||||
from ..Role import demage_num
|
||||
from ..Base.AvatarBase import BaseAvatar, BaseAvatarBuff
|
||||
from ..Base.model import DamageInstanceSkill, DamageInstanceAvatar
|
||||
|
||||
|
||||
class Seele(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
):
|
||||
@ -32,7 +34,7 @@ class Seele(BaseAvatar):
|
||||
def extra_ability(self):
|
||||
# 额外能力 割裂 抗性穿透提高20
|
||||
self.extra_ability_attribute['QuantumResistancePenetration'] = 0.2
|
||||
|
||||
|
||||
async def getdamage(
|
||||
self,
|
||||
base_attr: Dict[str, float],
|
||||
@ -40,37 +42,73 @@ class Seele(BaseAvatar):
|
||||
):
|
||||
# logger.info(base_attr)
|
||||
# logger.info(self.avatar_rank)
|
||||
|
||||
|
||||
# 希尔天赋再现加伤害
|
||||
attribute_bonus['AllDamageAddedRatio'] = self.Skill_num('Talent', 'Talent') + attribute_bonus.get('AllDamageAddedRatio', 0)
|
||||
|
||||
|
||||
attribute_bonus['AllDamageAddedRatio'] = self.Skill_num(
|
||||
'Talent', 'Talent'
|
||||
) + attribute_bonus.get('AllDamageAddedRatio', 0)
|
||||
|
||||
skill_info_list = []
|
||||
# 计算普攻伤害
|
||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||
damagelist1 = await demage_num(base_attr, attribute_bonus, 'Normal', 'Normal', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'普攻', 'damagelist': damagelist1})
|
||||
|
||||
damagelist1 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Normal',
|
||||
'Normal',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '普攻', 'damagelist': damagelist1})
|
||||
|
||||
# 计算战技伤害
|
||||
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill')
|
||||
damagelist2 = await demage_num(base_attr, attribute_bonus, 'BPSkill', 'BPSkill', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'战技', 'damagelist': damagelist2})
|
||||
|
||||
damagelist2 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'BPSkill',
|
||||
'BPSkill',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '战技', 'damagelist': damagelist2})
|
||||
|
||||
# 计算大招伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
damagelist3 = await demage_num(base_attr, attribute_bonus, 'Ultra', 'Ultra', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'终结技', 'damagelist': damagelist3})
|
||||
|
||||
damagelist3 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Ultra',
|
||||
'Ultra',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技', 'damagelist': damagelist3})
|
||||
|
||||
# 银狼降防终结技伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
add_attr_bonus['ignore_defence'] = 0.45 + add_attr_bonus.get('ignore_defence', 0)
|
||||
damagelist4 = await demage_num(base_attr, add_attr_bonus, 'Ultra', 'Ultra', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'银狼降防终结技', 'damagelist': damagelist4})
|
||||
|
||||
add_attr_bonus = copy.deepcopy(attribute_bonus)
|
||||
add_attr_bonus['ignore_defence'] = 0.45 + add_attr_bonus.get(
|
||||
'ignore_defence', 0
|
||||
)
|
||||
damagelist4 = await demage_num(
|
||||
base_attr,
|
||||
add_attr_bonus,
|
||||
'Ultra',
|
||||
'Ultra',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '银狼降防终结技', 'damagelist': damagelist4})
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
|
||||
|
||||
|
||||
class JingYuan(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
@ -100,7 +138,7 @@ class JingYuan(BaseAvatar):
|
||||
self.extra_ability_attribute['CriticalDamageBase'] = 0.25
|
||||
logger.info('施放战技后, 暴击率提升10%')
|
||||
self.extra_ability_attribute['CriticalChanceBase'] = 0.1
|
||||
|
||||
|
||||
async def getdamage(
|
||||
self,
|
||||
base_attr: Dict[str, float],
|
||||
@ -109,27 +147,60 @@ class JingYuan(BaseAvatar):
|
||||
skill_info_list = []
|
||||
# 计算普攻伤害
|
||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||
damagelist1 = await demage_num(base_attr, attribute_bonus, 'Normal', 'Normal', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'普攻', 'damagelist': damagelist1})
|
||||
|
||||
damagelist1 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Normal',
|
||||
'Normal',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '普攻', 'damagelist': damagelist1})
|
||||
|
||||
# 计算战技伤害
|
||||
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill')
|
||||
damagelist2 = await demage_num(base_attr, attribute_bonus, 'BPSkill', 'BPSkill', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'战技', 'damagelist': damagelist2})
|
||||
|
||||
damagelist2 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'BPSkill',
|
||||
'BPSkill',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '战技', 'damagelist': damagelist2})
|
||||
|
||||
# 计算大招伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
damagelist3 = await demage_num(base_attr, attribute_bonus, 'Ultra', 'Ultra', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'终结技', 'damagelist': damagelist3})
|
||||
|
||||
damagelist3 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Ultra',
|
||||
'Ultra',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技', 'damagelist': damagelist3})
|
||||
|
||||
# 神君
|
||||
skill_multiplier = self.Skill_num('Talent', 'Talent')
|
||||
damagelist4 = await demage_num(base_attr, attribute_bonus, 'Talent', 'Talent', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'10层神君伤害', 'damagelist': damagelist4})
|
||||
|
||||
damagelist4 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Talent',
|
||||
'Talent',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '10层神君伤害', 'damagelist': damagelist4})
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class Welt(BaseAvatar):
|
||||
Buff: BaseAvatarBuff
|
||||
|
||||
@ -154,7 +225,7 @@ class Welt(BaseAvatar):
|
||||
self.extra_ability_attribute['DmgRatio'] = 0.12
|
||||
logger.info('对被弱点击破的敌方目标造成的伤害提高20')
|
||||
self.extra_ability_attribute['AllDamageAddedRatio'] = 0.20
|
||||
|
||||
|
||||
async def getdamage(
|
||||
self,
|
||||
base_attr: Dict[str, float],
|
||||
@ -163,43 +234,84 @@ class Welt(BaseAvatar):
|
||||
skill_info_list = []
|
||||
# 计算普攻伤害
|
||||
skill_multiplier = self.Skill_num('Normal', 'Normal')
|
||||
damagelist1 = await demage_num(base_attr, attribute_bonus, 'Normal', 'Normal', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'普攻', 'damagelist': damagelist1})
|
||||
|
||||
damagelist1 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Normal',
|
||||
'Normal',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '普攻', 'damagelist': damagelist1})
|
||||
|
||||
# 计算战技伤害
|
||||
attnum = 3
|
||||
skill_multiplier = self.Skill_num('BPSkill', 'BPSkill') / attnum
|
||||
damagelist2 = await demage_num(base_attr, attribute_bonus, 'BPSkill', 'BPSkill', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
damagelist2 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'BPSkill',
|
||||
'BPSkill',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
if self.avatar_rank >= 6:
|
||||
attnum = 4
|
||||
damagelist2[0] = damagelist2[0] * attnum
|
||||
damagelist2[1] = damagelist2[1] * attnum
|
||||
damagelist2[2] = damagelist2[2] * attnum
|
||||
skill_info_list.append({'name':'战技', 'damagelist': damagelist2})
|
||||
|
||||
skill_info_list.append({'name': '战技', 'damagelist': damagelist2})
|
||||
|
||||
# 计算大招伤害
|
||||
skill_multiplier = self.Skill_num('Ultra', 'Ultra')
|
||||
damagelist3 = await demage_num(base_attr, attribute_bonus, 'Ultra', 'Ultra', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
skill_info_list.append({'name':'终结技', 'damagelist': damagelist3})
|
||||
|
||||
damagelist3 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Ultra',
|
||||
'Ultra',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
skill_info_list.append({'name': '终结技', 'damagelist': damagelist3})
|
||||
|
||||
if self.avatar_rank >= 1:
|
||||
skill_multiplier = self.Skill_num('Normal', 'Normal') * 0.5
|
||||
damagelist4 = await demage_num(base_attr, attribute_bonus, 'Normal', 'Normal', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
damagelist4 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'Normal',
|
||||
'Normal',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist4[0] = damagelist1[0] + damagelist4[0]
|
||||
damagelist4[1] = damagelist1[1] + damagelist4[1]
|
||||
damagelist4[2] = damagelist1[2] + damagelist4[2]
|
||||
skill_info_list.append({'name':'强化普攻', 'damagelist': damagelist4})
|
||||
|
||||
skill_info_list.append({'name': '强化普攻', 'damagelist': damagelist4})
|
||||
|
||||
skill_multiplier = (self.Skill_num('BPSkill', 'BPSkill') / 3) * 0.8
|
||||
damagelist5 = await demage_num(base_attr, attribute_bonus, 'BPSkill', 'BPSkill', self.avatar_element, skill_multiplier, self.avatar_level)
|
||||
damagelist5 = await demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
'BPSkill',
|
||||
'BPSkill',
|
||||
self.avatar_element,
|
||||
skill_multiplier,
|
||||
self.avatar_level,
|
||||
)
|
||||
damagelist5[0] = damagelist2[0] + damagelist5[0]
|
||||
damagelist5[1] = damagelist2[1] + damagelist5[1]
|
||||
damagelist5[2] = damagelist2[2] + damagelist5[2]
|
||||
skill_info_list.append({'name':'强化战技', 'damagelist': damagelist5})
|
||||
|
||||
skill_info_list.append({'name': '强化战技', 'damagelist': damagelist5})
|
||||
|
||||
logger.info(skill_info_list)
|
||||
return skill_info_list
|
||||
|
||||
|
||||
class AvatarDamage:
|
||||
@classmethod
|
||||
def create(
|
||||
|
@ -59,10 +59,9 @@ class BaseAvatarBuff:
|
||||
async def extra_ability(self):
|
||||
...
|
||||
|
||||
|
||||
class BaseAvatarinfo:
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar
|
||||
):
|
||||
def __init__(self, char: DamageInstanceAvatar):
|
||||
self.avatar_id = char.id_
|
||||
self.avatar_level = char.level
|
||||
self.avatar_rank = char.rank
|
||||
@ -102,11 +101,12 @@ class BaseAvatarinfo:
|
||||
# 嘲讽
|
||||
BaseAggro=promotion.BaseAggro.Value,
|
||||
)
|
||||
|
||||
|
||||
def Ultra_Use(self):
|
||||
skill_info = skill_dict[str(self.avatar_id)]['Ultra_Use'][0]
|
||||
return msgspec.convert(skill_info, type=float)
|
||||
|
||||
|
||||
class BaseAvatar:
|
||||
def __init__(
|
||||
self, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||
@ -152,11 +152,11 @@ class BaseAvatar:
|
||||
# 嘲讽
|
||||
BaseAggro=promotion.BaseAggro.Value,
|
||||
)
|
||||
|
||||
|
||||
def Skill_Info(self, skill_type: str):
|
||||
skill_info = skill_dict[str(self.avatar_id)]['skillList'][skill_type]
|
||||
return msgspec.convert(skill_info, type=List[Union[str, int]])
|
||||
|
||||
|
||||
def Skill_num(self, skill: Union[str, int], skill_type: str):
|
||||
skill_level = 0
|
||||
if skill == 'Normal':
|
||||
|
@ -1,11 +1,19 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import List, Union
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
|
||||
from .utils import merge_attribute
|
||||
|
||||
async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, element, skill_multiplier, level):
|
||||
|
||||
async def demage_num(
|
||||
base_attr,
|
||||
attribute_bonus,
|
||||
skill_type,
|
||||
add_skill_type,
|
||||
element,
|
||||
skill_multiplier,
|
||||
level,
|
||||
):
|
||||
logger.info(f'技能区: {skill_multiplier}')
|
||||
logger.info(f'skill_type: {skill_type}')
|
||||
logger.info(f'level: {level}')
|
||||
@ -18,9 +26,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
if attr.__contains__('AttackAddedRatio'):
|
||||
attr_name = attr.split('AttackAddedRatio')[0]
|
||||
if attr_name in (skill_type, add_skill_type):
|
||||
attack_added_ratio = attribute_bonus.get(
|
||||
'AttackAddedRatio', 0
|
||||
)
|
||||
attack_added_ratio = attribute_bonus.get('AttackAddedRatio', 0)
|
||||
attribute_bonus['AttackAddedRatio'] = (
|
||||
attack_added_ratio + attribute_bonus[attr]
|
||||
)
|
||||
@ -41,9 +47,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
attack = merged_attr.get('attack', 0)
|
||||
logger.info(f'攻击力: {attack}')
|
||||
damage_add = 0
|
||||
hp_multiplier = 0
|
||||
hp_num = 0
|
||||
|
||||
|
||||
# 模拟 同属性弱点 同等级 的怪物
|
||||
# 韧性条减伤
|
||||
enemy_damage_reduction = 0.1
|
||||
@ -62,7 +66,10 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
if attr_name.__contains__('_'):
|
||||
skill_name = attr_name.split('_')[0]
|
||||
skillattr_name = attr_name.split('_')[1]
|
||||
if skill_name in (skill_type, add_skill_type) and skillattr_name in (element, 'AllDamage'):
|
||||
if skill_name in (
|
||||
skill_type,
|
||||
add_skill_type,
|
||||
) and skillattr_name in (element, 'AllDamage'):
|
||||
enemy_status_resistance += merged_attr[attr]
|
||||
logger.info(
|
||||
f'{skill_name}对{skillattr_name}属性有{merged_attr[attr]}穿透加成'
|
||||
@ -79,9 +86,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
ignore_defence = 1 - merged_attr[attr]
|
||||
break
|
||||
logger.info(f'ignore_defence {ignore_defence}')
|
||||
enemy_defence = (
|
||||
level * 10 + 200
|
||||
) * ignore_defence
|
||||
enemy_defence = (level * 10 + 200) * ignore_defence
|
||||
defence_multiplier = (level * 10 + 200) / (
|
||||
level * 10 + 200 + enemy_defence
|
||||
)
|
||||
@ -107,8 +112,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
attr_name = attr.split('AddedRatio')[0]
|
||||
if attr_name in (element, 'AllDamage'):
|
||||
logger.info(
|
||||
f'{attr} 对 {element} '
|
||||
f'有 {merged_attr[attr]} 伤害加成'
|
||||
f'{attr} 对 {element} 有 {merged_attr[attr]} 伤害加成'
|
||||
)
|
||||
if attr_name == element:
|
||||
element_area += merged_attr[attr]
|
||||
@ -146,8 +150,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
skill_name = attr.split('_')[0]
|
||||
if skill_name in (skill_type, add_skill_type):
|
||||
logger.info(
|
||||
f'{attr} 对 {skill_type} 有 '
|
||||
f'{merged_attr[attr]} 爆伤加成'
|
||||
f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 爆伤加成'
|
||||
)
|
||||
critical_damage_base += merged_attr[attr]
|
||||
critical_damage = critical_damage_base + 1
|
||||
@ -163,8 +166,7 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
skill_name = attr.split('_')[0]
|
||||
if skill_name in (skill_type, add_skill_type):
|
||||
logger.info(
|
||||
f'{attr} 对 {skill_type} 有 '
|
||||
f'{merged_attr[attr]} 暴击加成'
|
||||
f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 暴击加成'
|
||||
)
|
||||
critical_chance_base += merged_attr[attr]
|
||||
critical_chance_base = min(1, critical_chance_base)
|
||||
@ -173,11 +175,11 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
# 期望伤害
|
||||
qiwang_damage = (critical_chance_base * critical_damage_base) + 1
|
||||
logger.info(f'暴击期望: {qiwang_damage}')
|
||||
|
||||
|
||||
attack_tz = 0.0
|
||||
injury_add = 0.0
|
||||
critical_damage_add = 0
|
||||
|
||||
|
||||
damage_cd = (
|
||||
attack
|
||||
* skill_multiplier
|
||||
@ -202,25 +204,20 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
+ damage_add
|
||||
)
|
||||
|
||||
|
||||
attr_value_tz: float = base_attr.get('attack', 0)
|
||||
attribute_atk = attribute_bonus.get('AttackDelta', 0)
|
||||
attack_tz = (
|
||||
attr_value_tz
|
||||
+ attr_value_tz
|
||||
* (
|
||||
1
|
||||
+ attribute_bonus.get('AttackAddedRatio', 0)
|
||||
+ 2.144
|
||||
)
|
||||
* (1 + attribute_bonus.get('AttackAddedRatio', 0) + 2.144)
|
||||
+ attribute_atk
|
||||
)
|
||||
|
||||
injury_add_tz = 0
|
||||
|
||||
|
||||
if element == 'Imaginary':
|
||||
injury_add_tz = 0.12
|
||||
|
||||
|
||||
damage_tz = (
|
||||
attack_tz
|
||||
* skill_multiplier
|
||||
@ -234,8 +231,6 @@ async def demage_num(base_attr, attribute_bonus, skill_type, add_skill_type, ele
|
||||
+ damage_add
|
||||
)
|
||||
|
||||
|
||||
|
||||
if element == 'Thunder':
|
||||
element_area = 0
|
||||
damage_tz_fj = (
|
||||
|
@ -19,7 +19,7 @@ with Path.open(Excel_path / 'Excel' / 'SkillData.json', encoding='utf-8') as f:
|
||||
class RoleInstance:
|
||||
def __init__(self, raw_data: Character):
|
||||
self.raw_data = DamageInstance(raw_data)
|
||||
|
||||
|
||||
self.avatar = Avatar.create(self.raw_data.avatar, self.raw_data.skill)
|
||||
self.weapon = Weapon.create(self.raw_data.weapon)
|
||||
self.relic_set = RelicSet().create(self.raw_data.relic)
|
||||
|
Loading…
x
Reference in New Issue
Block a user