namespace SVSim.BattleNode.Lifecycle; /// /// Default frame constants templated from TK2 prod captures, shared by the /// server-authored battle-frame builders. Every value here originated in a real prod /// frame in data_dumps/captures/battle-traffic_tk2_regular.ndjson; pulling them /// out of makes the magic numerics navigable. The shared effect /// seed and the deck-shuffle/idxChangeSeed are now derived per-battle from a master seed (see /// ) — only animation/UI constants remain here. /// internal static class BattleFrameDefaults { // From frame[5] (BattleStart). Hardcoded; see spec §Deferred plumbing — sourcing these // from real per-viewer state needs a TK2 rank/battle-point tracker. public const string PlayerRank = "10"; public const string PlayerBattlePoint = "6270"; // From frame[8] (Ready). Provenance is "what prod sent"; the client doesn't validate. This is // an animation crank value (shared-RNG spin), NOT gameplay randomness — both clients crank it // identically and stay synced, so it stays a constant. See the spin-rng audit. public const int ReadySpin = 243; /// /// Server-pushed Judge frame spin value. Prod varies per push (55, 175, 73, ...) — it's /// an animation seed, not a stateful value. Fixed at 100 here for test stability; /// the client's JudgeOperation doesn't read it. /// public const int OpponentJudgeSpin = 100; /// Spin value the PvP relay stamps on the Judge / OpponentTurnStart handover frames /// in the deterministic-turn slice. 0 = no animation seed; per-turn spin is deferred /// (see the real-spin design). The client self-generates its turn-open and doesn't read it. public const int DeterministicTurnSpin = 0; }