<!-- NEW7 — TEST 7 · THE WOVEN CITY · part 450 -->
h > best) best = h; } return best; };
  let waterKm = 0; for (const r of MAP.water.rivers) { for (let i = 0; i < r.pts.length - 1; i++) waterKm += Math.hypot(r.pts[i + 1][0] - r.pts[i][0], r.pts[i + 1][1] - r.pts[i][1]); }
  waterKm = Math.round(waterKm / 100) / 10;
  return { group, meta: { name: MAP.name, sub: MAP.sub, size: MAP.size, buildings, decks, deckAt, inWater, counts, regions: MAP.regions.map(r => ({ name: r.name, kind: r.kind, x: r.x, z: r.z })), waterKm, spawn: MAP.spawn, busStops: MAP.busStops || [], weave: MAP.weave || null } };
}


