mirror of
https://github.com/baiqwerdvd/StarRailUID.git
synced 2025-05-05 19:23:45 +08:00
完成刃卡芙卡伤害计算 (#69)
* 完成刃卡芙卡伤害计算
* 完成刃卡芙卡伤害计算
* 🚨 `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
6d1d4e656f
commit
ac3f219db8
@ -50,7 +50,6 @@ TEXT_PATH = Path(__file__).parent / 'texture2D'
|
|||||||
|
|
||||||
bg_img = Image.open(TEXT_PATH / "bg.png")
|
bg_img = Image.open(TEXT_PATH / "bg.png")
|
||||||
white_color = (213, 213, 213)
|
white_color = (213, 213, 213)
|
||||||
yellow_color = (255, 255, 0)
|
|
||||||
NUM_MAP = {0: '零', 1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七'}
|
NUM_MAP = {0: '零', 1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七'}
|
||||||
|
|
||||||
RANK_MAP = {
|
RANK_MAP = {
|
||||||
@ -90,7 +89,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
|||||||
return char_data
|
return char_data
|
||||||
char = await cal_char_info(char_data)
|
char = await cal_char_info(char_data)
|
||||||
damage_len = 0
|
damage_len = 0
|
||||||
if char.char_id in [1102, 1204, 1107, 1213, 1006]:
|
if char.char_id in [1102, 1204, 1107, 1213, 1006, 1005, 1205]:
|
||||||
skill_list = skill_dict[str(char.char_id)]['skilllist']
|
skill_list = skill_dict[str(char.char_id)]['skilllist']
|
||||||
damage_len = len(skill_list)
|
damage_len = len(skill_list)
|
||||||
# print(damage_len)
|
# print(damage_len)
|
||||||
@ -585,12 +584,14 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if damage_len > 0:
|
if damage_len > 0:
|
||||||
|
damage_title_img = Image.open(TEXT_PATH / 'base_info_pure.png')
|
||||||
|
char_info.paste(damage_title_img, (0, 2028), damage_title_img)
|
||||||
damage_list = await cal(char_data)
|
damage_list = await cal(char_data)
|
||||||
# 写伤害
|
# 写伤害
|
||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(55, 2048),
|
(55, 2048),
|
||||||
'角色动作',
|
'角色动作',
|
||||||
yellow_color,
|
white_color,
|
||||||
sr_font_26,
|
sr_font_26,
|
||||||
'lm',
|
'lm',
|
||||||
)
|
)
|
||||||
@ -598,7 +599,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
|||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(370, 2048),
|
(370, 2048),
|
||||||
'暴击值',
|
'暴击值',
|
||||||
yellow_color,
|
white_color,
|
||||||
sr_font_26,
|
sr_font_26,
|
||||||
'lm',
|
'lm',
|
||||||
)
|
)
|
||||||
@ -606,7 +607,7 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
|||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(560, 2048),
|
(560, 2048),
|
||||||
'期望值',
|
'期望值',
|
||||||
yellow_color,
|
white_color,
|
||||||
sr_font_26,
|
sr_font_26,
|
||||||
'lm',
|
'lm',
|
||||||
)
|
)
|
||||||
@ -614,13 +615,20 @@ async def draw_char_info_img(raw_mes: str, sr_uid: str):
|
|||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(750, 2048),
|
(750, 2048),
|
||||||
'满配辅助末日兽',
|
'满配辅助末日兽',
|
||||||
yellow_color,
|
white_color,
|
||||||
sr_font_26,
|
sr_font_26,
|
||||||
'lm',
|
'lm',
|
||||||
)
|
)
|
||||||
damage_num = 0
|
damage_num = 0
|
||||||
for damage_info in damage_list:
|
for damage_info in damage_list:
|
||||||
damage_num = damage_num + 1
|
damage_num = damage_num + 1
|
||||||
|
if damage_num % 2 == 0:
|
||||||
|
damage_img = Image.open(TEXT_PATH / 'attack_1.png')
|
||||||
|
else:
|
||||||
|
damage_img = Image.open(TEXT_PATH / 'attack_2.png')
|
||||||
|
char_info.paste(
|
||||||
|
damage_img, (0, 2028 + damage_num * 48), damage_img
|
||||||
|
)
|
||||||
char_img_draw.text(
|
char_img_draw.text(
|
||||||
(55, 2048 + damage_num * 48),
|
(55, 2048 + damage_num * 48),
|
||||||
f'{damage_info[0]}',
|
f'{damage_info[0]}',
|
||||||
@ -719,7 +727,7 @@ async def cal(char_data: Dict):
|
|||||||
char = await cal_char_info(char_data)
|
char = await cal_char_info(char_data)
|
||||||
|
|
||||||
skill_info_list = []
|
skill_info_list = []
|
||||||
if char.char_id in [1102, 1204, 1107, 1213, 1006]:
|
if char.char_id in [1102, 1204, 1107, 1213, 1006, 1005, 1205]:
|
||||||
if char.char_id == 1213:
|
if char.char_id == 1213:
|
||||||
for skill_type in [
|
for skill_type in [
|
||||||
'Normal',
|
'Normal',
|
||||||
@ -731,12 +739,22 @@ async def cal(char_data: Dict):
|
|||||||
role = RoleInstance(char)
|
role = RoleInstance(char)
|
||||||
im_tmp = await role.cal_damage(skill_type)
|
im_tmp = await role.cal_damage(skill_type)
|
||||||
skill_info_list.append(im_tmp)
|
skill_info_list.append(im_tmp)
|
||||||
|
elif char.char_id == 1005:
|
||||||
|
for skill_type in ['Normal', 'BPSkill', 'Ultra', 'DOT']:
|
||||||
|
role = RoleInstance(char)
|
||||||
|
im_tmp = await role.cal_damage(skill_type)
|
||||||
|
skill_info_list.append(im_tmp)
|
||||||
|
if char.char_id == 1205:
|
||||||
|
for skill_type in ['Normal', 'Normal1', 'Ultra']:
|
||||||
|
role = RoleInstance(char)
|
||||||
|
im_tmp = await role.cal_damage(skill_type)
|
||||||
|
skill_info_list.append(im_tmp)
|
||||||
else:
|
else:
|
||||||
for skill_type in ['Normal', 'BPSkill', 'Ultra']:
|
for skill_type in ['Normal', 'BPSkill', 'Ultra']:
|
||||||
role = RoleInstance(char)
|
role = RoleInstance(char)
|
||||||
im_tmp = await role.cal_damage(skill_type)
|
im_tmp = await role.cal_damage(skill_type)
|
||||||
skill_info_list.append(im_tmp)
|
skill_info_list.append(im_tmp)
|
||||||
if char.char_id in [1204, 1107]:
|
if char.char_id in [1204, 1107, 1005, 1205]:
|
||||||
role = RoleInstance(char)
|
role = RoleInstance(char)
|
||||||
im_tmp = await role.cal_damage('Talent')
|
im_tmp = await role.cal_damage('Talent')
|
||||||
skill_info_list.append(im_tmp)
|
skill_info_list.append(im_tmp)
|
||||||
|
@ -28,7 +28,7 @@ class Seele(BaseAvatar):
|
|||||||
if self.avatar_rank < 2:
|
if self.avatar_rank < 2:
|
||||||
self.eidolon_attribute['SpeedAddedRatio'] = mp.mpf(0.25)
|
self.eidolon_attribute['SpeedAddedRatio'] = mp.mpf(0.25)
|
||||||
if self.avatar_rank >= 1:
|
if self.avatar_rank >= 1:
|
||||||
self.eidolon_attribute['CriticalDamageBase'] = mp.mpf(0.15)
|
self.eidolon_attribute['CriticalChanceBase'] = mp.mpf(0.15)
|
||||||
if self.avatar_rank >= 2:
|
if self.avatar_rank >= 2:
|
||||||
self.eidolon_attribute['SpeedAddedRatio'] = mp.mpf(0.5)
|
self.eidolon_attribute['SpeedAddedRatio'] = mp.mpf(0.5)
|
||||||
|
|
||||||
@ -150,23 +150,80 @@ class Silverwolf(BaseAvatar):
|
|||||||
logger.info('额外能力')
|
logger.info('额外能力')
|
||||||
logger.info('战技降抗')
|
logger.info('战技降抗')
|
||||||
logger.info('战技使目标全属性抗性降低的效果额外降低3%')
|
logger.info('战技使目标全属性抗性降低的效果额外降低3%')
|
||||||
enemy_status_resistance = self.BPSkill_d() + 0.03
|
enemy_status_resistance = self.BPSkill_num('BPSkill_D') + 0.03
|
||||||
self.extra_ability_attribute['QuantumResistancePenetration'] = mp.mpf(
|
self.extra_ability_attribute['QuantumResistancePenetration'] = mp.mpf(
|
||||||
enemy_status_resistance
|
enemy_status_resistance
|
||||||
)
|
)
|
||||||
logger.info('终结技降防')
|
logger.info('终结技降防')
|
||||||
ultra_defence = self.Ultra_d()
|
ultra_defence = self.Ultra_num('Ultra_D')
|
||||||
logger.info('天赋降防')
|
logger.info('天赋降防')
|
||||||
talent_defence = self.Talent()
|
talent_defence = self.Talent()
|
||||||
ignore_defence = ultra_defence + talent_defence
|
ignore_defence = ultra_defence + talent_defence
|
||||||
self.extra_ability_attribute['ignore_defence'] = mp.mpf(ignore_defence)
|
self.extra_ability_attribute['ignore_defence'] = mp.mpf(ignore_defence)
|
||||||
|
|
||||||
|
|
||||||
|
class Kafka(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.extra_ability_attribute['DOTDmgAdd'] = mp.mpf(0.3)
|
||||||
|
if self.avatar_rank >= 2:
|
||||||
|
self.extra_ability_attribute['DOTDmgAdd'] = mp.mpf(0.55)
|
||||||
|
|
||||||
|
def extra_ability(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Blade(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 >= 2:
|
||||||
|
self.eidolon_attribute['CriticalChanceBase'] = mp.mpf(0.15)
|
||||||
|
|
||||||
|
if self.avatar_rank >= 4:
|
||||||
|
self.extra_ability_attribute['HPAddedRatio'] = mp.mpf(0.4)
|
||||||
|
|
||||||
|
def extra_ability(self):
|
||||||
|
logger.info('额外能力')
|
||||||
|
logger.info('天赋施放的追加攻击伤害提高20%')
|
||||||
|
self.extra_ability_attribute['TalentDmgAdd'] = mp.mpf(0.2)
|
||||||
|
|
||||||
|
|
||||||
class Avatar:
|
class Avatar:
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
cls, char: DamageInstanceAvatar, skills: List[DamageInstanceSkill]
|
||||||
):
|
):
|
||||||
|
if char.id_ == 1205:
|
||||||
|
return Blade(char, skills)
|
||||||
|
if char.id_ == 1005:
|
||||||
|
return Kafka(char, skills)
|
||||||
if char.id_ == 1006:
|
if char.id_ == 1006:
|
||||||
return Silverwolf(char, skills)
|
return Silverwolf(char, skills)
|
||||||
if char.id_ == 1213:
|
if char.id_ == 1213:
|
||||||
|
@ -134,20 +134,27 @@ class BaseAvatar:
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
def BPSkill_d(self):
|
def BPSkill_num(self, skill_type):
|
||||||
return mp.mpf(
|
return mp.mpf(
|
||||||
skill_dict[str(self.avatar_id)]['BPSkill_D'][
|
skill_dict[str(self.avatar_id)][skill_type][
|
||||||
self.Skill.BPSkill_.level - 1
|
self.Skill.BPSkill_.level - 1
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
def Ultra_d(self):
|
def Ultra_num(self, skill_type):
|
||||||
return mp.mpf(
|
return mp.mpf(
|
||||||
skill_dict[str(self.avatar_id)]['Ultra_D'][
|
skill_dict[str(self.avatar_id)][skill_type][
|
||||||
self.Skill.Ultra_.level - 1
|
self.Skill.Ultra_.level - 1
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def Talent_num(self, skill_type):
|
||||||
|
return mp.mpf(
|
||||||
|
skill_dict[str(self.avatar_id)][skill_type][
|
||||||
|
self.Skill.Talent_.level - 1
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
def Talent_add(self):
|
def Talent_add(self):
|
||||||
if self.avatar_id in [1102]:
|
if self.avatar_id in [1102]:
|
||||||
return mp.mpf(
|
return mp.mpf(
|
||||||
@ -155,6 +162,12 @@ class BaseAvatar:
|
|||||||
self.Skill.Talent_.level - 1
|
self.Skill.Talent_.level - 1
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
elif self.avatar_id in [1205]:
|
||||||
|
return mp.mpf(
|
||||||
|
skill_dict[str(self.avatar_id)]['BPSkill'][
|
||||||
|
self.Skill.BPSkill_.level - 1
|
||||||
|
]
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
return mp.mpf(0)
|
return mp.mpf(0)
|
||||||
|
|
||||||
|
@ -81,8 +81,13 @@ class DamageInstance:
|
|||||||
rank=char.char_rank,
|
rank=char.char_rank,
|
||||||
element=char.char_element,
|
element=char.char_element,
|
||||||
promotion=char.char_promotion,
|
promotion=char.char_promotion,
|
||||||
attribute_bonus=msgspec.from_builtins(char.attribute_bonus, Union[List[DamageInstanceAvatarAttributeBouns], None]),
|
attribute_bonus=msgspec.from_builtins(
|
||||||
extra_ability=msgspec.from_builtins(char.extra_ability, Union[List, None]),
|
char.attribute_bonus,
|
||||||
|
Union[List[DamageInstanceAvatarAttributeBouns], None],
|
||||||
|
),
|
||||||
|
extra_ability=msgspec.from_builtins(
|
||||||
|
char.extra_ability, Union[List, None]
|
||||||
|
),
|
||||||
)
|
)
|
||||||
self.weapon = DamageInstanceWeapon(
|
self.weapon = DamageInstanceWeapon(
|
||||||
id_=char.equipment['equipmentID'],
|
id_=char.equipment['equipmentID'],
|
||||||
|
@ -444,5 +444,230 @@
|
|||||||
"BPSkill": ["attack","战技", 1],
|
"BPSkill": ["attack","战技", 1],
|
||||||
"Ultra": ["attack","终结技", 1]
|
"Ultra": ["attack","终结技", 1]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"1005": {
|
||||||
|
"Normal": [
|
||||||
|
0.5000000004656613,
|
||||||
|
0.6000000005587935,
|
||||||
|
0.7000000006519258,
|
||||||
|
0.8000000007450581,
|
||||||
|
0.9000000008381903,
|
||||||
|
1.0000000000931323,
|
||||||
|
1.1000000001862645,
|
||||||
|
1.2000000002793968
|
||||||
|
],
|
||||||
|
"BPSkill": [
|
||||||
|
0.8000000004656613,
|
||||||
|
0.8800000004656613,
|
||||||
|
0.9600000005587935,
|
||||||
|
1.0400000005587935,
|
||||||
|
1.1200000006519258,
|
||||||
|
1.2000000006519258,
|
||||||
|
1.3000000007450581,
|
||||||
|
1.4000000007450581,
|
||||||
|
1.5000000008381903,
|
||||||
|
1.6000000008381903,
|
||||||
|
1.6800000000931323,
|
||||||
|
1.7600000000931323,
|
||||||
|
1.8400000001862645,
|
||||||
|
1.9200000001862645,
|
||||||
|
2.0000000002793968
|
||||||
|
],
|
||||||
|
"Ultra": [
|
||||||
|
0.4800000003725290,
|
||||||
|
0.5120000003725290,
|
||||||
|
0.5440000003725290,
|
||||||
|
0.5760000003725290,
|
||||||
|
0.6080000003725290,
|
||||||
|
0.6400000003725290,
|
||||||
|
0.6800000003725290,
|
||||||
|
0.7200000003725290,
|
||||||
|
0.7600000003725290,
|
||||||
|
0.8000000003725290,
|
||||||
|
0.8320000003725290,
|
||||||
|
0.8640000003725290,
|
||||||
|
0.8960000003725290,
|
||||||
|
0.9280000003725290,
|
||||||
|
0.9600000003725290
|
||||||
|
],
|
||||||
|
"DOT": [
|
||||||
|
1.1600000004656613,
|
||||||
|
1.2688000004656613,
|
||||||
|
1.3775000005587935,
|
||||||
|
1.4863000005587935,
|
||||||
|
1.5950000006519258,
|
||||||
|
1.7581000006519258,
|
||||||
|
1.9756000007450581,
|
||||||
|
2.2475000007450581,
|
||||||
|
2.5738000008381903,
|
||||||
|
2.9000000008381903,
|
||||||
|
3.0414000000931323,
|
||||||
|
3.1828000000931323,
|
||||||
|
3.3241000001862645,
|
||||||
|
3.4655000001862645,
|
||||||
|
3.6069000002793968
|
||||||
|
],
|
||||||
|
"Talent": [
|
||||||
|
0.4200000003725290,
|
||||||
|
0.5180000003725290,
|
||||||
|
0.6160000003725290,
|
||||||
|
0.7140000003725290,
|
||||||
|
0.8120000003725290,
|
||||||
|
0.9100000003725290,
|
||||||
|
1.0325000003725290,
|
||||||
|
1.1550000003725290,
|
||||||
|
1.2775000003725290,
|
||||||
|
1.4000000003725290,
|
||||||
|
1.4980000003725290,
|
||||||
|
1.5960000003725290,
|
||||||
|
1.6940000003725290,
|
||||||
|
1.7920000003725290,
|
||||||
|
1.8900000003725290
|
||||||
|
],
|
||||||
|
"Maze": [
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"Ultra_Use": [
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"skilllist": {
|
||||||
|
"Normal": ["attack","普攻", 1],
|
||||||
|
"BPSkill": ["attack","战技", 1],
|
||||||
|
"Ultra": ["attack","终结技", 1],
|
||||||
|
"DOT": ["attack","单次持续伤害", 1],
|
||||||
|
"Talent": ["attack","追加攻击", 1]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1205": {
|
||||||
|
"Normal": [
|
||||||
|
0.5000000004656613,
|
||||||
|
0.6000000005587935,
|
||||||
|
0.7000000006519258,
|
||||||
|
0.8000000007450581,
|
||||||
|
0.9000000008381903,
|
||||||
|
1.0000000000931323,
|
||||||
|
1.1000000001862645,
|
||||||
|
1.2000000002793968,
|
||||||
|
1.3000000002793968
|
||||||
|
],
|
||||||
|
"Normal1": [
|
||||||
|
0.2000000004656613,
|
||||||
|
0.2400000005587935,
|
||||||
|
0.2800000006519258,
|
||||||
|
0.3200000007450581,
|
||||||
|
0.3600000008381903,
|
||||||
|
0.4000000000931323,
|
||||||
|
0.4400000001862645,
|
||||||
|
0.4800000002793968,
|
||||||
|
0.5200000002793968
|
||||||
|
],
|
||||||
|
"Normal1_HP": [
|
||||||
|
0.5000000004656613,
|
||||||
|
0.6000000005587935,
|
||||||
|
0.7000000006519258,
|
||||||
|
0.8000000007450581,
|
||||||
|
0.9000000008381903,
|
||||||
|
1.0000000000931323,
|
||||||
|
1.1000000001862645,
|
||||||
|
1.2000000002793968,
|
||||||
|
1.3000000002793968
|
||||||
|
],
|
||||||
|
"BPSkill": [
|
||||||
|
0.1200000004656613,
|
||||||
|
0.1480000004656613,
|
||||||
|
0.1760000005587935,
|
||||||
|
0.2040000003725290,
|
||||||
|
0.2320000003725290,
|
||||||
|
0.2600000003725290,
|
||||||
|
0.2950000003725290,
|
||||||
|
0.3300000003725290,
|
||||||
|
0.3650000003725290,
|
||||||
|
0.4000000003725290,
|
||||||
|
0.4280000003725290,
|
||||||
|
0.4560000003725290,
|
||||||
|
0.4840000003725290,
|
||||||
|
0.5120000003725290,
|
||||||
|
0.5400000003725290
|
||||||
|
],
|
||||||
|
"Ultra": [
|
||||||
|
0.2400000003725290,
|
||||||
|
0.2560000003725290,
|
||||||
|
0.2720000003725290,
|
||||||
|
0.2880000003725290,
|
||||||
|
0.3040000003725290,
|
||||||
|
0.3200000003725290,
|
||||||
|
0.3400000003725290,
|
||||||
|
0.3600000003725290,
|
||||||
|
0.3800000003725290,
|
||||||
|
0.4000000003725290,
|
||||||
|
0.4160000003725290,
|
||||||
|
0.4320000003725290,
|
||||||
|
0.4480000003725290,
|
||||||
|
0.4640000003725290,
|
||||||
|
0.4800000003725290
|
||||||
|
],
|
||||||
|
"Ultra_HP": [
|
||||||
|
1.5000000003725290,
|
||||||
|
1.5400000003725290,
|
||||||
|
1.5800000003725290,
|
||||||
|
1.6200000003725290,
|
||||||
|
1.6600000003725290,
|
||||||
|
1.7000000003725290,
|
||||||
|
1.7500000003725290,
|
||||||
|
1.8000000003725290,
|
||||||
|
1.8500000003725290,
|
||||||
|
1.9000000003725290,
|
||||||
|
1.9400000003725290,
|
||||||
|
1.9800000003725290,
|
||||||
|
2.0200000003725290,
|
||||||
|
2.0600000003725290,
|
||||||
|
2.1000000003725290
|
||||||
|
],
|
||||||
|
"Talent": [
|
||||||
|
0.2200000003725290,
|
||||||
|
0.2420000003725290,
|
||||||
|
0.2640000003725290,
|
||||||
|
0.2860000003725290,
|
||||||
|
0.3080000003725290,
|
||||||
|
0.3300000003725290,
|
||||||
|
0.3575000003725290,
|
||||||
|
0.3850000003725290,
|
||||||
|
0.4125000003725290,
|
||||||
|
0.4400000003725290,
|
||||||
|
0.4620000003725290,
|
||||||
|
0.4840000003725290,
|
||||||
|
0.5060000003725290,
|
||||||
|
0.5280000003725290,
|
||||||
|
0.5500000003725290
|
||||||
|
],
|
||||||
|
"Talent_HP": [
|
||||||
|
0.5500000003725290,
|
||||||
|
0.6050000003725290,
|
||||||
|
0.6600000003725290,
|
||||||
|
0.7150000003725290,
|
||||||
|
0.7700000003725290,
|
||||||
|
0.8250000003725290,
|
||||||
|
0.8938000003725290,
|
||||||
|
0.9625000003725290,
|
||||||
|
1.0313000003725290,
|
||||||
|
1.1000000003725290,
|
||||||
|
1.1550000003725290,
|
||||||
|
1.2100000003725290,
|
||||||
|
1.2650000003725290,
|
||||||
|
1.3200000003725290,
|
||||||
|
1.3750000003725290
|
||||||
|
],
|
||||||
|
"Maze": [
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"Ultra_Use": [
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"skilllist": {
|
||||||
|
"Normal": ["attack","普攻", 1],
|
||||||
|
"Normal1": ["attack","无间剑树", 1],
|
||||||
|
"Ultra": ["attack","终结技", 1],
|
||||||
|
"Talent": ["attack","追加攻击", 1]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ class RoleInstance:
|
|||||||
logger.info(self.base_attr)
|
logger.info(self.base_attr)
|
||||||
logger.info('attribute_bonus')
|
logger.info('attribute_bonus')
|
||||||
logger.info(self.attribute_bonus)
|
logger.info(self.attribute_bonus)
|
||||||
|
logger.info(skill_type)
|
||||||
# 技能区
|
# 技能区
|
||||||
skill_info = self.avatar.Skill_Info(skill_type)
|
skill_info = self.avatar.Skill_Info(skill_type)
|
||||||
if skill_type == 'Normal':
|
if skill_type == 'Normal':
|
||||||
@ -151,6 +151,12 @@ class RoleInstance:
|
|||||||
if self.raw_data.avatar.id_ == 1213:
|
if self.raw_data.avatar.id_ == 1213:
|
||||||
skill_multiplier = self.avatar.Normalnum(skill_type)
|
skill_multiplier = self.avatar.Normalnum(skill_type)
|
||||||
skill_type = 'Normal'
|
skill_type = 'Normal'
|
||||||
|
elif self.raw_data.avatar.id_ == 1005:
|
||||||
|
skill_multiplier = self.avatar.Ultra_num(skill_type)
|
||||||
|
if self.raw_data.avatar.rank >= 6:
|
||||||
|
skill_multiplier = skill_multiplier + 1.56
|
||||||
|
elif self.raw_data.avatar.id_ == 1205:
|
||||||
|
skill_multiplier = self.avatar.Normalnum(skill_type)
|
||||||
else:
|
else:
|
||||||
raise Exception('skill type error')
|
raise Exception('skill type error')
|
||||||
|
|
||||||
@ -202,13 +208,34 @@ class RoleInstance:
|
|||||||
merged_attr = await merge_attribute(
|
merged_attr = await merge_attribute(
|
||||||
self.base_attr, self.attribute_bonus
|
self.base_attr, self.attribute_bonus
|
||||||
)
|
)
|
||||||
|
logger.info(f'{merged_attr}')
|
||||||
# 技能类型为攻击
|
# 技能类型为攻击
|
||||||
if skill_info[0] == 'attack':
|
if skill_info[0] == 'attack':
|
||||||
skill_multiplier = skill_multiplier / skill_info[2]
|
skill_multiplier = skill_multiplier / skill_info[2]
|
||||||
logger.info(f'技能区单段: {skill_multiplier}')
|
logger.info(f'技能区单段: {skill_multiplier}')
|
||||||
attack = merged_attr['attack']
|
attack = merged_attr['attack']
|
||||||
logger.info(f'攻击力: {attack}')
|
logger.info(f'攻击力: {attack}')
|
||||||
|
damage_add = 0
|
||||||
|
if self.raw_data.avatar.id_ == 1205:
|
||||||
|
hp_num = merged_attr['hp']
|
||||||
|
if skill_type == 'Normal1':
|
||||||
|
hp_multiplier = self.avatar.Normalnum('Normal1_HP')
|
||||||
|
skill_type = 'Normal'
|
||||||
|
elif skill_type == 'Ultra':
|
||||||
|
hp_multiplier = self.avatar.Ultra_num('Ultra_HP')
|
||||||
|
if self.raw_data.avatar.rank >= 1:
|
||||||
|
hp_multiplier += 0.9
|
||||||
|
elif skill_type == 'Talent':
|
||||||
|
hp_multiplier = self.avatar.Talent_num('Talent_HP')
|
||||||
|
if self.raw_data.avatar.rank >= 6:
|
||||||
|
damage_add = hp_num * 0.5
|
||||||
|
else:
|
||||||
|
hp_multiplier = 0
|
||||||
|
attack = (skill_multiplier * attack) + (hp_multiplier * hp_num)
|
||||||
|
skill_multiplier = 1
|
||||||
|
logger.info(f'混伤区: {attack}')
|
||||||
|
|
||||||
|
logger.info(f'额外伤害: {damage_add}')
|
||||||
# 模拟 同属性弱点 同等级 的怪物
|
# 模拟 同属性弱点 同等级 的怪物
|
||||||
# 韧性条减伤
|
# 韧性条减伤
|
||||||
enemy_damage_reduction = 0.1
|
enemy_damage_reduction = 0.1
|
||||||
@ -283,7 +310,6 @@ class RoleInstance:
|
|||||||
|
|
||||||
# 易伤区
|
# 易伤区
|
||||||
logger.info('检查是否有易伤加成')
|
logger.info('检查是否有易伤加成')
|
||||||
logger.info(f'{merged_attr}')
|
|
||||||
damage_ratio = merged_attr.get('DmgRatio', 0)
|
damage_ratio = merged_attr.get('DmgRatio', 0)
|
||||||
# 检查是否有对特定技能的易伤加成
|
# 检查是否有对特定技能的易伤加成
|
||||||
# Talent_DmgRatio
|
# Talent_DmgRatio
|
||||||
@ -299,19 +325,22 @@ class RoleInstance:
|
|||||||
logger.info(f'易伤: {damage_ratio}')
|
logger.info(f'易伤: {damage_ratio}')
|
||||||
|
|
||||||
# 爆伤区
|
# 爆伤区
|
||||||
logger.info('检查是否有爆伤加成')
|
if skill_type == 'DOT':
|
||||||
logger.info(f'{merged_attr}')
|
critical_damage_base = 0
|
||||||
critical_damage_base = merged_attr['CriticalDamageBase']
|
else:
|
||||||
# 检查是否有对特定技能的爆伤加成
|
logger.info('检查是否有爆伤加成')
|
||||||
# Ultra_CriticalChance
|
logger.info(f'{merged_attr}')
|
||||||
for attr in merged_attr:
|
critical_damage_base = merged_attr['CriticalDamageBase']
|
||||||
if attr.__contains__('_CriticalChance'):
|
# 检查是否有对特定技能的爆伤加成
|
||||||
skill_name = attr.split('_')[0]
|
# Ultra_CriticalChance
|
||||||
if skill_name == skill_type:
|
for attr in merged_attr:
|
||||||
logger.info(
|
if attr.__contains__('_CriticalChance'):
|
||||||
f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 爆伤加成'
|
skill_name = attr.split('_')[0]
|
||||||
)
|
if skill_name == skill_type:
|
||||||
critical_damage_base += merged_attr[attr]
|
logger.info(
|
||||||
|
f'{attr} 对 {skill_type} 有 {merged_attr[attr]} 爆伤加成'
|
||||||
|
)
|
||||||
|
critical_damage_base += merged_attr[attr]
|
||||||
critical_damage = critical_damage_base + 1
|
critical_damage = critical_damage_base + 1
|
||||||
logger.info(f'暴伤: {critical_damage}')
|
logger.info(f'暴伤: {critical_damage}')
|
||||||
|
|
||||||
@ -357,6 +386,7 @@ class RoleInstance:
|
|||||||
* resistance_area
|
* resistance_area
|
||||||
* damage_reduction
|
* damage_reduction
|
||||||
* (critical_damage + critical_damage_add)
|
* (critical_damage + critical_damage_add)
|
||||||
|
+ damage_add
|
||||||
)
|
)
|
||||||
damage_cd_z += damage_cd
|
damage_cd_z += damage_cd
|
||||||
damage_qw = (
|
damage_qw = (
|
||||||
@ -368,6 +398,7 @@ class RoleInstance:
|
|||||||
* resistance_area
|
* resistance_area
|
||||||
* damage_reduction
|
* damage_reduction
|
||||||
* qiwang_damage
|
* qiwang_damage
|
||||||
|
+ damage_add
|
||||||
)
|
)
|
||||||
damage_qw_z += damage_qw
|
damage_qw_z += damage_qw
|
||||||
|
|
||||||
@ -378,6 +409,10 @@ class RoleInstance:
|
|||||||
* (1 + self.attribute_bonus['AttackAddedRatio'] + 2.144)
|
* (1 + self.attribute_bonus['AttackAddedRatio'] + 2.144)
|
||||||
+ self.attribute_bonus['AttackDelta']
|
+ self.attribute_bonus['AttackDelta']
|
||||||
)
|
)
|
||||||
|
if self.raw_data.avatar.id_ == 1205:
|
||||||
|
attack_tz = (skill_multiplier * attack_tz) + (
|
||||||
|
hp_multiplier * hp_num
|
||||||
|
)
|
||||||
injury_add_tz = 0
|
injury_add_tz = 0
|
||||||
if self.avatar.avatar_element == 'Imaginary':
|
if self.avatar.avatar_element == 'Imaginary':
|
||||||
injury_add_tz = 0.12
|
injury_add_tz = 0.12
|
||||||
@ -391,6 +426,7 @@ class RoleInstance:
|
|||||||
* damage_reduction
|
* damage_reduction
|
||||||
* (critical_damage + critical_damage_add + 1.594)
|
* (critical_damage + critical_damage_add + 1.594)
|
||||||
* 10
|
* 10
|
||||||
|
+ damage_add
|
||||||
)
|
)
|
||||||
|
|
||||||
damage_tz_z += damage_tz
|
damage_tz_z += damage_tz
|
||||||
|
BIN
StarRailUID/starrailuid_charinfo/texture2D/attack_1.png
Normal file
BIN
StarRailUID/starrailuid_charinfo/texture2D/attack_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
BIN
StarRailUID/starrailuid_charinfo/texture2D/attack_2.png
Normal file
BIN
StarRailUID/starrailuid_charinfo/texture2D/attack_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
StarRailUID/starrailuid_charinfo/texture2D/base_info_pure.png
Normal file
BIN
StarRailUID/starrailuid_charinfo/texture2D/base_info_pure.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
Loading…
x
Reference in New Issue
Block a user