Issue #38 (partial): egg camo-color validation + paint forensics
Respawn-paint investigation: 10 forced respawns on the i22 rig showed paint STABLE across in-place respawns on both master and replicant -- the in-place reset does NOT repaint. Two real findings landed: 1. 'Red' is NOT a camo color (the vehicle table authors Crimson=red for camo; Red exists only as a PATCH color) -- an egg with color=Red paints the mech silent gray from first spawn (the engine tolerates the table miss by design). The relay now WARNS at egg load on any color= outside the camo set; our MPSHORT test egg had exactly this bug (fixed). 2. [paint] log now carries the entity id, so the one-time-observed nondeterministic video-model rebuilds (sernos 2-5 with swapped colors, run 1 only) will be attributable when they recur. The reported color/style change on respawn remains unreproduced in the deterministic rig -- needs the observer detail (whose mech, which view) from the next field sighting. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3d8bfdeba6
commit
ac7f0cb13a
@@ -235,6 +235,12 @@ VEHICLE_TAGS = {"blkhawk", "loki", "bhk1", "madcat", "thor", "owens",
|
||||
MATCHLOG_CAP = 8 * 1024 * 1024 # matchlog upload frame cap (client caps at 8MB)
|
||||
SEAT_RESERVE_SECONDS = 60.0
|
||||
ABORT_SETTLE_SECONDS = 8.0 # issue #33: egg-release hold after a round abort
|
||||
|
||||
# issue #38: the vehicle table's CAMO colors (a color= outside this set
|
||||
# paints the mech silent-gray -- 'Red' is a PATCH color, the camo is
|
||||
# 'Crimson'; caught live when a test egg authored color=Red).
|
||||
VALID_CAMO_COLORS = {"Black", "Brown", "Crimson", "Green", "Grey", "Tan",
|
||||
"White"}
|
||||
HELLO_MAGIC = 0x31525442 # 'BTR1' little-endian
|
||||
FRAME_CAP = 1600 # NETWORKMANAGER_BUFFER_SIZE (NETWORK.h:89)
|
||||
FIRST_GAME_HOST_ID = 2 # FirstLegalHostID(1) == the console; pods 2..N+1
|
||||
@@ -262,6 +268,17 @@ def parse_egg_roster(egg_path):
|
||||
continue
|
||||
if in_pilots and line.lower().startswith(b"pilot="):
|
||||
entries.append(line.split(b"=", 1)[1].decode("ascii", "replace"))
|
||||
# issue #38: an unknown camo color paints the mech SILENT GRAY (the
|
||||
# engine tolerates the vehicle-table miss by design) -- warn the
|
||||
# operator at load instead of letting a hand-edited egg ship it.
|
||||
for raw in open(egg_path, "rb").read().replace(b"\r\n", b"\n").split(b"\n"):
|
||||
line = raw.strip()
|
||||
if line.lower().startswith(b"color="):
|
||||
color = line.split(b"=", 1)[1].decode("ascii", "replace").strip()
|
||||
if color and color not in VALID_CAMO_COLORS:
|
||||
print(f"[relay] WARNING: egg color={color!r} is not a camo "
|
||||
f"color (valid: {sorted(VALID_CAMO_COLORS)}) -- that "
|
||||
f"mech will paint GRAY", flush=True)
|
||||
return entries
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user