test_skill_system.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * 技能系统配置测试脚本
  3. * 用于验证新的多星级技能效果配置是否正常工作
  4. */
  5. const fs = require('fs');
  6. const path = require('path');
  7. // 读取技能配置文件
  8. const skillConfigPath = path.join(__dirname, 'assets/resources/data/skill.json');
  9. try {
  10. const skillData = JSON.parse(fs.readFileSync(skillConfigPath, 'utf8'));
  11. console.log('=== 技能配置验证 ===');
  12. skillData.skills.forEach(skill => {
  13. console.log(`\n技能: ${skill.name} (${skill.id})`);
  14. console.log(`最大等级: ${skill.maxLevel}`);
  15. // 验证levelEffects结构
  16. if (skill.levelEffects) {
  17. console.log('等级效果配置:');
  18. Object.keys(skill.levelEffects).forEach(effectName => {
  19. if (effectName === 'descriptions') {
  20. console.log(` ${effectName}: ${skill.levelEffects[effectName].length} 个描述`);
  21. skill.levelEffects[effectName].forEach((desc, index) => {
  22. console.log(` 等级${index}: ${desc}`);
  23. });
  24. } else {
  25. const values = skill.levelEffects[effectName];
  26. console.log(` ${effectName}: [${values.join(', ')}]`);
  27. // 验证数组长度是否正确(应该是maxLevel + 1)
  28. if (values.length !== skill.maxLevel + 1) {
  29. console.error(` ❌ 错误: ${effectName} 数组长度 ${values.length} 不等于 ${skill.maxLevel + 1}`);
  30. } else {
  31. console.log(` ✅ 数组长度正确`);
  32. }
  33. }
  34. });
  35. } else {
  36. console.error('❌ 缺少 levelEffects 配置');
  37. }
  38. });
  39. console.log('\n=== 效果值测试 ===');
  40. // 测试暴击几率技能的不同等级效果
  41. const critSkill = skillData.skills.find(s => s.id === 'crit_chance');
  42. if (critSkill) {
  43. console.log('\n暴击几率技能各等级效果:');
  44. for (let level = 0; level <= critSkill.maxLevel; level++) {
  45. const effectValue = critSkill.levelEffects.critChanceIncrease[level];
  46. const description = critSkill.levelEffects.descriptions[level];
  47. console.log(` ${level}星: ${effectValue * 100}% - ${description}`);
  48. }
  49. }
  50. console.log('\n✅ 技能配置验证完成');
  51. } catch (error) {
  52. console.error('❌ 读取技能配置失败:', error.message);
  53. }