1Tổng quan
Mục đích: luật chiến đấu dùng chung mọi hero/kẻ địch: mô phỏng tick, hình học hitbox, chỉ số, công thức sát thương, Thế/khựng/đẩy, trạng thái STS_, cảm giác trúng đòn, i-frame, hồi phục HP, ngắm, trần hiệu năng. Phụ thuộc: 00-Design-Bible.md + data/_bible.json (canon: INV-01..INV-18, §5 hero, §5.2 mass_class, §6 tag/trạng thái, §7 kẻ địch, §10.4 hiệu năng/camera); GDD demo GDD/Data/Tuning.csv, HeroMoves.csv, EnemyAttacks.csv (lịch sử, số gốc). Được dùng bởi: 11-Defense-Tells.md, doc hero H01–H12, doc kẻ địch/biome/boss, doc nâng cấp (Edge/Relic/Cộng Hưởng), doc Khăn Tang/mode, doc UI/HUD, doc âm thanh/VFX, code Combat/Hero/Enemy/Status/DamageText.
2Phạm vi & thứ bậc
- Doc này định nghĩa cách tính; số riêng của từng đòn (hệ số, bán kính, windup) nằm ở doc hero/kẻ địch + CSV của chúng. Mâu thuẫn số với Bible → Bible thắng; mâu thuẫn công thức với doc con khác → doc này thắng.
- Mọi số
[ASSUMED]= giá trị lượt đầu, chỉnh bằng playtest qua CSV (combat_core.csv, key = tên field trong doc này), không cần DEC nếu không chạm INV. - Thuật ngữ: ĐÁP = verb chạm RB/RMB · verb giữ = verb giữ RB/RMB riêng hero · Lướt = dash chung · Thế = Poise · Vỡ Thế = Broken/GuardBreak · Y/P/N = tell vàng/tím/vùng đọng (INV-02) · Dư Âm =
ULT_GAUGE.
3Mô phỏng
1.1 Tick & đồng hồ
| Khoá | Giá trị |
|---|---|
| Bước mô phỏng | cố định 1/60 s = 1 tick; tối đa 4 tick bù/khung hiển thị (rơi khung > 4 tick → bỏ, không tua nhanh) |
| Đồng hồ | World (quái, đạn địch, vùng, hazard, FX địch) · Hero (hero, đạn/vùng của hero, máy nhịp H12) · Real (UI, camera, số sát thương, âm thanh) |
| Làm chậm | 1 hệ số/đồng hồ; nhiều nguồn → lấy hệ số NHỎ nhất (mạnh nhất), không nhân dồn; hết nguồn mạnh → về nguồn còn lại |
| Thứ tự trong 1 tick | input + buffer → Hero FSM → hitbox hero (§1.4) → AI + windup quái → đòn quái chạm hero (§7.4) → đạn → vùng/hazard → trạng thái tick (§5.4) → chết/rơi đồ → Tro Nhớ ghi sự kiện → FX/SFX hàng đợi |
| Đổi giây → tick | cửa sổ có lợi cho người chơi (ĐÁP, i-frame, windup, tell, khe chuỗi) = ceil(t × 60 − 0.001); còn lại (hitstop, choáng, hồi chiêu) = round(t × 60) |
| Tick hoá cố định | bảng §1.2; code đọc số tick từ bảng, không tự đổi lúc chạy |
1.2 Bảng tick chuẩn (60 Hz)
| Khoá | s | tick | Nguồn |
|---|---|---|---|
| Buffer input | 0.15 | 9 | INV-07 |
| ĐÁP sàn | 0.14 | 9 | INV-11 |
| ĐÁP gốc 0.15 / 0.16 / 0.18 | 0.15 · 0.16 · 0.18 | 9 · 10 · 11 | §5.1 Bible |
| ĐÁP làm mới khi thành công | 0.10 | 6 | demo |
| Hụt ĐÁP khoá (MRN07 0/1/2) | 0.30 · 0.45 · 0.60 | 18 · 27 · 36 | INV-11, MRN07 |
| i-frame Lướt | 0.20 | 12 | INV-12 |
| Né Hoàn Hảo: Lướt bắt đầu ≤ trước va chạm | 0.15 | 9 | INV-12 |
| Windup tối thiểu S / M·L·XL / khe chuỗi | 0.30 · 0.45 · 0.35 | 18 · 27 · 21 | INV-03 |
| Glint 2 trước va chạm | 0.12 | 7 | INV-02 (7 tick = 0.117 s, sai số 1 tick chấp nhận) |
| Hurt hero / ĐÁP·Lướt mở lại sau | 0.22 · 0.12 | 13 · 7 | demo, INV-11 |
| i-frame sau khi trúng (hero) | 0.60 | 36 | demo |
| Cửa sổ Phản | 1.00 | 60 | demo |
| Vỡ Thế hero | 0.90 | 54 | demo |
1.3 Hệ toạ độ & phép chiếu 3/4
- Mặt sàn (x, z), đơn vị px sàn: x → phải (đông), z → lên màn (bắc, xa camera). Độ cao y ≥ 0 (px). Góc trên mặt sàn: 0° = +x, tăng ngược chiều kim đồng hồ (90° = +z).
- Chiếu (tilt 0.5, pixelfx
view.js):screenX = x − camX·screenY = (z − camZ) × 0.5 + y. Vòng tròn sàn r → elip màn 2r × r. Sắp lớp theo z chân (z nhỏ vẽ trước mặt). - Camera (Bible §10.4, khoá): 16:9 render 480×270 px ×4; 16:10 427×267 ×3. Khung nhìn = 480 px sàn ngang × 540 px sàn sâu. Vùng an toàn gameplay = 427×267 px màn giữa khung (= 427 × 534 px sàn) — mọi luật "trên màn" trong doc này đo bằng vùng này.
- Mọi hitbox/hurtbox/vùng là hình trên mặt sàn; VFX vẽ cùng phép chiếu → hình VFX = hình hitbox (lệch ≤ 2 px màn).
- Chuột → sàn:
x = mouseX + camX,z = mouseY / 0.5 + camZ(bỏ y).
1.4 Hình hitbox / hurtbox trên mặt sàn
Mọi phép thử chồng lấn = Minkowski: hình đòn nở thêm bán kính hurtbox r_t của mục tiêu, thử tâm mục tiêu.
| shape | Tham số (field CSV) | Phép thử (tâm mục tiêu P, gốc O, hướng d) | Dùng cho |
|---|---|---|---|
CIRCLE | r, off_fwd, off_side | dist(P, C) ≤ r + r_t | nổ, đập, vùng |
ARC (nón/cung) | r, r_in (mặc định 0), arc (°), off_fwd | r_in − r_t ≤ dist(P, O) ≤ r + r_t và abs(∠(P−O, d)) ≤ arc/2 + asin(min(1, r_t / dist(P, O))) | chém, nón khói/đất/đạn chùm |
RECT | len, w, off_back (mặc định 0) | P trong hình chữ nhật hướng d, dài len + off_back, rộng w, nở r_t | đâm, sóng thẳng, rãnh |
LINE | p0, p1, w | khoảng cách P tới đoạn p0–p1 ≤ w/2 + r_t | Kẻ Mực 320×24, dây Kessa, tia, đường lao (quét) |
RING | r_mid(t), band | abs(dist(P, O) − r_mid(t)) ≤ band/2 + r_t | sóng chuông, vòng có khe (gap_deg, gap_dir) |
ELLIPSE | rx, rz, dir | (u/(rx+r_t))² + (v/(rz+r_t))² ≤ 1 trong hệ (u,v) quay theo dir | vùng đáp nhảy dài, rẻ quạt bẹt |
- Quét (swept): hitbox di chuyển > r trong 1 tick (lao, đạn, Lướt Cưa) → thử theo đoạn đường đi của tick đó (
LINEw = 2r). Không xuyên qua dù slow-mo hay Lướt. - 1 hitbox trúng 1 mục tiêu tối đa 1 lần (HashSet theo instance đòn), trừ field
rehit_ticks(đa nhịp: ult, vùng, xoay). - Hurtbox hero: mọi hero dùng CHUNG
CIRCLE r 7trên sàn (công bằng: hero to/nhỏ không đổi độ khó) + hộp màn hình cho đạn: rộng ±7 px, cao 26 px từ chân, |Δz| ≤ 24 px, quét liên tục (demo §3.4). - Hurtbox quái:
CIRCLE r = radiusdữ liệu (S 6–10 · M 14 · L 20 · XL 28 [ASSUMED mặc định khi doc quái để trống]); với đạn hero: hộp màn ±bán kính giãn đám, cao = cao thân, sâuradius + 8px. - Bộ phận (boss/mini): tối đa 4 hurtbox phụ
part_id(đầu, chân, buồng lái); sát thương vào phần = nhânpart_multrồi cộng vào HP chung.
1.5 Lớp độ cao
| Lớp | Ai | Bị trúng bởi | Luật |
|---|---|---|---|
GROUND | mặc định | mọi đòn | chặn thân, rơi hố, chịu vùng sàn |
AIRBORNE | hero trong cửa sổ nhảy/vọt (H01_SK02 không trung, H03 Nhảy Sào); quái S bị hất tung; boss đang nhảy (BS_B1 Nhảy Chuông) | hero AIRBORNE: bất tử hoàn toàn (mọi cửa sổ không trung của hero phải ghi rõ là bất tử) · quái AIRBORNE: mọi đòn hero trúng | không chặn thân, không chịu vùng sàn tới khi đáp |
FLYING | quái rig "bay" + bầy hạt (EN_B1_07, EN_B2_05, EN_B4_02, EN_B4_03, EN_B4_05, EN_B6_02) | mọi đòn hero, kể cả vùng sàn của hero | hurtbox ở bóng sàn; không chặn thân; miễn hố/rãnh/chôn (H11) và Ghim STS_PIN; kéo/hút áp dụng |
- Đòn hero mặc định
layers = ALL(dễ dọn bầy, P2). Đòn địch chỉ trúng hero khi hero ởGROUND.
1.6 Hướng mặt & ngắm
| Khoá | Luật |
|---|---|
| Vectơ ngắm | 360° liên tục (float); sprite chọn 1/8 hướng = round(angle/45°), w/sw/nw lật gương |
| Tay cầm | ngắm = cần phải nếu độ lệch RS ≥ 0.30; nếu không, cần trái nếu độ lệch LS ≥ 0.20; nếu không, giữ hướng cũ |
| Chuột/phím | ngắm = (điểm chuột trên sàn − tâm hero), luôn bật |
| Hero cận chiến (H01, H02, H03, H04, H05, H06, H11) | hướng hitbox = vectơ ngắm SAU trợ ngắm (§9) tại tick bắt đầu startup, khoá tới hết active; không bám 8 hướng |
| Hero tầm xa/vùng (H07, H08, H09, H10, H12) | hướng đạn/dây/vùng = vectơ ngắm tại tick nhả; trong lúc nạp/kéo được xoay ≤ 720°/s |
| Quay người hero | tức thì khi rảnh/hồi sau đòn; trong startup/active khoá |
| Quái | khoá hướng ở 70% windup (windup_lock_frac 0.7); đòn lao khoá điểm đích ở 60% windup |
| ĐÁP | hit-test 360° (INV-11); anim tự xoay về mối đe doạ Y gần nhất |
4Mô hình chỉ số
📊 Núm chỉ số & trần (tuning.combat)
| Núm | Giá trị | Đơn vị | Ghi chú |
|---|---|---|---|
tick_hz | 60 | Hz | 1 tick = 1/60 s |
max_catchup_ticks | 4 | tick | tối đa 4 tick bù/khung hiển thị |
input_buffer | 0.15 | s | INV-07, 9 tick |
projection_tilt | 0.5 | × | screenY = (z − camZ) × 0.5 + y |
hero_hurt_r | 7 | px | hurtbox hero CIRCLE r7 chung mọi hero |
hero_hurt_w | 7 | px | hộp màn ±7 px |
hero_hurt_h | 26 | px | cao 26 px từ chân |
hero_hurt_depth | 24 | px | |Δz| ≤ 24 px để đạn chạm |
enemy_radius_m | 14 | px | RADIUS M (S 6–10 theo dữ liệu) |
enemy_radius_l | 20 | px | RADIUS L |
enemy_radius_xl | 28 | px | RADIUS XL |
enemy_proj_hurt_depth_add | 8 | px | sâu hurtbox quái với đạn hero = radius + 8 |
parts_max | 4 | hurtbox | bộ phận phụ boss/mini |
aim_rs_deadzone | 0.3 | trục | ngắm cần phải khi độ lệch RS ≥ 0.30 |
aim_ls_deadzone | 0.2 | trục | ngắm cần trái khi độ lệch LS ≥ 0.20 |
ranged_aim_turn_deg_s | 720 | °/s | hero tầm xa xoay khi nạp/kéo |
windup_lock_frac | 0.7 | × windup | quái khoá hướng ở 70% windup |
lunge_lock_frac | 0.6 | × windup | đòn lao khoá điểm đích ở 60% windup |
hp_max_cap | 400 | HP | trần HP_MAX |
move_speed_cap_mult | 1.4 | × gốc | trần MOVE_SPEED |
move_speed_floor_mult | 0.5 | × gốc | sàn khi bị chậm |
hero_accel_time | 0.06 | s | ACCEL_TIME tăng tốc |
hero_decel_time | 0.05 | s | ACCEL_TIME giảm tốc |
power_base | 10 | điểm | POWER mọi hero |
power_cap | 40 | điểm | trần POWER |
dmg_inc_cap | 300 | % | trần DMG_INC |
atk_speed_cap | 2 | × | trần ATK_SPEED |
crit_chance | 0.05 | tỉ lệ | CRIT_CHANCE gốc 5% |
crit_chance_cap | 0.75 | tỉ lệ | trần 75% |
crit_mult | 2 | × | CRIT_MULT gốc |
crit_mult_cap | 4 | × | trần CRIT_MULT |
area_cap | 2 | × bán kính | trần AREA |
proj_speed_cap | 2 | × | trần PROJ_SPEED |
duration_cap | 2 | × | trần DURATION (không áp lên khống chế) |
cdr_cap | 50 | % | trần CDR |
dash_charges | 2 | lượt | DASH_CHARGES gốc |
dash_charges_cap | 4 | lượt | trần |
dash_recharge | 0.7 | s | nạp 1 lượt, tuần tự |
dash_recharge_floor | 0.35 | s | sàn |
answer_window_floor | 0.14 | s | INV-11 |
answer_window_cap | 0.24 | s | trần ANSWER_WINDOW |
poise_max | 100 | điểm | POISE_MAX hero |
poise_max_cap | 200 | điểm | trần |
poise_regen | 40 | điểm/s | POISE_REGEN hero |
poise_regen_delay | 0.5 | s | không chịu đòn, không giữ verb giữ |
poise_regen_cap | 80 | điểm/s | trần |
dr_cap | 60 | % | trần DR |
elite_dmg_cap | 100 | % | trần ELITE_DMG |
status_power_cap | 100 | % | trần STATUS_POWER |
heal_mult_cap | 2 | × | trần HEAL_MULT |
heal_mult_floor | 0.2 | × | sàn (MRN11) |
pickup_r | 50 | px | PICKUP_R gốc (demo xp_magnet) |
pickup_r_cap | 200 | px | trần |
ult_gain_cap | 1.5 | × | trần ULT_GAIN |
res_gain_cap | 2 | × | trần RES_GAIN |
knockback_cap | 2 | × | trần KNOCKBACK |
shield_cap_pct | 50 | % HP_MAX | SHIELD_CAP cố định |
enemy_hp_max | 99 999 | HP | HP quái ≤ 99.999 |
enemy_base_speed_max | 118 | px/s | INV-05; sau buff ≤ tốc hero / 1.1 (INV-17) |
enemy_speed_vs_hero_div | 1.1 | ÷ | INV-17 |
mass_s | 1 | mass | mass_class S |
mass_m | 3 | mass | M |
mass_l | 6 | mass | L |
mass_xl | 10 | mass | XL |
armor_m | 10 | % | ARMOR M |
armor_l | 15 | % | ARMOR L |
armor_xl | 20 | % | ARMOR XL |
armor_floor | −45 | % | sàn giáp (STS_ROT) |
armor_cap | 50 | % | trần giáp |
poise_m | 100 | điểm | POISE M |
poise_l | 150 | điểm | POISE L |
poise_xl | 200 | điểm | POISE XL |
elite_poise_regen | 12 | điểm/s | M; trễ 2.0 s |
elite_poise_delay | 2 | s | M |
mini_poise_regen | 15 | điểm/s | L; trễ 2.5 s |
mini_poise_delay | 2.5 | s | L |
boss_poise_regen | 20 | điểm/s | XL; trễ 3.0 s |
boss_poise_delay | 3 | s | XL |
elite_broken_time | 3 | s | M Vỡ Thế |
mini_broken_time | 3.5 | s | L |
boss_broken_time | 4 | s | XL |
broken_dmg_mult | 1.5 | × | BROKEN_MULT mọi hạng |
dot_res_l | 25 | % | DOT_RES L |
dot_res_xl | 40 | % | DOT_RES XL |
hp_act_base | 1.3 | ×/Hồi | HP × 1.30^(act − home_act) |
dmg_act_base | 1.15 | ×/Hồi | DMG × 1.15^(act − home_act) |
endless_hp_per_loop | 0.12 | ×/vòng | HP × (1 + 0.12 × endless_loop) |
endless_dmg_per_loop | 0.06 | ×/vòng | DMG × (1 + 0.06 × endless_loop) |
custom_scale_min | 0.25 | × | custom_hp/dmg |
custom_scale_max | 3 | × | custom_hp/dmg |
power_curve | I: 1, II: 1.6, III: 2.2, IV: 3, V: 3.45, VI: 3.49 | PI vào Hồi | = CRV_power_index lúc VÀO Hồi (17 §1.2); VI = B6 = PI cuối run. 2026-11-07 - theo DEC-2026-11-07-12 (doc 17 §1.2): IV 2.90 → 3.00, Kết 3.30 → 3.45, thêm VI (B6) 3.49 (lượt chọn 9/6/7/6/1 = 29; PI tính 2.99/3.44/3.49, lệch ≤ 0.5%). |
vuln_cap | 2.25 | × | min(2.25, Π vuln_i) |
shield_mult | 0.15 | × | khiên trước (EN_B1_04, EN_B4_01, EM09) |
shield_exposed | 4 | s | EN_B1_04 lộ sau vỡ khiên |
em09_shield_melee_hits | 3 | cú | EM09 vỡ sau 3 cú cận chiến hoặc 1 shieldbreak |
hero_broken_dmg_mult | 1.5 | × | hero đang Vỡ Thế nhận ×1.5 |
mercy_dmg_mult | 0.75/0.5/0.25 | × | Thương Xót −25/−50/−75% |
zone_dmg_cap_per_tick | 4 | HP/0.5 s | N kẹp ≤ 4 mỗi tick 0.5 s (INV-02) |
oneshot_guard_hp_pct | 90 | % HP_MAX | cú trúng để lại ≥ 1 HP |
oneshot_guard_cd | 10 | s | ≤ 1 lần/10 s |
oneshot_guard_off_dotang | 16 | Độ Tang | tắt khi Độ Tang ≥ 16 |
execute_cap_m | 0.2 | HP% | M = min(execute_pct, 0.20) |
execute_cap_l | 0.1 | HP% | L = min(execute_pct, 0.10) |
execute_xl_hp | 0.2 | HP% | XL: ×1.5 sát thương khi HP boss ≤ 20% |
execute_xl_mult | 1.5 | × | XL thay kết liễu |
max_targets_attack | 48 | mục tiêu | Đánh/kỹ năng |
max_targets_ult | 128 | mục tiêu | ult |
max_targets_counter | 48 | mục tiêu | Phản |
overkill_carry_pct | 50 | % | 50% phần thừa |
overkill_carry_r | 48 | px | 1 quái gần nhất trong r48 |
pierce_falloff | 1 | × | mặc định không giảm |
poise_dmg_from_dmg | 0.1 | × sát thương | Thế mất = poise_dmg + 0.1 × sát thương cuối |
poise_dmg_cap_per_hit | 60 | điểm/cú | trừ ĐÁP, Phản, ult |
answer_poise_m | 45 | điểm | ĐÁP thành công M (demo deflect_poise_elite) |
answer_poise_l | 40 | điểm | ĐÁP thành công L |
answer_poise_xl | 35 | điểm | ĐÁP thành công XL (demo deflect_poise_boss) |
counter_poise | 30 | điểm | Phản −30 Thế |
cc_to_poise_lxl | 15 | điểm/lần | khống chế lên L/XL đổi −15 Thế |
broken_repeat_poise_mult | 1.25 | ×/lần | Thế tối đa ×1.25 mỗi lần Vỡ trước đó |
broken_repeat_poise_cap | 2 | × | trần |
chain_answer_elite_stun | 1.4 | s | STUN:1.4 khi ĐÁP trọn chuỗi Tinh Anh |
flinch_time | 0.18 | s | quái S khựng (11 tick) |
flinch_cancel_frac | 0.5 | × windup | windup < 50% bị huỷ |
flinch_attack_cd | 0.5 | s | hồi chiêu đòn bị huỷ |
flinch_max_per_window | 3 | lần | ≤ 3 lần khựng / 2 s |
flinch_window | 2 | s | cửa sổ đếm khựng |
flinch_immune | 1 | s | miễn khựng sau đó |
hurt_stun | 0.22 | s | hero Hurt 13 tick |
hurt_cancel | 0.12 | s | Lướt/ĐÁP mở lại sau 7 tick (INV-11) |
hurt_knockback | 12 | px | hero bị đẩy mặc định |
hurt_iframes | 0.6 | s | i-frame sau khi trúng (36 tick) |
kb_slide_time | 0.12 | s | đẩy lùi ease-out bậc 2 |
kb_chain_pct | 30 | % | S truyền 30% quãng đẩy cho quái sau lưng (nón 60°, r = 2 × radius) |
kb_chain_cone | 60 | ° | nón truyền đẩy |
launch_s | 0.4 | s | hất tung S mặc định |
launch_height | 18 | px | cung cao |
launch_land_stagger | 0.1 | s | khựng khi đáp |
launch_m_poise | 10 | điểm | M: đổi thành −10 Thế |
pull_m_pct | 50 | % | M bị kéo 50%; L/XL 0% |
pull_cluster_lxl_poise_s | 8 | điểm/s | L/XL −8 Thế/s trong vùng hút H05 |
pull_speed_max | 240 | px/s | tốc kéo ≤ 240 |
pull_stop_r | 12 | px | dừng ở r12 quanh tâm kéo |
hero_kb_elite_max | 48 | px | hero_kb ≤ 48 (Tinh Anh) |
hero_kb_boss_max | 96 | px | hero_kb ≤ 96 (boss) |
death_knock | 38 | px | văng khi chết ÷ √mass |
death_knock_time | 0.3 | s | trượt văng |
death_knock_heavy | 1.4 | × | cú kết liễu nặng/chí mạng/đẩy mạnh |
death_hop | 6 | px | nảy |
sep_cell | 32 | px | spatial hash ô 32 px |
sep_fill | 0.85 | × | bán kính giãn = max(radius, ½ bề ngang sprite × 0.85) |
sep_iterations | 2 | lượt/tick | giãn đám |
sep_stiffness | 0.9 | × | độ cứng |
sep_z | 1.3 | × | trục z tính ×1.3 |
hero_push_slow_mult | 0.85 | × | đẩy ≥ 3 quái S → tốc hero ×0.85 |
hero_push_slow_count | 3 | quái | ngưỡng |
unstuck_arc | 270 | ° | bị chặn ≥ 270° trong r16 liên tục 0.5 s |
unstuck_r | 16 | px | — |
unstuck_time | 0.5 | s | — |
unstuck_push_r | 20 | px | quái S trong r20 |
unstuck_push_px_tick | 10 | px/tick | tới khi có khe ≥ 24 px |
unstuck_gap | 24 | px | — |
status_dot_tick | 0.5 | s | DoT tick 30 tick, lệch pha instance_id mod 30 |
status_build_per_enemy | 6 | trạng thái | ≤ 6 BUILD cùng lúc |
status_control_per_enemy | 3 | trạng thái | ≤ 3 CONTROL cùng lúc |
status_instances_max | 1500 | instance | toàn cục |
status_extend_cap_mult | 1.5 | × gốc | status_extend trần ×1.5 |
elite_dr_window | 6 | s | giảm dần khống chế M: lần 1 ×1.0 · 2 ×0.5 · 3 ×0.25 |
elite_dr_steps | 1/0.5/0.25 | × | trong 6 s |
elite_dr_immune | 4 | s | sau lần 3 miễn 4 s |
elite_cc_mult | 0.5 | × | CONTROL ×0.5 thời lượng lên M |
boss_cc_poise_cap_s | 45 | điểm/s | trần đổi Thế từ khống chế lên 1 boss |
react_thermal_r | 40 | px | Nứt Nhiệt EMBER+FROST: AREA r40 |
react_thermal_coef | 2 | × POWER | × (1 + STATUS_POWER) |
react_spread_rot_add | 1 | lớp | Lan Độc SHOCK+ROT: +1 lớp ROT mỗi mục tiêu nảy |
react_execute_hp | 0.15 | HP% | Hành Hình BIND+DREAD: kết liễu HP ≤ 15% |
react_execute_lxl_mult | 1.5 | × | L/XL: cú kế ×1.5 |
hero_status_glyph_hex | #c8c8d0 | hex | glyph bạc trạng thái trên hero |
hitstop | LIGHT: 0.035, MEDIUM: 0.045, HEAVY: 0.07, ANSWER: 0.08, COUNTER: 0.12, BROKEN: 0.1, PERFECT_DODGE: 0, ULT_FINAL: 0.1, HERO_HURT: 0.06, DOT: 0 | s | hitstop theo hit_class; SKILL theo dữ liệu 0.02–0.08 |
trauma | LIGHT: 0, MEDIUM: 0.22, HEAVY: 0.28, ANSWER: 0.25, COUNTER: 0.45, BROKEN: 0.5, PERFECT_DODGE: 0, ULT_MAX: 0.8, HERO_HURT: 0.3, DOT: 0 | trauma | SKILL theo dữ liệu 0.12–0.55 |
multi_hitstop_add | 0.005 | s/mục tiêu | hitstop = max(base, min(base + 0.005 × (n − 1), 0.06)) |
multi_hitstop_cap | 0.06 | s | — |
hero_hitstop_budget | 0.2 | s/1.0 s | vượt → LIGHT/MEDIUM hitstop 0 |
answer_slowmo_time | 0.25 | s | World ×0.20 (demo deflect_slowmo_time) |
answer_slowmo_scale | 0.2 | × | demo deflect_slowmo_scale |
answer_proj_slowmo_time | 0.12 | s | chỉ đạn |
counter_slowmo | 0.15/0.3 | s · × | World 0.15 s @ ×0.30 |
broken_slowmo | 0.3/0.3 | s · × | World 0.30 s @ ×0.30 |
perfect_dodge_time | 0.35 | s | World ×0.25 |
perfect_dodge_scale | 0.25 | × | — |
slowmo_budget | 0.6 | s/2.0 s | ngân sách làm chậm toàn cục |
draft_time_scale | 0.15 | × | World ×0.15 khi draft + hero bất tử |
shake_max | 7 | px | offset = 7 px × trauma^1.5 |
shake_pow | 1.5 | mũ | — |
shake_hz | 22 | Hz | nhiễu |
shake_decay | 2.2 | /s | trauma giảm |
shake_kick | 5 | px | đá lò xo × trauma |
shake_kick_max | 4 | px | — |
shake_kick_hz | 7 | Hz | — |
trauma_cap | 1 | trauma | — |
hitflash_time | 0.07 | s | chớp trắng mọi cú trúng |
death_flash | 0.09 | s | chớp khi chết |
hero_hurt_vignette | 0.4/0.2 | độ tối · s | viền tối màn 40% 0.20 s |
dmgnum_pop_scale | 1.6 | × | phóng ×1.6 trong 0.09 s |
dmgnum_pop | 0.09 | s | — |
dmgnum_rise | 16 | px | — |
dmgnum_life | 0.6 | s | — |
dmgnum_max_onscreen | 260 | số | — |
dmgnum_new_per_tick | 24 | số | — |
dmgnum_merge_window | 0.1 | s | cùng mục tiêu + loại → gộp |
dmgnum_dot_merge | 1 | s | DoT 1 số/1.0 s/mục tiêu |
dmgnum_colors | normal: #f4efe0, minor: #a8a4b0, shielded: #8aa0b8, hero_taken: #ff5a5a, heal: #7be08a | hex | — |
dmgnum_scales | normal: 1, heavy: 1.15, crit: 1.5, minor: 0.8, shielded: 0.8, hero_taken: 1.3 | × | — |
callout_queue | 2 | callout | 1 cái/lúc, hàng đợi ≤ 2 |
room_start_invuln | 1 | s | bất tử đầu phòng |
revive_invuln | 2 | s | Lửa Gửi hồi sinh |
draft_iframes_after | 0.5 | s | bất tử sau khi chọn draft |
move_cancel_frac | 0.6 | × recovery | di chuyển/kỹ năng huỷ recovery sau 60% |
dash_second_delay | 0.1 | s | Lướt → Lướt 2 sau 6 tick |
dash_endlag | 0.05 | s | hậu Lướt 3 tick |
input_priority | DASH/ANSWER/ULT/SKILL/ATTACK | thứ tự | input cùng tick (INV-07) |
levelup_max_hp | 3 | HP | lên cấp +3 HP_MAX |
levelup_heal | 6 | % HP_MAX | lên cấp hồi 6% (demo 15 HP → đổi) |
room_clear_heal | 8 | % HP_MAX | xong phòng chiến |
heal_orb_amount | 12 | HP | cầu máu |
heal_orb_chance | 0.02 | tỉ lệ/quái S | MUT07 ×2 |
heal_orb_max | 6 | cầu | trên sàn |
heal_orb_life | 20 | s | tồn trên sàn |
rst_heal | 40 | % HP_MAX | RST |
dock_heal | 25 | % HP_MAX | DOCK |
heal_reward | 25 | % HP_MAX | icon HEAL (CHL 50) |
potion_heal | 30 | % HP_MAX | bình máu |
boss_win_heal_floor | 60 | % HP_MAX | HP = max(HP, 60%) |
lifesteal_cap | 3 | % HP_MAX/s | tổng hút ≤ 3%/s |
shield_decay_delay | 5 | s | sau 5 s không nhận khiên |
shield_decay_rate | 10 | %/s | giảm 10%/s lượng hiện có |
grey_hp_per_swing | 2 | HP | H06 Chảy: mỗi đòn đổi 2 HP → HP xám |
grey_hp_window | 3 | s | đòn trúng trong 3 s đổi lại |
grey_hp_loss_cap | 4 | HP/s | — |
h02_wall_hp | 80 | HP | tường Dựng Quan |
h12_band_hp | 40 | HP | Phường; mất sau 3 đòn |
potion_capacity | 2 | bình | sức chứa |
potion_drink_time | 0.4 | s | 24 tick, đi ×0.5 |
potion_move_mult | 0.5 | × | — |
lua_gui_per_run | 1 | lần | GD4 → 2; MRN06 → 0 |
revive_hp | 35 | % HP_MAX | Lửa Gửi |
revive_wave_r | 120 | px | sóng AREA |
revive_wave_coef | 3 | × POWER | sát thương sóng |
revive_wave_kb | 60 | px | đẩy |
revive_wave_poise | 30 | điểm | M −30 Thế |
revive_anim | 1 | s | anim bất tử |
death_slowmo | 0.3/0.5 | × · s | hết Lửa Gửi: World ×0.3 trong 0.5 s |
aim_assist_cone | 100 | ° | cận chiến |
aim_assist_range | 90 | px | cận chiến |
aim_assist_max_turn | 35 | ° | cận chiến |
aim_assist_ranged | 20/260/12 | ° · px · ° | tầm xa/vùng: nón · tầm · xoay; chuột 6°, chỉ M/L/XL |
aim_assist_mouse_turn | 6 | ° | chuột tầm xa |
lunge_min | 24 | px | bước lao: mục tiêu cách 24–60 px |
lunge_max | 60 | px | — |
mercy_autoaim_r | 140/300 | px | Thương Xót tự ngắm cận · xa |
soft_boss_lock_deg | 30 | ° | khoá boss mềm lệch ≤ 30° |
soft_boss_lock_range_mult | 1.5 | × | tầm ×1.5 |
2.1 Chỉ số hero (hero_stats)
| id | Tên VN | Đơn vị | Gốc | Trần / sàn |
|---|---|---|---|---|
HP_MAX | HP tối đa | HP | theo hero (Bible §5: H01 120 · H02 160 · H03 115 · H04 105 · H05 140 · H06 130 · H07 100 · H08 110 · H09 110 · H10 105 · H11 125 · H12 115) | trần 400 |
MOVE_SPEED | Tốc chạy | px sàn/s | theo hero 130–145 (Bible §5) | trần ×1.40 gốc; sàn ×0.50 gốc khi bị chậm |
ACCEL_TIME | Thời gian tăng/giảm tốc | s | 0.06 / 0.05 | — |
POWER | Lực | điểm | 10 (mọi hero) | trần 40 |
DMG_INC | Sát thương | +% | 0 | trần +300% |
ATK_SPEED | Tốc đánh | × | 1.00 (chia startup/active/recovery của Đánh + combo) | trần 2.00 |
CRIT_CHANCE | Tỉ lệ chí mạng | % | 5 | trần 75 |
CRIT_MULT | Hệ số chí mạng | × | 2.00 | trần 4.00 |
AREA | Cỡ vùng | × bán kính | 1.00 | trần 2.00; VFX co giãn theo |
PROJ_SPEED | Tốc đạn hero | × | 1.00 | trần 2.00 |
DURATION | Thời lượng hiệu ứng hero (vùng, triệu hồi, buff) | × | 1.00 | trần 2.00; KHÔNG áp lên trạng thái khống chế (§5.3) |
CDR | Giảm thời gian hồi chiêu kỹ năng | % | 0 | trần 50 |
DASH_CHARGES | Lượt Lướt | lượt | 2 | trần 4 |
DASH_RECHARGE | Nạp 1 lượt Lướt | s | 0.70 (tuần tự) | sàn 0.35 |
ANSWER_WINDOW | Cửa sổ ĐÁP | s | theo hero 0.15–0.18 | sàn 0.14 (INV-11), trần 0.24 |
POISE_MAX | Thế hero | điểm | 100 | trần 200 |
POISE_REGEN | Hồi Thế | điểm/s | 40, sau 0.5 s không chịu đòn và không giữ verb giữ | trần 80 |
DR | Giảm sát thương nhận | % | 0 | trần 60 |
ELITE_DMG | Sát thương lên M/L/XL | +% | 0 | trần +100% |
STATUS_POWER | Uy lực trạng thái (sát thương DoT + số của trạng thái hero gây) | +% | 0 | trần +100% |
HEAL_MULT | Hệ số hồi phục HP | × | 1.00 | trần 2.00, sàn 0.20 (MRN11) |
PICKUP_R | Bán kính hút XP/cầu máu | px | 50 | trần 200 |
ULT_GAIN | Hệ số nạp Dư Âm | × | 1.00 | trần 1.50 (MRN08 ×0.8, MUT06 ×0.8 nhân dồn) |
RES_GAIN | Hệ số nạp tài nguyên hero | × | 1.00 | trần 2.00 |
KNOCKBACK | Lực đẩy | × | 1.00 | trần 2.00 |
SHIELD_CAP | Trần khiên | % HP tối đa | 50 | cố định |
2.2 Chỉ số kẻ địch (enemy_stats)
| id | Tên VN | Đơn vị | Gốc theo hạng S / M / L / XL | Trần / ghi chú |
|---|---|---|---|---|
HP | HP | HP | dữ liệu doc quái × §2.4 | nguyên, ≤ 99.999 |
MOVE_SPEED | Tốc đi | px sàn/s | dữ liệu (≤ 118 gốc) | sau mọi buff ≤ tốc cơ bản hero đang chơi / 1.1 (INV-17) |
RADIUS | Bán kính thân | px | 6–10 / 14 / 20 / 28 | hurtbox + giãn đám |
MASS | Khối | — | 1 / 3 / 6 / 10 (mass_class) | §4.3 |
ARMOR | Giáp | % giảm sát thương nhận | 0 / 10 / 15 / 20 [ASSUMED] | sàn −45 (STS_ROT), trần 50 |
POISE | Thế | điểm | — / 100 / 150 / 200 | EM01 ×1.5; S không có Thế (dùng khựng §4.2) |
POISE_REGEN | Hồi Thế | điểm/s · trễ s | — / 12 · 2.0 / 15 · 2.5 / 20 · 3.0 | ngừng khi Vỡ Thế |
BROKEN_TIME | Thời gian Vỡ Thế | s | — / 3.0 / 3.5 / 4.0 | §4.1 |
BROKEN_MULT | Nhân sát thương khi Vỡ Thế | × | 1.5 mọi hạng | — |
CC_RES | Kháng khống chế | — | 0 / thời lượng ×0.5 / đổi sang Thế / đổi sang Thế | §5.3 |
DOT_RES | Kháng DoT | % | 0 / 0 / 25 / 40 [ASSUMED] | áp lên STS_EMBER + mọi DoT |
DMG | Sát thương đòn | HP | theo đòn <enemyId>_Ann | × §2.4 |
2.3 Thứ tự cộng dồn & làm tròn
stat_final = clamp( (base + Σflat) × (1 + Σinc) × Π(1 + more_i), sàn, trần )
flat= cộng số tuyệt đối (+25 HP, +1 lượt Lướt).inc= bể cộng (thẻ ghi "+x%": Edge chung, affix, nâng trạm, mặc định của Edge hero).more= nhân riêng (thẻ ghi "×y": luật Relic, Cộng Hưởng II, Then Chốt, trạng thái, Khăn Tang, mutator, Thương Xót). Mẫu câu thẻ bắt buộc phân biệt "+x%" và "×y"; 1 hiệu ứng không vừa cộng vừa nhân.- Bảng chỉ số dựng lại khi có thay đổi (nhận thẻ, Relic, bắt đầu/kết thúc trạng thái, đổi pha boss), không dựng mỗi tick.
- Làm tròn: chỉ số giữ float. Sát thương mỗi cú: làm tròn nửa lên ở bước cuối pipeline (§3.1); kết quả > 0 thì tối thiểu 1. DoT: bộ tích luỹ float theo (mục tiêu, nguồn), mỗi tick DoT trừ phần nguyên, giữ phần dư. HP lưu nguyên. Hiển thị: % nguyên, giây 2 chữ số thập phân, số sát thương nguyên.
2.4 Co giãn kẻ địch (theo Hồi, mode, Khăn Tang)
HP_final = HP_data × PI(act) / PI(home_act) × (1 + 0.12 × MRN01) × (1 + 0.12 × endless_loop) × mutator_hp × custom_hp
DMG_final = DMG_data × EHP_idx(act) / EHP_idx(home_act) × (1 + 0.15 × MRN03) × (1 + 0.06 × endless_loop) × custom_dmg
| act | I (1) | II (2) | III (3) | IV (4) | Kết (5) | B6 (6) |
|---|---|---|---|---|---|---|
PI (Chỉ số sức mạnh build theo phút CRV_power_index, doc 17 §1.2) | 1.00 | 1.60 | 2.20 | 3.00 | 3.45 | 3.49 |
EHP_idx (doc 17 §5.1) | 1.00 | 1.20 | 1.40 | 1.55 | 1.65 | 1.70 |
home_act= Hồi gốc của kẻ địch (B1 → 1 … B4 → 4); Kết (B5) = act 5; B6 = act 6. Quái xuất hiện ở Hồi gốc: hệ số 1.- Hệ số theo đường cong soạn (không mũ cố định) → độ khó Kết không phụ thuộc biome roll: mọi quái ở Kết = HP ×PI(5)/PI(home), dmg ×EHP_idx(5)/EHP_idx(home). Bảng: B1 ×3.45 / ×1.65 · B2 ×2.16 / ×1.375 · B3 ×1.57 / ×1.179 · B4 ×1.15 / ×1.065.
- ENDLESS tầng n (n ≥ 1, sau Hồi IV; biome = B((n − 1) mod 4 + 1)):
act= 5 cho HP/DMG, XP, hàng rarity,B_room(doc 15);endless_loop= floor((n − 1)/4) + 1 (vòng 1 = tầng 1–4 → HP ×1.12, dmg ×1.06; vòng 3 = tầng 9–12 → ×1.36 / ×1.18, khớp doc 17 VD-E6). STANDARD/DAILY/BOSS_RUSH/CUSTOM:endless_loop= 0.[ASSUMED] mutator_hp: MUT07 Tro Ấm ×1.10.custom_hp/dmg: 0.25–3.00 (CUSTOM). BOSS_RUSH: boss dùng act = Hồi gốc của nó (không co giãn).- Đường cong sức mạnh tham chiếu (
power_curve=PIlúc VÀO Hồi (= cuối Hồi trước; Hồi I = đầu run), doc 17 §1.2, dùng để soạn HP quái và co giãn ở trên): I 1.00 · II 1.60 · III 2.20 · IV 3.00 · Kết 3.45 · B6 3.49 [ASSUMED, sim kiểm] (2026-11-07 - DEC-2026-11-07-12 (doc 17 §1.2, Q2): đồng bộPI/power_curvevới doc 17). Luật soạn: quái S chết sau 1–2 cú Đánh trung vị của Hồi gốc (P2); Tinh Anh 25–45 s; boss Hồi theo thời lượng Bible §2. - Không chỉ số nào của địch đọc HP/cấp hero (không co giãn động theo người chơi; Tro Nhớ chỉ đổi trọng số đòn, INV-15).
5Pipeline sát thương
3.1 Loại sát thương (dmg_kind)
Bible không định nghĩa hệ nguyên tố; loại sát thương = cách giao (khớp tag hiệu ứng Bible), dùng cho khiên, kháng, Edge lọc điều kiện.
dmg_kind | Gồm | Khiên trước (EN_B1_04, EN_B4_01, EM09) | Giáp | Vỡ Thế ×1.5 | Chí mạng |
|---|---|---|---|---|---|
MELEE | Đánh, combo, lao, Phản | có (nếu gốc đòn trong cung khiên) | có | có | có |
PROJ | đạn, tên, dây ném, đạn phản | có | có | có | có |
AREA | nổ, sóng, vùng tức thời (1 lần/instance) | có | có | có | có |
ZONE | vùng hero kéo dài (khói, lửa sàn, hố) — mỗi lần tick | không | có | có | không |
DOT | tick của trạng thái (STS_EMBER, Siết H09…) | không | không | không | không |
PURE | hazard/môi trường lên quái (INV-18), sập hố, nổ Xác Trương lên quái | không | không | không | không |
- Khiên trước: cú
MELEE/PROJ/AREAcó gốc trong cung khiên → ×0.15 (shield_mult), trừ cờshieldbreak→ vỡ khiên (EN_B1_04 lộ 4 s; EM09 sau 3 cú cận chiến hoặc 1shieldbreak). ĐÁP lên đòn khiên Y luôn vỡ khiên (Bible §5.1).
3.2 Hero → kẻ địch
1 base = coef × POWER (coef = damage_demo / 10; A1 = 1.4, A3 = 3.4, RIPOSTE = 9.0)
2 inc = 1 + DMG_INC + (ELITE_DMG nếu hạng ≥ M) + inc theo tag của đòn
3 more = Π(1 + more_i) (Relic, Cộng Hưởng II, trạng thái tài nguyên hero: vd H06 Nung ×1.25 / Chảy ×1.5)
4 crit = CRIT_MULT nếu (cờ `crit` | roll < CRIT_CHANCE) ; ngược lại 1 (roll riêng cho mỗi cặp instance–mục tiêu; DOT/ZONE/PURE không chí mạng)
5 armor = 1 − clamp(ARMOR − 0.15 × stack_ROT, −0.45, 0.50) (bỏ qua với DOT/PURE)
6 vuln = min(2.25, Π vuln_i) (Vỡ Thế 1.5 · part_mult · buồng lái BS_B3 P2 1.5 · khiên trước 0.15)
7 falloff = 1 (mặc định, không giảm theo số mục tiêu — P2); đòn xuyên có `pierce_falloff` riêng
8 dmg = round_half_up(base × inc × more × crit × armor × vuln × falloff); nếu > 0 thì ≥ 1
9 áp dụng : khiên của quái (nếu có) → HP; khoá pha boss (§3.4); tràn (§3.5)
10 sau trúng : Thế (§4.1) → trạng thái (§5) → tài nguyên hero, Dư Âm → feedback (§6) → log sát thương (INV-16, Tro Nhớ A05/A06)
3.3 Kẻ địch → hero
1 base = DMG_final (§2.4)
2 phân giải phòng thủ (§7.4): Immune / Lướt / i-frame trúng đòn / ĐÁP / verb giữ → nếu bị chặn hết: dừng
3 dr = 1 − min(0.60, DR) (H02 Đinh −6%/Đinh, Relic, Edge VITAL…)
4 hold = 1 − HOLD_DR (verb giữ giảm sát thương: H06 0.60 · H08 0.50 trước 120° · H11 0.40; chỉ với Y/N; P → 0 và Vỡ Thế §7.4)
5 vuln = 1.5 nếu hero đang Vỡ Thế, ngược lại 1
6 mercy = 0.75 / 0.50 / 0.25 (Thương Xót −25/−50/−75%), ngược lại 1
7 dmg = round_half_up(base × dr × hold × vuln × mercy); ≥ 1
8 N (vùng đọng): sau bước 7 kẹp ≤ 4 mỗi tick 0.5 s (INV-02), kể cả MRN03
9 áp dụng: Khiên (§8.2) → HP xám H06 không chặn sát thương → HP
- Chống chết 1 đòn: HP ≥ 90% HP tối đa trước cú trúng → cú đó để lại tối thiểu 1 HP; ≤ 1 lần/10 s; tắt khi Độ Tang ≥ 16 [ASSUMED]. Không áp cho DoT/N.
3.4 Kết liễu & khoá pha
- Field đòn
execute_pct(0–1): sau bước 9, nếu HP/HP_MAX ≤ ngưỡng hiệu lực → chết ngay. Ngưỡng hiệu lực: S =execute_pct· M = min(execute_pct, 0.20) · L = min(execute_pct, 0.10) · XL = 0 (thay bằng ×1.5 sát thương của cú đó khi HP boss ≤ 20%). - Khoá pha boss/mini: HP không vượt qua ngưỡng pha tới khi chuyển pha xong; phần thừa bỏ. Chuyển pha = bất tử (Bible §7.5). Kết liễu không bỏ qua pha.
3.5 Quét, tràn, xuyên
- Đòn vùng/chém trúng MỌI mục tiêu trong hình tới
max_targets(mặc định: Đánh/kỹ năng 48 · ult 128 · Phản 48), chọn gần trước. Không chia sát thương theo số mục tiêu. - Tràn (overkill_carry, chỉ khi Edge/Relic cấp): 50% phần thừa sang 1 quái gần nhất trong r48 chưa bị instance này trúng; 1 lần nhảy; không chí mạng lại.
- Xuyên (
piercen): đạn trúng tối đa n mục tiêu;pierce_falloffmặc định 1.0 (không giảm). Đạn phản: xuyên 3.
3.6 Ví dụ tính
VD1 — H01 A3 dọn bầy (Hồi I). A3 coef 3.4, POWER 10, DMG_INC +0.20 (2 Edge chung +10%), không more. Trúng 9 Thây Tro EN_B1_01 (HP 14, giáp 0, Hồi gốc → ×1). base 34 × 1.20 = 40.8 → mục tiêu roll chí mạng (5%): 40.8 × 2.0 = 81.6 → 82; mục tiêu không chí mạng: 40.8 → 41. Cả 9 chết, phần thừa bỏ (không overkill_carry). Hitstop hero = max(0.07, min(0.07 + 0.005 × 8, 0.06)) = 0.07 s (§6.1).
VD2 — H07 phát Đỉnh Hơi vào Tinh Anh Vỡ Thế (Hồi II). coef 6.0 (ví dụ; số thật ở doc H07), POWER 12, DMG_INC +0.35, ELITE_DMG +0.25, Cộng Hưởng II ×1.20, Đỉnh Hơi = cờ crit, CRIT_MULT 2.3. Mục tiêu EL_B2_01: giáp 0.10, 2 lớp STS_ROT, đang Vỡ Thế. base 72 → inc 1.60 → 115.2 → more ×1.20 → 138.24 → crit ×2.3 → 317.95 → armor 1 − (0.10 − 0.30) = 1.20 → 381.54 → vuln 1.5 → 572.31 → 572.
VD3 — Đòn địch vào hero (Kết, Độ Tang có MRN03 bậc 2). EL_B1_01 Chặt Bổ DMG 24, Hồi gốc I, gặp ở Kết (act 5). Hero H02 Bodan, 4 Đinh (DR 24%) + Relic DR 10% → DR 34%. Không giữ verb, không Thương Xót. 24 × EHP_idx 1.65/1.00 = 39.60 → MRN03 ×1.30 = 51.48 → dr ×0.66 = 33.98 → 34. Nếu Bodan đang Vỡ Thế: 33.98 × 1.5 = 50.96 → 51. Nếu Thương Xót −50%: 33.98 × 0.5 = 16.99 → 17.
VD4 — STS_EMBER trên boss. XL, POWER 12, STATUS_POWER +0.40, DOT_RES 0.40: sát thương/s = min(4% HP_MAX, 1.0 × POWER × 1.40 = 16.8) × 0.60 = 10.08/s → mỗi tick 0.5 s tích 5.04 → trừ 5, giữ 0.04; 4 s = 40 HP.
6Thế, khựng, đẩy, khối bầy
4.1 Thế (Poise) của kẻ địch hạng M/L/XL
| Khoá | Giá trị |
|---|---|
| Thế mất mỗi cú | poise_dmg của đòn + 0.1 × sát thương cuối; trần 60/cú (trừ ĐÁP, Phản, ult) |
| ĐÁP thành công (mọi hero) | M −45 · L −40 · XL −35; số riêng ở Bible §5.1 THAY số này cho hero đó (H02 Chặn Nắp −40 · H09 Quăng Vòng Xu M −25) |
| Phản (Riposte/đòn phản của hero) | −30 (H01 canon); hero khác theo khuôn 11-Defense-Tells §2.6 |
| Khống chế lên L/XL | không áp hiệu ứng, đổi thành −15 Thế mỗi lần áp (Bible §5.2) |
| Hồi Thế | POISE_REGEN sau delay không mất Thế (§2.2) |
| Vỡ Thế (Thế = 0) | huỷ ngay windup đang chạy (trả token), anim broken, không hành động, nhận ×1.5 (BROKEN_MULT), thời gian M 3.0 · L 3.5 · XL 4.0 s; xong → Thế đầy |
| Giảm dần | mỗi lần Vỡ Thế trước đó trong cùng trận: Thế tối đa ×1.25 (trần ×2.0); reset khi trận kết thúc |
| ĐÁP trọn chuỗi | đòn chuỗi có cờ chain_answer = BROKEN (boss: BS_B1_A01, Chuỗi Sào BS_B2 P2) hoặc STUN:1.4 (Tinh Anh, vd EL_B1_01 Quét Đôi) |
| Trong Vỡ Thế | không đổi thế đáp Tro Nhớ, không bắt đầu tell P mới; HUD thanh Thế bạc nhấp nháy |
4.2 Khựng (hitstun)
| Đối tượng | Luật |
|---|---|
| Quái S | mọi cú hit_class ≥ LIGHT → khựng 0.18 s (11 tick). Windup < 50% → huỷ windup, hồi chiêu đòn đặt 0.5 s. Windup ≥ 50% → không huỷ (windup chạy tiếp). ≤ 3 lần khựng / 2 s, sau đó miễn khựng 1.0 s (vẫn nhận sát thương) |
| Quái M/L/XL | không khựng; chỉ chớp trắng + rung thân 1 px; ngắt bằng Vỡ Thế, khống chế của ĐÁP (choáng/tước vũ khí) hoặc luật riêng của đòn (EL_B1_02 Tụng Hồi: cú ≥ 20 sát thương) |
| Sau glint 2 | đòn Y không còn bị khựng huỷ (chỉ chết, Vỡ Thế, ĐÁP huỷ) → tell luôn trung thực |
| Hero (Hurt) | 0.22 s (13 tick); Lướt/ĐÁP mở lại sau 0.12 s (7 tick, INV-11); đẩy lùi 12 px; i-frame 0.60 s (36 tick) với mọi sát thương; không có Né Hoàn Hảo trong i-frame trúng đòn |
4.3 Đẩy lùi, hất tung, kéo
| Hiệu ứng | Công thức / luật |
|---|---|
| Đẩy lùi | d = kb_px × KNOCKBACK / mass (S 1 · M 3 · L/XL 0), trượt trong 0.12 s (7 tick) ease-out bậc 2; S bị đẩy truyền 30% quãng đẩy cho quái sau lưng (nón 60°, r = 2 × radius), 1 lớp |
| Tường | dừng đẩy; không sát thương đập tường mặc định (Edge/Relic được thêm) |
Hất tung (launch s) | chỉ S: AIRBORNE 0.40 s mặc định, cung cao 18 px, không đánh/không chặn thân, đáp xong khựng 0.10 s · M: đổi thành −10 Thế · L/XL: bỏ qua |
Kéo/hút (pull) | S 100% · M 50% · L/XL 0% và −8 Thế/s nếu nguồn là vùng hút H05 (Bible §5.2); tốc kéo ≤ 240 px/s; dừng ở r12 quanh tâm kéo |
| Hero bị đẩy | mặc định 12 px; đòn được ghi hero_kb ≤ 48 px (Tinh Anh) / ≤ 96 px (boss); không gây thêm khựng; H08 Tì Báng (trước 120°) và H11 Cắm Xẻng miễn |
| Văng khi chết (chỉ hình) | trượt 38 px/0.30 s ÷ √mass (×1.4 nếu cú kết liễu nặng/chí mạng/đẩy mạnh) + nảy 6 px; xác không có va chạm |
4.4 Khối bầy & chặn thân (INV-04)
- Thân địch không bao giờ gây sát thương; chỉ đẩy/chặn.
- Giãn đám: spatial hash ô 32 px (Bible §10.4); bán kính giãn = max(radius, ½ bề ngang sprite × 0.85); 2 lượt/tick; độ cứng 0.9; trục z tính ×1.3. Quái nặng đẩy quái nhẹ theo tỉ lệ mass.
- Hero ↔ S: hero đi vào đám S đẩy chúng dạt ngang (không bị chặn); đẩy ≥ 3 quái S cùng lúc → tốc hero ×0.85 [ASSUMED]. Hero ↔ M/L/XL: bị chặn, trượt dọc thân.
- Chống kẹt: hero bị chặn ≥ 270° hướng trong r16 liên tục 0.5 s → quái S trong r20 bị đẩy ra 10 px/tick tới khi có khe ≥ 24 px. Lướt xuyên mọi thân địch (không xuyên tường/vật cao).
- Đạn địch xuyên qua quái; đòn địch không trúng quái khác trừ cờ
hits_enemies(EN_B1_05 Phát Nổ 40, MB_B1_1 Lao Xe, khuôn rơi B3, hazard INV-18). - Tường hero (H02 Dựng Quan, gờ Bia Sụt H11, hố H11) chặn quái và dựng lại flow field (Bible §10.4).
7Trạng thái (STS_) — danh sách ĐẦY ĐỦ của game
📊 Trạng thái từ data/statuses.json
Than Hồng STS_EMBER · Sương Giá STS_FROST · Điện Giật STS_SHOCK · Mục Rữa STS_ROT · Trói STS_BIND · Khiếp STS_DREAD · Choáng STS_STUN · Câm STS_MUTE · Mù STS_BLIND · Tước Khí STS_DISARM · Chậm STS_SLOW · Ghim STS_PIN
- Nhóm BUILD (canon Bible §6, 6): hero gây lên địch; là tag Edge/Cộng Hưởng (SE, SRS). Không thêm, không bớt.
- Nhóm CONTROL (6, thêm 2026-11-07 — xem Quyết định Q1): đặt id cho các hiệu ứng Bible đã dùng bằng lời (choáng, câm kỹ năng, mù, tước vũ khí, chậm, kẹt/ghim). KHÔNG phải tag, không có Edge chung/Cộng Hưởng riêng, không đổi số SE/SRS.
- Trạng thái do hero gây: ramp hero + glyph (INV-01f), vẽ trên vòng chân quái. Trạng thái trên hero: glyph bạc
#c8c8d0trên vòng chân hero + icon HUD có thanh thời gian (không dùng dải tell).
5.1 Bảng trạng thái
| id | Tên VN | Nhóm | Hiệu ứng | Cộng dồn | Thời lượng | Tick | S / M / L / XL | Glyph |
|---|---|---|---|---|---|---|---|---|
| Than Hồng STS_EMBER | Than Hồng | BUILD | DoT DOT: S 4% HP_MAX/s · M/L/XL min(4% HP_MAX, 1.0 × POWER × (1 + STATUS_POWER))/s, × (1 − DOT_RES) | không cộng; áp lại = làm mới 4 s, giữ nguồn dps cao hơn | 4 s | 0.5 s | đủ / đủ / DOT_RES 25% / 40% | lửa |
| Sương Giá STS_FROST | Sương Giá | BUILD | chậm 25% (không cộng theo lớp); 3 lớp → đóng băng 1.0 s (không di chuyển, không hành động, huỷ windup S) rồi xoá lớp, miễn đóng băng 2.0 s | lớp 1–3, mỗi lần áp +1, làm mới 3 s | 3 s | — | đủ / chậm, 3 lớp = −20 Thế (không đóng băng) / chậm 15%, 3 lớp = −15 Thế / như L | tinh thể |
| Điện Giật STS_SHOCK | Điện Giật | BUILD | cú hero kế tiếp vào mục tiêu nảy sang 2 quái gần nhất trong r64, mỗi quái 40% sát thương cú đó (AREA, không chí mạng lại, không tự áp SHOCK); tiêu trạng thái | không cộng; làm mới | 4 s [ASSUMED] | — | đủ mọi hạng | zigzag |
| Mục Rữa STS_ROT | Mục Rữa | BUILD | giáp −15%/lớp (§3.2 bước 5, giáp sàn −45%) | 1–3 lớp, làm mới | 5 s [ASSUMED] | — | đủ mọi hạng | bọt |
| Trói STS_BIND | Trói | BUILD | đứng yên, không bắt đầu windup mới (windup ≥ 50% chạy tiếp) | không cộng | S 1.2 s · M 0.4 s (Bible); H09 Lưới Xu 0.6 s; H10 tay hồn S 1.0 / M 0.4 s | — | đủ / đủ (số riêng) / −15 Thế / −15 Thế | xích |
| Khiếp STS_DREAD | Khiếp | BUILD | bỏ chạy khỏi hero ở 60% tốc, nhả token, không đánh | không cộng | S 1.5 s · M 0.75 s [ASSUMED] | — | đủ / đủ / −15 Thế / −15 Thế | mắt |
| Choáng STS_STUN | Choáng | CONTROL | không di chuyển, không hành động, huỷ windup | không cộng; lấy thời lượng dài hơn | theo nguồn: ĐÁP lên S 1.0 s · H08 Muối S 0.8 / M 0.4 · H12 Chũm Chọe S 1.0 / M 0.4 · vỡ khiên EN_B1_04 1.5 · H04 Kẻ Vòng 0.3 · hero: chuông hazard 1.0, Khuôn Chuông BS_B3 1.0 | — | đủ / ×0.5 (§5.3) / −15 Thế / −15 Thế | sao xoay |
| Câm STS_MUTE | Câm | CONTROL | chỉ hero: khoá kỹ năng ô 1–3; KHÔNG khoá Đánh, ĐÁP, verb giữ, Lướt, Ult (INV-11/12) | không cộng; lấy dài hơn | EN_B6_02 Nuốt 2 s · BS_FINAL Hồi Câm 3 s · rẻ quạt BS_TRUE: trong rẻ + 0.5 s | — | — | chuông gạch |
| Mù STS_BLIND | Mù | CONTROL | quái cận chiến mất mục tiêu: không bắt đầu windup cận chiến nhắm hero, đi lang trong r32; đạn không bị ảnh hưởng | không cộng | H11 Hất Đất 1.0 s | — | đủ / ×0.5 / −15 Thế / −15 Thế | bụi |
| Tước Khí STS_DISARM | Tước Khí | CONTROL | đòn Y kế tiếp của mục tiêu bị huỷ ngay khi bắt đầu windup (Bible H04) | không cộng | 2.0 s | — | đủ / đủ / −15 Thế / −15 Thế | lưỡi gãy |
| Chậm STS_SLOW | Chậm | CONTROL | giảm tốc đi; áp như nhau cho hero và quái cùng vùng (INV-17) | KHÔNG cộng: lấy 1 nguồn chậm mạnh nhất (gồm FROST); tốc sàn ×0.50 | trong vùng + 0.3 s | — | đủ mọi hạng | sóng ngang |
| Ghim STS_PIN | Ghim | CONTROL | không di chuyển (vẫn đánh được); kẹt hố H11 | không cộng | H02 Đóng Nắp S/M 0.5 s · H11 hố M 2.0 s · L 0.8 s · XL vấp 0.6 s + −20 Thế (Bible §5.2) | — | đủ / đủ / đủ (số Bible) / vấp | cọc |
- Nguồn lên hero (địch chỉ gây được 4 trạng thái): Chậm STS_SLOW (bãi xương/nước −15%, bụi EN_B2_05 −15%, EM11 −20%), Choáng STS_STUN (hazard chuông, Khuôn Chuông), Câm STS_MUTE, Trói STS_BIND (lưới EL_B2_02 Ném Lưới 0.8 s [ASSUMED]). Hero miễn mọi trạng thái khác.
5.2 Giải trừ
| Trạng thái trên hero | Cách hết |
|---|---|
| Choáng STS_STUN, Trói STS_BIND | Lướt huỷ ngay (tốn 1 lượt, INV-06), TRỪ khi nguồn là khống chế tím của boss (Khuôn Chuông: tự thoát 1.0 s) |
| Chậm STS_SLOW | ra khỏi vùng + 0.3 s |
| Câm STS_MUTE | hết giờ; Edge/Relic có cờ cleanse |
| Tất cả | Lửa Gửi hồi sinh, chuyển phòng, kích hoạt Ult (giải trừ ở tick kích; UL1/UL2 bất tử toàn clip, UL3 bất tử 0.5 s kích, sau đó trạng thái mới trúng bình thường — §7.1) |
- Trên quái: chết xoá hết; Vỡ Thế xoá CONTROL (DoT, ROT, SHOCK giữ); đổi pha boss xoá hết.
5.3 Boss & giảm dần
- M (Tinh Anh): CONTROL ×0.5 thời lượng (trừ số Bible ghi riêng cho M). Cùng 1 trạng thái khống chế lên cùng 1 mục tiêu M trong 6 s: lần 1 ×1.0 · lần 2 ×0.5 · lần 3 ×0.25 · sau đó miễn 4 s.
- L/XL: khống chế không áp, đổi −15 Thế/lần (Bible §5.2), trừ số Bible ghi riêng (STS_PIN L 0.8 s, XL vấp 0.6 s). Trần đổi: ≤ 45 Thế/s từ khống chế lên 1 boss.
- DoT lên L/XL:
DOT_RES25/40%; EMBER bị trần theo POWER (§5.1).
5.4 Tick, trần, phản ứng
- DoT tick mỗi 0.5 s (30 tick), lệch pha theo
instance_id mod 30(rải tải); không hitstop, không chớp trắng, không SFX trúng; số sát thương DoT gộp 1 số/1.0 s/mục tiêu (§6.5). - Trần: mỗi quái ≤ 6 trạng thái BUILD + 3 CONTROL cùng lúc (thừa → thay cái sắp hết); toàn cục ≤ 1.500 instance trạng thái (§10).
- Phản ứng cặp — CHỈ khi sở hữu Cộng Hưởng chung cặp tương ứng (SRS cặp, Bible §6); số dưới là mặc định, doc nâng cấp ghi đè được:
| Cặp | Tên | Kích hoạt | Hiệu ứng |
|---|---|---|---|
| EMBER + FROST | Nứt Nhiệt | mục tiêu có cả 2 | tiêu cả 2: nổ AREA r40 = 2.0 × POWER × (1 + STATUS_POWER) |
| SHOCK + ROT | Lan Độc | cú nảy của SHOCK | mỗi mục tiêu bị nảy nhận +1 lớp ROT |
| BIND + DREAD | Hành Hình | mục tiêu có cả 2, HP ≤ 15% | kết liễu (S/M theo §3.4); L/XL: cú kế ×1.5 |
8Cảm giác trúng đòn (INV-10)
6.1 Hạng cú đánh (hit_class)
| hit_class | Ví dụ | Hitstop (s · tick) | Trauma | Làm chậm toàn cục | Callout |
|---|---|---|---|---|---|
LIGHT | A1/A2, đòn thường nhanh | 0.035 · 2 | 0 | — | — |
MEDIUM | Đánh sau Lướt, đòn giữa combo | 0.045 · 3 | 0.22 | — | — |
HEAVY | đòn kết combo (A3), kỹ năng nặng | 0.07 · 4 | 0.28 | — | — |
SKILL | kỹ năng | theo dữ liệu đòn 0.02–0.08 | theo dữ liệu 0.12–0.55 | — | — |
ANSWER | ĐÁP thành công | 0.08 · 5 | 0.25 | World 0.25 s @ ×0.20 (cận chiến) · 0.12 s @ ×0.20 (chỉ đạn) | "ĐÁP HOÀN HẢO!" (H01: "GẠT HOÀN HẢO!") với M/L/XL |
COUNTER | Phản (H01 Riposte + đòn phản các hero) | 0.12 · 7 | 0.45 | World 0.15 s @ ×0.30 | "PHẢN ĐÒN!" |
BROKEN | địch vào Vỡ Thế | đóng băng 0.10 · 6 | 0.50 | World 0.30 s @ ×0.30 | "PHÁ THẾ!" |
PERFECT_DODGE | Né Hoàn Hảo | 0 | 0 | World 0.35 s @ ×0.25, hero tốc thường | "NÉ HOÀN HẢO" |
ULT | ult | theo ult; cú nổ cuối 0.10 · 6 | ≤ 0.80 | theo ult (H01_UL1 World ×0.4) | tên ult |
HERO_HURT | hero trúng đòn | 0.06 · 4 (hero + kẻ đánh) | 0.30 | — | — |
DOT | tick trạng thái | 0 | 0 | — | — |
- Hitstop cục bộ: chỉ kẻ đánh + mục tiêu trúng đứng hình; bầy xung quanh vẫn chạy. Nhiều mục tiêu:
hitstop = max(base, min(base + 0.005 × (n − 1), 0.06)). Hitstop mới trong hitstop cũ → lấy phần còn lại lớn hơn, không cộng. - Ngân sách hitstop hero: tổng ≤ 0.20 s mỗi 1.0 s; vượt → cú
LIGHT/MEDIUMhitstop 0 (bầy dày không làm hero ì). - Quái S chết: xác không hitstop (văng §4.3); hero vẫn nhận hitstop của cú.
6.2 Rung màn (trauma)
offset = 7 px × trauma^1.5, nhiễu 22 Hz, trauma giảm 2.2/s; + đá lò xo 5 px × trauma theo hướng đòn (trần 4 px, 7 Hz); không xoay; trauma cộng dồn, trần 1.0.- Bậc: T0 0 · T1 0.18–0.22 · T2 0.25–0.30 · T3 0.45–0.55 · T4 0.80. Quái S chết không cộng trauma. Trợ năng: rung 0–100% nhân vào offset.
6.3 Làm chậm (slow-mo)
- 1 hệ số/đồng hồ (§1.1): nguồn mới → hệ số = min, thời lượng = max(còn lại, mới). Không nhân dồn.
- Ngân sách làm chậm toàn cục: ≤ 0.60 s cộng dồn trong mọi cửa sổ 2.0 s; vượt → bỏ phần làm chậm, giữ hitstop + callout (chuỗi ĐÁP dài vẫn mượt).
- Draft: World ×0.15 + hero bất tử (Bible §6), tách khỏi ngân sách. Máy nhịp H12 chạy trên
Hero, không chậm theo World (Bible §5.3).
6.4 Chớp & đường cong đẩy
- Chớp trắng mọi cú trúng: 0.07 s, vertex color mờ dần (giữ batching). Chí mạng: chớp trắng (INV-01a, không vàng) + số ngà "!". Chết: chớp 0.09 s.
- Hero trúng đòn: hero chớp trắng 0.07 s + viền tối màn 40% 0.20 s + thanh HP nháy; không phủ đỏ toàn màn.
- Đẩy lùi: ease-out bậc 2 trong 0.12 s; văng khi chết ease-out 0.30 s; hất tung parabol 0.40 s.
6.5 Số sát thương (lớp BattleDmgText, screen-space)
| Kiểu | Màu · cỡ |
|---|---|
| thường | ngà #f4efe0 ×1.0 |
nặng (HEAVY/SKILL/COUNTER) | ngà ×1.15, viền đậm |
| chí mạng | ngà ×1.5 + "!" (INV-01a) |
| phụ (DoT, nảy, tràn) | xám #a8a4b0 ×0.8 |
| bị khiên chặn | xám lam #8aa0b8 ×0.8 |
| hero nhận | đỏ hồng #ff5a5a ×1.3 |
| hồi phục | lục #7be08a |
- Hoạt ảnh: phóng ×1.6 trong 0.09 s rồi co, bay lên 16 px, sống 0.60 s; 1 mesh.
- Trần trong bầy: ≤ 260 số trên màn · ≤ 24 số mới/tick · cùng mục tiêu + cùng loại trong 0.10 s → gộp thành 1 số (cộng dồn, bật lại) · DoT gộp 1 số/1.0 s/mục tiêu.
- Thứ tự bỏ khi vượt trần: (1) phụ trên S → (2) thường trên S → (3) thường trên M+ → (4) chí mạng trên S. Không bao giờ bỏ: số hero nhận, hồi phục, số trên L/XL, chí mạng trên M+.
- Cài đặt: Tắt / Chỉ chí mạng + boss / Đầy đủ (mặc định).
- Callout: 1 cái/lúc, hàng đợi ≤ 2; callout mới cùng ưu tiên thay cái cũ.
9I-frame, giáp, ngắt, ưu tiên cùng tick
7.1 Nguồn bất tử của hero (INVULN)
| Nguồn | Thời lượng | Ghi chú |
|---|---|---|
| Lướt | 0.20 s từ frame 0 (12 tick) | mọi Y/P/N/đạn; vùng N không tick trong i-frame; nguồn duy nhất cho Né Hoàn Hảo |
| Sau khi trúng đòn | 0.60 s (36 tick) | không có Né Hoàn Hảo |
| Ult UL1/UL2 | toàn clip (H01_UL1 2.2 s) | bắt buộc (INV-11: clip khoá ĐÁP/Lướt) |
| Ult UL3 (biến hình 8–10 s) | 0.5 s clip kích (30 tick) | sau 0.5 s hero KHÔNG bất tử; trong dạng ĐÁP/verb giữ/Lướt chạy hợp đồng thường (doc 12 Q4) |
| Cửa sổ không trung | theo đòn (H01_SK02 0.36 s · H03 Nhảy Sào 0.35 s) | AIRBORNE §1.5 |
| Lao của Phản | lao ≤ 0.10 s + active | mọi hero có Phản lao |
| Draft | lúc mở + 0.5 s sau khi chọn | Bible §6 |
| Bắt đầu phòng | 1.0 s [ASSUMED] | vừa vào phòng/sau cảnh |
| Lửa Gửi hồi sinh | 2.0 s [ASSUMED] | + sóng r120 (§8.3) |
- Bất tử = không nhận sát thương, trạng thái, đẩy; đòn vẫn hiện tell bình thường.
7.2 Hạng giáp (armor_tier)
| Hạng | Hero | Kẻ địch |
|---|---|---|
NONE | mặc định: Hurt + đẩy | quái S: khựng §4.2 |
FIRM (Kiên) | miễn Hurt/đẩy từ đòn của quái S, vẫn nhận sát thương; đòn M+ gây Hurt (vd H02 Xoay Quan, nạp đòn H02) | — |
HYPER (Siêu giáp) | miễn Hurt/đẩy từ mọi đòn Y/N, vẫn nhận sát thương; P vẫn trúng đủ + Vỡ Thế (vd H11 Cắm Xẻng, H08 Tì Báng trước 120°) | windup đòn chữ ký boss có cờ hyper: Thế mất ×0.5, không bị choáng/tước bởi ĐÁP |
POISE | — | M/L/XL: không khựng, mất Thế §4.1 |
INVULN | §7.1 | chuyển pha boss, quỳ BS_B1 P2/P3, ấn spawn 0.6 s và xoáy triệu hồi 1.0 s (INV-14: chưa có hurtbox) |
- Luật INV-11: trạng thái hero nào chặn ĐÁP hoặc Lướt phải là
INVULN; mọi trạng tháiFIRM/HYPER/verb giữ phải huỷ được bằng chạm ĐÁP hoặc Lướt.
7.3 Ngắt hành động hero
| Đang ở | Lướt huỷ | ĐÁP huỷ | Kỹ năng/Ult huỷ | Đánh huỷ |
|---|---|---|---|---|
| Đánh: startup / active / recovery | có / có / có | có / có / có | sau 60% recovery | combo nối ở recovery |
| Kỹ năng: startup / active / recovery | có (startup: hoàn hồi chiêu) / có / có | có / có / có | sau 60% recovery | sau 60% recovery |
| Verb giữ | có | có (thả RB rồi chạm lại) | có | có |
| Hurt | sau 7 tick | sau 7 tick | không | không |
| Vỡ Thế hero (0.9 s) | KHÔNG | KHÔNG | không | không |
Cửa sổ INVULN khoá (clip UL1/UL2, 0.5 s kích UL3, không trung) | không | không | không | không |
| Dạng UL3 (sau 0.5 s kích) | như hàng Đánh/Kỹ năng tương ứng | như hàng Đánh/Kỹ năng tương ứng | sau 60% recovery (Ult: không, Dư Âm không nạp) | combo nối ở recovery |
| Khống chế tím của boss | không | không | không | không |
- Đây là cách đọc INV-06 + INV-11 trong code: Lướt và ĐÁP huỷ mọi trạng thái trừ Vỡ Thế, 0.12 s đầu Hurt, khống chế tím của boss, chết, và cửa sổ bất tử khoá (INV-11 cho phép vì đã bất tử).
- Lướt → Lướt thứ 2 sau 0.10 s (6 tick); hậu Lướt 0.05 s (3 tick). Di chuyển huỷ recovery sau 60% (
move_cancel_frac). - Buffer 0.15 s (INV-07): input bấm trong trạng thái chưa huỷ được lưu 9 tick; ở tick đầu huỷ được, chạy input ưu tiên cao nhất trong buffer; giữ thêm Đánh để nối combo, bỏ phần còn lại.
7.4 Phân giải 1 đòn địch chạm hero (thứ tự cố định)
1 hero INVULN (clip UL1/UL2, 0.5 s kích UL3, không trung, draft, đầu phòng, hồi sinh, lao Phản) → Immune
2 hero trong i-frame Lướt → Dodged
+ Lướt bắt đầu ≤ 9 tick trước tick va chạm và hồi Né Hoàn Hảo đã sẵn (1.0 s) → PerfectDodge
3 hero trong i-frame trúng đòn → Immune
4 đòn Y và cửa sổ ĐÁP đang mở → Answered (`11-Defense-Tells` §2)
5 đòn Y/N và verb giữ đang che theo hình của nó → Blocked / Reduced (`11-Defense-Tells` §3)
6 đòn P và hero đang ở verb giữ che thân (H01, H05, H06, H08, H11) → Hit đủ + Vỡ Thế 0.9 s
7 còn lại → Hit (Hurt §4.2)
- Nhiều đòn cùng tick: xử theo thứ tự tạo đòn;
Hitđầu tiên bật i-frame trúng đòn → các đòn sau cùng tick =Immune(tối đa 1 lần mất máu/tick).Answered/Dodgedkhông bật i-frame → 1 cửa sổ ĐÁP trả lời mọi đòn Y trong cửa sổ. - Hero vs địch cùng tick: hitbox hero phân giải trước (§1.1). Quái bị giết, Vỡ Thế, choáng, tước vũ khí ở tick này → đòn của nó ở tick này bị huỷ (đạn/vùng đã sinh trước đó vẫn bay/tồn tại).
- Input cùng tick (INV-07): Lướt > ĐÁP > Ult > Kỹ năng > Đánh.
10HP & hồi phục
8.1 Nguồn hồi phục (Bible §2.3; không tự hồi)
| Nguồn | Lượng | Trần / luật |
|---|---|---|
| Xong phòng chiến | +8% HP_MAX | — |
| Cầu máu | 12 HP; rơi 2%/quái S (MUT07 ×2) | ≤ 6 cầu trên sàn, tồn 20 s; hút theo PICKUP_R |
| Lên cấp | +3 HP_MAX + hồi 6% | — |
RST / DOCK / thưởng HEAL | 40% / 25% / 25% | — |
| Bình máu | 30% | §8.3 |
| Thắng boss Hồi | HP = max(HP, 60% HP_MAX) | — |
| Hồi theo cú trúng (Edge/Relic "hút máu") | theo dữ liệu | tổng ≤ 3% HP_MAX/s [ASSUMED] (bầy 250 quái không thành bất tử) |
- Mọi hồi phục ×
HEAL_MULT(MRN11 −20%/bậc). Hồi vượt HP_MAX mất, trừ Edge/Relic ghi rõ "đổi thành Khiên".
8.2 Khiên & HP đặc biệt
- Khiên (
shield_hp, từ Edge/Relic): hút sát thương trước HP; trầnSHIELD_CAP50% HP_MAX; sau 5 s không nhận thêm khiên → giảm 10%/s lượng hiện có [ASSUMED]; không chặn Vỡ Thế; HUD: đoạn bạc trắng nối sau thanh HP. - HP xám H06 (Bible canon): ở Chảy mỗi đòn đánh ra đổi 2 HP → HP xám; đòn trúng trong 3 s đổi lại; mất khi Tôi hoặc sau 3 s; mất ≤ 4 HP/s; không kéo HP dưới 1. HP xám không hút sát thương.
- Tường H02 (HP 80), Phường H12 (HP 40, mất sau 3 đòn): vật thể có HP riêng, không phải khiên; đòn địch chạm vào thì trừ, quái không chủ động nhắm.
8.3 Bình máu, chết, hồi sinh
- Bình máu: sức chứa 2 [ASSUMED]; đầu run 0 (+1 với nâng trạm Lửa Canh "+1 bình đầu run"); mua ở Sạp Rong 60 Vàng Mã (Bible). Dùng (d-pad xuống / 1): uống 0.40 s (24 tick), đi ×0.5, hồi 30% ở tick cuối; Lướt/ĐÁP huỷ → giữ bình, không hồi; không dùng khi Vỡ Thế/ult.
- Chết: HP ≤ 0 (sau §3.3 chống chết 1 đòn) → nếu còn Lửa Gửi (1/run; GD4 → 2; MRN06 → 0): anim 1.0 s bất tử → HP 35% HP_MAX, sóng r120 (
AREA3.0 × POWER, đẩy 60, M −30 Thế), xoá trạng thái, Thế đầy, i-frame 2.0 s. Hết Lửa Gửi → World ×0.3 trong 0.5 s → recap INV-16. - 1.0 không có nguồn hồi sinh nào khác ngoài Lửa Gửi.
11Ngắm & trợ ngắm
- Trợ ngắm chỉ đổi hướng (và quãng lao), không đổi sát thương/hitbox.
| Khoá | Cận chiến (H01–H06, H11) | Tầm xa/vùng (H07–H10, H12) |
|---|---|---|
| Mặc định | tay cầm BẬT · chuột TẮT | tay cầm BẬT · chuột nam châm nhẹ |
| Nón · tầm · xoay tối đa | 100° · 90 px · 35° | 20° · 260 px · 12° (chuột: 6°, chỉ M/L/XL) |
| Ưu tiên | M/L/XL đang windup > mục tiêu dấu Phản ✦ > gần nhất > quái tầm xa; hoà → góc nhỏ hơn | M/L/XL > gần nhất trong nón |
| Bước lao | mục tiêu cách 24–60 px → lao tới tối đa step_max của đòn | — |
- Thương Xót "tự ngắm": hướng tự khoá vào mục tiêu ưu tiên 360° trong 140 px (cận) / 300 px (xa); cần trái chỉ di chuyển.
- Khoá boss mềm: khi có L/XL trong vùng an toàn, nó luôn là ứng viên trợ ngắm nếu lệch ≤ 30° so với hướng nhập, tầm ×1.5. Tuỳ chọn Trợ năng "Khoá boss cứng" (mặc định tắt): bật → R3 / chuột giữa (remap được) bật/tắt khoá; khi khoá và không có input ngắm, hướng = boss.
- Địch luôn nhắm hero; không chủ động nhắm Phường/tường/triệu hồi (chỉ trúng khi hitbox chạm).
12Trần hiệu năng chiến đấu
📊 Trần (tuning.caps)
| Núm | Giá trị | Đơn vị | Ghi chú |
|---|---|---|---|
alive_max | 250 | quái | Bible §10.4 (demo max_alive 700 → 250) |
alive_max_deck | 180 | quái | preset máy cầm tay DECK (01 §5.1) |
hero_hitboxes_tick | 64 | hitbox | — |
hit_pairs_tick | 4000 | cặp | spatial hash ô 32 px |
hero_proj | 300 | đạn | — |
enemy_proj | 12 | đạn | ≤ 3 loạt nhắm hero (INV-08) |
hero_zones | 24 | vùng | — |
enemy_zones | 16 | vùng P + N | — |
dmg_numbers | 260 | số | 24 mới/tick |
status_instances | 1500 | instance | DoT 30 nhóm lệch pha |
vfx_hits_frame | 16 | VFX/khung | — |
vfx_deaths_frame | 12 | VFX/khung | — |
particles | 1500 | hạt | — |
active_sheets | 40 | sheet | — |
sfx_hits | 3/50 | SFX · ms | trúng ≤ 3/50 ms |
sfx_deaths | 4/100 | SFX · ms | chết ≤ 4/100 ms |
sfx_voices | 64 | voice | 64 voice thật; pool 48 one-shot; SFX tell không bao giờ bị cắt |
ai_full_tick_r | 200 | px | trong r200 mỗi frame, ngoài 10 Hz |
ai_far_hz | 10 | Hz | — |
dmg_log_seconds | 30 | s | ring buffer (INV-16) |
frame_p95_ms | 16.6 | ms | máy DECK, kịch bản MS01b |
corpses_anim | 80 | xác | thứ 81+ chỉ tan tro 0.2 s |
xp_shards_floor | 120 | shard | gộp vào shard gần nhất |
draft_luck | 5 | điểm | trần Vận |
reroll_run | 9 | lượt | — |
banish_run | 5 | lượt | — |
lock_run | 3 | lượt | — |
inc_soft | 1 | +100% | inc_eff = min(inc, 1.0) + max(0, inc − 1.0) × 0.5 |
inc_soft_over_mult | 0.5 | × | — |
more_dmg | 2.5 | × | Π MORE từ nâng cấp |
more_per_row | COMMON: 1, RARE: 1, EPIC: 1.25, RS2: 1.25, RELIC: 1.3, CURSED: 1.35, LINCHPIN: 1.4 | × | — |
icd_on_hit | 0.1 | s | ON_HIT · ON_CRIT mỗi (Edge, mục tiêu) |
on_kill_per_s | 8 | lần/s | mỗi Edge |
icd_on_status | 0.25 | s | — |
interval_min | 0.5 | s | INTERVAL |
res_gain_trigger_min_pct | 5 | % dải | ON_RESOURCE_GAIN |
cd_refund_per_s | 1 | s/s | hoàn hồi chiêu ≤ 1.0 s/s/kỹ năng |
cd_full_reset_gap | 5 | s | reset trọn ≤ 1 lần/5 s |
dash_refund_per_s | 1 | lượt/1.0 s | — |
ult_gain_trigger_per_s | 10 | Dư Âm/s | — |
ult_lock_after_s | 3 | s | khoá nạp sau ult |
ult_gap_s | 20 | s | khoảng giữa 2 ult ≥ 20 s |
res_range_raise_max | 50 | % | nâng trần dải tài nguyên ≤ +50% |
heal_per_room | 40 | % HP_MAX | hồi từ trigger ≤ 40%/phòng |
invuln_extend_max | 0.1 | s | — |
hero_proj_from_upgrades | 120 | đạn | — |
zones_from_upgrades | 24 | vùng | — |
summons | 8 | thực thể | H12 Phường ≤ 4 tính riêng |
blasts_per_frame | 16 | BLAST | trễ ≤ 3 frame |
linchpin_run | 2 | thẻ | — |
evo_run | 2 | thẻ | — |
economy_gold_per_act | 150 | Vàng Mã/Hồi | ECONOMY từ nâng cấp |
draft_bonus_run | reroll: 3, banish: 2, luck: 5 | lượt | DRAFT từ nâng cấp |
pi_end_p99 | 4.2 | PI | build tối ưu p99 |
| Khoá | Trần |
|---|---|
| Quái sống | 250 (preset Deck 180; Bible §10.4) |
| Hitbox hero hoạt động | 64/tick |
| Cặp thử trúng | 4.000/tick (spatial hash ô 32 px) |
| Mục tiêu/hitbox | 48 (ult 128) |
| Đạn hero · đạn địch | 300 · 12 (≤ 3 loạt nhắm hero, INV-08) |
| Vùng hero · vùng địch (P + N) | 24 · 16 |
| Số sát thương | 260 trên màn, 24 mới/tick |
| Instance trạng thái | 1.500; DoT 30 nhóm lệch pha |
| VFX | trúng ≤ 16/khung · chết quái ≤ 12/khung · hạt ≤ 1.500 · sheet hoạt động ≤ 40 |
| SFX | trúng ≤ 3/50 ms · chết ≤ 4/100 ms · Real Voices 64 (Virtual 256), p95 ≤ 56, pool 48 one-shot (doc 32 §5.3); SFX tell không bao giờ bị cắt (11-Defense-Tells) |
| AI | trong r200 mỗi frame, ngoài 10 Hz |
| Log sát thương | ring buffer 30 s (INV-16, Tro Nhớ) |
- Vượt trần → hạ theo thứ tự: số sát thương (§6.5) → VFX trúng S → hạt → SFX trúng. Không bao giờ hạ: tell Y/P/N, va chạm, sát thương, vòng chân hero, x-ray (INV-09).
- Kiểm: kịch bản MS01b (Bible §10.4) chạy với hero bất kỳ + 2 trạng thái DoT trên 200 quái: p95 ≤ 16.6 ms trên Steam Deck.
13Quy tắc cho dev/AI
- Mọi số chiến đấu đọc từ CSV (
combat_core.csv,hero_moves_<Hxx>.csv,enemy_attacks.csv); không hard-code; tick hoá theo §1.1. - Hitbox là hình trên mặt sàn, thử Minkowski với bán kính hurtbox; VFX = hình hitbox.
- Thẻ dùng "+x%" = bể cộng, "×y" = nhân riêng; không trộn.
- Không đòn/hiệu ứng nào gây sát thương va chạm thân (INV-04); không đòn địch nào trúng hero mà không có tell Y/P/N.
- Chỉ dùng 12 trạng thái ở §5; thêm trạng thái = mục
DEC-+ sửa Bible/JSON. - Khống chế lên L/XL luôn đổi thành Thế trừ số Bible ghi riêng.
- Trạng thái hero chặn ĐÁP/Lướt phải
INVULN; còn lại huỷ được bằng ĐÁP/Lướt. Ult: UL1/UL2 bất tử toàn clip, UL3 chỉ 0.5 s kích. - Co giãn quái đọc Chỉ số sức mạnh build theo phút CRV_power_index /
EHP_idxtheo (act, home_act); không dùng mũ cố định. ENDLESS: act = 5,endless_loopbắt đầu từ 1. - Không hạ tell/va chạm khi vượt trần hiệu năng.
- Mọi đòn ghi
dmg_kind,hit_class,shape,layers,poise_dmg,adaptive_source.
14Quyết định đã chốt
| Q | Quyết định | Lý do |
|---|---|---|
| Q1 Danh sách trạng thái | 2026-11-07 — 6 BUILD canon + 6 CONTROL mới (Choáng STS_STUN, Câm STS_MUTE, Mù STS_BLIND, Tước Khí STS_DISARM, Chậm STS_SLOW, Ghim STS_PIN); CONTROL không phải tag | Bible dùng choáng/câm/mù/tước/chậm/kẹt bằng lời, code cần id; không đổi số tag/SE/SRS |
| Q2 Loại sát thương | 2026-11-07 — dmg_kind = cách giao (MELEE/PROJ/AREA/ZONE/DOT/PURE), không hệ nguyên tố | Bible không có nguyên tố; trạng thái đã mang màu sắc lối chơi |
| Q3 Hurtbox hero | chung CIRCLE r 7 + hộp màn 7×26 | độ khó né không phụ thuộc dáng hero |
| Q4 Đổi giây → tick | cửa sổ có lợi người chơi = ceil; còn lại = round | ĐÁP 0.14 s sàn không bị làm tròn xuống 8 tick |
| Q5 Lực | POWER 10 mọi hero; lên cấp không tăng sát thương | Bible: cấp = +3 HP + draft; sức mạnh đến từ build |
| Q6 Co giãn quái ngoài Hồi gốc | 2026-11-07 — HP × PI(act)/PI(home_act), sát thương × EHP_idx(act)/EHP_idx(home_act) (bảng §2.4, doc 17 §1.2/§5.1); thay mũ cố định ×1.30/×1.15 | mũ cố định lệch đường cong soạn (Kết: quái B1 −13% HP, B4 +14%) → độ khó Kết phụ thuộc biome roll; 1 công thức cho B5 trộn, ENDLESS |
| Q9 ENDLESS act/vòng | 2026-11-07 — tầng n: act = 5 cho HP/DMG/XP/rarity/B_room; endless_loop = floor((n − 1)/4) + 1 [ASSUMED] | người chơi vào ENDLESS sau Hồi IV với PI ≈ 3.29 = PI Kết; act = home_act (hệ số 1) làm quái B1 chết 1/3 cú; vòng 1 đã ×1.12 khớp doc 17 VD-E6 (vòng 3 ×1.36) |
| Q10 Bất tử Ult | 2026-11-07 — UL1/UL2 bất tử toàn clip; UL3 chỉ 0.5 s kích, dạng 8–10 s giữ hợp đồng ĐÁP/Lướt | khớp doc 12 Q4; bất tử 10 s phá P3, INV-11 chỉ đòi bất tử khi khoá ĐÁP/Lướt |
Q11 power_curve | 2026-11-07 — = PI lúc VÀO Hồi (cuối Hồi trước; Hồi I = đầu run) | khớp doc 17 Q2 / Chỉ số sức mạnh build theo phút CRV_power_index |
| Q7 Đọc INV-06/INV-11 | Lướt/ĐÁP huỷ mọi trạng thái trừ Vỡ Thế, 7 tick đầu Hurt, khống chế tím boss, chết, cửa sổ bất tử khoá | khớp FSM demo + INV-11 (khoá chỉ khi bất tử) |
| Q8 Chống chết 1 đòn | HP ≥ 90% → giữ 1 HP, 1 lần/10 s, tắt ở Độ Tang ≥ 16 [ASSUMED] | P3 "ít đòn nguy hiểm"; Khăn Tang cao vẫn khắc nghiệt |
| Q9 Ngân sách hitstop/làm chậm | hitstop hero ≤ 0.20 s/1 s; làm chậm toàn cục ≤ 0.60 s/2 s | P1 tốc độ trong bầy 250 quái |
| Q10 Khoá boss | mềm mặc định; cứng là tuỳ chọn R3/chuột giữa | §1.1 Bible không có nút khoá; không thêm nút bắt buộc |
| Q11 Chí mạng | chớp trắng + số ngà "!" | INV-01a: dải vàng chỉ cho tell |