feat:修正职业基础系数

This commit is contained in:
2026-06-28 21:59:12 +08:00
parent 879d765d51
commit e3660034ea
4 changed files with 182 additions and 1212 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ from typing import Any, Literal
from core.abstract.character import CharacterProperty from core.abstract.character import CharacterProperty
from core.basic.skill import Skill from core.basic.skill import Skill
from core.basic.equipment import EquEffect, OathSuit, OathSuitSkill, Suit from core.basic.equipment import EquEffect, OathSuit, OathSuitSkill, Suit
from ..formula import 获取基础属性, 获取唤醒属性 from ..formula import get_base_attributes, 获取唤醒属性
from ..roleinfo import CharacterEmblemInfo, CharacterEquipInfo, get_key_by_value, CharacterOathInfo from ..roleinfo import CharacterEmblemInfo, CharacterEquipInfo, get_key_by_value, CharacterOathInfo
from .jade import Jade from .jade import Jade
@@ -180,7 +180,7 @@ class CharacterBase(CharacterProperty):
def SetBaseStatus(self) -> None: def SetBaseStatus(self) -> None:
"""设角色基础属性""" """设角色基础属性"""
temp = 获取基础属性(self.角色, self.职业) temp = get_base_attributes(self.role, self.name)
唤醒 = 获取唤醒属性() 唤醒 = 获取唤醒属性()
for index, i in enumerate([get_key_by_value(i) for i in ['力量', '体力', '智力', '精神']]): 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] + 唤醒)
+4 -4
View File
@@ -1,6 +1,6 @@
import inspect import inspect
from ..formula import 获取基础属性 from ..formula import get_base_attributes
from core.basic.property import CharacterInfo from core.basic.property import CharacterInfo
from .base import CharacterBase from .base import CharacterBase
@@ -9,8 +9,8 @@ def _skill_error_context(char: CharacterBase, skill, mode: str) -> str:
skill_class = skill.__class__ skill_class = skill.__class__
skill_file = inspect.getsourcefile(skill_class) or inspect.getfile(skill_class) skill_file = inspect.getsourcefile(skill_class) or inspect.getfile(skill_class)
return ( return (
f'角色={getattr(char, "角色", "")}, ' f'角色={getattr(char, "name", "")}, '
f'职业={getattr(char, "职业", "")}, ' f'职业={getattr(char, "role", "")}, '
f'技能={getattr(skill, "name", "")}, ' f'技能={getattr(skill, "name", "")}, '
f'技能类={skill_class.__name__}, ' f'技能类={skill_class.__name__}, '
f'mode={mode}, ' f'mode={mode}, '
@@ -36,7 +36,7 @@ class CalcCarryMixin(CharacterBase):
attrs.extend(['INT', 'AtkI', 'PAtkI']) attrs.extend(['INT', 'AtkI', 'PAtkI'])
# 力智系数 # 力智系数
value0_1 = getattr(self, attrs[0]) value0_1 = getattr(self, attrs[0])
value0_2 = 获取基础属性(self.角色, self.职业)[0] if attrs[0] == 'STR' else 获取基础属性(self.角色, self.职业)[1] value0_2 = get_base_attributes(self.role, self.name)[0] if attrs[0] == 'STR' else get_base_attributes(self.role, self.name)[1]
# 系统奶及奶系增幅 # 系统奶及奶系增幅
value = value0_1 + ((value0_1 - value0_2) * 3.08 + 2886) * (1 if DSB else 0) + (170000 + 300000) * (1 if BUFF else 0) 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_0: float = value / 250 + 1
File diff suppressed because it is too large Load Diff
+176 -111
View File
@@ -342,107 +342,152 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类, 属性='',
# region 角色基础属性 # region 角色基础属性
当前等级 = 110
# 力量 体力 智力 精神 # 力量 体力 智力 精神
角色基础系数 = { character_base = {
'魔枪士': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5), "archer": {
'格斗家(女)': (5, 5, 4, 4, 7.5, 7.5, 4.5, 4.5), "initial": (100.5, 100.5, 99.5, 99.5),
'格斗家(男)': (5, 5, 4, 4, 7.5, 7.5, 4.5, 4.5), "basic": (5.6, 5.6, 5.4, 5.4),
'枪剑士': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5), "muse": (4.5, 6.5, 4.5, 6.5),
'神枪手(女)': (4.5, 4.5, 4.5, 4.5, 6.5, 6.5, 5.5, 5.5), "traveler": (6.5, 6.5, 4.5, 4.5),
'神枪手(男)': (4.5, 4.5, 4.5, 4.5, 6.5, 6.5, 5.5, 5.5), "hunter": (6.5, 6.0, 4.5, 5.0),
'守护者': (4.8, 4.8, 4.2, 4.2, 7, 7, 5, 5), "vigilante": (4.5, 4.5, 6.5, 6.5),
'魔法师(女)': (4, 4, 5, 5, 4.5, 4.5, 7.5, 7.5), "chimera": (6.5, 6.5, 4.5, 4.5),
'魔法师(男)': (3.5, 4, 5.5, 5, 4, 4.5, 8, 7.5), },
'暗夜使者': (5, 4, 5, 4, 7.5, 5.5, 6.5, 4.5), "demonic_lancer": {
'缔造者': (4, 4, 5, 5, 4.5, 4.5, 7.5, 7.5), "initial": (101.0, 101.0, 99.0, 99.0),
'黑暗武士': (4.8, 4.8, 4.2, 4.2, 7.5, 7.5, 4.5, 4.5), "basic": (5.6, 5.6, 5.4, 5.4),
'鬼剑士(男)': (4.8, 4.8, 4.2, 4.2, 7.5, 7.5, 4.5, 4.5), "vanguard": (6.5, 6.5, 4.5, 4.5),
'鬼剑士(女)': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5), "skirmisher": (6.0, 6.0, 5.0, 5.0),
'圣职者(男)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5), "dragoon": (4.0, 5.5, 7.0, 5.5),
'圣职者(女)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5), "impaler": (4.5, 4.5, 6.5, 6.5),
# todo },
'弓箭手': (4.6, 4.6, 4.4, 4.4, 6.5, 6.5, 5.5, 5.5), "fighter_male": {
'帝国骑士': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5), "initial": (101.5, 101.5, 98.5, 98.5),
} "basic": (6.0, 6.0, 5.0, 5.0),
"nenmaster_male": (4.5, 4.5, 6.5, 6.5),
# 力量 体力 智力 精神 "striker_male": (6.5, 6.5, 4.5, 4.5),
职业基础数据 = { "brawler_male": (6.0, 5.0, 6.0, 5.0),
'征战者-魔枪士': (5.5, 5.5, 3.5, 3.5), "grappler_male": (6.0, 7.0, 4.5, 4.5),
'决战者-魔枪士': (5, 5, 4, 4), },
'狩猎者-魔枪士': (3, 4.5, 6, 4.5), "fighter_female": {
'暗枪士-魔枪士': (3.5, 3.5, 5.5, 5.5), "initial": (101.5, 101.5, 98.5, 98.5),
'气功师-格斗家(女)': (3.5, 3.5, 5.5, 5.5), "basic": (6.0, 6.0, 5.0, 5.0),
'散打-格斗家(女)': (5.5, 5.5, 3.5, 3.5), "nenmaster_female": (4.5, 4.5, 6.5, 6.5),
'街霸-格斗家(女)': (5, 4, 5, 4), "striker_female": (6.5, 6.5, 4.5, 4.5),
'柔道家-格斗家(女)': (5, 6, 3.5, 3.5), "brawler_female": (6.0, 5.0, 6.0, 5.0),
'气功师-格斗家(男)': (3.5, 3.5, 5.5, 5.5), "grappler_female": (6.0, 7.0, 4.5, 4.5),
'散打-格斗家(男)': (5.5, 5.5, 3.5, 3.5), },
'街霸-格斗家(男)': (5, 4, 5, 4), "gunblader": {
'柔道家-格斗家(男)': (5, 6, 3.5, 3.5), "initial": (101.0, 101.0, 99.0, 99.0),
'暗刃-枪剑士': (5.5, 5.5, 3.5, 3.5), "basic": (5.6, 5.6, 5.4, 5.4),
'特工-枪剑士': (5, 5, 4, 4), "hitman": (6.5, 6.5, 4.5, 4.5),
'战线佣兵-枪剑士': (5.2, 5, 3.5, 4.3), "agent": (6.0, 6.0, 5.0, 5.0),
'源能专家-枪剑士': (3.5, 3.5, 5.5, 5.5), "trouble_shooter": (6.2, 6.0, 4.5, 5.3),
'漫游枪手-神枪手(女)': (5.5, 5.5, 3.5, 3.5), "specialist": (4.5, 4.5, 6.5, 6.5),
'枪炮师-神枪手(女)': (5.5, 5.5, 3.5, 3.5), },
'机械师-神枪手(女)': (3.5, 3.5, 5.5, 5.5), "gunner_female": {
'弹药专家-神枪手(女)': (4.7, 4.3, 4.7, 4.3), "initial": (100.5, 100.5, 99.5, 99.5),
'协战师-神枪手(女)': (3.5, 5.5, 3.5, 5.5), "basic": (5.5, 5.5, 5.5, 5.5),
'漫游枪手-神枪手(男)': (5.5, 5.5, 3.5, 3.5), "ranger_female": (6.5, 6.5, 4.5, 4.5),
'枪炮师-神枪手(男)': (5.5, 5.5, 3.5, 3.5), "launcher_female": (6.5, 6.5, 4.5, 4.5),
'机械师-神枪手(男)': (3.5, 3.5, 5.5, 5.5), "mechanic_female": (4.5, 4.5, 6.5, 6.5),
'弹药专家-神枪手(男)': (4.7, 4.3, 4.7, 4.3), "spitfire_female": (5.7, 5.3, 5.7, 5.3),
'合金战士-神枪手(男)': (5.5, 5.5, 3.5, 3.5), "paramedic": (6.5, 4.0, 5.0, 6.5),
'精灵骑士-守护者': (5, 5, 4, 4), },
'混沌魔灵-守护者': (3.5, 3.5, 5.5, 5.5), "gunner_male": {
'帕拉丁-守护者': (5, 5.5, 2, 5.5), "initial": (100.5, 100.5, 99.5, 99.5),
'龙骑士-守护者': (5, 5, 4, 4), "basic": (5.5, 5.5, 5.5, 5.5),
'元素师-魔法师(女)': (3.5, 3.5, 5.5, 5.5), "ranger_male": (6.5, 6.5, 4.5, 4.5),
'召唤师-魔法师(女)': (3.8, 3.7, 5.3, 5.2), "launcher_male": (6.5, 6.5, 4.5, 4.5),
'战斗法师-魔法师(女)': (5, 4, 5, 4), "mechanic_male": (4.5, 4.5, 6.5, 6.5),
'魔道学者-魔法师(女)': (4.5, 4, 5.2, 4.3), "spitfire_male": (5.7, 5.3, 5.7, 5.3),
'小魔女-魔法师(女)': (4.7, 4.8, 5.5, 4.5), "assault": (6.5, 6.5, 4.5, 4.5),
'元素爆破师-魔法师(男)': (3.5, 3.5, 5.5, 5.5), },
'冰结师-魔法师(男)': (3.5, 3.7, 5.5, 5.2), "imperialknight": {
'血法师-魔法师(男)': (5.5, 5.5, 3.5, 3.5), "initial": (101.0, 101.0, 99.0, 99.0),
'逐风者-魔法师(男)': (5.5, 5.2, 3.5, 3.8), "basic": (5.6, 5.6, 5.4, 5.4),
'次元行者-魔法师(男)': (3.5, 3.5, 5.5, 5.5), "breaker": (7.0, 6.5, 4.0, 4.5),
'刺客-暗夜使者': (5.3, 4.5, 4.2, 4), },
'死灵术士-暗夜使者': (4.7, 3.5, 5.3, 4.5), "knight": {
'忍者-暗夜使者': (4.5, 3.5, 5.5, 4.5), "initial": (101.0, 101.0, 99.0, 99.0),
'影舞者-暗夜使者': (5.5, 4.5, 4, 4), "basic": (5.8, 5.8, 5.2, 5.2),
'缔造者-缔造者': (4, 4, 5, 5), "elven_knight": (6.0, 6.0, 5.0, 5.0),
'黑暗武士-黑暗武士': (4.8, 4.8, 4.2, 4.2), "chaos": (4.5, 4.5, 6.5, 6.5),
'剑魂-鬼剑士(男)': (5, 5, 4, 4), "paladin": (6.0, 6.5, 3.0, 6.5),
'鬼泣-鬼剑士(男)': (3.5, 3.5, 5.5, 5.5), "dragon_knight": (6.0, 6.0, 5.0, 5.0),
'狂战士-鬼剑士(男)': (5.5, 5.5, 3.5, 3.5), },
'阿修罗-鬼剑士(男)': (3, 4.5, 6, 4.5), "mage_male": {
'剑影-鬼剑士(男)': (5, 5, 4, 4), "initial": (98.0, 98.5, 102.0, 101.5),
'刃影-鬼剑士(女)': (5, 5, 4, 4), "basic": (4.5, 5.0, 6.5, 6.0),
'驭剑士-鬼剑士(女)': (5, 5, 4, 4), "elemental_bomber": (4.5, 4.5, 6.5, 6.5),
'暗殿骑士-鬼剑士(女)': (3.5, 3.5, 5.5, 5.5), "glacial_master": (4.5, 4.8, 6.5, 6.2),
'契魔者-鬼剑士(女)': (5.5, 5.5, 3.5, 3.5), "blood_mage": (6.5, 6.5, 4.5, 4.5),
'流浪武士-鬼剑士(女)': (5.5, 5.5, 3.5, 3.5), "swift_master": (6.5, 6.2, 4.5, 4.8),
'圣骑士-圣职者(男)': (3.5, 5.5, 4.5, 5.5), "dimension_walker": (4.5, 4.5, 6.5, 6.5),
'蓝拳圣使-圣职者(男)': (5.2, 5, 3.9, 3.9), },
'驱魔师-圣职者(男)': (5, 4, 5, 4), "mage_female": {
'复仇者-圣职者(男)': (3.5, 3.5, 5.5, 5.5), "initial": (98.5, 98.5, 101.5, 101.5),
'圣骑士-圣职者(女)': (3.5, 5.5, 5.5, 3.5), "basic": (5.0, 5.0, 6.0, 6.0),
'异端审判者-圣职者(女)': (5.2, 5, 3.5, 4.3), "elementalist": (4.5, 4.5, 6.5, 6.5),
'巫女-圣职者(女)': (3.5, 3.5, 5.5, 5.5), "summoner": (4.8, 4.7, 6.3, 6.2),
'诱魔者-圣职者(女)': (3.5, 3.5, 5.5, 5.5), "battle_mage": (6.0, 5.0, 6.0, 5.0),
# TODO "witch": (5.5, 5.0, 6.2, 5.3),
'蓝拳圣使-圣职者(女)': (5.5, 5, 3.9, 3.9), "enchantress": (4.5, 5.5, 6.5, 5.5),
# todo },
'缪斯-弓箭手': (3.5, 5.5, 3.5, 5.5), "priest_female": {
'旅人-弓箭手': (5.5, 5.5, 3.5, 3.5), "initial": (100.5, 100.5, 98.5, 100.5),
'猎人-弓箭手': (5.5, 5.5, 3.5, 3.5), "basic": (5.7, 5.8, 5.0, 5.5),
'妖护使-弓箭手': (5.5, 5.5, 5.5, 3.5), "crusader_female": (4.5, 6.5, 6.5, 4.5),
'奇美拉-弓箭手': (5.5, 5.5, 3.5, 3.5), "inquistor": (6.2, 6.0, 4.5, 5.3),
# "sorceress": (4.5, 4.5, 6.5, 6.5),
'破浪者-帝国骑士': (6, 5.5, 3.5, 3.5), "mistress": (4.5, 4.5, 6.5, 6.5),
"infighter_female": (6.5, 5.5, 4.5, 5.5),
},
"priest_male": {
"initial": (100.5, 100.5, 98.5, 100.5),
"basic": (5.7, 5.8, 5.0, 5.5),
"crusader_male": (4.5, 6.5, 4.5, 6.5),
"infighter": (6.2, 6.0, 4.9, 4.9),
"exorcist": (6.0, 5.0, 6.0, 5.0),
"avenger": (4.5, 4.5, 6.5, 6.5)
},
"swordman_female": {
"initial": (101.0, 101.0, 99.0, 99.0),
"basic": (5.6, 5.6, 5.4, 5.4),
"sword_master": (6.0, 6.0, 5.0, 5.0),
"dark_templar": (4.5, 4.5, 6.5, 6.5),
"demon_slayer": (6.5, 6.5, 4.5, 4.5),
"vegabond": (6.5, 6.5, 4.5, 4.5),
"spectre": (6.0, 6.0, 5.0, 5.0),
},
"swordman_male": {
"initial": (101.5, 101.5, 98.5, 98.5),
"basic": (5.8, 5.8, 5.2, 5.2),
"weapon_master": (6.0, 6.0, 5.0, 5.0),
"soul_bender": (4.5, 4.5, 6.5, 6.5),
"berserker": (6.5, 6.5, 4.5, 4.5),
"asura": (4.0, 5.5, 7.0, 5.5),
"ghostblade": (6.0, 6.0, 5.0, 5.0)
},
"thief": {
"initial": (101.5, 99.5, 100.5, 98.5),
"basic": (6.0, 5.0, 6.0, 5.0),
"rogue": (6.3, 5.5, 5.2, 5.0),
"necro": (5.7, 4.5, 6.3, 5.5),
"kunoichi": (5.5, 4.5, 6.5, 5.5),
"shadow_dancer": (6.5, 5.5, 5.0, 5.0),
"growtype_6": (5.0, 4.0, 5.0, 4.0),
},
"creator": {
"initial": (98.5, 98.5, 101.5, 101.5),
"basic": (5.0, 5.0, 6.0, 6.0),
"creator": (5.0, 5.0, 6.0, 6.0),
},
"dark_knight": {
"initial": (101.5, 101.5, 98.5, 98.5),
"basic": (5.8, 5.8, 5.2, 5.2),
"dark_knight": (5.8, 5.8, 5.2, 5.2),
},
} }
# 火抗 冰抗 光抗 暗抗 # 火抗 冰抗 光抗 暗抗
@@ -598,19 +643,39 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类, 属性='',
} }
def 获取基础属性(角色, 职业): def get_base_attributes(character, growth, current_level = 115):
角色数据 = 角色基础系数[角色] '''
职业数据 = 职业基础数据[职业 + '-' + 角色] 获取职业基础属性
# TODO 将93 + 当前等级 角色基础数据+94 角色成长全部+1 返回 (力量, 体力, 智力, 精神)
力量 = int(角色数据[4] + 角色数据[0] * min(14, 当前等级 - 1) + 94 + (职业数据[0] + 1) * max(当前等级 - 15, 0)) '''
体力 = int(角色数据[5] + 角色数据[1] * min(14, 当前等级 - 1) + 94 + (职业数据[1] + 1) * max(当前等级 - 15, 0)) # 外传特殊处理
智力 = int(角色数据[6] + 角色数据[2] * min(14, 当前等级 - 1) + 94 + (职业数据[2] + 1) * max(当前等级 - 15, 0)) key = growth if character == 'extra' else character
精神 = int(角色数据[7] + 角色数据[3] * min(14, 当前等级 - 1) + 94 + (职业数据[3] + 1) * max(当前等级 - 15, 0)) basic = character_base.get(key, {})
return (力量, 智力, 体力, 精神) growth_info = basic.get(growth, None)
if growth_info is None:
return (0,0,0,0)
else:
basic_level = min(14, current_level - 1)
growth_level = max(current_level - 15, 0)
return tuple(
int(basic['initial'][i] + basic['basic'][i] * basic_level + growth_info[i] * growth_level)
for i in range(4)
)
def 获取唤醒属性(): # def 获取基础属性(角色, 职业):
return 335 if 当前等级 >= 75 else (145 if 当前等级 >= 15 else 0) # 角色数据 = 角色基础系数[角色]
# 职业数据 = 职业基础数据[职业 + '-' + 角色]
# # TODO 将93 + 当前等级 角色基础数据+94 角色成长全部+1
# 力量 = int(角色数据[4] + 角色数据[0] * min(14, 当前等级 - 1) + 94 + (职业数据[0] + 1) * max(当前等级 - 15, 0))
# 体力 = int(角色数据[5] + 角色数据[1] * min(14, 当前等级 - 1) + 94 + (职业数据[1] + 1) * max(当前等级 - 15, 0))
# 智力 = int(角色数据[6] + 角色数据[2] * min(14, 当前等级 - 1) + 94 + (职业数据[2] + 1) * max(当前等级 - 15, 0))
# 精神 = int(角色数据[7] + 角色数据[3] * min(14, 当前等级 - 1) + 94 + (职业数据[3] + 1) * max(当前等级 - 15, 0))
# return (力量, 智力, 体力, 精神)
def 获取唤醒属性(current_level = 115):
return 335 if current_level >= 75 else (145 if current_level >= 15 else 0)
def 获取属性抗性基础(角色, 职业): def 获取属性抗性基础(角色, 职业):