pi-jinyong-xia 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +378 -0
  3. package/dist/assets/portrait-ascii/portrait-data.json +1 -0
  4. package/dist/extensions/characters.d.ts +19 -0
  5. package/dist/extensions/characters.js +52 -0
  6. package/dist/extensions/characters.js.map +1 -0
  7. package/dist/extensions/index.d.ts +1 -0
  8. package/dist/extensions/index.js +20 -0
  9. package/dist/extensions/index.js.map +1 -0
  10. package/dist/extensions/missions-mbti.d.ts +39 -0
  11. package/dist/extensions/missions-mbti.js +101 -0
  12. package/dist/extensions/missions-mbti.js.map +1 -0
  13. package/dist/extensions/missions-templates-danger.d.ts +5 -0
  14. package/dist/extensions/missions-templates-danger.js +432 -0
  15. package/dist/extensions/missions-templates-danger.js.map +1 -0
  16. package/dist/extensions/missions-templates-safe.d.ts +34 -0
  17. package/dist/extensions/missions-templates-safe.js +307 -0
  18. package/dist/extensions/missions-templates-safe.js.map +1 -0
  19. package/dist/extensions/missions-templates.d.ts +12 -0
  20. package/dist/extensions/missions-templates.js +26 -0
  21. package/dist/extensions/missions-templates.js.map +1 -0
  22. package/dist/extensions/missions.d.ts +27 -0
  23. package/dist/extensions/missions.js +81 -0
  24. package/dist/extensions/missions.js.map +1 -0
  25. package/dist/extensions/state.d.ts +89 -0
  26. package/dist/extensions/state.js +205 -0
  27. package/dist/extensions/state.js.map +1 -0
  28. package/dist/extensions/telemetry.d.ts +179 -0
  29. package/dist/extensions/telemetry.js +241 -0
  30. package/dist/extensions/telemetry.js.map +1 -0
  31. package/dist/extensions/wuxue-achievements.d.ts +27 -0
  32. package/dist/extensions/wuxue-achievements.js +92 -0
  33. package/dist/extensions/wuxue-achievements.js.map +1 -0
  34. package/dist/extensions/wuxue-boss.d.ts +15 -0
  35. package/dist/extensions/wuxue-boss.js +405 -0
  36. package/dist/extensions/wuxue-boss.js.map +1 -0
  37. package/dist/extensions/wuxue-data.d.ts +35 -0
  38. package/dist/extensions/wuxue-data.js +409 -0
  39. package/dist/extensions/wuxue-data.js.map +1 -0
  40. package/dist/extensions/wuxue-encounter.d.ts +23 -0
  41. package/dist/extensions/wuxue-encounter.js +368 -0
  42. package/dist/extensions/wuxue-encounter.js.map +1 -0
  43. package/dist/extensions/wuxue-faction.d.ts +43 -0
  44. package/dist/extensions/wuxue-faction.js +182 -0
  45. package/dist/extensions/wuxue-faction.js.map +1 -0
  46. package/dist/extensions/wuxue-profession.d.ts +33 -0
  47. package/dist/extensions/wuxue-profession.js +117 -0
  48. package/dist/extensions/wuxue-profession.js.map +1 -0
  49. package/dist/extensions/wuxue-talent.d.ts +41 -0
  50. package/dist/extensions/wuxue-talent.js +209 -0
  51. package/dist/extensions/wuxue-talent.js.map +1 -0
  52. package/dist/extensions/wuxue-types.d.ts +155 -0
  53. package/dist/extensions/wuxue-types.js +28 -0
  54. package/dist/extensions/wuxue-types.js.map +1 -0
  55. package/dist/extensions/wuxue.d.ts +89 -0
  56. package/dist/extensions/wuxue.js +441 -0
  57. package/dist/extensions/wuxue.js.map +1 -0
  58. package/dist/extensions/xia-boss.d.ts +14 -0
  59. package/dist/extensions/xia-boss.js +337 -0
  60. package/dist/extensions/xia-boss.js.map +1 -0
  61. package/dist/extensions/xia-cmd-faction.d.ts +4 -0
  62. package/dist/extensions/xia-cmd-faction.js +313 -0
  63. package/dist/extensions/xia-cmd-faction.js.map +1 -0
  64. package/dist/extensions/xia-cmd-missions.d.ts +4 -0
  65. package/dist/extensions/xia-cmd-missions.js +232 -0
  66. package/dist/extensions/xia-cmd-missions.js.map +1 -0
  67. package/dist/extensions/xia-cmd-shop-rank.d.ts +4 -0
  68. package/dist/extensions/xia-cmd-shop-rank.js +155 -0
  69. package/dist/extensions/xia-cmd-shop-rank.js.map +1 -0
  70. package/dist/extensions/xia-cmd-stats.d.ts +4 -0
  71. package/dist/extensions/xia-cmd-stats.js +290 -0
  72. package/dist/extensions/xia-cmd-stats.js.map +1 -0
  73. package/dist/extensions/xia-commands.d.ts +19 -0
  74. package/dist/extensions/xia-commands.js +138 -0
  75. package/dist/extensions/xia-commands.js.map +1 -0
  76. package/dist/extensions/xia-events.d.ts +58 -0
  77. package/dist/extensions/xia-events.js +615 -0
  78. package/dist/extensions/xia-events.js.map +1 -0
  79. package/dist/extensions/xia-render.d.ts +65 -0
  80. package/dist/extensions/xia-render.js +490 -0
  81. package/dist/extensions/xia-render.js.map +1 -0
  82. package/dist/extensions/xia-select.d.ts +24 -0
  83. package/dist/extensions/xia-select.js +413 -0
  84. package/dist/extensions/xia-select.js.map +1 -0
  85. package/dist/extensions/xia.d.ts +14 -0
  86. package/dist/extensions/xia.js +145 -0
  87. package/dist/extensions/xia.js.map +1 -0
  88. package/entry.js +18 -0
  89. package/package.json +61 -0
  90. package/skills/SKILL.md +83 -0
@@ -0,0 +1,313 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * xia-cmd-faction.ts — 帮派/职业/天赋子命令
4
+ */
5
+ import { pagedSelect, wrapSelect } from "./xia-select.js";
6
+ import { getAllFactions, getFaction, getFactionRankTitle, getFactionBonus } from "./wuxue-faction.js";
7
+ import { getAllProfessions, getProfession, getProfessionBonus } from "./wuxue-profession.js";
8
+ import { getAllTalents, canLearnTalent, calculateTalentBonuses, getBranchName, getBranchEmoji } from "./wuxue-talent.js";
9
+ import { getAchievementDef, getAllAchievementDefs, getAchievementsByCategory, getRarityLabel, getRarityEmoji, ACHIEVEMENT_CATEGORIES } from "./wuxue-achievements.js";
10
+ import { ELEMENT_SYMBOL } from "./wuxue-types.js";
11
+ import { resolve, dirname } from "node:path";
12
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
13
+ import { fileURLToPath } from "node:url";
14
+ import { renderImageWithStatus } from "./xia-render.js";
15
+ import { getCapabilities } from "@earendil-works/pi-tui";
16
+ export async function handleFactionCmd(ctx, sub, w, petState, theme, deps) {
17
+ switch (sub) {
18
+ case "faction":
19
+ case "clan":
20
+ case "guild":
21
+ case "门派":
22
+ case "帮派": {
23
+ if (petState.factionId) {
24
+ // 已加入门派 — 显示详情
25
+ const faction = getFaction(petState.factionId);
26
+ if (!faction) {
27
+ petState.factionId = null;
28
+ return "ok";
29
+ }
30
+ const rank = getFactionRankTitle(petState.factionId, petState.factionContribution);
31
+ const bonus = getFactionBonus(petState.factionId, petState.factionContribution);
32
+ const fLines = ["", theme.bold(` ═══ ${faction.emoji} ${faction.name} ═══`), ""];
33
+ fLines.push(theme.fg("dim", ` ${faction.description}`));
34
+ fLines.push(theme.fg("dim", ` ${faction.lore}`));
35
+ fLines.push("");
36
+ fLines.push(` ${ELEMENT_SYMBOL[faction.element]}${faction.element}属性 📜门派称号: ${theme.fg("accent", rank)}`);
37
+ fLines.push(` 🏅贡献度: ${petState.factionContribution}`);
38
+ fLines.push("");
39
+ fLines.push(theme.bold(" 门派加成:"));
40
+ if (bonus.attack > 0)
41
+ fLines.push(` ⚔️ 攻击 +${bonus.attack}%`);
42
+ if (bonus.defense > 0)
43
+ fLines.push(` 🛡️ 防御 +${bonus.defense}%`);
44
+ if (bonus.hp > 0)
45
+ fLines.push(` ❤️ 血量 +${bonus.hp}%`);
46
+ if (bonus.xp > 0)
47
+ fLines.push(` 📝 经验 +${bonus.xp}%`);
48
+ if (bonus.gold > 0)
49
+ fLines.push(` 💰 金币 +${bonus.gold}%`);
50
+ fLines.push("");
51
+ fLines.push(theme.bold(" 门派武功:"));
52
+ for (const sid of faction.exclusiveSkills) {
53
+ fLines.push(` 📜 ${sid}`);
54
+ }
55
+ fLines.push("");
56
+ fLines.push(theme.fg("dim", " 每次修炼/战斗/完成任务可增加门派贡献"));
57
+ fLines.push("");
58
+ showLines(ctx, fLines);
59
+ }
60
+ else {
61
+ // 未加入 — 显示门派列表
62
+ const factionOptions = getAllFactions().map(f => {
63
+ const req = f.requirement;
64
+ const meetsLevel = w.level >= req.level;
65
+ const meetsGold = w.gold >= req.gold;
66
+ const lockIcon = meetsLevel && meetsGold ? "" : " 🔒";
67
+ return `${f.emoji} ${f.name} ${ELEMENT_SYMBOL[f.element]}${f.element} 攻+${f.bonuses.attack}% 防+${f.bonuses.defense}% Lv.${req.level}+${lockIcon}`;
68
+ });
69
+ const fIdx = await pagedSelect(ctx, "🏛️ 选择门派加入", factionOptions, false);
70
+ if (fIdx === -1 || fIdx === -2)
71
+ return fIdx === -2 ? "back" : "ok";
72
+ const chosen = getAllFactions()[fIdx];
73
+ if (w.level < chosen.requirement.level) {
74
+ ctx.ui.notify(`❌ 等级不足!需要 Lv.${chosen.requirement.level},当前 Lv.${w.level}`, "info");
75
+ return "ok";
76
+ }
77
+ if (w.gold < chosen.requirement.gold) {
78
+ ctx.ui.notify(`❌ 金币不足!需要 ${chosen.requirement.gold}金,当前 ${w.gold}金`, "info");
79
+ return "ok";
80
+ }
81
+ petState.factionId = chosen.id;
82
+ petState.factionContribution = 0;
83
+ petState.joinedFactionAt = Date.now();
84
+ ctx.ui.notify(`${chosen.emoji} 拜入${chosen.name}门下!${chosen.description}`, "info");
85
+ }
86
+ return "ok";
87
+ }
88
+ case "profession":
89
+ case "class":
90
+ case "职业": {
91
+ if (petState.professionId) {
92
+ const prof = getProfession(petState.professionId);
93
+ if (!prof) {
94
+ petState.professionId = null;
95
+ return "ok";
96
+ }
97
+ const bonus = getProfessionBonus(petState.professionId, w.level);
98
+ const pLines = ["", theme.bold(` ═══ ${prof.emoji} ${prof.name} ═══`), ""];
99
+ pLines.push(theme.fg("dim", ` ${prof.description}`));
100
+ pLines.push("");
101
+ pLines.push(` ${ELEMENT_SYMBOL[prof.element]}${prof.element}属性`);
102
+ pLines.push(` 🌟特技: ${theme.fg("accent", prof.special)} — ${prof.specialDesc}`);
103
+ pLines.push(` 🎯被动: ${prof.passive}`);
104
+ pLines.push("");
105
+ pLines.push(theme.bold(" 职业加成:"));
106
+ if (bonus.attack > 0)
107
+ pLines.push(` ⚔️ 攻击 +${bonus.attack}%`);
108
+ if (bonus.defense > 0)
109
+ pLines.push(` 🛡️ 防御 +${bonus.defense}%`);
110
+ if (bonus.hp > 0)
111
+ pLines.push(` ❤️ 血量 +${bonus.hp}%`);
112
+ if (bonus.xp > 0)
113
+ pLines.push(` 📝 经验 +${bonus.xp}%`);
114
+ if (bonus.gold > 0)
115
+ pLines.push(` 💰 金币 +${bonus.gold}%`);
116
+ pLines.push("");
117
+ showLines(ctx, pLines);
118
+ }
119
+ else {
120
+ const profOptions = getAllProfessions().map(p => `${p.emoji} ${p.name} ${ELEMENT_SYMBOL[p.element]}${p.element} ${p.description}`);
121
+ const pIdx = await pagedSelect(ctx, "🎭 选择江湖职业", profOptions, false);
122
+ if (pIdx === -1 || pIdx === -2)
123
+ return pIdx === -2 ? "back" : "ok";
124
+ const chosen = getAllProfessions()[pIdx];
125
+ petState.professionId = chosen.id;
126
+ petState.joinedProfessionAt = Date.now();
127
+ ctx.ui.notify(`${chosen.emoji} 成为${chosen.name}!${chosen.passive}`, "info");
128
+ }
129
+ return "ok";
130
+ }
131
+ case "talent":
132
+ case "talents":
133
+ case "天赋": {
134
+ const tLines = ["", theme.bold(` ═══ 🌟 成长天赋 ═══`), ""];
135
+ const totalBonuses = calculateTalentBonuses(petState.talents);
136
+ tLines.push(` 可用天赋点: ${theme.bold(String(petState.talentPoints))} 已学习: ${petState.talents.length}`);
137
+ tLines.push("");
138
+ // 三条天赋路线
139
+ const branches = ["combat", "survival", "fortune"];
140
+ for (const branch of branches) {
141
+ tLines.push(theme.bold(` ${getBranchEmoji(branch)} ${getBranchName(branch)}`));
142
+ const branchTalents = getAllTalents().filter(t => t.branch === branch);
143
+ for (const t of branchTalents) {
144
+ const learned = petState.talents.includes(t.id);
145
+ const icon = learned ? "✅" : "⬜";
146
+ const nameStr = learned ? theme.fg("accent", `${t.emoji} ${t.name}`) : `${t.emoji} ${t.name}`;
147
+ tLines.push(` ${icon} ${nameStr} ${theme.fg("dim", `[Tier ${t.tier}] ${t.effect}`)}`);
148
+ }
149
+ tLines.push("");
150
+ }
151
+ if (petState.talentPoints > 0) {
152
+ tLines.push(theme.fg("dim", ` 你有 ${petState.talentPoints} 点天赋点可用,选择要学习的天赋:`));
153
+ showLines(ctx, tLines);
154
+ // 展示可学习天赋
155
+ const learnable = getAllTalents().filter(t => canLearnTalent(t, petState.talents, petState.talentPoints));
156
+ if (learnable.length === 0) {
157
+ ctx.ui.notify("❌ 没有可学习的天赋", "info");
158
+ return "ok";
159
+ }
160
+ const talentOpts = learnable.map(t => `${getBranchEmoji(t.branch)} ${t.emoji} ${t.name} [Tier ${t.tier}] — ${t.effect}`);
161
+ const tIdx = await pagedSelect(ctx, "🌟 选择天赋学习", talentOpts, false);
162
+ if (tIdx === -1 || tIdx === -2)
163
+ return tIdx === -2 ? "back" : "ok";
164
+ const chosen = learnable[tIdx];
165
+ petState.talents.push(chosen.id);
166
+ petState.talentPoints--;
167
+ ctx.ui.notify(`🌟 习得天赋「${chosen.emoji} ${chosen.name}」!${chosen.effect}`, "info");
168
+ }
169
+ else {
170
+ tLines.push("");
171
+ showLines(ctx, tLines);
172
+ }
173
+ return "ok";
174
+ }
175
+ case "achievements":
176
+ case "achievement":
177
+ case "成就": {
178
+ const aLines = ["", theme.bold(` ═══ 🏆 江湖成就 ═══`), ""];
179
+ const unlocked = w.achievements || [];
180
+ const total = getAllAchievementDefs().length;
181
+ aLines.push(theme.fg("dim", ` 已解锁: ${unlocked.length}/${total}`));
182
+ aLines.push("");
183
+ // 按分类展示
184
+ for (const cat of ACHIEVEMENT_CATEGORIES) {
185
+ const catAchievements = getAchievementsByCategory(cat.id);
186
+ const catUnlocked = catAchievements.filter(a => unlocked.includes(a.id));
187
+ if (catAchievements.length === 0)
188
+ continue;
189
+ aLines.push(theme.bold(` ${cat.emoji} ${cat.name} (${catUnlocked.length}/${catAchievements.length})`));
190
+ for (const ach of catAchievements) {
191
+ const isUnlocked = unlocked.includes(ach.id);
192
+ if (isUnlocked) {
193
+ const rarityStr = getRarityEmoji(ach.rarity);
194
+ aLines.push(` ${rarityStr} ${theme.fg("accent", `${ach.icon} ${ach.name}`)} ${theme.fg("dim", `— ${ach.description}`)}`);
195
+ }
196
+ else {
197
+ aLines.push(theme.fg("dim", ` 🔒 ??? — ${ach.description}`));
198
+ }
199
+ }
200
+ aLines.push("");
201
+ }
202
+ showLines(ctx, aLines);
203
+ // 提供查看成就勋章选项
204
+ if (unlocked.length > 0) {
205
+ const genChoice = await wrapSelect(ctx, "🏆 成就展示", ["🖼️ 查看成就勋章", "❌ 关闭"]);
206
+ if (genChoice?.includes("勋章")) {
207
+ const unlockedDefs = unlocked.map((id) => getAchievementDef(id)).filter(Boolean);
208
+ const achOptions = unlockedDefs.map((a) => `${getRarityEmoji(a.rarity)} ${a.icon} ${a.name}`);
209
+ const achIdx = await pagedSelect(ctx, "🖼️ 选择成就查看勋章", achOptions, false);
210
+ if (achIdx >= 0 && achIdx < unlockedDefs.length) {
211
+ const ach = unlockedDefs[achIdx];
212
+ await showAchievementBadgeImage(ctx, ach);
213
+ }
214
+ }
215
+ }
216
+ return "ok";
217
+ }
218
+ }
219
+ return "ok";
220
+ }
221
+ function showLines(ctx, lines) {
222
+ ctx.ui.notify(lines.join("\n"), "info");
223
+ }
224
+ // ═══════════════════════════════════════════════════════════════
225
+ // 成就勋章图片 — 从 Cloudflare CDN 加载预生成的徽章
226
+ // ═══════════════════════════════════════════════════════════════
227
+ const _achDir = dirname(fileURLToPath(import.meta.url));
228
+ const BADGE_CDN_URL = "https://xia.openclawd.qzz.io/badges";
229
+ /** 获取成就图片本地缓存路径 */
230
+ function getBadgeCachePath(achId) {
231
+ const cacheDir = resolve(_achDir, '..', '.cache', 'badges');
232
+ if (!existsSync(cacheDir))
233
+ mkdirSync(cacheDir, { recursive: true });
234
+ return resolve(cacheDir, `${achId}.png`);
235
+ }
236
+ /** 加载 PNG buffer 为 renderImageWithStatus 所需格式 */
237
+ function pngToImageData(buf) {
238
+ try {
239
+ const w = buf.readUInt32BE(16);
240
+ const h = buf.readUInt32BE(20);
241
+ return { base64: buf.toString("base64"), widthPx: w, heightPx: h };
242
+ }
243
+ catch {
244
+ return null;
245
+ }
246
+ }
247
+ /** 从本地缓存或 CDN 加载成就勋章图片并展示 */
248
+ async function showAchievementBadgeImage(ctx, ach) {
249
+ const rarityLabel = getRarityLabel(ach.rarity);
250
+ // 1) 尝试本地缓存
251
+ const cachePath = getBadgeCachePath(ach.id);
252
+ if (existsSync(cachePath)) {
253
+ const buf = readFileSync(cachePath);
254
+ const imgData = pngToImageData(buf);
255
+ if (imgData) {
256
+ renderBadge(ctx, ach, imgData);
257
+ return;
258
+ }
259
+ }
260
+ // 2) 从 CDN 下载
261
+ ctx.ui.notify(`🖼️ 加载成就勋章「${ach.icon} ${ach.name}」...`, "info");
262
+ try {
263
+ const resp = await fetch(`${BADGE_CDN_URL}/${ach.id}.png`, {
264
+ signal: AbortSignal.timeout(10_000),
265
+ });
266
+ if (!resp.ok)
267
+ throw new Error(`CDN ${resp.status}`);
268
+ const buf = Buffer.from(await resp.arrayBuffer());
269
+ // 缓存到本地
270
+ try {
271
+ const { writeFileSync: ws } = await import("node:fs");
272
+ ws(cachePath, buf);
273
+ }
274
+ catch { /* ignore cache write failure */ }
275
+ const imgData = pngToImageData(buf);
276
+ if (imgData) {
277
+ renderBadge(ctx, ach, imgData);
278
+ }
279
+ else {
280
+ ctx.ui.notify(`✅ 成就「${ach.icon} ${ach.name}」(${rarityLabel})`, "info");
281
+ }
282
+ }
283
+ catch {
284
+ // CDN 不可用时纯文字展示
285
+ ctx.ui.notify(`🏆 ${ach.icon} ${ach.name} (${rarityLabel}) — ${ach.description}`, "info");
286
+ }
287
+ }
288
+ /** 在终端中渲染成就勋章图片 */
289
+ function renderBadge(ctx, ach, imgData) {
290
+ const rarityLabel = getRarityLabel(ach.rarity);
291
+ const rarityEmoji = getRarityEmoji(ach.rarity);
292
+ const statusLines = [
293
+ ` ═══ 🏆 成就勋章 ═══`,
294
+ ``,
295
+ ` ${rarityEmoji} ${ach.icon} ${ach.name} (${rarityLabel})`,
296
+ ` 「${ach.description}」`,
297
+ ``,
298
+ ];
299
+ const caps = getCapabilities();
300
+ if (caps?.images) {
301
+ try {
302
+ const rendered = renderImageWithStatus(imgData, statusLines, 80);
303
+ ctx.ui.notify(rendered.join("\n"), "info");
304
+ }
305
+ catch {
306
+ ctx.ui.notify(statusLines.join("\n"), "info");
307
+ }
308
+ }
309
+ else {
310
+ ctx.ui.notify(statusLines.join("\n"), "info");
311
+ }
312
+ }
313
+ //# sourceMappingURL=xia-cmd-faction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xia-cmd-faction.js","sourceRoot":"","sources":["../../extensions/xia-cmd-faction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * xia-cmd-missions.ts — /xia missions/profile 子命令
3
+ */
4
+ export declare function handleMissionsCmd(ctx: any, sub: string, w: any, MAX: number, ES: Record<string, string>, theme: any, deps: any): Promise<string>;
@@ -0,0 +1,232 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * xia-cmd-missions.ts — /xia missions/profile 子命令
4
+ */
5
+ export async function handleMissionsCmd(ctx, sub, w, MAX, ES, theme, deps) {
6
+ const { _wuxue, petState, updateWidget, scheduleSave, showLines, wrapSelect, mis } = deps;
7
+ switch (sub) {
8
+ case "profile": {
9
+ // MBTI 性格分析
10
+ const profile = mis().calculateMBTIProfile(petState.missions.filter(m => m.status === "completed" || m.status === "failed"));
11
+ const desc = mis().MBTI_DESCRIPTIONS[profile.type];
12
+ const pref = petState.missionPreferences;
13
+ const s = profile.scores;
14
+ const pLines = ["", theme.bold(` ═══ 江湖性格分析 ═══`), ""];
15
+ if (profile.sampleSize === 0) {
16
+ pLines.push(theme.fg("dim", " 完成任务后将自动分析你的性格..."));
17
+ pLines.push(theme.fg("dim", " 去接取任务吧! /xia missions"));
18
+ }
19
+ else {
20
+ // MBTI 类型
21
+ pLines.push(theme.bold(` 你的性格类型: ${profile.type}`) + (desc ? theme.fg("accent", ` — ${desc.name}`) : ""));
22
+ if (desc)
23
+ pLines.push(theme.fg("muted", ` "${desc.trait}"`));
24
+ pLines.push("");
25
+ // 维度条形图
26
+ const dimBars = [
27
+ { left: "I 内向", right: "E 外向", lv: s.I, rv: s.E },
28
+ { left: "N 直觉", right: "S 实感", lv: s.N, rv: s.S },
29
+ { left: "T 理性", right: "F 感性", lv: s.T, rv: s.F },
30
+ { left: "J 计划", right: "P 随性", lv: s.J, rv: s.P },
31
+ ];
32
+ for (const dim of dimBars) {
33
+ const total = dim.lv + dim.rv || 1;
34
+ const lPct = Math.round(dim.lv / total * 100);
35
+ const rPct = 100 - lPct;
36
+ const bar = theme.fg("accent", `${dim.left} ${lPct}%`) + " | " + theme.fg("muted", `${rPct}% ${dim.right}`);
37
+ pLines.push(` ${bar}`);
38
+ }
39
+ // 置信度
40
+ pLines.push("");
41
+ const confPct = Math.round(profile.confidence * 100);
42
+ const confBar = "█".repeat(Math.round(profile.confidence * 10)) + "░".repeat(10 - Math.round(profile.confidence * 10));
43
+ pLines.push(theme.fg("dim", ` 置信度: ${confBar} ${confPct}% (基于 ${profile.sampleSize} 次任务)`));
44
+ // 匹配建议
45
+ if (profile.sampleSize > 0) {
46
+ pLines.push("");
47
+ pLines.push(theme.bold(" ═══ 最佳拍档(理论) ═══"));
48
+ const allTypes = Object.keys(mis().MBTI_DESCRIPTIONS);
49
+ const matches = allTypes
50
+ .map(t => ({ type: t, ...mis().calculateMBTICompatibility(profile.type, t) }))
51
+ .sort((a, b) => b.score - a.score);
52
+ for (const m of matches.slice(0, 3)) {
53
+ const mDesc = mis().MBTI_DESCRIPTIONS[m.type];
54
+ const stars = "★".repeat(Math.round(m.score)) + "☆".repeat(5 - Math.round(m.score));
55
+ pLines.push(theme.fg("accent", ` ${stars} ${m.type} ${mDesc?.name ?? ""}`) + theme.fg("dim", ` — ${m.desc}`));
56
+ }
57
+ // 真实江湖侠客匹配
58
+ if (petState.telemetryEnabled && petState.userId) {
59
+ pLines.push("");
60
+ pLines.push(theme.bold(" ═══ 江湖知己(真人匹配) ═══"));
61
+ pLines.push(theme.fg("dim", " 📡 正在寻觅江湖知音..."));
62
+ showLines(ctx, pLines);
63
+ pLines.length = pLines.length - 1; // remove loading line
64
+ try {
65
+ const { fetchMatch } = await import("./telemetry.js");
66
+ const matchData = await fetchMatch(petState.userId);
67
+ if (matchData?.ok && matchData.matches.length > 0) {
68
+ pLines.push(theme.fg("dim", ` 你的类型: ${matchData.myType} | 为你匹配到 ${matchData.matches.length} 位侠客`));
69
+ pLines.push("");
70
+ for (const pm of matchData.matches.slice(0, 5)) {
71
+ const stars = "★".repeat(Math.min(5, Math.round(pm.score))) + "☆".repeat(5 - Math.min(5, Math.round(pm.score)));
72
+ const name = pm.character_name ?? "无名侠客";
73
+ const reasons = pm.reasons.join("·");
74
+ pLines.push(` ${stars} ${theme.fg("accent", name)} ${theme.fg("dim", `Lv.${pm.level} ${pm.mbti_type}`)}`);
75
+ pLines.push(theme.fg("muted", ` ${reasons}`));
76
+ }
77
+ }
78
+ else {
79
+ pLines.push(theme.fg("dim", " 暂无足够侠客数据,江湖尚需壮大!"));
80
+ }
81
+ }
82
+ catch {
83
+ pLines.push(theme.fg("dim", " ❌ 无法连接江湖匹配服务"));
84
+ }
85
+ }
86
+ }
87
+ }
88
+ pLines.push("");
89
+ showLines(ctx, pLines);
90
+ return "ok";
91
+ }
92
+ case "missions":
93
+ case "mission":
94
+ case "quest": {
95
+ // 江湖任务
96
+ const pref = petState.missionPreferences;
97
+ const missionMenu = ["📋 接取任务", "📜 任务历史", "📊 我的偏好"];
98
+ const mChoice = await wrapSelect(ctx, "🗡️ 江湖任务", missionMenu);
99
+ if (!mChoice)
100
+ return "ok";
101
+ if (mChoice.includes("任务历史") || mChoice.includes("📜")) {
102
+ if (petState.missions.length === 0) {
103
+ ctx.ui.notify("📜 尚无任务记录", "info");
104
+ return "ok";
105
+ }
106
+ const recent = petState.missions.slice(-10).reverse();
107
+ const hLines = ["", theme.bold(" ═══ 最近任务记录 ═══")];
108
+ for (const m of recent) {
109
+ const statusIcon = m.status === "completed" ? "✅" : m.status === "failed" ? "❌" : m.status === "active" ? "🔄" : "⬜";
110
+ const resultText = m.status === "completed" ? `+${m.goldReward}金 +${m.xpReward}经验` : m.status === "failed" ? `-${m.hpCost}血` : "";
111
+ hLines.push(` ${statusIcon} ${m.name} ${mis().getRiskLabel(m.risk)} ${resultText}`);
112
+ }
113
+ hLines.push("");
114
+ showLines(ctx, hLines);
115
+ return "ok";
116
+ }
117
+ if (mChoice.includes("我的偏好") || mChoice.includes("📊")) {
118
+ const pLines = ["", theme.bold(" ═══ 任务偏好分析 ═══"), ""];
119
+ pLines.push(` 完成任务: ${pref.totalCompleted} 失败: ${pref.totalFailed}`);
120
+ const rp = pref.riskProfile;
121
+ pLines.push(` 🟢安全: ${rp.safe} 🔵低风险: ${rp.low} 🟡中风险: ${rp.medium} 🟠高风险: ${rp.high} 🔴极高风险: ${rp.extreme}`);
122
+ const total = rp.safe + rp.low + rp.medium + rp.high + rp.extreme;
123
+ if (total > 0) {
124
+ const highRatio = (rp.high + rp.extreme) / total;
125
+ const playStyle = highRatio > 0.4 ? "⚔️ 冒险型" : highRatio < 0.15 ? "🛡️ 保守型" : "⚖️ 均衡型";
126
+ pLines.push(` 游戏风格: ${playStyle}`);
127
+ }
128
+ else {
129
+ pLines.push(theme.fg("dim", " 完成更多任务以分析偏好"));
130
+ }
131
+ pLines.push("");
132
+ showLines(ctx, pLines);
133
+ return "ok";
134
+ }
135
+ // 接取任务
136
+ const recommendations = mis().recommendMissions(w.level, pref.riskProfile, 14);
137
+ if (recommendations.length === 0) {
138
+ ctx.ui.notify("当前没有可用任务", "info");
139
+ return "ok";
140
+ }
141
+ const missionOptions = recommendations.map(m => {
142
+ const rewards = mis().calculateMissionRewards(m, w.level);
143
+ const rate = Math.round(mis().calculateSuccessRate(m, w.level) * 100);
144
+ const planTag = m.planSteps > 0 ? ` [需${m.planSteps}步计划]` : "";
145
+ return `${mis().getRiskLabel(m.risk)} ${m.name} 💰${rewards.gold} +${rewards.xp}xp 成功率${rate}%${planTag}`;
146
+ });
147
+ const mIdx = await wrapSelect(ctx, "🗡️ 可接任务", missionOptions);
148
+ if (!mIdx)
149
+ return "ok";
150
+ const selectedIdx = missionOptions.indexOf(mIdx);
151
+ if (selectedIdx >= recommendations.length)
152
+ return "ok";
153
+ const selected = recommendations[selectedIdx];
154
+ // 任务确认
155
+ const rewards = mis().calculateMissionRewards(selected, w.level);
156
+ const rate = Math.round(mis().calculateSuccessRate(selected, w.level) * 100);
157
+ const planTag = selected.planSteps > 0 ? `\n 📋 需要${selected.planSteps}步计划` : "";
158
+ const confirmMsg = `${selected.name}\n ${selected.description}\n ${mis().getRiskLabel(selected.risk)} 成功率: ${rate}%\n 💰 ${rewards.gold}金 +${rewards.xp}经验 ❤${rewards.hpCost > 0 ? `-${rewards.hpCost}血` : "无消耗"}${planTag}`;
159
+ const action = await wrapSelect(ctx, confirmMsg, ["✅ 接取", "❌ 算了"]);
160
+ if (!action || action === "❌ 算了")
161
+ return "ok";
162
+ // 执行任务
163
+ const missionId = mis().generateMissionId();
164
+ const missionRecord = {
165
+ id: missionId, templateId: selected.id, name: selected.name, description: selected.description,
166
+ risk: selected.risk, status: "active",
167
+ goldReward: rewards.gold, xpReward: rewards.xp, hpCost: rewards.hpCost,
168
+ startedAt: Date.now(), completedAt: null,
169
+ requiredPlanSteps: selected.planSteps, completedPlanSteps: 0, planChoices: [],
170
+ };
171
+ if (selected.planSteps > 0) {
172
+ // 需要计划的任务:MBTI 反射型选项
173
+ const planChoices = [];
174
+ ctx.ui.notify(theme.fg("accent", `📋 任务开始: ${selected.name} — 需制定${selected.planSteps}步计划`), "info");
175
+ for (let step = 1; step <= selected.planSteps; step++) {
176
+ const stepOpts = mis().getRandomPlanOptions(4);
177
+ const labels = stepOpts.map(o => o.label);
178
+ labels.push("↩️ 放弃");
179
+ const planChoice = await wrapSelect(ctx, `📋 计划步骤 ${step}/${selected.planSteps}`, labels);
180
+ if (!planChoice || planChoice === "↩️ 放弃") {
181
+ missionRecord.status = "abandoned";
182
+ break;
183
+ }
184
+ const chosenOpt = stepOpts.find(o => o.label === planChoice);
185
+ if (chosenOpt)
186
+ planChoices.push(chosenOpt.id);
187
+ missionRecord.completedPlanSteps = step;
188
+ }
189
+ missionRecord.planChoices = planChoices;
190
+ if (missionRecord.status === "abandoned") {
191
+ petState.missions.push(missionRecord);
192
+ ctx.ui.notify(theme.fg("dim", `🏃 放弃了任务: ${selected.name}`), "info");
193
+ scheduleSave();
194
+ return "ok";
195
+ }
196
+ }
197
+ // 判定结果
198
+ const finalRate = mis().calculateSuccessRate(selected, w.level);
199
+ const success = Math.random() < finalRate;
200
+ if (success) {
201
+ missionRecord.status = "completed";
202
+ missionRecord.completedAt = Date.now();
203
+ w.gold += rewards.gold;
204
+ const { leveledUp } = _wuxue.addXp(w, rewards.xp);
205
+ pref.totalCompleted++;
206
+ pref.riskProfile[selected.risk]++;
207
+ pref.lastMissionAt = Date.now();
208
+ if (!pref.favoriteType || petState.missions.filter(m => m.templateId === selected.id).length > petState.missions.filter(m => m.templateId === pref.favoriteType).length) {
209
+ pref.favoriteType = selected.id;
210
+ }
211
+ const lvUpText = leveledUp ? `\n🎉 升级!Lv.${w.level}!` : "";
212
+ ctx.ui.notify(theme.fg("success", `✅ ${selected.successDesc}\n 💰+${rewards.gold}金 +${rewards.xp}经验${lvUpText}`), "info");
213
+ }
214
+ else {
215
+ missionRecord.status = "failed";
216
+ missionRecord.completedAt = Date.now();
217
+ w.hp = Math.max(1, w.hp - rewards.hpCost);
218
+ pref.totalFailed++;
219
+ pref.riskProfile[selected.risk]++;
220
+ pref.lastMissionAt = Date.now();
221
+ ctx.ui.notify(theme.fg("error", `❌ ${selected.failDesc}\n ❤-${rewards.hpCost}血`), "info");
222
+ }
223
+ petState.missions.push(missionRecord);
224
+ _wuxue.checkAchievements(w);
225
+ updateWidget(ctx);
226
+ scheduleSave();
227
+ return "ok";
228
+ }
229
+ }
230
+ return "ok";
231
+ }
232
+ //# sourceMappingURL=xia-cmd-missions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xia-cmd-missions.js","sourceRoot":"","sources":["../../extensions/xia-cmd-missions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * xia-cmd-shop-rank.ts — /xia shop/rank/bosses 子命令
3
+ */
4
+ export declare function handleShopRankCmd(ctx: any, sub: string, w: any, MAX: number, ES: Record<string, string>, theme: any, deps: any): Promise<"ok" | "back">;