Docs: DR-030 MC-4 combo melee (primary verb) + session log; Path_to_Fun MC-1 passed / MC-4
MC-1 fun-gate PASSED (kill-switch cleared); MC-4 built as the combo-chain melee primary-verb variant, both adversarial reviews folded in. Roadmap MC-1/MC-4 status updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,8 @@ Depth = a **dialogue**. Enemies ask distinct, readable questions (a committed lu
|
||||
- **Dependencies:** none. **Kill-risk:** none — but skipping it makes every downstream gate a debate instead of a glance.
|
||||
|
||||
### MC-1 — Fight in a Box: the dash + the question it answers `~2.5–3.5 wk` · risk MEDIUM–HIGH · **review-gated**
|
||||
> **Status (2026-06-10):** ✅ **FUN-GATE PASSED** — the dash duel is fun (operator: *"it's fun, the dash feels fine"*); the project kill-switch is CLEARED, the combat thesis holds. Code [[2026-06-09_MC1_Implementation]]; gate passed [[2026-06-10_MC4_Combo_Melee]].
|
||||
|
||||
**Goal:** turn stand-and-click into a bait-and-punish **duel** — a snappy i-frame dash answering ONE **Charger**'s readable, committed, whiff-punishable lunge. This is the genuinely-smallest fun slice. *(The Swarmer moves to MC-2; it answers a different question — see [Boundary judgment](#boundary-judgment-re-cut-mc-1-default-order-mc-4-early).)*
|
||||
|
||||
> **This is 3–4 distinct risky slices, not one** ([secretly-multi](#secretly-multi-milestones-why-the-estimates-widened)): a new predicted `DashSystem` + replication; a Burst-affecting `CharacterProcessor` edit with its own restart/validate cycle; the `DamageEvent.SourceTick` refactor across THREE stamp sites + the negation branch; and a new Charger brain (lunge/stagger/whiff-detection) + telegraph tuning + dash juice. Each needs its own focused-editor Play-validation — hence the widened estimate.
|
||||
@@ -121,6 +123,8 @@ Depth = a **dialogue**. Enemies ask distinct, readable questions (a committed lu
|
||||
**Dependencies:** MC-0 (so the bench is measurable). **Kill-risk:** the dash doesn't FEEL like a blink (the sharpness override is make-or-break) OR the telegraph is unreadable under latency OR the i-frame negation mis-aligns across the group boundary and reads as "flaky/cheap" — any one collapses the duel into spam/RNG and nothing downstream matters. **MC-1 is the kill-switch for the whole project**: if its gate fails after a real tuning pass, STOP and re-cut combat — do not build on an unfun core.
|
||||
|
||||
### MC-4 — Offense gets a verb: ability ARCHETYPE byte + melee cone `~0.75–1 wk` · risk LOW
|
||||
> **Status (2026-06-10):** 🔨 **CODE-COMPLETE + reviewed** — built as the **combo-chain** variant with melee as the **PRIMARY** verb (left-click/pad-West; ranged demoted to right-click/pad-LT), per the operator's forks. Predicted-replicated combo `Step`, server-only cleave, 9 live `TuningConfig` knobs. 294/294 EditMode green, Play-validated (no cycle, re-bake server==client). The **archetype byte is DEFERRED to MC-6** (the melee is its own verb, not an ability dispatch). The MC-4 **fun-gate** is the open operator item. See [[2026-06-10_MC4_Combo_Melee]] · [[DR-030_MC4_Combo_Melee_Primary_Verb]].
|
||||
|
||||
**Goal:** stop offense being "auto-aim and hold." A byte-dispatched ability archetype with an instant short-range **melee cleave** that makes attacking a *positioning* decision (dash-in → cleave → dash-out). **Runs second, right after MC-1** — verified-low-risk and kills the second-most-felt hollowness; see [Boundary judgment](#boundary-judgment-re-cut-mc-1-default-order-mc-4-early). *(Also the de-risking spike for MC-6's archetype dispatch.)*
|
||||
- **Archetype byte** on `AbilityDefBlob`/`EffectiveAbilityStats` (Projectile=0 keeps today's path) + a `switch` in `AbilityFireSystem` (stored as **byte** per the Burst cross-assembly enum rule; baked, no replication).
|
||||
- **MeleeCone / cleave (byte=2):** server-side select all living enemies in a cone around `PlayerFacing.Direction` (**reuse `AutoTarget.Resolve`'s `dot` vs `cos(halfAngle)` cone math as a collect-all selector**), append `DamageEvent` (`SourceTick`-stamped) + `KnockbackState`. Instant, short-range, higher per-hit. No new ghost, pure server damage. `PlayerFacing.Direction` is already a replicated `[GhostField] float2`.
|
||||
|
||||
Reference in New Issue
Block a user