LANTERN P1 step 6: manual-aim windups (SoD readable telegraphs)
AbilityDefBlob/AbilityDefinition gain WindupTicks. AbilityFireSystem's socket loop resolves each socket at the historical command (serverTick - WindupTicks) via GetDataAtTick — a pure fn of replicated data on both worlds (Build Spec §4/ DB-6: no local fireAtTick that would diverge under reprediction; fireCount from that command, spawn uses the current tick's aim/pos; history gap = no-fire). WindupTicks set on the 4 non-Blink Sparks (Blink is movement, resolved by BlinkSystem). 497 EditMode green (no regression). Client telegraph VFX + the reprediction L3 test are operator-eyes / netcode-world follow-ups. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -52,6 +52,7 @@ namespace ProjectM.Authoring
|
||||
CooldownTicks = def.CooldownTicks,
|
||||
EffectFlags = (byte)(def.Reel ? ProjectileEffectFlag.Reel : (byte)0),
|
||||
DurationTicks = def.EffectDurationTicks,
|
||||
WindupTicks = def.WindupTicks,
|
||||
Name = def.DisplayName,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,6 +33,9 @@ namespace ProjectM.Authoring
|
||||
public bool Reel = false;
|
||||
[Min(0), Tooltip("Aoe/zone + decoy lifetime in ticks (0 = system default).")]
|
||||
public int EffectDurationTicks = 0;
|
||||
[Header("Manual-aim windup")]
|
||||
[Min(0), Tooltip("Telegraph delay (ticks, ~60/s) before the ability resolves. 0 = instant. The SoD 'readable windup'.")]
|
||||
public int WindupTicks = 0;
|
||||
|
||||
[Header("Prefab (baked into the prefab buffer, not the blob)")]
|
||||
public GameObject ProjectilePrefab;
|
||||
|
||||
Reference in New Issue
Block a user