diff --git a/lib/avatar.js b/lib/avatar.js index be288cc..632dcdc 100644 --- a/lib/avatar.js +++ b/lib/avatar.js @@ -92,6 +92,13 @@ export const updatePanelData = (uid, newData) => { * @param {MysZZZApi} api * @returns {Promise} */ +/** + * 刷新面板 + * @param {MysZZZApi} api + * @returns {Promise} + */ + + export const refreshPanel = async api => { // 获取新数据 const newData = await getAvatarInfoList(api, true); diff --git a/lib/ekapi/name_convert.js b/lib/ekapi/name_convert.js index 239f73c..6129c6d 100644 --- a/lib/ekapi/name_convert.js +++ b/lib/ekapi/name_convert.js @@ -16,7 +16,27 @@ const CHAR_ALIAS_FILE = path.join(ALIAS_LIST_DIR, 'char_alias.json'); // Alias f const PartnerId2DataFile = 'PartnerId2Data.json'; const WeaponId2DataFile = 'WeaponId2Data.json'; const EquipId2DataFile = 'EquipId2Data.json'; - +const SkillParamFile = 'PartnerId2SkillParam.json'; // 定义技能数据文件名 +let PartnerId2SkillParam = {}; // 初始化技能数据对象 +try { + const skillParamPath = path.join(MAP_PATH, SkillParamFile); + if (fs.existsSync(skillParamPath)) { + const skillParamContent = fs.readFileSync(skillParamPath, { encoding: 'utf-8' }); + PartnerId2SkillParam = JSON.parse(skillParamContent); + console.log(`[name_convert.js] 成功加载并解析 ${SkillParamFile}。`); + // 可以选择性地添加更多日志来确认加载内容 + // console.log(`[name_convert.js] 加载了 ${Object.keys(PartnerId2SkillParam).length} 个角色的技能数据。`); + } else { + console.error(`${SkillParamFile} 文件未找到于: ${skillParamPath}`); + // 或者使用 console.warn 如果你希望即使缺少技能数据也能继续运行 + // console.warn(`${SkillParamFile} 文件未找到于: ${skillParamPath}. 技能名称将使用默认值。`); + } +} catch (error) { + console.error(`读取或解析 ${SkillParamFile} 时出错:`, error); + // 考虑是否在此处设置 PartnerId2SkillParam = {} 以防止后续错误 + PartnerId2SkillParam = {}; +} +// --- End 新增:加载技能数据 --- let char_alias_data = {}; try { // Ensure the alias directory exists before trying to read the file @@ -202,7 +222,9 @@ export { equip_data, weapon_data, partner_data, - char_alias_data // Optionally export alias data if needed elsewhere + char_alias_data, + PartnerId2SkillParam + // Optionally export alias data if needed elsewhere }; // import fs from 'node:fs'; // import path from 'node:path'; diff --git a/model/damage/avatar.js b/model/damage/avatar.js index 68aac6e..2727494 100644 --- a/model/damage/avatar.js +++ b/model/damage/avatar.js @@ -105,6 +105,25 @@ async function importFile(type, name, isWatch = false) { } await init(); export function avatar_ability(avatar) { + // --- 添加调试日志 --- + console.log(`\n===== Entering avatar_ability for ${avatar?.name_mi18n} (ID: ${avatar?.id}) =====`); + try { + console.log('--- Incoming Properties ---'); + console.log(JSON.stringify(avatar?.properties, null, 2)); + console.log('--- Incoming Weapon ---'); + console.log(JSON.stringify(avatar?.weapon, null, 2)); + console.log('--- Incoming Equip (Set Names & Main Stats) ---'); + avatar?.equip?.forEach(e => console.log(`Pos ${e.pos}: ${e.set?.name}, Main: ${e.main_properties?.[0]?.property_name}=${e.main_properties?.[0]?.final}`)); + console.log('--- Incoming Skills (Name & Level) ---'); + avatar?.skills?.forEach(s => console.log(`Skill ID/Type ${s.id || s.skill_type}: ${s.name} Lv.${s.level}`)); + console.log('--- Incoming Ranks (Unlocked) ---'); + avatar?.ranks?.forEach(r => console.log(`Rank ${r.pos}: ${r.is_unlocked}`)); + console.log('--------------------------------'); + } catch (logError) { + console.error("Error printing debug info in avatar_ability:", logError); + } + // --- 调试日志结束 --- + const m = calcFnc.character[avatar.id]; if (!m) return [];