/** * DEEP SEA: the members' boat trip from the King's Harbour (James, 2026-10-04, W-093: "Start Deep Sea next, the second * Crown tank: a members' boat trip from the King's Harbour with deep-sea catches for a Deep Sea book page"; plan * `.cursor/task-plans/2026-10-04-deep-sea.md`). * * Skipper Gale Hollis keeps a berth at the head of the harbour's North Pier (harbour.ts HARBOUR_NORTH_PIER). For a fare * a member is taken out to the Grey Gannet, a fishing boat anchored over Gannet Deep in the north sea, and has ten * minutes on her deck (a timed run, timedRun.ts 'deep-sea': the clock runs through a logout). With the sea tackle the * conger and the sea bass take (a Heavy Beach Casting Rod, line, hook and float, lugworm or a spinner) the deep gives * three fish: the Ling, the Halibut and, rarest, the Anglerfish. Deckhand Pip takes anyone back early; when time is up * the Gannet runs back to the berth. * * The three are members' catches, so they are bonus specimens in the aquarium book (aquarium.ts): they fill its Deep Sea * page and the Capital Aquarium's Deep Sea tank for members and never block a free player's book or title. * * World tiles, absolute. Backend: deepSea.ts (the boat's deck and pieces, after the harbour is built) and world.ts (the * trip). Blender pieces: quest-workshop/scripts/deepsea_v00N.py (dsgannet, dsboard). */ export declare const DEEP_SEA_NAME = "Gannet Deep"; export declare const GANNET_NAME = "the Grey Gannet"; export declare const SKIPPER_NAME = "Skipper Gale Hollis"; export declare const DECKHAND_NAME = "Deckhand Pip"; /** What a trip costs, in coins, and how long it lasts on the boat. */ export declare const DEEP_SEA_TRIP_FARE = 500; export declare const DEEP_SEA_TRIP_MS: number; /** The dialog options that act (npc_action): the skipper's "Sail out" and the deckhand's "Back to the harbour". */ export declare const DEEP_SEA_SAIL_ACTION = "deepsea-sail"; export declare const DEEP_SEA_BACK_ACTION = "deepsea-back"; export declare const RAW_LING_KIND = "rawling"; export declare const COOKED_LING_KIND = "cookedling"; export declare const RAW_HALIBUT_KIND = "rawhalibut"; export declare const COOKED_HALIBUT_KIND = "cookedhalibut"; export declare const RAW_ANGLERFISH_KIND = "rawanglerfish"; export declare const COOKED_ANGLERFISH_KIND = "cookedanglerfish"; export type DeepSeaFish = { /** The raw catch's item kind. */ kind: string; /** Its cooked item kind. */ cooked: string; label: string; /** Fishing level to catch it. */ level: number; /** Fishing XP per catch. */ xp: number; /** Its share of the bites once you can catch it (the Anglerfish is the rare one). */ weight: number; }; /** In ladder order, above the sea bass (40) and the salmon (45): the best catches in the game, behind a fare. */ export declare const DEEP_SEA_FISH: readonly DeepSeaFish[]; /** Fishing level to fish the deep at all (its commonest fish). A trip below it is refused before the fare is taken. */ export declare const DEEP_SEA_FISHING_LEVEL: number; export declare function deepSeaFish(kind: unknown): DeepSeaFish | null; /** The deep-sea fish a Fishing level can catch, in ladder order. */ export declare function deepSeaFishFor(fishingLevel: number): DeepSeaFish[]; /** * Which fish a bite over Gannet Deep is, for a Fishing level and a roll in [0, 1): weighted among the fish that level * can catch, so a Fishing 42 angler only lands Ling and a Fishing 55 one an Anglerfish about one bite in seven. Null below * DEEP_SEA_FISHING_LEVEL. Pure, so the server and the tests agree. */ export declare function pickDeepSeaCatch(fishingLevel: number, roll: number): DeepSeaFish | null; /** The hull's footprint (the Blender boat's): seven tiles of beam, fifteen from stem (north) to transom (south). */ export declare const GANNET_HULL: { readonly minX: 877; readonly maxX: 883; readonly minZ: 67; readonly maxZ: number; }; /** The deck's height (the aquarium pier's): one step above the sea. */ export declare const GANNET_DECK_HEIGHT = 1; /** The deck you walk on: three wide on the two bow rows, five from there aft. The hull model dresses it; the sea is left round it. */ export declare function onGannetDeck(x: number, z: number): boolean; /** The wheelhouse aft of midships: solid, so you walk round it to the stern. */ export declare const GANNET_WHEELHOUSE: { readonly minX: 879; readonly maxX: 881; readonly minZ: number; readonly maxZ: number; }; export declare function inGannetWheelhouse(x: number, z: number): boolean; /** Where you step aboard, midships. */ export declare const GANNET_LANDING: { readonly x: 880; readonly z: number; }; /** Deckhand Pip, forward of the landing, facing aft to meet you. */ export declare const DECKHAND_SPOT: { readonly x: 880; readonly z: number; readonly faceX: 880; readonly faceZ: number; }; /** Where the deep fish bite: three water tiles off each side of the hull, each within a cast (3) of the deck's rail. */ export declare const DEEP_SEA_SPOTS: ReadonlyArray<{ x: number; z: number; }>; /** How far from a deep spot an angler on the deck may stand (Chebyshev). */ export declare const DEEP_SEA_CAST_RANGE = 3; /** Skipper Gale Hollis, at the pier head facing the way people walk out. */ export declare const SKIPPER_SPOT: { readonly x: 843; readonly z: 130; readonly faceX: 842; readonly faceZ: 130; }; /** The tile a trip sets you down on when it comes back (in front of the skipper). */ export declare const DEEP_SEA_BERTH: { readonly x: 841; readonly z: 130; }; /** The Blender pieces (kind dreadmodel, style `-`): the boat, and the trips board beside the skipper. */ export declare const DEEP_SEA_PIECES: ReadonlyArray<{ id: string; model: string; x: number; z: number; facing: 'n' | 'e' | 's' | 'w'; }>; /** On the Grey Gannet: its hull's whole footprint (the deck and the water inside the rail). The trip's place. */ export declare function onGannet(x: number, z: number): boolean; //# sourceMappingURL=deepSea.d.ts.map