LANTERN P1 Group B: Blink Spark (Movement archetype) + BlinkSystem

Per Phase1_Combat_Gym_Build_Spec §6 (the Blink Spark = a second, socketed dash):
- AbilityArchetype += Movement (falls through AbilityFireSystem; a sibling system drives it).
- AbilityId += the 5 Phase-1 Sparks (DecoyWisp/HookPull/Vortex/Blink/LightZone).
- BlinkState: predicted, non-replicated blink window (DashState sibling).
- BlinkSystem: velocity blink (never a LocalTransform write), triggered by the Movement-
  archetype socket, dash-wins precedence ([UpdateAfter(DashSystem)]), sole writer of its
  socket's SocketCooldown row; reads socket loadout/cooldown by entity via lookups (query at 6
  args, under the 7-cap). Baked BlinkState on the player.
L1 clean; L2 494/494. Dead until a Blink Spark def is socketed (ability-database SO = next).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 11:45:06 -07:00
parent 89a0fc739a
commit 52818d0dd6
7 changed files with 171 additions and 0 deletions
@@ -8,6 +8,12 @@ namespace ProjectM.Simulation
FastLight = 2,
SlowHeavy = 3,
WarriorCone = 4, // Slice 2: the Warrior's aim-directed short-range cone secondary (Fire slot)
// LANTERN Phase 1 Sparks (the gym's first socketables):
DecoyWisp = 5, // Aoe/spawn: a decoy ghost that draws aggro
HookPull = 6, // Projectile + pull: the Harpooner reel (yanks the hit target in)
Vortex = 7, // Aoe/zone: a timed pulling/slowing area
Blink = 8, // Movement: a second dash (BlinkSystem)
LightZone = 9, // Aoe/zone: a persistent light/damage zone
}
/// <summary>Stable key for an authored character-stats definition in the AbilityDatabase blob.</summary>