🔔 Bladewake GDD
Trang chủ › Hệ thống › Phòng thủ & tell
⚙️ Hệ thống

Phòng thủ & tell

Doc 11 trình bày kèm màu tell và ngưỡng windup từ data.

Cập nhật: 2026-11-07

1Tổng quan

Mục đích: tổng quát hoá hệ phòng thủ demo cho cả 12 hero: ngôn ngữ tell Y/P/N, loại đạn, hợp đồng ĐÁP/verb giữ/Lướt/Né Hoàn Hảo/Phản chung, bảng phòng thủ từng hero, trợ năng, luật công bằng mọi hạng địch. Phụ thuộc: 00-Design-Bible.md + data/_bible.json (INV-01..INV-18, §5.1 bảng ĐÁP/verb giữ, §5.2 mass_class, §4.3 Thương Xót, meta.accessibility); 10-Combat-Core.md (tick, §4 Thế, §5 trạng thái, §6 feedback, §7.4 thứ tự phân giải); GDD demo GDD/03-Defense.md, Tuning.csv. Được dùng bởi: doc hero H01–H12 (verb ĐÁP, verb giữ, đòn Phản), doc kẻ địch/Tinh Anh/mini/boss (soạn đòn, tell, token), doc hazard/mutator/Khăn Tang, doc âm thanh/VFX/UI, Sân Tập (Sân Tập ST_YARD), code Defense/Tell/Tokens.

2Ba lớp phòng thủ (mọi hero)

LớpNútTrả lờiRủi roThưởng
ĐÁPchạm RB/RMB100% tell vàng Y (cận chiến + đạn), 360°hụt khoá 0.30 skhựng/Thế địch, làm chậm, Dư Âm +4, tài nguyên hero, mở Phản (cận chiến)
Verb giữgiữ RB/RMBtheo từng hero (chặn/giảm/đặt bẫy/di chuyển), không bao giờ trả lời Ptốn Thế hoặc giới hạn riêng; P trong verb chặn/giảm = Vỡ Thếan toàn, chiến thuật riêng
LướtA/Spacemọi thứ, kể cả P và Ntốn lượtNé Hoàn Hảo: World chậm, hoàn lượt, Dư Âm +4
  • Tím P: chỉ Lướt/đi ra. Vùng đọng N: đi ra hoặc Lướt; không ĐÁP được. Không tồn tại đòn địch không tell (INV-02).

3Ngôn ngữ tell (INV-02, mọi hạng gồm boss)

📊 Màu tell & windup tối thiểu (tuning.defense)

Ngôn ngữ màu tellNgôn ngữ màu tellTellTell Y #ffd84aY #ffd84aTell P #b14cffP #b14cffTell N #e8e4f0N #e8e4f0
Y
#ffd84a INV-02
P
#b14cff INV-02
N
#e8e4f0 vùng đọng N / ấn spawn
Windup tối thiểu & khe chuỗiWindup tối thiểu & khe chuỗiwindup_y_s (S; M/L/XL 0.45 (INV-03))windup_y_s (S; M/L/XL 0.45 (INV-03)): 0.3 s0.3 swindup_y_mlxl (M/L/XL)windup_y_mlxl (M/L/XL): 0.45 s0.45 swindup_p_s_m (P vùng hiện trước va …windup_p_s_m (P vùng hiện trước va chạm S/M): 0.45 s0.45 swindup_p_lxl (L/XL)windup_p_lxl (L/XL): 0.6 s0.6 schain_gap (khe chuỗi Y (21 tick))chain_gap (khe chuỗi Y (21 tick)): 0.35 s0.35 sproj_p_lead (đường tím trước khi đạ…proj_p_lead (đường tím trước khi đạn P tới (INV-13)): 0.45 s0.45 sfeint_max (nhịp lừa ASH thêm windup…feint_max (nhịp lừa ASH thêm windup ≤ 0.35 s): 0.35 s0.35 s
NúmGiá trịĐơn vịGhi chú
windup_y_s0.3sS; M/L/XL 0.45 (INV-03)
windup_y_mlxl0.45sM/L/XL
windup_p_s_m0.45sP vùng hiện trước va chạm S/M
windup_p_lxl0.6sL/XL
chain_gap0.35skhe chuỗi Y (21 tick)
proj_p_lead0.45sđường tím trước khi đạn P tới (INV-13)
feint_max0.35snhịp lừa ASH thêm windup ≤ 0.35 s
Đòn theo tellĐòn theo tellY: 159 (64%)P: 89 (36%)248đònY — 159 (64%)P — 89 (36%)
Phân bố windup đòn địch theo tellPhân bố windup đòn địch theo tellY (ĐÁP được)P (không chặn)020406080< 0.3s< 0.3s · Y (ĐÁP được): 0< 0.3s · P (không chặn): 000.3–0.45s0.3–0.45s · Y (ĐÁP được): 20200.3–0.45s · P (không chặn): 0200.45–0.6s0.45–0.6s · Y (ĐÁP được): 90900.45–0.6s · P (không chặn): 55950.6–0.8s0.6–0.8s · Y (ĐÁP được): 43430.6–0.8s · P (không chặn): 2020630.8–1s0.8–1s · Y (ĐÁP được): 660.8–1s · P (không chặn): 3939451–1.5s1–1.5s · Y (ĐÁP được): 01–1.5s · P (không chặn): 232323≥ 1.5s≥ 1.5s · Y (ĐÁP được): 0≥ 1.5s · P (không chặn): 22

1.1 Ba lớp tell

LớpDùng choHình (world-space)ÂmTrả lời
Y vàng #ffd84ađòn rời: 1 cú đánh hoặc 1 viên đạn, đúng 1 frame va chạmglint 1 ở mũi vũ khí/đầu đạn khi windup bắt đầu · glint 2 đúng 7 tick (0.12 s) trước va chạm · viền trắng #ffffff 1 px quanh thân địch bật ≥ 2 frame từ glint 2 · pose windup giữ ≥ 3 frame, khác pose điEnemyWindupStart tellClass=Y (frame đầu windup = glint 1); lịch PlayS… SFX_SHARED_tell_y_glint1 (glint 1, lớp nhẹ) + EnemyWindupStart tellClass=Y → lịch PlayScheduled đỉnh transient đúng… SFX_SHARED_tell_y_tinh "tinh" (glint 2, lớp chính) — id theo doc 32 §2ĐÁP · verb giữ (nếu hình che) · Lướt
P tím #b14cffvùng sàn, nổ, lao/nhảy nghiền, đạn không đỡvùng sàn đúng hình hitbox: viền 2 px hiện ngay kích thước cuối từ tick 0 (độ mờ 60% → 100%), fill 25% lớn dần từ tâm, đầy đúng tick va chạm · hào quang tím 2 px quanh thân · ! tím 7×9 px trên đầu (lớp Prioritize)EnemyWindupStart tellClass=P (cả hazard/Khăn Tang/mutator P); chọn bả… SFX_SHARED_tell_p_swell ù trầm, cao độ lên dần tới va chạm + EnemyImpact tellClass=P (frame va chạm tím) SFX_SHARED_tell_p_impact đúng frame va chạm — id theo doc 32 §2chỉ Lướt / ra khỏi vùng
N vùng đọng #e8e4f0sát thương sàn kéo dài, bẫy, luồng phun, vùng lưu lạiviền chấm 2 px + fill chấm thưa 15%; hiện mờ dần 0.30 s KHÔNG gây sát thương trong lúc hiện; không glint, không gạch chéokhông SFX tell (chỉ âm môi trường)đi ra / Lướt; ≤ 4 sát thương mỗi tick 0.5 s
  • Đòn nhiều nhịp Y (Y×n): mỗi nhịp có glint 1 ở đầu khe + glint 2 + SFX riêng; khe giữa 2 nhịp ≥ 0.35 s (21 tick).
  • P còn lưu sau va chạm (lửa, vũng) → đổi sang hình N ngay tick hết active.
  • Ấn spawn #e8e4f0 (INV-14): vòng LIỀN + xoáy tro, không bao giờ là chấm → không lẫn với N.
  • Boss: cùng màu, cùng luật; glint ×1.5 (7×7 px thay 5×5 px); SFX thêm lớp trầm "boss" nhưng giữ "tinh"/"ù" làm lớp chính.
  • Bảo vệ tell: dải hue 32–62° (S ≥ 45%) và 260–290° chỉ cho tell (INV-01a); FX hero trong r24 quanh viền P giảm 30% độ mờ; mây/sương/bóng tối vẽ dưới lớp tell (INV-18); Ẩn Ảnh EM07 vẫn vẽ tell/viền/glint/vòng sàn 100%.

1.2 Thời lượng tối thiểu

KhoáS (thường)M (Tinh Anh)L (mini)XL (boss)
Windup Y0.30 s · 18 tick0.45 · 270.45 · 270.45 · 27
Windup P (vùng hiện trước va chạm)0.45 · 270.45 · 27 (EM06 Gai Ngược = 0.45)0.60 · 36 [ASSUMED]0.60 · 36 [ASSUMED]
Khe chuỗi Y0.35 · 210.35 · 210.35 · 210.35 · 21
Đạn P: đường tím trên sàn trước khi tới0.45 · 270.450.450.45 (INV-13)
Glint 1 hiển thị4 frame444
Glint 2 → va chạm7 tick777
Báo đổi thế Tro Nhớ trước khi hiệu lực—1.0 s1.0 s1.0 s (INV-15)
  • MRN12 (−20% thời gian hồi sau đòn), Ấn, mutator, Tro Nhớ KHÔNG giảm các số trên (INV-03, INV-15). Nhịp lừa ASH: windup thêm ≤ 0.35 s, glint 2 vẫn đúng 7 tick trước va chạm.

1.3 Loại đạn

Loại (proj_cat)TellHìnhĐÁPVerb giữLướtĐánh hero
Y_REFLECT (đạn nhẹ: cầu, tên, móc, dao)Ylõi tối #2e464c, viền 1 px #9ff3ff (alt LUT ramp #e8e4f0 khi chơi H10/H12, 30 §3.5), vành #ffd84a nháy 8 Hz suốt đường bay (runtime, không nướng vào sheet; 31 §10.2), bóng sàn; KHÔNG tâm trắng (INV-01c); ≤ 7 tick tới hero (dự đoán quét) → vòng trắng 2 frametrả lời; kết quả theo hero (bảng §3: phản / huỷ / bắt / cắt / quăng ngược)verb chặn đạn (H01 Thủ, H02 tường, H05 Quỹ Đạo, H09 Lưới Xu) dập tắtxuyên quakhông phá (trừ cờ destructible)
Y_HEAVY (vật nặng: đá lăn, đe, thùng, quan tài)Ysprite vật + glint vàng + viền trắng như đòn cận chiếntrả lời: dừng/vỡ vật, KHÔNG bao giờ phản ngượctường H02 chặn; verb khác không chặnxuyên quakhông phá
P (đạn không đỡ)Plõi rỗng + đuôi ! tím; đường/vòng tím trên sàn ≥ 0.45 s trước khi tới; ≤ 140 px/s; ≤ 2 viên P trên màn (INV-13)không tác dụngxuyên qua mọi tường/lưới/vòngchỉ Lướt / tránhkhông phá
cờ destructible (gắn thêm cho Y, vd cầu độc EN_B2_03)Ynhư Y_REFLECT (lõi tối #2e464c, vành #ffd84a 8 Hz) + vỏ nứt: viền 1 px #9ff3ff nét đứt (alt LUT #e8e4f0 khi H10/H12)như Ynhư Ynhư Y1 cú hero bất kỳ phá (HP 1)
  • Khuôn phản đạn chung (mọi kết quả "phản"): đạn đổi sang màu slot hero + lõi #fff6f0 (INV-01a); tốc ×1.6; sát thương = 3 × sát thương gốc của đạn × (1 + DMG_INC), PROJ, được chí mạng; bẻ hướng 540°/s về kẻ bắn nếu còn sống trong 300 px, nếu không về quái gần nhất trong nón 120° phía trước hero; xuyên 3. Kẻ bắn trúng đạn của chính nó: S chết; M/L/XL −40 Thế + khựng anim 0.6 s (canon demo, không phải Choáng STS_STUN).
  • Đạn địch tối đa 12 trên màn; mỗi loạt nhắm hero ăn 1 token đạn (≤ 3, INV-08).

4Hợp đồng phòng thủ chung (mọi verb của mọi hero phải thoả)

📊 Núm phòng thủ (tuning.defense)

61 dòng
NúmGiá trịĐơn vịGhi chú
windup_y_s0.3sS; M/L/XL 0.45 (INV-03)
windup_y_mlxl0.45sM/L/XL
windup_p_s_m0.45sP vùng hiện trước va chạm S/M
windup_p_lxl0.6sL/XL
chain_gap0.35skhe chuỗi Y (21 tick)
proj_p_lead0.45sđường tím trước khi đạn P tới (INV-13)
glint1_frames4frameglint 1 hiển thị
glint2_ticks7tickglint 2 → va chạm (0.12 s)
glint_px5pxboss 7×7 (×1.5)
glint_px_boss7px—
ash_telegraph1sbáo đổi thế Tro Nhớ (INV-15)
feint_max0.35snhịp lừa ASH thêm windup ≤ 0.35 s
tell_y_hex#ffd84ahexINV-02
tell_p_hex#b14cffhexINV-02
tell_n_hex#e8e4f0hexvùng đọng N / ấn spawn
tell_p_fill_pct25%fill P lớn dần từ tâm
tell_n_fill_pct15%fill chấm N
tell_n_fade_in0.3skhông sát thương lúc hiện
tell_hero_fx_fade_pct30%FX hero trong r24 quanh viền P giảm 30% độ mờ
proj_p_speed_max140px/sINV-13
proj_p_onscreen_max2viênINV-13
proj_glint_hz8Hzglint Y_REFLECT nhấp nháy
reflect_speed_mult1.6×khuôn phản đạn chung
reflect_dmg_mult3×3 × sát thương gốc × (1 + DMG_INC)
reflect_homing540°/sbẻ hướng về kẻ bắn
reflect_seek_range300px—
reflect_seek_cone120°nếu kẻ bắn chết
reflect_pierce3mục tiêu—
reflect_self_hit_poise40điểmkẻ bắn trúng đạn của mình: M/L/XL −40 Thế + khựng anim 0.6 s
reflect_self_hit_stagger0.6s—
answer_window_min_ticks9tickkẹp W 9–15 tick
answer_window_max_ticks15tick—
answer_refresh0.1sthành công: phần còn lại W = max(còn lại, 6 tick)
answer_whiff_lock0.3/0.45/0.6sMRN07 bậc 0/1/2 (18/27/36 tick)
answer_move_mult0.5×trong W đi ×0.5
answer_res_floor_mrn0720%MRN07 bậc 2: không cộng tài nguyên khi < 20%
answer_bonus_dmg_cap2× POWERthưởng riêng ≤ 2.0 × POWER/mục tiêu
answer_stun_s1sĐÁP lên S: STS_STUN 1.0 s + đẩy 30 px
answer_knock_s30px—
answer_shield_stun1.5squái khiên vỡ + STUN 1.5 s
answer_last_chain_stagger1sTinh Anh khựng anim nhịp cuối chuỗi
answer_ult_gain4Dư ÂmĐÁP +4
perfect_dodge_ult_gain4Dư ÂmNé Hoàn Hảo +4
answer_hitstop0.08s—
poise_cost_mult1× sát thương chặnverb giữ tốn Thế
poise_min_cost6điểm/đòn—
guard_break_time0.9sVỡ Thế hero 54 tick, không huỷ được
guard_break_dmg_mult1.5×—
dash_time0.14s9 tick
dash_dist_min72pxtheo hero 72–96
dash_dist_max96pxINV-12
dash_iframes0.2s12 tick (INV-12)
perfect_dodge_lead0.15sLướt bắt đầu ≤ 9 tick trước va chạm
perfect_dodge_cd1s≤ 1 lần/1.0 s
perfect_dodge_refund1lượt—
riposte_window1scửa sổ Phản 60 tick
counter_dmg_budget180sát thươngPOWER 10, không build; lệch ≤ ±10% (H01 90 luôn chí mạng ×2)
counter_area_r_min40pxvùng ≥ r40
counter_startup_max0.1s—
riposte_lunge80pxlao ≤ 80 px
riposte_lunge_time0.1s—

2.1 Hợp đồng ĐÁP (INV-11)

KhoáLuật
Nútchạm RB/RMB; cửa sổ mở ở tick bấm (tick 0)
Cửa sổ WW = ceil((answer_window_hero + mercy + edge_relic) × 60), kẹp 9–15 tick (0.14–0.24 s)
Hit-testmọi đòn Y có frame active chạm hurtbox hero (CIRCLE r7 / hộp màn với đạn) trong W → Answered; 360°, không xét hướng mặt; anim tự xoay về mối đe doạ Y gần nhất
Hình của verbchỉ là nơi HIỆU ỨNG thưởng rơi xuống (nón, đường, xung tại kẻ đánh…); không thu hẹp phần bảo vệ 360°
Nhiều đòn1 cửa sổ trả lời mọi đòn Y trong nó; mỗi đòn nhận kết quả riêng
Thành côngphần còn lại của W = max(còn lại, 6 tick); không khoá sau thành công (ĐÁP lại ngay được)
HụtW đóng mà 0 Answered → khoá ĐÁP 18 tick (MRN07: 27 / 36); trong khoá, giữ RB chỉ ra verb giữ
Không bị khoá bởitài nguyên, thời gian hồi chiêu, trạng thái hero, Câm Câm STS_MUTE — TRỪ Vỡ Thế, 7 tick đầu Hurt, khống chế tím boss, cửa sổ bất tử khoá (10-Combat-Core §7.3)
Di chuyểntrong W đi ×0.5; Lướt huỷ ĐÁP bất kỳ tick nào
Tài nguyên 0ĐÁP vẫn trung hoà đòn + hiệu ứng chung §2.2; bỏ "thưởng riêng" cần tài nguyên (bảng §3, cột *); MRN07 bậc 2: không cộng tài nguyên khi tài nguyên < 20%
Giữ → verb giữcòn giữ nút ở tick W → verb giữ bắt đầu (ngưỡng giữ = W); thả trước W → không gì thêm
Sát thương của bản thân ĐÁP0; hiệu ứng thưởng riêng của hero ≤ 2.0 × POWER sát thương/mục tiêu (kích nổ tài nguyên như Vỡ Âm H03 tính theo luật tài nguyên của hero)

2.2 Kết quả ĐÁP thành công (chung, trước thưởng riêng)

Mục tiêuĐòn cận chiến YĐạn Y
Kẻ địch SChoáng STS_STUN 1.0 s + đẩy 30 px; quái khiên (EN_B1_04, EN_B4_01, EM09): vỡ khiên + Choáng STS_STUN 1.5 sđạn trung hoà theo hero (§3)
Tinh Anh M−45 Thế (hoặc số hero Bible §5.1); khựng anim 1.0 s nếu là nhịp cuối chuỗi; chain_answer trọn chuỗi → hiệu ứng chuỗi (10-Combat-Core §4.1)như trên
Mini L / Boss XL−40 / −35 Thế (hoặc số hero); chain_answer = BROKEN trọn chuỗi → Vỡ Thế ngaynhư trên
Herohitstop 0.08 s; World ×0.20 trong 0.25 s (chỉ đạn: 0.12 s); Dư Âm +4; tài nguyên theo §3; callout với M+; SFX_<Hxx>_answer (to nhất trong mix); VFX_<Hxx>_answer màu slotnhư trên, không mở Phản

2.3 Thất bại & Thế hero

  • Đòn Y trúng (không ĐÁP, không bị che): sát thương đủ + Hurt 0.22 s + i-frame 0.60 s; tài nguyên mất theo luật hero (H01 −25 Dòng Chảy).
  • Đòn P trúng khi hero đang ở verb giữ che thân / đứng chịu đòn tại chỗ (H01 Thủ, H05 Quỹ Đạo, H06 Hấp Nhiệt, H08 Tì Báng Nạp, H11 Cắm Xẻng) → sát thương đủ (không giảm) + Vỡ Thế 0.9 s. Verb đặt vật thể/di chuyển (H02 tường, H04, H07, H09, H10, H12) → P trúng thường, không Vỡ Thế.
  • Thế hero (POISE_MAX 100): verb giữ chặn/giảm sát thương tốn Thế = phần sát thương bị chặn/giảm × 1.0 (tối thiểu 6/đòn); hồi 40/s sau 0.5 s không giữ verb và không chịu đòn. Thế = 0 → Vỡ Thế: choáng 0.9 s (54 tick), KHÔNG huỷ được bằng Lướt/ĐÁP (INV-06), nhận ×1.5 sát thương, xong → Thế đầy. HUD: thanh bạc dưới HP khi < 100.

2.4 Hợp đồng verb giữ (1 verb riêng/hero, Bible #70)

KhoáLuật
Bắt đầugiữ RB/RMB tới tick W (§2.1); Thương Xót "giữ/bật": giữ tới W rồi thả = verb chốt bật, chạm lại = tắt + mở 1 ĐÁP
HuỷLướt bất kỳ tick; thả nút (0 tick hồi) rồi chạm = ĐÁP mới
Không bao giờtrả lời P; chặn N tick (trừ verb ghi rõ giảm sát thương "mọi hướng" — chỉ giảm, không chặn); làm hero bất tử, trừ canon H03 Nhảy Sào 0.35 s
Chặn mặt trướcCHỈ H01 Thủ (Bible §5)
TốnThế (§2.3) cho verb chặn/giảm sát thương, hoặc giá riêng ghi ở §3
Trạng thái chặn ĐÁP/Lướtphải bất tử (INV-11); còn lại FIRM/HYPER theo 10-Combat-Core §7.2

2.5 Hợp đồng Lướt & Né Hoàn Hảo (INV-12, mọi hero)

KhoáGiá trị
Nút · hướngA/Space · hướng cần trái/WASD, không có → hướng ngắm
Thời lượng · cự ly0.14 s (9 tick) · theo hero 72–96 px (§3)
i-frame0.20 s (12 tick) từ frame 0 — vượt thời lượng Lướt 3 tick
Lượt · nạp2 lượt · 0.70 s/lượt, nạp tuần tự; hậu Lướt 3 tick; Lướt 2 sau 6 tick
Va chạmxuyên mọi thân địch; không xuyên tường/vật cao
Điều kiệnkhông có (dùng được mọi trạng thái trừ Vỡ Thế, khống chế tím boss, cửa sổ bất tử khoá, chết)
Né Hoàn Hảođòn Y/P/đạn lẽ ra trúng trong i-frame VÀ Lướt bắt đầu ≤ 9 tick (0.15 s) trước tick va chạm → World ×0.25 trong 0.35 s (21 tick), hero tốc thường; hoàn 1 lượt; Dư Âm +4; tài nguyên theo §3; dư ảnh slot + trắng ở chỗ cũ; callout "NÉ HOÀN HẢO"; ≤ 1 lần/1.0 s
Tick va chạm của Ptick đầu vùng gây sát thương; vòng lan (BS_B1_A02) = tick vòng chạm hurtbox hero
Nkhông tạo Né Hoàn Hảo (không có tick va chạm)
Khác giữa heroCHỈ anim + cự ly (INV-12); mọi số khác chung

2.6 Khuôn thưởng Phản (COUNTER)

KhoáLuật
MởĐÁP thành công vào đòn cận chiến Y (không mở bằng đạn — phần thưởng đạn là kết quả §3)
Cửa sổ1.0 s (60 tick); HUD: vòng đếm ngược màu slot quanh chân; dấu ✦ màu slot trên mục tiêu (INV-01a)
KíchĐánh (X/LMB) trong cửa sổ → đòn Phản của hero vào mục tiêu ✦ (đã chết → điểm cũ)
Ngân sách sát thươngở POWER 10, không build: tương đương 180 lên mục tiêu chính (H01 canon 90 luôn chí mạng ×2), lệch ≤ ±10% giữa hero; vùng ≥ r40 quanh điểm trúng
Hiệu ứng−30 Thế; shieldbreak; hit_class COUNTER; bất tử từ input tới hết active; startup ≤ 0.10 s; lao ≤ 80 px nếu đòn là cận chiến
Giới hạn1 Phản / lần mở; ĐÁP thành công mới trong lúc mở → làm mới cửa sổ, vẫn 1 Phản
Sở hữudoc hero đặt tên + hình đòn Phản, phải nằm trong khuôn này; Edge/Relic (tag COUNTER) đổi tham số

5Bảng phòng thủ từng hero

Cửa sổ gốc, hình, verb giữ: canon Bible §5.1 / heroes[]. Thưởng riêng, tài nguyên khi ĐÁP/Né Hoàn Hảo ngoài canon = [ASSUMED] lượt đầu; doc hero chỉnh trong ±25% không cần DEC. * = thưởng cần tài nguyên > 0 (bỏ khi tài nguyên 0, INV-11).

3.1 ĐÁP

HeroĐÁP · W (s · tick)Hình hiệu ứngThưởng riêng — cận chiến YKết quả đạn YTài nguyên khi ĐÁPLướt (px) · Né Hoàn Hảo
H01 VarekGạt · 0.16 · 10quanh thân bằng vũ khíchung §2.2 + mở Phản (Riposte canon: lao ≤ 80, 90 luôn chí mạng, AoE 44, −30 Thế, +10 Dòng Chảy)phản ngược (khuôn §1.3)+20 Dòng Chảy (canon)84 · +15 Dòng Chảy (canon)
H02 BodanChặn Nắp · 0.18 · 11nón 120° r48 về mối đe doạDội: M/L/XL −40 Thế (thay số chung); S trong nón đẩy 30 + choáng 1.0đạn đập vào nắp: huỷ; Y_HEAVY dừng tại chỗ+1 Đinh72 (Lăn Vai) · +1 Đinh
H03 HalkaGõ Chuông · 0.16 · 10xung r48 TÂM TẠI kẻ tấn côngxung +1 Vang mọi kẻ trong r48; kẻ đủ 3 Vang → Vỡ Âm (lan dây chuyền r90, Bible §5.2)đạn vỡ; xung r48 đặt tại kẻ bắn nếu ≤ 300 px, nếu không tại điểm đạn+1 Vang (qua xung)90 (vọt sào) · +1 Vang lên kẻ gần nhất r90
H04 SậuKhép Compa · 0.15 · 9đường 64 px tới mối đe doạTước Khí STS_DISARM 2.0 s (đòn Y kế của nó huỷ; L/XL đổi −15 Thế)cắt đôi: 2 nửa bay ±25° thành đạn hero, mỗi nửa 1.5 × sát thương gốc, xuyên 1, không bẻ hướng+1 Mực80 (Bước Phấn) · +1 Mực
H05 OskaQuay Chắn · 0.16 · 10; đe đang ném → xích rỗng 0.14 · 9vòng r40 quanh thânS trong r40 đẩy 40 pxđạn bị quất văng theo tiếp tuyến thành đạn hero ×2 sát thương, không bẻ hướng+15 Đà* (xích rỗng: +0)88 (Quăng Mình) · +15 Đà
H06 RuvanBắt Đòn · 0.15 · 9tóm 1 mục tiêu tiếp xúc (gần nhất; đòn khác trong W vẫn được trung hoà)theo mass_class: S ném bowling 120 px (quái bị ném = AREA lăn, 1.5 × POWER mỗi quái trên đường) · M ném, −35 Thế · L Bẻ Đòn −25 Thế · XL Bẻ Đòn −35 Thếtóm đạn → bóp nát+10 Nhiệt (canon với đạn; cận chiến cũng +10)76 (Lộn) · +8 Nhiệt
H07 VeyraBắn Ngắt · 0.16 · 10đường bắn tới kẻ tấn côngmũi tên hông trúng kẻ đánh: 1.0 × POWER, đẩy 20bắn rơi đạn; mũi tên bay tiếp tới kẻ bắn (≤ 300 px) 1.5 × POWER+20 Hơi80 (Lách) · +15 Hơi
H08 DovNổ Chặn · 0.15 · 9nón 90° r48nổ tiêu 1 viên trong ổ đang lắp → hiệu ứng viên đó trong nón (Đinh 2.0 × POWER · Muối Choáng STS_STUN S 0.8 / M 0.4 · Ma Trơi lửa sàn 3 s)*; ổ rỗng: chỉ trung hoàđạn bị thổi tan (huỷ) + hiệu ứng viên*−1 viên (đổi lấy hiệu ứng); ổ rỗng 076 (Lăn Ngang) · nạp 1 viên vào ổ trống (loại vừa bắn)
H09 KessaQuăng Vòng Xu · 0.16 · 10dây thẳng tới kẻ tấn cônggiật ngược: S bị quấn (+1 Vòng, vào bó); M −25 Thế (canon, thay −45); L/XL số chungđạn quăng ngược theo dây: ×3 sát thương, xuyên 3, không bẻ hướng+1 Vòng84 (Đu Dây) · cú quăng kế bắt đầu với 1 Vòng sẵn
H10 IngraMàn Khói · 0.18 · 11khói phụt r40 TẠI kẻ tấn côngđám phụt = 1 vùng Khói 8 s (nguyên tố kế trong vòng xoay lửa → ngạt → tay hồn; đầy 5 → thay vùng cũ nhất)đạn tan; đám khói đặt tại kẻ bắn nếu ≤ 300 px, nếu không tại điểm đạn+1 Khói (vùng đó)80 (Bước Khói) · +1 Khói tại điểm bắt đầu Lướt
H11 WennaHất Đất · 0.15 · 9nón 100° r56kẻ cận chiến trong nón Mù STS_BLIND 1.0 s (canon; M ×0.5; L/XL −15 Thế)cục đất chặn: huỷ đạn+1 Đất80 (Chui Đất) · +1 Đất
H12 AmbrinThổi Dội · 0.16 · 10; đúng phách ±0.12 s: 0.20 · 12sóng âm r44 quanh thânS trong r44 đẩy 30đạn dội ngược theo hướng tâm → ngoài, ×2 sát thương, không bẻ hướng+2 Nhịp đúng phách / +1 lệch phách (không chia đôi)80 (Bước Đưa Tang) · +1 Nhịp
  • Thương Xót cộng +0.03/+0.06 vào mọi W (H12 cộng sau phách: tối đa 0.26 → kẹp 0.24 s = 15 tick). Đỉnh Hơi H07 +0.04 là cửa sổ tài nguyên, không phải ĐÁP.
  • Dư Âm: ĐÁP +4, Né Hoàn Hảo +4 với mọi hero (Bible §5.1), cộng thêm nạp riêng ở Bible §5.1.

3.2 Verb giữ

HeroVerb giữCơ chế (canon)Giá / giới hạnGiápP khi đang giữ
H01Thủchặn Y trước 180° (đạn bị dập tắt), đi ×0.35, mặt theo ngắmThế = sát thương × 1.0 (≥ 6); đẩy lùi 6 px, hitstop 0.03 sFIRM trướcVỡ Thế
H02Dựng Quancắm nắp thành tường LINE 64 × 12 px tại chỗ: HP 80, chặn đạn Y + thân quái; Bodan đi ×0.8tồn 3 s kể từ lúc cắm (thả nút không gỡ); chạm ĐÁP = rút nắp (tường mất ngay); hồi 1.0 s sau khi tường mất [ASSUMED]NONEtường không chặn P; Bodan không giảm → không Vỡ Thế
H03Nhảy Sàocung vọt bất tử 0.35 s, đáp sau 60 px theo hướng nhập, +1 Vang lên kẻ bị vượthồi 1.2 sINVULN 0.35 sné được (bất tử), không tính Né Hoàn Hảo
H04Kẻ Vòngvạch vòng phấn r56 quanh thân (vẽ 0.5 s, giữ ≤ 3 s, đi ×0.5): quái cận chiến vượt vạch Choáng STS_STUN 0.3 s, đạn Y qua vạch chậm 50%hồi 1.0 s [ASSUMED]; vẽ huỷ đượcNONEkhông giảm → trúng thường
H05Quỹ Đạovòng đe r56 di động (đi ×0.6) chặn đạn Y chạm vòng, đẩy quái SThế = sát thương đạn bị chặn × 1.0 (≥ 6)NONEVỡ Thế
H06Hấp Nhiệtđứng yên, KHÔNG giảm sát thương; 60% sát thương Y/N → HP xám (3 s), +8 Nhiệt/đòn (BRACE, GREY_HP, DEC-2026-11-07-10)Thế = phần thành HP xám × 1.0 (≥ 6)HYPERVỡ Thế
H07Lùi Lắplùi 40 px + tự kéo 0.35 s (đạt mốc kéo 1)hồi 0.8 s [ASSUMED]; kéo tốn Hơi như thường (30/s)NONEkhông giảm → trúng thường
H08Tì Báng Nạpnhận đủ sát thương, miễn đẩy trước 120°, nạp 1 viên/0.4 s (DEC-2026-11-07-10)không tốn ThếHYPER trước 120°Vỡ Thế
H09Lưới Xuthả lưới r48 tại chỗ 4 s: quái bước vào Trói STS_BIND 0.6 s, đạn Y qua lưới bị chặn1 lưới tồn tại; thả lưới mới thay lưới cũNONElưới không chặn P; không giảm → trúng thường
H10Hoá Khóitan thành khói, không bị nhắm (quái không bắt đầu windup Y nhắm Ingra; đòn Y đang chạy bỏ qua Ingra), chỉ đi trong/giữa vùng Khói, đi ×1.3 [ASSUMED]tốn 1 Khói/s (vùng cũ nhất); ngoài vùng không bật / tự thoátNONEP/N trúng thường (không bất tử)
H11Cắm Xẻngbất động, không bị đẩy/kéo; nhận đủ; đòn nhận đội hố nông r16 dưới kẻ tấn công + 1 Đất; +1 Đất/0.5 s giữ (DEC-2026-11-07-10)không tốn ThếHYPERVỡ Thế
H12Nốt Ngângiữ ≤ 6 đạn Y đứng yên, phách kế phóng thành nốt ×1.0; không chậm %; Nhịp không giảm, khoá phách; không chặn cận chiến (DEC-2026-11-07-10)không tốn Thế (không chặn/giảm)NONEtrúng thường
  • Hoá Khói H10 và Nhảy Sào H03 huỷ được bằng Lướt bất kỳ tick (Nhảy Sào: chỉ sau khi đáp, vì đang bất tử khoá).

6Trợ năng

4.1 Thương Xót (khoá leaderboard + thành tựu Độ Tang; Bible §4.3)

Tuỳ chọnGiá trịLuật
Cửa sổ ĐÁP+0.03 / +0.06 scộng vào W, kẹp 15 tick
Sát thương nhận−25 / −50 / −75%bước 6 pipeline 10-Combat-Core §3.3
Tốc game70–100% (bước 5%)nhân MỌI đồng hồ gồm máy nhịp H12 (BPM × tỉ lệ)
Phòng Thủ Tự Động 50%tự ĐÁP 1/2 đòn Ytất định: bộ đếm luân phiên mỗi đòn Y lẽ ra trúng hero (chưa ĐÁP/che/Lướt), đòn lẻ được tự ĐÁP; chỉ hiệu ứng chung §2.2, không Dư Âm, không tài nguyên, không Phản
Verb giữgiữ / bật§2.4
Nhịp H12 · Đỉnh Hơi H07±0.16 s · +0.04 scanon
Tự ngắmbật10-Combat-Core §9
Tro Nhớ0INV-15
Hiệu chỉnh trễ−0.10…+0.10 s (bước 0.01)dời mốc so input với cửa sổ ĐÁP, phách H12, Đỉnh Hơi

4.2 Trợ năng (không khoá gì; meta.accessibility)

Tuỳ chọnHiệu ứng
Tell mù màuY: glint thành hình thoi ◇ + nốt cao hơn · P: thêm gạch chéo + ▲ + ! · N: chấm (sẵn) — hình khác nhau, không chỉ màu
Âm tell theo vị trí"tinh"/"ù" pan 3D theo hướng nguồn, âm lượng theo khoảng cách; SFX tell không bao giờ bị cắt bởi trần voice
Phụ đề tell"[tinh · trái]", "[ù · sau lưng]", "[ĐÁP]" ở đáy màn, 1 dòng, ≤ 3 dòng chồng
Chỉ hình (người nghe kém)mọi SFX tell nhân đôi bằng hình: cung sáng 8 px quanh vòng chân hero hướng về nguồn Y ở glint 2 (vàng ◇) / nguồn P ở đầu windup (tím ▲)
Âm tăng cường (người nhìn kém)"tinh" ở glint 2 to +6 dB, cao độ theo khoảng cách; "ù" P to dần theo độ gần vùng; âm "rì" khi bước vào N; tăng tương phản sàn/tell 20%
Mũi tên ngoài mànmọi đòn Y/P nhắm hero có nguồn ngoài vùng an toàn hoặc cách mép ≤ 32 px: mũi tên mép màn theo lớp tell ≥ 0.45 s trước va chạm
Giảm chớpviền trắng nháy → viền trắng liền 2 px; tắt chớp màn khi làm chậm
Rung tay cầmY: 40 ms cao ở glint 2 · P: 300 ms trầm tăng dần · Vỡ Thế: 2 × 80 ms; cường độ 0–100%
Khácchữ 100–150% · viền hero 1–3 px · giảm hạt FX · preset FX Deck 70% · remap toàn bộ · chế độ 1 tay
  • Sân Tập (Sân Tập ST_YARD): dummy tell Y/P/N từng hạng, bài tập ĐÁP, frame data, replay 10 s — mọi tuỳ chọn trên xem trước được ở đây.

7Luật công bằng (mọi hạng, không Khăn Tang/Ấn/mutator/Tro Nhớ nào phá)

5.1 Token & mật độ (INV-08)

KhoáGiới hạn
Windup cận chiến nhắm hero (quái S)≤ 4 cùng lúc; ≤ 2 khi có M/L/XL đang windup; 0 windup mới trong 0.6 s cuối windup P của boss
Loạt đạn nhắm hero≤ 3 (gồm triệu hồi boss); ≤ 12 đạn địch trên màn
P sàn từ quái thường≤ 3 cùng lúc
P tổng (gồm hazard, Ấn, mutator, Khăn Tang)≤ 5; quái không có token P → dùng đòn Y hoặc chờ
Boss đang windup Pkhông tell P nào khác được bắt đầu; đòn chữ ký boss miễn token
M/L/XLkhông giữ token cận chiến/đạn của quái thường; EM16 Thề Thù chiếm 1/4 token (canon)
Không tokenđi vòng 38–70 px, tiếp tuyến, 30% tốc
Cấp tokenưu tiên quái trên màn và trước mặt hero
Vùng N sống (gồm vũng xác, ô cháy, vệt EM11, P→N chuyển đổi, Khăn Tang)≤ 16; vùng thứ 17 → vùng cũ nhất mờ tắt 0.3 s
Vũng xác MRN15chỉ 1/4 xác quái S sinh vũng (đếm tất định theo thứ tự chết); ≤ 8 vũng sống, vượt → vũng cũ nhất mờ 0.3 s

5.2 Đòn không đỡ đồng thời

  • ≤ 5 vùng P + ≤ 2 đạn P trên màn (INV-08, INV-13).
  • Lối thoát: tổng diện tích P (đang windup) trong đĩa r120 quanh hero ≤ 70% đĩa; vùng P mới vượt → trì 0.3 s; trì 2 lần vẫn vượt → huỷ đòn đó (quái về hồi chiêu).
  • Vùng P mới trong 80 px của vùng P khác đã đầy > 60% → trì 0.3 s (demo).
  • ≤ 2 va chạm P vào vị trí hero trong cùng 0.30 s; cái thứ 3 trì 0.3 s.
  • Phủ N: tổng diện tích vùng N trong đĩa r120 quanh hero ≤ 35% đĩa; vùng N sinh thêm khi đã vượt → chỉ là hình (cosmetic, α 0.5, không làm chậm/không sát thương), giữ vòng chân hero + FX sàn hero đọc được và lối "đi ra" luôn tồn tại. Ví dụ: đĩa r120 = 45 239 px²; 6 vũng r30 (2 827 px² mỗi vũng = 16 965 px², 37.5%) → vũng thứ 6 cosmetic.

5.3 Ngoài màn

  • Quái ngoài vùng an toàn gameplay (+16 px) không bắt đầu windup Y/P nhắm hero; kẻ bắn ngoài màn không bắn.
  • Đòn boss khởi phát ngoài màn (lao, bổ nhào): mũi tên mép màn ≥ 0.45 s + vùng P hiện đủ phần trong vùng an toàn trước va chạm.
  • Vùng P cắt mép màn: phần trong vùng an toàn phải chứa mọi điểm hero có thể đứng trong 0.45 s tới.

5.4 Trung thực hitbox

  • Hitbox đòn địch = hình VFX/vùng ±2 px; tầm Y cận chiến ≤ tầm vũ khí nhìn thấy + 8 px; active Y cận chiến ≤ 0.12 s (8 tick), trừ đòn lao (active suốt quãng lao, có ghi lunge).
  • Y = đúng 1 va chạm/nhịp; đòn nhiều va chạm phải là Y×n (mỗi nhịp glint riêng) hoặc P/N.
  • Hurtbox hero không phóng to theo sprite (10-Combat-Core §1.4).

5.5 Khác

  • Spawn (INV-14): ấn tro 0.6 s không sát thương, ngoài r90, không windup 0.8 s; triệu hồi boss/Tinh Anh = xoáy trung tính 1.0 s.
  • Nghỉ 6 s sau khi Tinh Anh chết trước Tinh Anh kế (demo); sân boss/mini rỉ ≥ 6 quái S/20 s ngoài r90, không trong lúc boss windup P.
  • Tro Nhớ (INV-15): không đổi tell/windup/sát thương/hitbox/token; ≥ 50% đòn mỗi M/L/XL là Y (ĐÁP được); báo ≥ 1.0 s; nhịp lừa ≤ 1/chuỗi.
  • CI fairness_lint trên enemy_attacks.csv: windup ≥ sàn theo hạng (§1.2) · tell ∈ {Y, P, N} · Y = 1 va chạm · đạn P ≤ 140 px/s · khe chuỗi ≥ 21 tick · có adaptive_source · ≥ 50% đòn Y mỗi M/L/XL. Trượt = chặn merge. Bộ đếm runtime (build debug + soak bot, trượt = bug chặn release): n_zones_live ≤ 16 · mrn15_puddles_live ≤ 8 · n_cover_r120 ≤ 0.35 (vùng N có hiệu lực; cosmetic không tính) · p_zones_live ≤ 5 · p_proj_live ≤ 2.

8Quy tắc cho dev/AI

  • Tell là dữ liệu runtime (glint, vùng, !, SFX) sinh từ field tell + windup của đòn; anim không nướng tell.
  • Mỗi hero đúng 1 verb ĐÁP + 1 verb giữ; không hero nào ngoài H01 chặn mặt trước; không verb ĐÁP nào yêu cầu tài nguyên để trung hoà đòn.
  • ĐÁP hit-test luôn 360° trên hurtbox hero; hình của verb chỉ là nơi thưởng rơi.
  • Verb giữ không bao giờ trả lời P; P trúng khi giữ verb che thân = Vỡ Thế.
  • Lướt và Né Hoàn Hảo giống hệt nhau giữa hero trừ anim + cự ly.
  • Đòn Phản mới phải nằm trong khuôn §2.6 (180 ±10% ở POWER 10).
  • Không màu tell (hue 32–62°, 260–290°) trên FX hero, thân địch, UI khung.
  • Mọi đòn địch mới chạy fairness_lint trước merge.

9Quyết định đã chốt

QQuyết địnhLý do
Q1 Windup P tối thiểu2026-11-07 — vùng P hiện ≥ 0.45 s (S, M), ≥ 0.60 s (L, XL) [ASSUMED]; chặt hơn INV-03, không phávùng sàn cần thời gian đọc dài hơn glint; EM06 0.45 s vẫn hợp lệ
Q2 Kẹp cửa sổ ĐÁP9–15 tick (0.14–0.24 s)sàn INV-11; trần giữ P3 "chính xác" khi chồng Thương Xót + Edge
Q3 Ngưỡng giữ= W của hero1 nút, chạm/giữ không trễ thêm (Bible #14)
Q4 Vỡ Thế khi Pchỉ verb giữ che thân (H01, H05, H06, H08, H11)verb đặt vật/di chuyển không hứa bảo vệ thân
Q5 Y_HEAVYkhông bao giờ phản ngượcvật nặng phản = khó đọc, phá cân bằng
Q6 Khuôn Phản180 tương đương ±10% ở POWER 10, −30 Thế, bất tửgiữ canon Riposte H01 làm chuẩn cho 12 hero
Q7 Phòng Thủ Tự Độngluân phiên tất định, không thưởngcông bằng, đoán được, không thay kỹ năng
Q8 Vùng Nhiện mờ 0.30 s không sát thươngkhông có sát thương chưa báo (P3)
Q9 Lối thoát P≤ 70% đĩa r120 quanh hero"dày nhưng luôn có lối thoát" (demo)
Q10 Ngoài màncấm windup nhắm hero ngoài vùng an toànP4 dễ đọc, Deck 16:10
Q11 Phản của H01mở chỉ bằng Gạt cận chiến (demo canon); Thủ chặn không mở Phảndemo 03-Defense.md §4; câu "Thủ → Phản đòn" ở Bible §5.1 đọc là luồng chung
Q12 Lõi đạn Y_REFLECT/destructible2026-11-07 — lõi tối #2e464c + viền 1 px #9ff3ff (alt LUT #e8e4f0 khi H10/H12) + vành #ffd84a 8 Hz; bỏ "tâm trắng"INV-01c: FX địch rỗng/lõi tối, lõi trắng = ngôn ngữ hero; khớp 31 §14
Q13 Trần vùng N2026-11-07 — ≤ 16 vùng N sống; phủ N ≤ 35% đĩa r120 (vượt → cosmetic); MRN15 1/4 xác, ≤ 8 vũng≥ 120 kill/phút + MRN15 + ô cháy/vệt phủ kín sàn, che vòng chân hero, mất lối "đi ra"
Q14 Verb giữ H06/H08/H11/H122026-11-07 - theo DEC-2026-11-07-10 (Bible #70): H06 60% sát thương → HP xám 3 s, Thế = phần thành HP xám × 1.0 (≥ 6) · H08 bỏ −50%, giữ miễn đẩy trước 120° + nạp 1/0.4 s, không tốn Thế · H11 bỏ −40%, đòn nhận đội hố nông r16 + 1 Đất · H12 bỏ chậm đạn 50%, giữ ≤ 6 đạn Y, phóng thành nốt ×1.0 đúng pháchchỉ H01 chặn mặt trước; không verb giữ nào khác giảm sát thương phẳng; không lặp cơ chế H04/H12, H06/H08/H11