This commit is contained in:
2026-04-16 15:15:33 +08:00
parent 3881f66472
commit 97da529e35
6 changed files with 613 additions and 30 deletions
+3 -1
View File
@@ -5,7 +5,7 @@ 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 获取基础属性, 获取唤醒属性
from ..roleinfo import CharacterEquipInfo, get_key_by_value, CharacterOathInfo from ..roleinfo import CharacterEmblemInfo, CharacterEquipInfo, get_key_by_value, CharacterOathInfo
from .jade import Jade from .jade import Jade
@@ -20,6 +20,8 @@ class CharacterBase(CharacterProperty):
"""装备版本""" """装备版本"""
charEquipInfo: dict[str, 'CharacterEquipInfo'] charEquipInfo: dict[str, 'CharacterEquipInfo']
"""装备打造信息""" """装备打造信息"""
charEmblemInfo: list['CharacterEmblemInfo']
"""徽章打造信息"""
charOathInfo: list['CharacterOathInfo'] charOathInfo: list['CharacterOathInfo']
"""誓约打造信息""" """誓约打造信息"""
charOathSkillId: int charOathSkillId: int
+26 -1
View File
@@ -3,7 +3,7 @@ from uuid import uuid1
from core.basic.equipment import OathSuit, Suit, get_equipment from core.basic.equipment import OathSuit, Suit, get_equipment
from ..formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 耳环计算, 左右计算, 锻造计算 from ..formula import 增幅计算, 强化技攻, 武器强化计算, 精通计算, 耳环计算, 左右计算, 锻造计算
from ..roleinfo import CharacterEquipInfo, CharacterOathInfo, get_key_by_value from ..roleinfo import CharacterEmblemInfo, CharacterEquipInfo, CharacterOathInfo, get_key_by_value
from .base import CharacterBase from .base import CharacterBase
@@ -16,12 +16,21 @@ class CalcEquipMixin(CharacterBase):
"""打造信息导入""" """打造信息导入"""
self.charEquipInfo = {} self.charEquipInfo = {}
self.charOathInfo = [] self.charOathInfo = []
self.charEmblemInfo = []
self.bindAwake = info.get('bindAwake', 50) self.bindAwake = info.get('bindAwake', 50)
for key in info['equips']: for key in info['equips']:
self.charEquipInfo[key] = CharacterEquipInfo(info['equips'][key], self.equVersion, key) self.charEquipInfo[key] = CharacterEquipInfo(info['equips'][key], self.equVersion, key)
for key in info['oaths']: for key in info['oaths']:
# 导入誓约打造信息、誓约信息 # 导入誓约打造信息、誓约信息
self.charOathInfo.append(CharacterOathInfo(info['oaths'][key], self.equVersion, key)) self.charOathInfo.append(CharacterOathInfo(info['oaths'][key], self.equVersion, key))
# 异常处理 彩色等级自动取最小值
minEmblemLv = min([info['emblems'][key]['lv'] for key in ['红色', '蓝色', '绿色', '黄色']], default=1)
info['emblems']['彩色']['lv'] = minEmblemLv
for key in info['emblems']:
# 导入徽章打造信息、徽章信息
info['emblems'][key]['part'] = key
self.charEmblemInfo.append(CharacterEmblemInfo(info['emblems'][key]))
pass
self.charOathSkillId = info.get('oathSkill', 1) self.charOathSkillId = info.get('oathSkill', 1)
def calc_init(self, setInfo: dict[str, dict]): def calc_init(self, setInfo: dict[str, dict]):
@@ -208,7 +217,22 @@ class CalcEquipMixin(CharacterBase):
# if fun is not None: # if fun is not None:
# fun(self) # fun(self)
def calc_emblems(self):
"""计算徽章效果"""
effects = get_equipment(self.equVersion).funs
emblemCombine = effects.execture('emblem_combine')
for emblem in self.charEmblemInfo:
for item in emblem.items:
fun = effects.execture(f'emblem_{item}')
if fun is not None:
fun(self)
emblemCombine(self, emblem.part, emblem.lv, emblem.items)
pass
pass
def calc_oaths(self): def calc_oaths(self):
"""计算装备基础效果"""
effects = get_equipment(self.equVersion).funs
pass pass
def calc_avatar(self, avatar: dict): def calc_avatar(self, avatar: dict):
@@ -320,6 +344,7 @@ class CalcEquipMixin(CharacterBase):
self.calc_avatar(setInfo.get('avatar', {})) self.calc_avatar(setInfo.get('avatar', {}))
self.calc_basic() self.calc_basic()
self.calc_sundry(setInfo.get('sundry', {})) self.calc_sundry(setInfo.get('sundry', {}))
self.calc_emblems()
suit = self.calc_suits() suit = self.calc_suits()
self.calc_equs() self.calc_equs()
self.calc_oaths() self.calc_oaths()
+12
View File
@@ -71,6 +71,18 @@ class CharacterOathInfo:
self.oathInfo = None self.oathInfo = None
class CharacterEmblemInfo:
part: str
"""星徽部位"""
items: list[str]
"""徽章id列表"""
lv: int
"""星徽等级"""
def __init__(self, info={}) -> None:
self.__dict__.update(info)
class CharacterWeaponInfo(CharacterEquipInfo): class CharacterWeaponInfo(CharacterEquipInfo):
refine: int refine: int
"""锻造等级""" """锻造等级"""
+6 -4
View File
@@ -516,7 +516,7 @@ def emblem_4701(char: CharacterProperty):
@register @register
def emblem_combine(char: CharacterProperty, position: str, lv: int, emblem_list: list[int | str]): def emblem_combine(char: CharacterProperty, position: str, lv: int = 1, emblem_list: list[int | str] = []):
bufferP = [0.001, 0.002, 0.004, 0.006, 0.008, 0.01, 0.013, 0.016, 0.019, 0.022, 0.025, 0.026, 0.027, 0.028, 0.029, 0.03] bufferP = [0.001, 0.002, 0.004, 0.006, 0.008, 0.01, 0.013, 0.016, 0.019, 0.022, 0.025, 0.026, 0.027, 0.028, 0.029, 0.03]
buffer = [10, 30, 60, 90, 120, 150, 180, 210, 240270, 300, 320, 340, 360, 380, 400] buffer = [10, 30, 60, 90, 120, 150, 180, 210, 240270, 300, 320, 340, 360, 380, 400]
skillAttack = [0.002, 0.004, 0.008, 0.012, 0.016, 0.02, 0.023, 0.026, 0.029, 0.032, 0.035, 0.036, 0.037, 0.038, 0.039, 0.04] skillAttack = [0.002, 0.004, 0.008, 0.012, 0.016, 0.02, 0.023, 0.026, 0.029, 0.032, 0.035, 0.036, 0.037, 0.038, 0.039, 0.04]
@@ -548,7 +548,9 @@ def emblem_combine(char: CharacterProperty, position: str, lv: int, emblem_list:
skillAttack = [0.002, 0.003, 0.005, 0.006] skillAttack = [0.002, 0.003, 0.005, 0.006]
buffer = [20, 30, 50, 60] buffer = [20, 30, 50, 60]
pass pass
SkillAttack = 0
Buffer = 0
for i in emblem_raritys: for i in emblem_raritys:
char.SetStatus(SkillAttack=skillAttack[i - 1], Buffer=buffer[i - 1]) SkillAttack += skillAttack[i - 1]
pass Buffer += buffer[i - 1]
pass char.SetStatus(SkillAttack=SkillAttack, Buffer=Buffer)
+543
View File
@@ -0,0 +1,543 @@
from core.basic.equipment import EquEffect
from core.abstract.character import CharacterProperty
from .register import register
@register
def oath_2010100(char: CharacterProperty):
pass
@register
def oath_2010200(char: CharacterProperty):
pass
@register
def oath_2010201(char: CharacterProperty):
pass
@register
def oath_2010300(char: CharacterProperty):
pass
@register
def oath_2010301(char: CharacterProperty):
pass
@register
def oath_2010400(char: CharacterProperty):
pass
@register
def oath_2010401(char: CharacterProperty):
pass
@register
def oath_2010500(char: CharacterProperty):
pass
@register
def oath_2010501(char: CharacterProperty):
pass
@register
def oath_2020100(char: CharacterProperty):
pass
@register
def oath_2020200(char: CharacterProperty):
pass
@register
def oath_2020201(char: CharacterProperty):
pass
@register
def oath_2020300(char: CharacterProperty):
pass
@register
def oath_2020301(char: CharacterProperty):
pass
@register
def oath_2020400(char: CharacterProperty):
pass
@register
def oath_2020401(char: CharacterProperty):
pass
@register
def oath_2020500(char: CharacterProperty):
pass
@register
def oath_2020501(char: CharacterProperty):
pass
@register
def oath_2030100(char: CharacterProperty):
pass
@register
def oath_2030200(char: CharacterProperty):
pass
@register
def oath_2030201(char: CharacterProperty):
pass
@register
def oath_2030300(char: CharacterProperty):
pass
@register
def oath_2030301(char: CharacterProperty):
pass
@register
def oath_2030400(char: CharacterProperty):
pass
@register
def oath_2030401(char: CharacterProperty):
pass
@register
def oath_2030500(char: CharacterProperty):
pass
@register
def oath_2030501(char: CharacterProperty):
pass
@register
def oath_2040100(char: CharacterProperty):
pass
@register
def oath_2040200(char: CharacterProperty):
pass
@register
def oath_2040201(char: CharacterProperty):
pass
@register
def oath_2040300(char: CharacterProperty):
pass
@register
def oath_2040301(char: CharacterProperty):
pass
@register
def oath_2040400(char: CharacterProperty):
pass
@register
def oath_2040401(char: CharacterProperty):
pass
@register
def oath_2040500(char: CharacterProperty):
pass
@register
def oath_2040501(char: CharacterProperty):
pass
@register
def oath_2050100(char: CharacterProperty):
pass
@register
def oath_2050200(char: CharacterProperty):
pass
@register
def oath_2050201(char: CharacterProperty):
pass
@register
def oath_2050300(char: CharacterProperty):
pass
@register
def oath_2050301(char: CharacterProperty):
pass
@register
def oath_2050400(char: CharacterProperty):
pass
@register
def oath_2050401(char: CharacterProperty):
pass
@register
def oath_2050500(char: CharacterProperty):
pass
@register
def oath_2050501(char: CharacterProperty):
pass
@register
def oath_2060100(char: CharacterProperty):
pass
@register
def oath_2060200(char: CharacterProperty):
pass
@register
def oath_2060201(char: CharacterProperty):
pass
@register
def oath_2060300(char: CharacterProperty):
pass
@register
def oath_2060301(char: CharacterProperty):
pass
@register
def oath_2060400(char: CharacterProperty):
pass
@register
def oath_2060401(char: CharacterProperty):
pass
@register
def oath_2060500(char: CharacterProperty):
pass
@register
def oath_2060501(char: CharacterProperty):
pass
@register
def oath_2070100(char: CharacterProperty):
pass
@register
def oath_2070200(char: CharacterProperty):
pass
@register
def oath_2070201(char: CharacterProperty):
pass
@register
def oath_2070300(char: CharacterProperty):
pass
@register
def oath_2070301(char: CharacterProperty):
pass
@register
def oath_2070400(char: CharacterProperty):
pass
@register
def oath_2070401(char: CharacterProperty):
pass
@register
def oath_2070500(char: CharacterProperty):
pass
@register
def oath_2070501(char: CharacterProperty):
pass
@register
def oath_2080100(char: CharacterProperty):
pass
@register
def oath_2080200(char: CharacterProperty):
pass
@register
def oath_2080201(char: CharacterProperty):
pass
@register
def oath_2080300(char: CharacterProperty):
pass
@register
def oath_2080301(char: CharacterProperty):
pass
@register
def oath_2080400(char: CharacterProperty):
pass
@register
def oath_2080401(char: CharacterProperty):
pass
@register
def oath_2080500(char: CharacterProperty):
pass
@register
def oath_2080501(char: CharacterProperty):
pass
@register
def oath_2090100(char: CharacterProperty):
pass
@register
def oath_2090200(char: CharacterProperty):
pass
@register
def oath_2090201(char: CharacterProperty):
pass
@register
def oath_2090300(char: CharacterProperty):
pass
@register
def oath_2090301(char: CharacterProperty):
pass
@register
def oath_2090400(char: CharacterProperty):
pass
@register
def oath_2090401(char: CharacterProperty):
pass
@register
def oath_2090500(char: CharacterProperty):
pass
@register
def oath_2090501(char: CharacterProperty):
pass
@register
def oath_2100100(char: CharacterProperty):
pass
@register
def oath_2100200(char: CharacterProperty):
pass
@register
def oath_2100201(char: CharacterProperty):
pass
@register
def oath_2100300(char: CharacterProperty):
pass
@register
def oath_2100301(char: CharacterProperty):
pass
@register
def oath_2100400(char: CharacterProperty):
pass
@register
def oath_2100401(char: CharacterProperty):
pass
@register
def oath_2100500(char: CharacterProperty):
pass
@register
def oath_2100501(char: CharacterProperty):
pass
@register
def oath_2110100(char: CharacterProperty):
pass
@register
def oath_2110200(char: CharacterProperty):
pass
@register
def oath_2110201(char: CharacterProperty):
pass
@register
def oath_2110300(char: CharacterProperty):
pass
@register
def oath_2110301(char: CharacterProperty):
pass
@register
def oath_2110400(char: CharacterProperty):
pass
@register
def oath_2110401(char: CharacterProperty):
pass
@register
def oath_2110500(char: CharacterProperty):
pass
@register
def oath_2110501(char: CharacterProperty):
pass
@register
def oath_2120100(char: CharacterProperty):
pass
@register
def oath_2120200(char: CharacterProperty):
pass
@register
def oath_2120201(char: CharacterProperty):
pass
@register
def oath_2120300(char: CharacterProperty):
pass
@register
def oath_2120301(char: CharacterProperty):
pass
@register
def oath_2120400(char: CharacterProperty):
pass
@register
def oath_2120401(char: CharacterProperty):
pass
@register
def oath_2120500(char: CharacterProperty):
pass
@register
def oath_2120501(char: CharacterProperty):
pass
+23 -24
View File
@@ -2,31 +2,30 @@ from core.basic.character import createCharacter
char = createCharacter('GF.gunner_female.spitfire_female') char = createCharacter('GF.gunner_female.spitfire_female')
char.calc_init( setInfo = {
{ 'oaths': {'0': {'id': '2030201', 'adaptation': 3}, '1': {'id': '2030201', 'adaptation': 3}, '2': {'id': '2030201', 'adaptation': 3}, '3': {'id': '2030201', 'adaptation': 3}, '4': {'id': '2030201', 'adaptation': 3}, '11': {'id': '2030200', 'adaptation': 0}},
'oaths': {'0': {'id': '2030201', 'adaptation': 3}, '1': {'id': '2030201', 'adaptation': 3}, '2': {'id': '2030201', 'adaptation': 3}, '3': {'id': '2030201', 'adaptation': 3}, '4': {'id': '2030201', 'adaptation': 3}, '11': {'id': '2030200', 'adaptation': 0}}, 'oathSkill': 1,
'oathSkill': 1, 'equips': {
'equips': { '武器': {'id': '88', 'reinforce': 14, 'reinforceType': 1, 'enchant': 512, 'fusion': 0, 'refine': 8, 'adaptation': 3, 'precision': 100},
'武器': {'id': '88', 'reinforce': 14, 'reinforceType': 1, 'enchant': 512, 'fusion': 0, 'refine': 8, 'adaptation': 3, 'precision': 100}, '称号': {'id': '3017', 'reinforce': 0, 'reinforceType': 0, 'enchant': 1201, 'fusion': 0, 'refine': 0, 'adaptation': 3, 'precision': 100},
'称号': {'id': '3017', 'reinforce': 0, 'reinforceType': 0, 'enchant': 1201, 'fusion': 0, 'refine': 0, 'adaptation': 3, 'precision': 100}, '上衣': {'id': '999', 'reinforce': 13, 'reinforceType': 1, 'enchant': 105, 'fusion': '26', 'refine': 0, 'adaptation': 3, 'precision': 100},
'上衣': {'id': '999', 'reinforce': 13, 'reinforceType': 1, 'enchant': 105, 'fusion': '26', 'refine': 0, 'adaptation': 3, 'precision': 100}, '头肩': {'id': '1001', 'reinforce': 14, 'reinforceType': 1, 'enchant': 5, 'fusion': '28', 'refine': 0, 'adaptation': 3, 'precision': 100},
'头肩': {'id': '1001', 'reinforce': 14, 'reinforceType': 1, 'enchant': 5, 'fusion': '28', 'refine': 0, 'adaptation': 3, 'precision': 100}, '下装': {'id': '1000', 'reinforce': 14, 'reinforceType': 1, 'enchant': 202, 'fusion': '27', 'refine': 0, 'adaptation': 3, 'precision': 100},
'下装': {'id': '1000', 'reinforce': 14, 'reinforceType': 1, 'enchant': 202, 'fusion': '27', 'refine': 0, 'adaptation': 3, 'precision': 100}, '鞋': {'id': '1003', 'reinforce': 14, 'reinforceType': 1, 'enchant': 309, 'fusion': '30', 'refine': 0, 'adaptation': 3, 'precision': 100},
'鞋': {'id': '1003', 'reinforce': 14, 'reinforceType': 1, 'enchant': 309, 'fusion': '30', 'refine': 0, 'adaptation': 3, 'precision': 100}, '腰带': {'id': '1002', 'reinforce': 14, 'reinforceType': 1, 'enchant': 309, 'fusion': '29', 'refine': 0, 'adaptation': 3, 'precision': 100},
'腰带': {'id': '1002', 'reinforce': 14, 'reinforceType': 1, 'enchant': 309, 'fusion': '29', 'refine': 0, 'adaptation': 3, 'precision': 100}, '项链': {'id': '477', 'reinforce': 13, 'reinforceType': 1, 'enchant': 609, 'fusion': '180', 'refine': 0, 'adaptation': 3, 'precision': 100},
'项链': {'id': '477', 'reinforce': 13, 'reinforceType': 1, 'enchant': 609, 'fusion': '180', 'refine': 0, 'adaptation': 3, 'precision': 100}, '手镯': {'id': '483', 'reinforce': 14, 'reinforceType': 1, 'enchant': 609, 'fusion': '302', 'refine': 0, 'adaptation': 3, 'precision': 100},
'手镯': {'id': '483', 'reinforce': 14, 'reinforceType': 1, 'enchant': 609, 'fusion': '302', 'refine': 0, 'adaptation': 3, 'precision': 100}, '戒指': {'id': '489', 'reinforce': 14, 'reinforceType': 1, 'enchant': 609, 'fusion': '304', 'refine': 0, 'adaptation': 3, 'precision': 100},
'戒指': {'id': '489', 'reinforce': 14, 'reinforceType': 1, 'enchant': 609, 'fusion': '304', 'refine': 0, 'adaptation': 3, 'precision': 100}, '辅助装备': {'id': '492', 'reinforce': 14, 'reinforceType': 1, 'enchant': 905, 'fusion': '182', 'refine': 3, 'adaptation': 3, 'precision': 100},
'辅助装备': {'id': '492', 'reinforce': 14, 'reinforceType': 1, 'enchant': 905, 'fusion': '182', 'refine': 3, 'adaptation': 3, 'precision': 100}, '魔法石': {'id': '495', 'reinforce': 14, 'reinforceType': 1, 'enchant': 1003, 'fusion': '184', 'refine': 3, 'adaptation': 3, 'precision': 100},
'魔法石': {'id': '495', 'reinforce': 14, 'reinforceType': 1, 'enchant': 1003, 'fusion': '184', 'refine': 3, 'adaptation': 3, 'precision': 100}, '耳环': {'id': '498', 'reinforce': 14, 'reinforceType': 1, 'enchant': 1104, 'fusion': '186', 'refine': 0, 'adaptation': 3, 'precision': 100},
'耳环': {'id': '498', 'reinforce': 14, 'reinforceType': 1, 'enchant': 1104, 'fusion': '186', 'refine': 0, 'adaptation': 3, 'precision': 100}, '宠物': {'id': '4022', 'reinforce': 0, 'reinforceType': 0, 'enchant': 1304, 'fusion': 0, 'refine': 0, 'adaptation': 3, 'precision': 100},
'宠物': {'id': '4022', 'reinforce': 0, 'reinforceType': 0, 'enchant': 1304, 'fusion': 0, 'refine': 0, 'adaptation': 3, 'precision': 100}, },
}, 'emblems': {'彩色': {'lv': 1, 'items': ['4401', '4401', '4401', '4401', '4401', '4401']}, '红色': {'lv': 2, 'items': ['4101', '4101', '4101', '4101']}, '蓝色': {'lv': 2, 'items': []}, '绿色': {'lv': 3, 'items': []}, '黄色': {'lv': 4, 'items': []}},
'emblems': {'彩色': {'lv': 1, 'items': ['4401', '4401', '4401', '4401', '4401', '4401']}, '红色': {'lv': 2, 'items': ['4101', '4101', '4101', '4101']}, '蓝色': {'lv': 2, 'items': []}, '绿色': {'lv': 3, 'items': []}, '黄色': {'lv': 4, 'items': []}}, }
}
)
char.calc_suits()
char.calc(setInfo)
# for oath in char.charOathInfo: # for oath in char.charOathInfo:
# print(oath.id, oath.adaptation, oath.oathInfo.position, oath.oathInfo.max_adaptation, oath.oathInfo.Point) # print(oath.id, oath.adaptation, oath.oathInfo.position, oath.oathInfo.max_adaptation, oath.oathInfo.Point)