The match plays fair: deeper pool, no regicide, serves from the line
"the player is too weak in this mode. also the killing by smashing occurs too often. i cant really control it. maybe obsolete? also the serving after the first serve does not happen from behind the groundline". matchPlayerHp 8 — the match brings its own pool. The gore mode's 4 was an inheritance, not a decision, and a real game has rallies you deserve to lose without the run ending. Regicide is out of the match (kept in the duel, where any-weapon-counts is the point of sudden death). In a full game every hard serve that happened to meet the body was a free kill nobody aimed. A match ball never damages the opponent — it passes through like a soft ball and racketAI plays it — so the wound stages are exactly the scoreboard. That also made hp-per-opponent meaningless, so the ladder escalates in racketAI instead: +12% speed per body felled, whiff chance x0.82 per rung. And serving resets to behind the baseline with real deuce/ad mirroring: setupPoint's "serve from wherever you're standing" branch now excludes the match, which falls through to the tennis positioning. Verified live: second serve from z 24.3, x mirrored to the ad side, opponent unwounded by anything but the score. 38 tests, 15 seeds clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0620e97d6c
commit
ea6e50f8f8
8 files changed
+73
-17
No files matched your search
+7
-1
@@ -1139,7 +1139,13 @@ export function updateZombies(dt) {
|
||||
continue;
|
||||
}
|
||||
if (isBoss(zb)) { // boss: splat-quality wounds it; soft balls the racket one rallies (racketAI)
|
||||
if ((ball.pow || 0) >= TUNE.zSplatQ) {
|
||||
// NOT IN THE MATCH. Regicide made sense in the duel (one sudden-death point, any weapon
|
||||
// counts) but in a full game every hard serve that happened to meet the body was a free
|
||||
// kill nobody aimed — Oliver: "the killing by smashing occurs too often. i cant really
|
||||
// control it". A match ball NEVER damages the opponent; it passes through like any soft
|
||||
// ball and racketAI plays it. The score is the only way through — which also makes the
|
||||
// wound stages exactly the scoreboard, with no side-channel smearing them.
|
||||
if ((ball.pow || 0) >= TUNE.zSplatQ && !G.match) {
|
||||
zb.hitT = TUNE.bossHitCool; // belt-and-braces: this ball is spent below, but the cooldown
|
||||
const dead = wound(zb, TUNE.dmgBall); // is what stops ANY lingering contact multi-wounding
|
||||
pock(0.6, 300);
|
||||
|
||||
Reference in new issue
Block a user