- BT_SELF_DAMAGE_ZONE=leg resolves the mech's actual leg zone via the
streamed LegDamageZone flags (new Mech__DamageZone::IsLegZone) -- numeric
zone ids are per-mech-type and a wrong one aims at a vital (killed the
limp bench's mech instead of gimping it: 2 ticks, death cycle, respawn
healed, harness spent -- 3 minutes of healthy circling).
- BT_GOTO=gimp: beeline mode that prefers the nearest LIMPING peer (gimp
half-states 3/4 ride the one-cell in every update record); stands and
waits while nobody limps. BT_GOTO_RELEASE=1 hands the mech back to the
keyboard once the beeline arrives.
- MP.EGG/MP4.EGG/MP4L.EGG: color=Red and color=Blue are PATCH values, not
colors (RES vehicletable colors: Black/Brown/Crimson/Green/Grey/Tan/
White) -- the two pilots carrying them rendered as untextured pastel
mechs. Boreas Red->Crimson, Caicias Blue->Grey. MP4L.EGG = the 4-pilot
bench egg on the open grass map.
4-node limp verification (user-eyeballed, all instances): the gimped mech
step-drags with the authentic limp on every observer -- no skating (#82
holds in the 4-node overlap case).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four simultaneous networked nodes, all dying every ~35s on staggered timers so
respawn handshakes overlap (the field condition that stranded 6 of 8 cycles):
56 cycles, every completed one START->RESET, 0 swallowed / 0 mismatch /
0 discarded / 0 ghost / 0 crash. Scoreboard: every node's PLAYER_DEAD rows
show deaths=N tally=N in lockstep (13/13/15/15) -- exactly one increment per
death, so removing the duplicate VehicleDead dispatch did not drop the DEATHS
column and the latch release did not double it. The kill-credit path evaluated
all 56 deaths and correctly declined each self-kill (NOCREDIT self=1); KILLS
uses the separate ScoreMessage path the fix never touched.
content/MP4.EGG: the 4-pilot bench egg (ports 1502/1602/1702/1802, novice).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4 pods, relay-assigned seats, 4-pilot MP4.EGG (eggmodel-generated incl.
callsign bitmaps): 4 distinct seats, full ladder, every node replicates
all 3 foreign mechs (host-qualified [repl] sets are exact complements),
4 distinct spawn positions (no dropzone stacking), UDP at 4-pod fan-out
(relay tx=3x rx, zero drops), all pods alive through the session.
Per-host [net-rx] census symmetric: 36 NewDynamicEntity makes (mech +
subsystem roster) from every host to every node.
DIAGNOSTIC TRAP that cost a false bug-hunt: EntityID::operator int()
returns localID ONLY, so the [repl] log's (long)GetEntityID() collapsed
different hosts' mechs onto one number and read as 'missing
replicants'. The log now streams the EntityID object (host:local via
its operator<<).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>