import type { WorldSpawn } from "./dungeonTypes"; export function derivePartySpawnSlots(spawn: WorldSpawn, partySize = 5): readonly WorldSpawn[] { const size = Math.max(1, Math.min(5, Math.trunc(partySize))); const offsets = [ [0, 0], [-1.65, -1.8], [1.65, -1.8], [-3.05, -3.5], [3.05, -3.5], ] as const; const sin = Math.sin(spawn.yaw); const cos = Math.cos(spawn.yaw); return Object.freeze(offsets.slice(0, size).map(([lateral, forward]) => ({ footPosition: [ spawn.footPosition[0] + lateral * cos + forward * sin, spawn.footPosition[1], spawn.footPosition[2] - lateral * sin + forward * cos, ] as const, yaw: spawn.yaw, }))); }