import type { AreaTransitionId } from './areaTransitions.js'; import type { QuestId, QuestsSnapshot } from './quests.js'; /** * SEA TRAVEL * * Branson keeps the ship moored at the end of the Long Pier's east branch and * sails players between the ports on this list for coins. The list is the * whole network: a port is a name, a landing tile, a fare, and the cover the * client shows while it builds the far shore. Adding a port is one entry * here; nothing else needs to know the ports individually. * * The port a player is standing in cannot be sailed to - the client greys it * out as "You are here" and the server refuses it before taking any coins. * For now there is a single destination beyond Hope Beach. */ export declare const BRANSON_NAME = "Branson"; /** Branson's mate, who keeps the landing on the Frozen Shore and sells the same passage. */ export declare const LANDING_MATE_NAME = "Oskar"; /** The harbour master at the King's Harbour, who keeps the Capital's end of the run. */ export declare const HARBOUR_MASTER_NAME = "Marlow"; /** * The NPC kinds that sell passage: the ship's master on the Long Pier, his * mate at Branson's Landing, the harbour master on the Capital's quay and the * ferryman on Smugglers' Isle's jetty (his chart has no freight board). * All three open the same chart and the server takes the same fare from * any of them, so a port is reachable from every other end. */ export declare const TRAVEL_MASTER_KINDS: ReadonlySet; export declare function isTravelMasterKind(kind: string): boolean; export type TravelPortId = 'hope-beach' | 'frozen-shore' | 'capital-harbour' | 'smugglers-isle'; export type TravelPort = { id: TravelPortId; label: string; /** Where the ship puts you ashore. World tiles (generator frame, unless `world` is set). */ x: number; z: number; /** True when x, z are already final-world tiles: expandedContracts does not shift them (the Isle's, laid by a final-frame pass). */ world?: true; /** Coins to sail here from any other port. */ fare: number; /** One line under the name on Branson's chart. */ blurb: string; /** Cover shown while the client builds the far shore (see areaTransitions.ts). */ transition: AreaTransitionId; /** * A port Branson will only sail to once the player has opened that part * of the world for themselves. The quest must be completed and/or the * player must be a member; the hint is what the chart says instead of the * fare until then. */ requires?: { quest?: QuestId; member?: true; hint: string; }; }; /** * How far from a port's landing tile still counts as "at" that port. Hope * Beach is a wide zone, so this is generous; it only has to tell the two * shores apart. */ export declare const TRAVEL_PORT_RADIUS = 48; export declare const TRAVEL_PORTS: readonly TravelPort[]; /** * Fred's Letter (storyQuests.ts): Fred's boat ticket is one free sailing to * the Capital, and once the letter is delivered Fred's Pass makes every * sailing there free. Either one also opens the port before the battlefield * bridge is mended: the ticket is the invitation. */ export declare const FREDS_PASS_PORT: TravelPortId; export type TravelFare = { fare: number; via: 'coins' | 'ticket' | 'pass'; }; /** What this player pays to sail to this port, holding this many of Fred's boat tickets. */ export declare function travelFareFor(port: TravelPort, quests: QuestsSnapshot, tickets?: number): TravelFare; /** The ticket item, for callers that count it in the bag. */ export declare const TRAVEL_TICKET_KIND = "boatticket"; /** The reason a port is closed to this player, or null when they may sail. `isMember` is true for a member (the server also passes admins). */ export declare function travelPortLockReason(port: TravelPort, quests: QuestsSnapshot, tickets?: number, isMember?: boolean): string | null; export declare function isTravelPortId(value: unknown): value is TravelPortId; export declare function travelPortById(id: string): TravelPort | null; /** The port this tile is in, if any: the nearest landing within TRAVEL_PORT_RADIUS. */ export declare function travelPortAt(x: number, z: number): TravelPort | null; /** The dialog option id Branson's chart sends for a chosen port. */ export declare const TRAVEL_SAIL_OPTION_PREFIX = "sail:"; export declare function travelSailOption(id: TravelPortId): string; export declare function travelPortFromSailOption(optionId: string): TravelPort | null; //# sourceMappingURL=travel.d.ts.map