diff options
Diffstat (limited to 'server.mjs')
| -rw-r--r-- | server.mjs | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -119,6 +119,7 @@ async function load() { const chosen = own.slice(0, 4) while (chosen.length < 4) chosen.push(library) const used = new Map() + const usedNext = new Set() const list = [] for (let i = 0; i < 4; i++) { const p = chosen[i] @@ -129,11 +130,18 @@ async function load() { const start = (idx + 1 + step) % cyc.length const walk = [] for (let k = 0; k < 60 && walk.length < cyc.length; k++) walk.push(cyc[(start + k) % cyc.length]) + let nextId = cyc[start] + for (const wid of walk) { + if (wid !== pid && !usedNext.has(wid)) { nextId = wid; break } + } + usedNext.add(nextId) + const wi = walk.indexOf(nextId) + const rot = wi > 0 ? walk.slice(wi).concat(walk.slice(0, wi)) : walk list.push({ dir: DIRS[i], path: { type: p.type, name: p.name, count: p.count }, - nextId: cyc[start], - walk, + nextId, + walk: rot, }) } exits.set(pid, list) |
