The player joins the pair: his stride is frames 5+6, hers is 1+2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-14 15:20:22 +02:00
1 parent f62c7ff0ff
commit 11d074f2e4
2 files changed
+8 -3

No files matched your search

+1 -1
View File
@@ -494,6 +494,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') {
</div>
</div>
</div>
<script type="module" src="src/main.js?v=249"></script>
<script type="module" src="src/main.js?v=250"></script>
</body>
</html>
+7 -2
View File
@@ -1489,11 +1489,16 @@ function drawChar(ch) {
// (one call, one row, one character — see assets/_runroll.py for why the old per-frame art
// flickered); un-rolled characters fall back to 4 or 2.
// TUNE.runN: live override for the bench's tuning sessions (0 = probe the sheet as always)
const runN = TUNE.runN || (SPR[pre + 'run8'] ? 8 : SPR[pre + 'run6'] ? 6 : SPR[pre + 'run4'] ? 4 : 2);
const runN = TUNE.runN || (pre === 'p_' ? 2 : SPR[pre + 'run8'] ? 8 : SPR[pre + 'run6'] ? 6 : SPR[pre + 'run4'] ? 4 : 2);
// The rolled 6/8-frame cycles run at their own STRIDE RATE (TUNE.runHz, cycles/s). The old 4.5
// was tuned on 2-4 near-duplicate frames, where it read as vigour — on eight real phases it was
// a strobe ("very flashy and unnatural"), most of a full stride every display frame.
if (ch.pose === 'run') name = pre + 'run' + (Math.floor(ch.runT * (runN >= 6 ? TUNE.runHz : TUNE.runHz2) * runN) % runN + 1);
// The PLAYER runs a two-frame pair like the opponents now, cut from his rolled sheet by eye:
// the man's true leg-swap is frames 5+6, the woman's is 1+2. The offset only applies when the
// pair is running — TUNE.runN = 6 on the bench still reviews the full roll from frame 1.
const runOfs = pre === 'p_' && runN === 2
&& !(G.bench && G.bench.char != null ? G.bench.char === 'of' : tour.sfx === '_f') ? 4 : 0;
if (ch.pose === 'run') name = pre + 'run' + (Math.floor(ch.runT * (runN >= 6 ? TUNE.runHz : TUNE.runHz2) * runN) % runN + 1 + runOfs);
// (the receiver used to flip to run1/run2 here as a "split-step" — it read as a man sprinting on
// the spot, because the run frames are a full leaning stride, not a ready-hop. He idles now.)
if (ch.pose === 'swing') name = pre + (ch.poseT < 0.15 ? 'swing1' : 'swing2');