# BÁO CÁO ĐIỀU TRA TOÀN DIỆN: 12 KỸ NĂNG VÕ HỌC CHỦ ĐỘNG, 5 THẦN BIẾN PHÙ & QUY CHUẨN ĐỒ HỌA/ANIMATION FREEEXILE

- **Mã tài liệu**: `FE-SURVEY-SKILLS-VFX-20261004`
- **Tác tử khảo sát**: `explorer_survey_1`
- **Môi trường khảo sát**: Codebase FreeExile (Server C++/Python, Client WebApp JS, Cocos Creator 3.8.x TypeScript, SQLite Databases)
- **Tôn chỉ thẩm mỹ**: ARPG 2.5D Cổ Võ Hoang Dã & Hắc Ám Lưu Đày (Grimdark Savage Primal Exile ARPG — Tinh thần thuần chất Path of Exile 2).

---

## 1. BẢN ĐỒ CHI TIẾT 12 KỸ NĂNG VÕ HỌC CHỦ ĐỘNG & THẦN BIẾN PHÙ (SUPPORT SIGILS)

### 1.1. Bảng Khảo Sát 12 Kỹ Năng Võ Học Chủ Động (Active Skills)
Các kỹ năng võ học chủ động được đồng bộ và xác thực nhất quán qua 4 nguồn chân lý:
- Server Catalog: `server/world/martial_catalog.py` (hàm `create_standard_active_skills`)
- Database: `data/martial_database.db` (bảng `skills`), `data/game_design_matrix.db` (bảng `skills`)
- Cocos Client: `client/cocos/assets/scripts/data/skill_catalog.ts` (`CANONICAL_SKILLS`)
- Tài liệu GDD: `docs/game_design/MARTIAL_SKILLS_AND_AUGMENT_SIGILS_SYSTEM.md`

| ID | Tên Kỹ Năng (Key) | Ngũ Hành & Tông Môn | Căn Cốt & Vũ Khí | Thời Gian & Tầm Đánh | Cơ Chế Combo & Đánh Đổi (PoE2 Spirit) | Thẩm Mỹ Đồ Họa & Visual Theme |
|:---|:---|:---|:---|:---|:---|:---|
| **1001** | **Cửu Tiêu Lôi Kiếm**<br>(`cuu_tieu_loi_kiem`) | **Kim** (Lôi)<br>Thanh Phong Kiếm Tông | **Thân Pháp** (`AGILITY`)<br>Kiếm (`SWORD`) | Cast: 650ms<br>CD: 1.8s<br>Lock: 650ms<br>Range: 14m (AoE: 2m) | **Combo Finisher**.<br>Upside: Đâm xuyên 100% mục tiêu, +180% sát thương đơn điểm.<br>Downside: Khóa chân 650ms khi tụ kiếm; gánh thêm +30% sát thương nhận vào. | Lôi kiếm cự đại trắng lõi bao quanh bởi quầng tím-huyết lôi đỏ thẫm (`#dc2626` / `#9333ea`), xé rách không gian, tia sét fractal giật nứt mặt sàn. |
| **1002** | **Thanh Phong Vạn Kiếm Vũ**<br>(`thanh_phong_van_kiem_vu`) | **Kim** (Lôi)<br>Thanh Phong Kiếm Tông | **Thân Pháp** (`AGILITY`)<br>Kiếm (`SWORD`) | Cast: 300ms<br>CD: 0.5s<br>Lock: 200ms<br>Range: 8m (AoE: 3.5m) | **Combo Starter**.<br>Upside: Phóng 8 kiếm khí hình nón quét sạch góc 120° dọn quái nhanh.<br>Downside: Mỗi kiếm khí giảm 40% sát thương; tiêu hao 35 Chân Khí/giây duy trì. | 8 luồng kiếm khí ánh lôi trắng bạc gỉ sét (`#e0f7fa` / `#78350f`) tỏa cánh quạt, cắm dồn dập vào đàn quái, gây sốc điện toàn màn hình. |
| **1003** | **U Minh Huyết Độc Châm**<br>(`u_minh_huyet_doc_cham`) | **Mộc** (Độc)<br>U Minh Độc Y | **Thân Pháp** (`AGILITY`)<br>Phi Châm / Tiễn (`PROJECTILE_WEAPON`) | Cast: 350ms<br>CD: 0.8s<br>Lock: 200ms<br>Range: 10m (AoE: 1.8m) | **Combo Starter**.<br>Upside: Ăn mòn 150% sát thương/giây trong 4s (DoT), lây lan khi quái chết.<br>Downside: 0 sát thương va chạm trực tiếp; giảm 20% tốc độ chạy trong 1.5s. | Châm độc bằng gai xương thú mục rữa (`#052e16` / `#166534`), để lại vệt khói xanh rêu axit bốc khói nghi ngút, sủi bọt máu thối rữa. |
| **1004** | **Thiên Ma Bộc Độc Kình**<br>(`thien_ma_boc_doc_kinh`) | **Mộc** (Độc)<br>U Minh Độc Y | **Thân Pháp** (`AGILITY`)<br>Tự Do (`ANY`) | Cast: 450ms<br>CD: 3.5s<br>Lock: 300ms<br>Range: 6m (AoE: 5.0m) | **Combo Finisher**.<br>Upside: Kích nổ toàn bộ tầng độc trong 5m, nhân x2.5 sát thương DoT tức thì.<br>Downside: Tự tổn hại 15% Khí Huyết tối đa và cấm hồi máu trong 2 giây. | Vụ nổ sóng độc đen ngòm pha xanh thẫm lan tỏa elip, xác quái nổ tung văng dịch độc và vụn xương mục nát. |
| **1005** | **Băng Phách Hàn Quang Trận**<br>(`bang_phach_han_quang_tran`) | **Thủy** (Hàn)<br>Hàn Băng Thần Điện | **Thần Thức** (`MIND`)<br>Trượng (`STAFF`) | Cast: 600ms<br>CD: 10.0s<br>Lock: 400ms<br>Range: 7m (AoE: 6.0m) | **Combo Starter**.<br>Upside: Đóng băng mặt đất bán kính 6m trong 3s, tạo khiên Ward 25% sát thương.<br>Downside: Hồi chiêu 10s, sát thương giảm 50%, tuyệt đối không thể Bạo Kích. | Trận đồ cổ ngữ man tộc màu xanh lam đục kết tinh trên nền đất nứt (`#0288d1` / `#a5f3fc`), gai băng gai góc đâm xuyên chân quái. |
| **1006** | **Băng Tiễn Xuyên Tâm**<br>(`bang_tien_xuyen_tam`) | **Thủy** (Hàn)<br>Hàn Băng Thần Điện | **Thần Thức** (`MIND`)<br>Trượng (`STAFF`) | Cast: 400ms<br>CD: 1.5s<br>Lock: 250ms<br>Range: 16m (Min: 3.5m, AoE: 2.2m) | **Combo Finisher**.<br>Upside: Bắn mũi cự tiễn băng tầm cực xa 16m đâm xuyên, vỡ vụn khi va chạm.<br>Downside: Vô hiệu hóa trong cự ly gần (< 3.5m), không thể dùng giải vây áp sát. | Mũi tên cọc băng nhọn hoắt gồ ghề lao xé gió, va chạm nổ tung thành các mảnh băng sắc lẹm găm vào vách đá. |
| **1007** | **Liệt Hỏa Toàn Phong Trảm**<br>(`liet_hoa_toan_phong_tram`) | **Hỏa** (Diễm)<br>Liệt Diễm Cuồng Đao | **Cương Thể** (`PHYSIQUE`)<br>Đao (`BLADE`) | Cast: 200ms<br>CD: 0s (Channeling)<br>Lock: 0ms<br>Range: 3.5m (AoE: 3.0m) | **Sustain AoE**.<br>Upside: Xoay tròn 360° vừa di chuyển vừa chém, miễn nhiễm choáng và đẩy lùi.<br>Downside: Giảm 40% tốc chạy khi xoay, giảm 50% Né Tránh, Chân Khí tiêu hao +10%/s. | Cơn bão xoay tròn đỏ cam rực lửa pha rỉ sét (`fire_whirlwind_slash`), văng tia máu đỏ thẫm (`#991b1b`) và tàn tro cuộn khói đen. |
| **1008** | **Liệt Diễm Bộc Khí Trảm**<br>(`liet_diem_boc_khi_tram`) | **Hỏa** (Diễm)<br>Liệt Diễm Cuồng Đao | **Cương Thể** (`PHYSIQUE`)<br>Đao (`BLADE`) | Cast: 750ms<br>CD: 4.0s<br>Lock: 750ms<br>Range: 4.5m (AoE: 2.5m) | **Combo Finisher**.<br>Upside: Bổ dọc đại đao chẻ đôi mặt đất, sát thương hỏa kình cực đại (+250%), tạo vệt dung nham.<br>Downside: Tiêu hao 55 Thể Lực; khựng động tác 750ms và nhận +20% sát thương nếu trượt. | Nhát chém nện rạch toác mặt đất, dung nham và lửa ngùn ngụt trào dâng dọc rãnh nứt, tàn lửa bốc cháy dữ dội. |
| **1009** | **Kim Cang Trụy Địa Chấn**<br>(`kim_cang_truy_dia_chan`) | **Thổ** (Cương Kình)<br>Kim Cang Tông | **Cương Thể** (`PHYSIQUE`)<br>Bổng / Trượng (`STAFF`) | Cast: 800ms<br>CD: 4.5s<br>Lock: 800ms<br>Range: 6m (AoE: 5.0m) | **Combo Starter**.<br>Upside: Nhảy bổ giáng mạnh thiền trượng xuống đất 5m, gây choáng 2s, tăng 40% giáp.<br>Downside: Động tác nhảy mất 800ms; bị cấm dùng Huyễn Ảnh Bộ trong 1.5s sau khi tiếp đất. | Decal nứt đất dẹt góc Isometric (`ground_slam_crater`), đá hộc và sỏi vỡ văng tung tóe theo sóng xung kích hoàng thổ (`#f57f17`). |
| **1010** | **Kim Cang Bất Hoại Thể**<br>(`kim_cang_bat_hoai_the`) | **Thổ** (Hộ Thân)<br>Kim Cang Tông | **Cương Thể** (`PHYSIQUE`)<br>Tay Không (`UNARMED`) | Cast: 300ms<br>CD: 14.0s<br>Lock: 300ms<br>Range: 0m (AoE: 3.0m, Dur: 4s) | **Defensive Guard**.<br>Upside: Giảm 75% toàn bộ sát thương nhận vào trong 4s, phản chấn 40% sát thương cận chiến.<br>Downside: Bị khóa chặt vị trí (cấm di chuyển và cấm xuất chiêu khác) suốt 4 giây. | Chuông vàng kim cang man tộc phủ trùm cơ thể, ký tự cổ ngọc tỏa hào quang vàng đất trầm, tiếng kim loại va chạm vang dội. |
| **1011** | **Huyết Ma Khấp Huyết Kình**<br>(`huyet_ma_khap_huyet_kinh`) | **Hỗn Mang** (Huyết)<br>U Minh / Huyết Ma | **Thần Thức** (`MIND`)<br>Tự Do (`ANY`) | Cast: 500ms<br>CD: 6.0s<br>Lock: 300ms<br>Range: 8m (AoE: 4.5m) | **Chaos AoE Drain**.<br>Upside: Hút máu kẻ địch xung quanh, sát thương Hỗn Mang phớt lờ hoàn toàn Hộ Thể Ward.<br>Downside: Tiêu hao 75 Chân Khí; không hút được máu quái vật không có máu (Undead/Cốt). | Vòng xoáy huyết thạch đỏ thẫm u ám (`blood_drain_aoe`), các sợi tơ máu từ kẻ địch bị kéo giật hội tụ về tâm nhân vật. |
| **1012** | **Man Cốt Triệu Hồn Đồ**<br>(`man_cot_trieu_hon_do`) | **Thổ** (Tà Cốt)<br>Kim Cang / Man Tộc | **Cương Thể** (`PHYSIQUE`)<br>Tự Do (`ANY`) | Cast: 1200ms<br>CD: 15.0s<br>Lock: 800ms<br>Range: 5m (AoE: 3.0m) | **Totem Minion**.<br>Upside: Cắm Cột Tà Cốt giảm tốc độ kẻ địch và triệu hồi 3 Âm Binh Man Tộc chiến đấu độc lập.<br>Downside: Niệm chú 1.2s; cột Tà Cốt dễ vỡ nếu dính sát thương AoE diện rộng. | Cột sọ tà cốt trồi lên từ vũng bùn (`bone_totem_summon`), sương mù hắc ám tỏa ra, 3 khô lâu man tộc cầm đao trồi lên tấn công. |

*(Bổ trợ di chuyển cốt lõi: **ID 1099 - Huyễn Ảnh Bộ (`huyen_anh_bo`)**: Né tránh lướt 4.5m, khung bất tử 0.25s (i-frame), để lại vệt tàn ảnh đỏ `ghost_trail_evasion` và vết cào rách đất).*

---

### 1.2. Danh Mục 5 Thần Biến Phù Cốt Lõi (Support Sigils) & Ma Trận 10 Ấn Bổ Trợ
Căn cứ `server/world/martial_catalog.py`, `data/martial_database.db` (bảng `support_gems`) và `client/cocos/assets/scripts/data/support_skill_catalog.ts`:

Trong cơ chế FreeExile, có **5 Thần Biến Phù Cốt Lõi** tác động mạnh nhất đến hình thái VFX đòn đánh và được sử dụng làm mẫu tích hợp đồ họa trực tiếp trong Sprint 2:
1. **Sigil 2001: Phân Quang Đa Hóa Phù (`MULTI_PROJECTILE`)**:
   - *Yêu cầu tag*: `PROJECTILE` | *Cấm tag*: `MELEE`
   - *Thông số*: +3 tia đạn / kiếm khí / độc châm; sát thương x0.65 (-35% Less Damage); tiêu hao x1.45.
   - *Visual VFX*: Phân tách đạn đạo thành chùm 3-4 tia tỏa góc $30^\circ$ (`multi_projectile_split`).
2. **Sigil 2002: Bộc Phá Khuếch Đại Phù (`AREA_OF_EFFECT`)**:
   - *Yêu cầu tag*: `AOE` | *Cấm tag*: `STRIKE`
   - *Thông số*: +50% bán kính vụ nổ diện rộng; sát thương tâm x0.80; tốc độ xuất chiêu x0.75.
   - *Visual VFX*: Vòng sóng xung kích giãn nở cực đại (1.5x AoE Shockwave expansion), decal nứt đất to gấp rưỡi.
3. **Sigil 2004: Huyết Khí Quy Tông Phù (`BLOOD_MAGIC`)**:
   - *Yêu cầu tag*: Không ràng buộc (`UNIVERSAL`)
   - *Thông số*: Chuyển 100% tiêu hao Thể Lực thành tiêu hao Máu; sát thương tổng x1.25; tắt hoàn toàn khiên Ward (=0).
   - *Visual VFX*: Quầng năng lượng huyết mạch đỏ tươi bao bọc vũ khí (`vfxOverrideColor = '#ef4444'`), vệt máu chảy ròng ròng khi vung đòn.
4. **Sigil 2005: Lôi Đình Xâu Chuỗi Phù (`CHAIN_LIGHTNING`)**:
   - *Yêu cầu tag*: `PROJECTILE` | *Cấm tag*: `MELEE`, `PIERCING`
   - *Thông số*: Nảy chuỗi sang 3 mục tiêu trong bán kính 6m; sát thương nảy x0.85; cấm đâm xuyên.
   - *Visual VFX*: Nhánh sét răng cưa fractal màu tím-đỏ giật nảy liên hoàn giữa 3 kẻ địch (`chain_lightning_arc`).
5. **Sigil 2006: Hàn Khí Cực Lãnh Phù (`FREEZE_AFFLICTION`)**:
   - *Yêu cầu tag*: `COLD` | *Cấm tag*: `FIRE`
   - *Thông số*: 100% tỉ lệ Đóng Băng; +40% thời gian khống chế; mất khả năng gây Bỏng/Độc; tiêu hao x1.30.
   - *Visual VFX*: Tinh thể băng giá bao bọc mục tiêu, vỡ vụn thành các mảnh băng xanh đục khi dính đòn (Sub-Zero Frost Shatter).

*(5 Thần Biến Phù còn lại trong hệ thống 10 Phù: **2003** Cực Hạn Bộc Kình Phù - Strike Damage Boost; **2007** Cuồng Phong Liên Hoàn Phù - Rapid Cast; **2008** Thất Thương Đoạt Mệnh Phù - Crit Martyr Recoil; **2009** Khắc Cương Liệt Khí Phù - Brutal Armorcrusher; **2010** Thần Thân Hoán Vị Phù - Tactical Retreat Dash).*

---

## 2. HIỆN TRẠNG RENDER SKILL & VFX: NƠI DIỄN RA PROCEDURAL DRAWING CẦN THAY THẾ

### 2.1. Phân Tích Canvas 2D Procedural Drawing Trong WebApp
Tại `client/webapp/js/engine/vfx_renderer.js` và `client/webapp/js/engine/combat_skills.js`, toàn bộ hiệu ứng chiêu thức đang được vẽ bằng mã lệnh hình học 2D Canvas thô:

1. **Hiệu ứng Vệt Đao Liệt Huyết (`vfx_slashes`)**:
   - *Vị trí code*: `client/webapp/js/engine/vfx_renderer.js` (dòng 5 – 71)
   - *Cơ chế vẽ cũ*: Sử dụng `ctx.arc(0, 0, sl.radius, -Math.PI * 0.45, Math.PI * 0.45)` với `ctx.shadowColor = '#ef4444'` và `ctx.shadowBlur = 18`.
   - *Nhược điểm*: Chỉ là cung tròn hình học đơn điệu, không có hoa văn máu xé thịt, không bắt sáng PBR bình minh/hoàng hôn, tiêu tốn CPU lớn khi bật `shadowBlur`.

2. **Hiệu ứng Gai Xương Băng Độc (`vfx_spikes`)**:
   - *Vị trí code*: `client/webapp/js/engine/vfx_renderer.js` (dòng 74 – 140)
   - *Cơ chế vẽ cũ*: Dùng đa giác cứng `ctx.moveTo(sp.length / 2, 0)`, `ctx.lineTo(-sp.length / 2, -sp.width / 2)` với `ctx.fillStyle = '#e7e5e4'`.
   - *Nhược điểm*: Mũi phi tiêu hình nón phẳng lì, không có vân rạn nứt xương gãy, không có hiệu ứng phát quang của tà thuật.

3. **Hiệu ứng Huyết Lôi Tia Sét (`vfx_lightnings`)**:
   - *Vị trí code*: `client/webapp/js/engine/vfx_renderer.js` (dòng 143 – 219)
   - *Cơ chế vẽ cũ*: Dùng `ctx.lineTo(lt.segments[s].x, lt.segments[s].y)` nối 7 điểm ngẫu nhiên bằng `ctx.stroke()`, vẽ vòng elip nứt đất `ctx.ellipse(...)`.
   - *Nhược điểm*: Sét dạng đa giác đường kẻ vector đơn giản, thiếu độ dày thể tích (volume volumetric), không có Normal map gồ ghề.

4. **Hạt Huyết Tán & Khói Bụi (`particles`)**:
   - *Vị trí code*: `client/webapp/js/engine/vfx_renderer.js` (dòng 224 – 236)
   - *Cơ chế vẽ cũ*: Hàng chục vòng tròn `ctx.arc(pt.x, pt.y, pt.radius, 0, Math.PI * 2)` màu đỏ/vàng/xanh rơi tự do.

### 2.2. Kiến Trúc Render Chuẩn Cocos Creator 3.8.x & Apple Metal Cần Tiếp Nhận
1. **Shader PBR Tùy Biến**:
   - Tệp shader: `client/cocos/assets/resources/shaders/sprite_pbr.effect`
   - Cơ chế: Đọc đồng thời 3 texture (`mainTexture`, `normalMap`, `emissiveMap`), tính toán ánh sáng Blinn-Phong + Normal Mapping tangent-space theo hướng nguồn sáng Isometric (`lightDir`).
2. **Bộ Điều Khiển Hoạt Ảnh SpriteAtlasRenderer**:
   - Tệp mã nguồn: `client/cocos/assets/scripts/animation/SpriteAtlasRenderer.ts`
   - Cơ chế: Đọc Manifest JSON, tính UV chính xác cho từng khung hình theo lưới 8 cột (Cols = 8), cố định điểm neo chân nhân vật `pivot: [0.5, 0.90]`.
3. **Thư Mục Tài Nguyên Đích**:
   - Texture & Normal Maps: `client/cocos/assets/resources/vfx/`
   - Manifests JSON: `client/cocos/assets/resources/vfx/`
   - Hạt GPU Instancing: `ParticleSystem2D` tích hợp sẵn trong Cocos Engine.

---

## 3. THÔNG SỐ KHUNG HÌNH, THỜI LƯỢNG & ĐIỂM KÍCH HOẠT (EFFECT TRIGGERS)

Chuẩn hóa toàn bộ 12 kỹ năng chủ động và 5 thần biến phù thành chuỗi khung hình Flipbook Sprite Sheet PoT ($1024\times 1024$ / $2048\times 2048$), thời lượng và điểm trigger:

| Kỹ Năng / Ấn Ký | Số Frame | FPS Chuẩn | Thời Lượng VFX (Duration) | Điểm Neo & Trọng Tâm (Pivot) | Điểm Kích Hoạt (Triggers) | Yêu Cầu Visual & Normal Map |
|:---|:---|:---|:---|:---|:---|:---|
| **1001. Cửu Tiêu Lôi Kiếm** | 6 frames | 16 fps | 375ms | `[0.5, 0.5]` (Center) | - Frame 0: Tụ lôi điện (0ms)<br>- Frame 2: Phóng kiếm (125ms)<br>- Frame 5: Nổ xuyên thấu (375ms) | Tia sét tím-đỏ fractal rực sáng lõi trắng; Normal Map Sobel kênh B > 180 tạo khối tròn cự kiếm. |
| **1002. Thanh Phong Vạn Kiếm Vũ** | 6 frames | 18 fps | 333ms | `[0.5, 0.5]` (Center) | - Frame 1: Phóng chùm kiếm (55ms)<br>- Frame 4: Quét đỉnh hình nón (220ms) | Cánh quạt kiếm khí lôi quang xanh bạc gỉ sét; vệt mờ motion blur. |
| **1003. U Minh Huyết Độc Châm** | 4 frames | 12 fps | 333ms | `[0.5, 0.5]` (Center) | - Frame 1: Phi châm bay (83ms)<br>- Frame 3: Cắm găm mục tiêu (250ms) | Gai nhọn xanh rêu thẫm rỉ máu; khói axit sủi tăm Normal map gồ ghề. |
| **1004. Thiên Ma Bộc Độc Kình** | 6 frames | 16 fps | 375ms | `[0.5, 0.90]` (Floor) | - Frame 0: Mạch độc co thắt (0ms)<br>- Frame 2: Nổ bộc phá tâm (125ms)<br>- Frame 5: Khói độc tan dần (375ms) | Sóng xung kích elip dẹt $30^\circ$, vệt nổ dịch độc xanh đen. |
| **1005. Băng Phách Hàn Quang Trận** | 8 frames | 16 fps | 500ms | `[0.5, 0.90]` (Floor) | - Frame 1: Khởi động cổ ngữ (62ms)<br>- Frame 4: Gai băng trồi lên (250ms)<br>- Frame 7: Khóa băng cố định (437ms) | Ma trận hình học man tộc; gai băng đục sắc nhọn phản chiếu ánh sáng PBR. |
| **1006. Băng Tiễn Xuyên Tâm** | 6 frames | 18 fps | 333ms | `[0.5, 0.5]` (Center) | - Frame 0: Bắn tiễn (0ms)<br>- Frame 4: Va chạm vỡ vụn (222ms) | Mũi cự tiễn băng lao nhanh xé gió; mảnh vỡ vụn văng đa hướng. |
| **1007. Liệt Hỏa Toàn Phong Trảm** | 4 frames | 16 fps | 250ms (Loop) | `[0.5, 0.5]` (Center) | - Lặp liên tục chu kỳ 250ms<br>- Trigger chém mỗi 125ms | Vệt cung xoay lửa đỏ cam pha rỉ sét (`fire_whirlwind_slash`); tàn tro đen bay kèm. |
| **1008. Liệt Diễm Bộc Khí Trảm** | 8 frames | 16 fps | 500ms | `[0.5, 0.90]` (Floor) | - Frame 2: Lưỡi đao chạm đất (125ms)<br>- Frame 4: Rãnh dung nham phun (250ms)<br>- Frame 7: Lửa tắt dần (437ms) | Vết chém xé toạc mặt đất, dung nham trào dâng, khói đen cuộn đặc. |
| **1009. Kim Cang Trụy Địa Chấn** | 6 frames | 16 fps | 375ms | `[0.5, 0.90]` (Floor) | - Frame 2: Nện trượng tiếp đất (125ms)<br>- Frame 3: Rạn nứt đất đá (187ms)<br>- Frame 5: Đá vụn tan biến (312ms) | Vết nứt elip isometric (`ground_slam_crater`), bụi đất hoàng thổ văng mù mịt. |
| **1010. Kim Cang Bất Hoại Thể** | 6 frames | 12 fps | 500ms (Pulsing) | `[0.5, 0.85]` (Center) | - Frame 0: Chuông vàng hạ xuống (0ms)<br>- Frame 3: Hào quang phản đòn (250ms) | Chuông đồng cổ kính khắc phù chú man tộc, phản quang kim loại đanh thép. |
| **1011. Huyết Ma Khấp Huyết Kình** | 4 frames | 16 fps | 250ms (Pulsing) | `[0.5, 0.5]` (Center) | - Frame 0: Vòng xoáy tà ma (0ms)<br>- Frame 2: Tơ máu hội tụ đỉnh (125ms) | Vòng xoáy huyết thạch đỏ thẫm u ám (`blood_drain_aoe`), 6 sợi tơ máu hút vào tâm. |
| **1012. Man Cốt Triệu Hồn Đồ** | 6 frames | 12 fps | 500ms | `[0.5, 0.90]` (Floor) | - Frame 1: Cọc sọ trồi lên (83ms)<br>- Frame 3: Hắc khí bộc phát (250ms)<br>- Frame 5: Cột xương định hình (416ms) | Cột xương sọ dã thú trồi từ vũng bùn (`bone_totem_summon`), hắc ám miasma. |
| **1099. Huyễn Ảnh Bộ (Né i-frame)** | 4 frames | 16 fps | 250ms | `[0.5, 0.90]` (Floor) | - Frame 0: Bắt đầu trườn né (0ms)<br>- Frame 1: Bật i-frame 0.25s (62ms)<br>- Frame 3: Tàn ảnh mờ dần (187ms) | Tàn ảnh huyết thạch mờ (`ghost_trail_evasion`), vệt cào rách bùn đất ở gốc chân. |
| **Sigil 2001 (Đa Hóa Phù)** | 4 frames | 16 fps | 250ms | `[0.5, 0.5]` (Center) | - Kích hoạt cùng frame bắn đạn | 3 phi đao tách chùm góc $30^\circ$ (`multi_projectile_split`). |
| **Sigil 2002 (Bộc Phá Phù)** | 4 frames | 16 fps | 250ms | `[0.5, 0.90]` (Floor) | - Kích hoạt khi đòn đánh nổ chạm đất | Vòng sóng chấn động biến dạng không gian giãn nở 1.5x bán kính AoE. |
| **Sigil 2004 (Huyết Khí Phù)** | 4 frames | 16 fps | 250ms | `[0.5, 0.5]` (Center) | - Kích hoạt khi bắt đầu tiêu hao máu | Quầng sáng huyết mạch đỏ rực quanh nhân vật, tia máu bắn toé từ cổ tay. |
| **Sigil 2005 (Xâu Chuỗi Phù)** | 4 frames | 16 fps | 250ms | `[0.5, 0.5]` (Center) | - Kích hoạt khi tia đạn trúng mục tiêu đầu | Nhánh sét fractal ziczac nảy liên hoàn 3 mục tiêu (`chain_lightning_arc`). |
| **Sigil 2006 (Cực Lãnh Phù)** | 4 frames | 16 fps | 250ms | `[0.5, 0.5]` (Center) | - Kích hoạt khi mục tiêu dính sát thương băng | Lớp sương đóng băng tức thì và gai băng sắc nhọn nổ vụn. |

---

## 4. QUY CHUẨN ĐẶT TÊN & CẤU TRÚC HOẠT ẢNH MỞ RỘNG (EXTENSIBLE CONVENTIONS)

### 4.1. Cấu Trúc Hoạt Ảnh Quái Vật (Monster Archetypes 8-Directional)
Căn cứ bảng `monster_archetypes` (100 loài thuộc 10 chi dã thú) trong `data/game_design_matrix.db`:
- **10 Chi Dã Thú Cốt Lõi (Genus)**:
  1. `RISEN_SKELETON`: Khô Lâu Tử Sĩ (Xiềng Rỉ, Mâu Nhọn, Khiên Xương, Xạ Thủ, Vu Sư...)
  2. `FERAL_HELLHOUND`: Hoang Vực Cuồng Khuyển (Răng Nanh, Huyết Khuyển, Lang Thú...)
  3. `BLOOD_CRAWLER`: Huyết Chu Bọ Cạp (Đầm Lầy, Bọ Giáp, Phun Độc...)
  4. `BRAMBLE_TREANT`: Man Tộc Rễ Gai (Vỏ Cây, Gai Độc, Thần Mộc Sắt...)
  5. `CORRUPTED_RAPTOR`: Dị Biến Ác Điểu (Dơi Quỷ, Quạ Máu, Kền Kền Ăn Xác...)
  6. `FLESH_ABOMINATION`: Thi Quỷ Chắp Vá (Bướu Máu, Nhiều Tay, Khổng Lồ...)
  7. `IRONHIDE_BEHEMOTH`: Cương Ngưu Thiết Bì (Bùn Lầy, Sừng Nhọn, Nham Thạch...)
  8. `PRIMAL_CANNIBAL`: Man Tộc Ăn Thịt Người (Đao Phủ, Tế Tư, Thợ Săn Đầu...)
  9. `SHADOW_WRAITH`: U Hồn Tà Ma (Bóng Ma, Vuốt Quỷ, Hư Vô...)
  10. `TOMB_LORD`: Lăng Mộ Vương (Tế Đàn Tà Ma, Xác Ướp Hoàng Đế Cổ...)

- **Quy Chuẩn Đặt Tên Tệp Quái Vật**:
  ```text
  client/cocos/assets/resources/monsters/[genus]_[subspecies_code]_anim_atlas.png
  client/cocos/assets/resources/monsters/[genus]_[subspecies_code]_anim_atlas_normal.png
  client/cocos/assets/resources/monsters/[genus]_[subspecies_code]_anim_manifest.json
  ```
  *Ví dụ*: `mob_risen_skeleton_skel_rust_anim_atlas.png`, `mob_feral_hellhound_dog_bloodhound_anim_atlas.png`.

- **Ma Trận 8 Hướng (8-Directional Row Layout)**:
  Mỗi hướng chiếm 1 hàng (Row) hoặc chia theo Clip; tuân thủ thứ tự góc quay của `Math25D.ts` và `SpriteAtlasRenderer.ts`:
  - Row 0: `S` (Nam - hướng nhìn thẳng xuống dưới màn hình)
  - Row 1: `SW` (Tây Nam)
  - Row 2: `W` (Tây)
  - Row 3: `NW` (Tây Bắc)
  - Row 4: `N` (Bắc - hướng nhìn lưng)
  - Row 5: `NE` (Đông Bắc)
  - Row 6: `E` (Đông)
  - Row 7: `SE` (Đông Nam)

- **Các Trạng Thái Hoạt Ảnh Bắt Buộc (Clips)**:
  - `idle`: 4 frames (5 fps, loop)
  - `run` (hoặc `walk`): 6–8 frames (10-12 fps, loop, stride 2.2–2.8m)
  - `attack`: 4–6 frames (12-15 fps, hit_frame: frame 2)
  - `hurt`: 3 frames (12 fps, non-looping, flinch)
  - `death`: 5 frames (10 fps, non-looping, dissolve/crumble)
  - `stun` (optional cho Boss/Elite): 3 frames (choáng ngợp khi vỡ Poise Meter).

- **Quy Chuẩn Kích Thước & Điểm Neo (Metrics)**:
  - Frame Width x Height: $160 \times 160$ px (quái thường) hoặc $256 \times 256$ px (Boss Behemoth / Abomination).
  - Lưới Atlas: 8 cột (Cols = 8), kích thước lũy thừa $2^n$ ($1024\times 1024$ hoặc $2048\times 2048$).
  - Điểm neo cố định: `pivot: [0.5, 0.90]` (gốc bàn chân tiếp đất, chống trượt trôi hình học).

---

### 4.2. Cấu Trúc Nhân Vật Lưu Đày & Cặp Song Binh (Exile Characters + Weapon Pairs)
Căn cứ 6 class nhân vật trong `char_creation.js` và bảng `weapon_bases` trong `data/game_design_matrix.db`:

- **6 Phân Lớp Nhân Vật Lưu Đày (Exile Classes)**:
  1. `char_sword_master` (Kiếm Tu - Nam, Kim): Azure Wind Sword + Infernal Blade
  2. `char_sword_maiden` (Kiếm Nữ - Nữ, Kim): Azure Wind Sword + Infernal Blade
  3. `char_feral_berserker` (Cuồng Đao - Nam, Hỏa): Infernal Greatblade + Azure Wind Sword
  4. `char_wild_archer` (Man Xạ Nữ - Nữ, Mộc): Feral Bone Bow + Twin Fang Daggers
  5. `char_glacial_lancer` (Thần Thương - Nam, Thủy/Thổ): Spiked Bone Spear + Infernal Greatblade
  6. `char_shadow_assassin` (Thích Khách - Nữ, Lôi/Âm): Twin Fang Daggers + Feral Bone Bow

- **Cơ Chế Song Binh Hoán Chuyển (Dual-Weapon Auto-Swap)**:
  Mỗi nhân vật trang bị đồng thời **Bộ 1 (Chính)** và **Bộ 2 (Phụ)**. Máy chủ tự động hoán đổi trong **0ms** khi bấm phím chiêu thức đòi hỏi vũ khí tương ứng:
  - Cặp vũ khí 1-Handed: `SWORD` (Kiếm), `BLADE` (Đao), `FERAL_CLAW` (Vuốt), kèm `SHIELD` (Khiên).
  - Cặp vũ khí 2-Handed: `BLADE_2H` (Đại Đao), `BLUNT_HAMMER` (Thiết Bổng / Chùy Gai), `STAFF` (Thiền Trượng), `RANGED_BOW` (Man Cung).

- **Cấu Trúc Hoạt Ảnh & Tên Clip Nhân Vật**:
  ```text
  client/cocos/assets/resources/animations/char_[class_name]_anim_atlas.png
  client/cocos/assets/resources/animations/char_[class_name]_anim_atlas_normal.png
  client/cocos/assets/resources/animations/char_[class_name]_anim_manifest.json
  ```
  - Clip danh mục hành động:
    - `idle`: 4 frames (6 fps)
    - `run`: 8 frames (12 fps, footstep triggers at frame 0, 4)
    - `attack_slash` (Chém đao/kiếm): 6 frames (15 fps, hit_frame: 2)
    - `attack_thrust` (Đâm giáo/châm): 6 frames (atlas_clip trỏ về `attack_slash` hoặc clip riêng)
    - `attack_slam` (Dập búa/bổng): 6 frames (15 fps, hit_frame: 3)
    - `attack_shoot` (Bắn cung/tiễn): 6 frames (15 fps, release_frame: 2)
    - `skill_whirlwind` (Xoay đao 360°): 6 frames (18 fps, loop)
    - `dodge` (Huyễn Ảnh Bộ trườn né): 6 frames (20 fps, non-loop, i-frame 0.25s)
    - `hurt`: 3 frames (12 fps)
    - `death`: 5 frames (10 fps)

- **Thông Số Kỹ Thuật Chuẩn**:
  - Kích thước frame chuẩn: $160 \times 192$ px.
  - Lưới atlas chuẩn: 8 cột (Cols = 8), kích thước texture $1280 \times 960$ px hoặc PoT $2048 \times 2048$ px.
  - Tangent-Space Sobel Normal Map đi kèm: Kênh Blue mean $\ge 128.0$.
  - Dilation Padding: 4-8 pixel mở rộng viền alpha, loại trừ triệt để viền đen ám (black halo bleed) trên nền tối.

---

## 5. TỔNG KẾT KHUYẾN NGHỊ CHO CÁC PHÒNG BAN THỰC THI (ACTIONABLE ROADMAP)

1. **Phòng Kỹ Thuật Client (Cocos & WebApp)**:
   - Xóa bỏ việc gọi `renderVfxProjectiles()` procedural drawing trong `vfx_renderer.js` khi chuyển đổi sang Atlas assets.
   - Nạp các file `savage_primal_skills_vfx_atlas.png` và `martial_skills_atlas.png` vào SpriteFrame cache Cocos Creator.
   - Kích hoạt material `sprite_pbr.effect` cho toàn bộ entity kỹ năng để hiển thị ánh sáng động 2.5D.
2. **Phòng Kỹ Thuật Pipeline & Asset**:
   - Sử dụng `tools/asset_pipeline/produce_all_missing_skills_vfx.py` và `savage_vfx_factory.py` mở rộng nướng toàn bộ 12 kỹ năng và 5 support sigils thành bộ đôi Texture Atlas + Normal Map PoT ($1024\times 1024$ / $2048\times 2048$).
   - Đảm bảo thuật toán Dilation Padding $\ge 4\text{px}$ để khử viền đen trên mọi asset mới.
3. **Phòng Thiết Kế Game & Cân Bằng**:
   - Bảo toàn 100% luật Trade-off (Upside vs Downside) và kiểm tra liên kết Tag qua `SkillDatabaseService` trước khi triển khai hoạt ảnh kỹ năng vào Gameplay.
