v0.7: CrystalOrb Canvas 粒子系统升级 + 角色属性系统(四维)

CrystalOrb 升级(P0 视觉震撼):
- 从 CSS 动画重写为 Canvas 2D 粒子系统
- 环绕能量粒子(3层32个,emerald/fuchsia/rose,带拖尾)
- 环境星尘(40个,闪烁漂移)
- 点击爆发粒子 + 冲击波环(连击解锁更多层)
- 晶核辉光呼吸 + 3层六边形纹理 + 鼠标视差
- VLM 视觉评分 8/10

角色属性系统(P1 RPG 深度):
- 新增 attributes.ts 逻辑层 + AttributesPanel UI
- 四维属性:探索力/智慧/勇气/灵感(emerald/fuchsia/amber/rose)
- 两区加成公式(0-50线性,50-100递减)
- 飞升获得属性点(ascensions×2+1),手动分配
- 完成活动获得属性经验,自动升级
- 接入 pulse/clickNode/resolveCurrentNode/grantCruiseReward/tickTide
- 旧存档兼容(migrateAttributes)
- 新增 2 项成就 + 第 8 个标签页「角色」
- VLM 视觉评分 7-8/10

lint 零错误;HTTP 200
This commit is contained in:
2026-06-23 21:00:42 +00:00
parent 8474f4caa7
commit 4545fe380b
11 changed files with 1812 additions and 159 deletions
+39
View File
@@ -251,6 +251,45 @@ export const ACHIEVEMENTS: Achievement[] = [
reward: { crystalsPerSecPct: 8, insightPct: 8 },
rewardText: "产能 +8% · 洞见 +8%",
},
{
id: "ach_attr_total_50",
name: "四维觉醒",
desc: "角色四维属性总和达到 50",
icon: "🧭",
color: "#e879f9",
check: (s) => {
const a = s.attributes;
if (!a) return false;
return (
(a.exploration || 0) +
(a.wisdom || 0) +
(a.courage || 0) +
(a.inspiration || 0) >=
50
);
},
reward: { crystalsPerSecPct: 6, insightPct: 6 },
rewardText: "产能 +6% · 洞见 +6%",
},
{
id: "ach_attr_max_100",
name: "维度精通",
desc: "任一角色属性达到满级 100",
icon: "💫",
color: "#fbbf24",
check: (s) => {
const a = s.attributes;
if (!a) return false;
return (
a.exploration >= 100 ||
a.wisdom >= 100 ||
a.courage >= 100 ||
a.inspiration >= 100
);
},
reward: { crystalsPerSecPct: 12, insightPct: 10 },
rewardText: "产能 +12% · 洞见 +10%",
},
];
/** 计算成就提供的永久加成(跨周目保留) */