feat: implement force-resend (Option D, gated off) — live per-client spoof application
Hooks the serializer singleton's WriteFields virtual (vtable slot 14 / +0x70) — the path-agnostic consumer of the delta field-index list — and, for a hooked entity, sorted-inserts the hooked field's flattened-leaf index into that CUtlVector<int> so the field gets encoded and the value-substitution hook fakes it live (no full update, no real-value change). Cross-platform (serializer global resolved from gamedata, slot index identical Linux/Windows). - ForceResend.cs: IVirtualHook slot 14; gated Enabled (off by default, hook installed lazily on first enable so the validated path is untouched); leaf-index cache built from the serializer record walk (NoteSerializer, called from WflShim only while enabled); CUtlVector<int> sorted-insert with a capacity guard (no engine-allocator growth — skips if the list is full, counted). - ISendProxyManager.SetForceResend(bool); SendProxyManager wires it; sp_forceresend <0|1> example command; SerializerSingleton global resolved in ResolveNativeTargets. RE-confirmed mechanism (docs/FORCE_RESEND.md); only the flattened-leaf index numbering is by-construction (DFS) — verify on first enable. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
P
Prefix committed
cfe94d76e7da191061ea93f6708126d63ee8f1e1
Parent: c8ff1a1