1Trạng thái & đích
data/achievements.json đã có. Bible đặt đích 60 thành tựu ở 1.0 (upgrades.counts_shared.achievements); doc 43 §5 ghi danh sách sinh sau theo schema doc 51 §4.28.Schema achievements.json (doc 51 §4.28)
| Field | Kiểu / giá trị cho phép | ★ | Nghĩa |
|---|---|---|---|
achievements | [ object ] (1..60) | ★ | 60 thành tựu |
achievements[].id | string ^ACH_[a-z0-9_]+$ | ★ | ID duy nhất (mẫu ở §2) |
achievements[].name_vi | string | ★ | tên hiển thị tiếng Việt có dấu |
achievements[].desc_vi | string | ★ | chữ thẻ/tooltip, mẫu câu có {param} |
achievements[].condition | → condition (§4.0) | ★ | điều kiện có cấu trúc {kind, ref, op, value} |
achievements[].hidden | any | ★ | ẩn |
achievements[].steam_api_name | string ^[A-Z0-9_]+$ | ★ | tên API Steam |
achievements[].mercy_blocked | any | ★ | khoá khi Thương Xót |
achievements[].mourning_related | any | liên quan Độ Tang | |
achievements[].icon | string | tên sprite icon icon_<slug> | |
doc | string | ★ | doc định nghĩa luật của file/khối (vd 12-Hero-Framework §8) |
2Nhóm thành tựu
Truyện & kết
qua Hồi I · II · III · IV; END_BELL_TOLL = ACH_bell_toll (ACH_BELL_TOLL) · END_QUIET_SHORE = ACH_quiet_shore (ACH_QUIET_SHORE) · END_ASH_CROWN = ACH_ash_crown (canon) · FLAG_SHORE_OPEN = ACH_shore_open
Kẻ Thức
1/hero: đạt MR10 với Hxx (EA: 5 hero đã ship)
Boss & Cổng
hạ đủ mini-boss 1 biome; hạ BS_Bx không dùng bình máu; …
Kỹ năng (ĐÁP/Né)
100 ĐÁP trong 1 run; 10 Né Hoàn Hảo liên tiếp; ĐÁP 1 tell vàng của boss pha 3; …
Build
kích 1 Cộng Hưởng II; 1 Tiến Hoá; Then Chốt (1.0); thắng Hồi với 3 Relic Lời Nguyền; …
Tro Nhớ
thấy Mắt Tro 3/3; thắng trận có thế đáp ASH bật; hạ boss mang Sẹo (sau END_BELL_TOLL); …
Khăn Tang
hạ boss Hồi cuối của build với Độ Tang ≥ 4 · 8 · 16 · 24 · 32 · 43 (EA: 4 · 8 · 16; trần EA 29)
Mode
xong 1 Lễ Ngày; xong 1 Truy Tuần; ENDLESS tầng 10; xong Đêm Hồi Chuông
Hub & codex
Phục Dựng GD5; 120 trang codex; dâng đủ LV01–LV06; xong TT1–TT5
3Luật thiết kế
- Dạy hệ thống, không cày: ≤ 3 thành tựu cần > 40 h (MR10 × 12 hero tính là nhóm hero, mỗi mục ≤ 8 run, DEC-2026-11-07-02); không thành tựu "chơi N ngày liên tiếp", không thành tựu theo thứ hạng leaderboard (top %), không thành tựu "bỏ lỡ vĩnh viễn" (mọi mục làm lại được, kể cả END_ASH_CROWN: "lần sau chọn lại được").
- Ẩn chỉ để giấu truyện (B6, 2 kết sau); mô tả ẩn hiện "Bí mật của Sổ Tang".
- CUSTOM: 0 thành tựu (Bible §4.1). Thương Xót bật: khoá đúng các mục
mercy_blocked: true= 6 mục nhóm Khăn Tang (Bible §4.3: Thương Xót chỉ khoá leaderboard + thành tựu Độ Tang); mọi nhóm khác vẫn mở. UI chọn Thương Xót ghi rõ số mục bị khoá. - Mod/nội dung lệch hash (§16): thành tựu vẫn mở (chơi đơn), leaderboard khoá.
- API:
steam_api_name=ACH_<SLUG>viết hoa củaid(vdACH_ash_crown→ACH_ASH_CROWN); bất biến sau khi ship; không xoá thành tựu đã ship (chỉ sửa chữ). Mở khoá →SetAchievement+StoreStatsngay (thành tựu là sự kiện hiếm, không gom). - Ngoại tuyến: Steam không chạy → ghi
achievements_pending[]trongsave/meta_<steamId>.json; lần init Steam kế → đẩy hết, xoá hàng chờ khiStoreStatscallback OK. - Icon: 256×256 = gốc 64×64 ×4 pixel; bản khoá = cùng hình, độ bão hoà 0, sáng 40% (sinh bằng script, không vẽ 2 lần); tên icon
icon_<slug>(fieldicon). - Thứ tự hiển thị trên Steam = thứ tự nhóm bảng §5.2; agent sinh file đánh số theo nhóm.
4Liên kết dữ liệu
| Kết | Thành tựu |
|---|---|
| Hồi Chuông END_BELL_TOLL | ACH_bell_toll |
| Mũ Tro END_ASH_CROWN | ACH_ash_crown |
| Bến Bình Yên END_QUIET_SHORE | ACH_quiet_shore |
Hiển thị khi mở khoá: AchievementUnlocked (toast góc phải trên; hàng đợi ≤ 3, trong combat … VFX_UI_achievement_toast · AchievementUnlocked (ACH_*; toast góc phải trên) SFX_UI_achievement