/** * 技能系统配置测试脚本 * 用于验证新的多星级技能效果配置是否正常工作 */ const fs = require('fs'); const path = require('path'); // 读取技能配置文件 const skillConfigPath = path.join(__dirname, 'assets/resources/data/skill.json'); try { const skillData = JSON.parse(fs.readFileSync(skillConfigPath, 'utf8')); console.log('=== 技能配置验证 ==='); skillData.skills.forEach(skill => { console.log(`\n技能: ${skill.name} (${skill.id})`); console.log(`最大等级: ${skill.maxLevel}`); // 验证levelEffects结构 if (skill.levelEffects) { console.log('等级效果配置:'); Object.keys(skill.levelEffects).forEach(effectName => { if (effectName === 'descriptions') { console.log(` ${effectName}: ${skill.levelEffects[effectName].length} 个描述`); skill.levelEffects[effectName].forEach((desc, index) => { console.log(` 等级${index}: ${desc}`); }); } else { const values = skill.levelEffects[effectName]; console.log(` ${effectName}: [${values.join(', ')}]`); // 验证数组长度是否正确(应该是maxLevel + 1) if (values.length !== skill.maxLevel + 1) { console.error(` ❌ 错误: ${effectName} 数组长度 ${values.length} 不等于 ${skill.maxLevel + 1}`); } else { console.log(` ✅ 数组长度正确`); } } }); } else { console.error('❌ 缺少 levelEffects 配置'); } }); console.log('\n=== 效果值测试 ==='); // 测试暴击几率技能的不同等级效果 const critSkill = skillData.skills.find(s => s.id === 'crit_chance'); if (critSkill) { console.log('\n暴击几率技能各等级效果:'); for (let level = 0; level <= critSkill.maxLevel; level++) { const effectValue = critSkill.levelEffects.critChanceIncrease[level]; const description = critSkill.levelEffects.descriptions[level]; console.log(` ${level}星: ${effectValue * 100}% - ${description}`); } } console.log('\n✅ 技能配置验证完成'); } catch (error) { console.error('❌ 读取技能配置失败:', error.message); }