This commit is contained in:
2025-05-06 18:54:54 +08:00
parent 13749e233b
commit 1d00c16c96
5 changed files with 50 additions and 22 deletions
+26 -8
View File
@@ -12,7 +12,7 @@ from core.basic.equipment import get_equipment, EquEffect, Equ
# from core.basic.equipment import equipments
# from core.basic.skill import Skill, ActiveSkill, PassiveSkill
from .formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 获取基础属性, 耳环计算, 左右计算, 锻造计算
from .formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 获取唤醒属性, 获取基础属性, 耳环计算, 左右计算, 锻造计算
from .roleinfo import CharacterEquipInfo, get_key_by_value
# from .property import 精通计算, 角色基础, CharacterInfo
@@ -229,8 +229,9 @@ class Character(CharacterProperty):
"""设角色基础属性"""
# 角色四维
temp = 获取基础属性(self.角色, self.职业)
唤醒 = 获取唤醒属性()
for index, i in enumerate([get_key_by_value(i) for i in ['力量', '体力', '智力', '精神']]):
setattr(self, i, getattr(self,i) + temp[index])
setattr(self, i, getattr(self,i) + temp[index] + 唤醒)
# 角色属性抗性
pass
# 角色异常抗性
@@ -826,7 +827,20 @@ class Character(CharacterProperty):
info = self.get_buffer_info()
pass
else:
skillInfos = self.calc_carry_skills()
# 如果存在
if len(self.输出类型选项) > 1:
temp = self.输出类型选项[0]
if '固伤' in temp:
if self.INT > self.STR:
self.输出类型 = '魔法固伤'
else:
self.输出类型 = '物理固伤'
else:
if self.INT > self.STR or self.AtkM > self.AtkP:
self.输出类型 = '魔法百分比'
else:
self.输出类型 = '物理百分比'
skillInfos = self.calc_carry_skills(setInfo.get("DSB", False),setInfo.get("BUFF", False))
info = self.get_carry_info()
return {
'uuid': uuid1().hex,
@@ -840,7 +854,7 @@ class Character(CharacterProperty):
# region 输出计算项
def calc_damage_ration(self):
def calc_damage_ration(self,DSB:bool,BUFF:bool):
"""计算属性系数"""
# 计算最终属性
# 力/智 攻击力 攻击力%(特效不吃这部分)
@@ -854,9 +868,13 @@ class Character(CharacterProperty):
if self.输出类型 == '魔法固伤':
attrs.extend(['INT', 'AtkI', 'PAtkI'])
# 力智系数
ratio_0: float = getattr(self, attrs[0]) / 250 + 1
value0_1 = getattr(self, attrs[0])
value0_2 = 获取基础属性(self.角色, self.职业)[0] if attrs[0] == 'STR' else 获取基础属性(self.角色, self.职业)[1]
# 系统奶及奶系增幅
value = value0_1 + ((value0_1 - value0_2) * 3.08 + 2886) * (1 if DSB else 0) + (170000 + 300000) * (1 if BUFF else 0)
ratio_0: float = value / 250 + 1
# 物理/魔法/独立攻击力
ratio_1: float = getattr(self, attrs[1])
ratio_1: float = getattr(self, attrs[1]) + 30000 * (1 if BUFF else 0)
# 技能 物理/魔法/独立攻击力%
ratio_2: float = getattr(self, attrs[2])
# 属强系数
@@ -876,7 +894,7 @@ class Character(CharacterProperty):
ratio_9 = 1.0 * self.ElementIncrease
return (ratio_0, ratio_1, ratio_2, ratio_3, ratio_4, ratio_5, ratio_6, ratio_7, ratio_8, ratio_9)
def calc_carry_skills(self):
def calc_carry_skills(self,DSB:bool,BUFF:bool):
skillInfos = []
for i in self.skills:
if i.damage and i.lv > 0:
@@ -895,7 +913,7 @@ class Character(CharacterProperty):
'learnLv': i.learnLv,
}
)
ratios = self.calc_damage_ration()
ratios = self.calc_damage_ration(DSB,BUFF)
ratio_char_skill = ratios[0] * ratios[1] * ratios[2] * ratios[3] * ratios[4] * ratios[5] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000
ratuio_equ_skill = ratios[0] * ratios[1] * ratios[3] * ratios[4] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000
for i in skillInfos:
+6 -7
View File
@@ -572,15 +572,14 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
def 获取基础属性(角色, 职业):
角色数据 = 角色基础系数[角色]
职业数据 = 职业基础数据[职业 + '-' + 角色]
唤醒 = 335 if 当前等级 >= 75 else (145 if 当前等级 >= 15 else 0)
力量 = int(角色数据[4] + 角色数据[0] * min(14, 当前等级 - 1) + 职业数据[0] * max(当前等级 - 15, 0) + 唤醒 + 93 + 当前等级)
体力 = int(角色数据[5] + 角色数据[1] * min(14, 当前等级 - 1) + 职业数据[1] * max(当前等级 - 15, 0) + 唤醒 + 93 + 当前等级)
智力 = int(角色数据[6] + 角色数据[2] * min(14, 当前等级 - 1) + 职业数据[2] * max(当前等级 - 15, 0) + 唤醒 + 93 + 当前等级)
精神 = int(角色数据[7] + 角色数据[3] * min(14, 当前等级 - 1) + 职业数据[3] * max(当前等级 - 15, 0) + 唤醒 + 93 + 当前等级)
力量 = int(角色数据[4] + 角色数据[0] * min(14, 当前等级 - 1) + 职业数据[0] * max(当前等级 - 15, 0) + 93 + 当前等级)
体力 = int(角色数据[5] + 角色数据[1] * min(14, 当前等级 - 1) + 职业数据[1] * max(当前等级 - 15, 0) + 93 + 当前等级)
智力 = int(角色数据[6] + 角色数据[2] * min(14, 当前等级 - 1) + 职业数据[2] * max(当前等级 - 15, 0) + 93 + 当前等级)
精神 = int(角色数据[7] + 角色数据[3] * min(14, 当前等级 - 1) + 职业数据[3] * max(当前等级 - 15, 0) + 93 + 当前等级)
return (力量, 智力, 体力, 精神)
def 获取唤醒属性():
return 335 if 当前等级 >= 75 else (145 if 当前等级 >= 15 else 0)
def 获取属性抗性基础(角色, 职业):
return 职业属性抗性数据[职业 + '-' + 角色]