import type { NpcKind } from './constants.js'; /** * Area transitions: the cover a player sees while the client builds a place * a teleport has just dropped them into. * * Walking is invisible work - chunks stream in one at a time and the prop * queue drains a couple of milliseconds a frame. A teleport is not: the whole * view swaps at once, so the client has twenty-five chunks of terrain to * build, a few hundred props to spawn and, for a creature area, a model to * fetch and parse, all in the first second. Uncovered, entering the Spider * Cave measured as four seconds of continuous stutter (22 long tasks, the * worst 414 ms) with spiders already biting. Covered, the client does the * same work flat out behind a screen and lifts it when everything stands. * * The server sends `area_transition` with one of these ids immediately * before the chunk data for the destination. Everything else is client-side; * see dreadwoods-frontend/AREA_TRANSITIONS.md for how to add one. */ export type AreaTransitionId = 'mine-cave' | 'mine-cave-out' | 'sea-cave' | 'sea-cave-out' | 'spider-cave' | 'spider-cave-out' | 'ice-prison' | 'ice-prison-out' | 'ice-depths-rune' | 'ice-depths-hollow' | 'ice-depths-ritual' | 'ice-depths-lab' | 'ice-depths-core' | 'ice-depths-hub' | 'voyage-hope-beach' | 'voyage-frozen-shore' | 'voyage-capital-harbour' | 'voyage-smugglers-isle' | 'rat-tunnel' | 'rat-tunnel-out' | 'goblin-cave' | 'goblin-cave-out' | 'forest-den' | 'forest-den-out' | 'wolf-den' | 'wolf-den-out' | 'world-event' | 'world-event-out' | 'deep-sea-out' | 'deep-sea-back' | 'cart-ride' | 'arrival' | 'admin-teleport' | 'arcane-lands' | 'western-line' | 'western-kingdoms' | 'western-kingdoms-train' | 'forge-halt' | 'forge-halt-out' | 'ridge-cellar' | 'ridge-cellar-out' | 'crescent-queen' | 'crescent-queen-out' | 'ship-below' | 'ship-deck' | 'ship-shore' | 'tide-tunnel' | 'tide-tunnel-out' | 'saltmark-cave' | 'saltmark-cave-out' | 'bay-cove' | 'bay-cove-out' | 'west-coast-ferry' | 'west-coast-ferry-out' | 'last-signal-ferry' | 'last-signal-ferry-out'; /** * A teleport that moves a player at least this many tiles always gets a cover: past it the client holds little or * nothing of the destination (chunks are 32 tiles and stream two rings out), so the whole view swaps at once. * A teleport with no AreaTransitionId of its own gets 'arrival' (backend teleportPlayer); short hops (a gate, a * pier break, a bridge) stay uncovered. */ export declare const FAR_TELEPORT_TILES = 40; export type AreaTransition = { /** The big line on the cover: the place you are arriving at. */ title: string; /** The small line under it. Flavour, not status - the cover is brief. */ line: string; /** * Creature kinds whose imported models are fetched and parsed before the * cover lifts, so the first one you meet is the real model and not a * procedural stand-in that pops into it mid-fight. Kinds with no imported * model are ignored. */ creatures: readonly NpcKind[]; /** * A title card instead of the game's emblem: the cover shows this glyph over the title (the Western Kingdoms' arrival * by train shows a small flat train). Absent: the usual emblem. */ card?: 'train'; /** * The least time the cover stays up (ms), when it should be longer than the client's usual minimum so its title is * read (a title card). Absent: the client's AREA_TRANSITION_MIN_MS. */ minMs?: number; }; export declare const AREA_TRANSITIONS: Record; //# sourceMappingURL=areaTransitions.d.ts.map