/** * GANNET POINT'S DENS AND OLD SKERRYWING (2026-10-18; gannetPoint.ts has the place). Four dens of EXISTING kinds (the coast's cliff gulls, reef crabs, coast * hounds and island raiders, here the "wreckers"), scaled to levels 22-27, in the pattern of Ashfall's dens (ashfallDens.ts): a creature of a den is told apart * from the same kind elsewhere by its id (`gpd---`), the backend rolls its level, hit, drops, respawn and aggro from THIS file, and it hunts only * a player standing INSIDE its own den's box and gives up at its leash. A den needs no new model, name, icon or guide row. * * OLD SKERRYWING is the stack's mini-boss (level 28): a huge scarred gannet matriarch that has seen off every egg-hunter on this coast. Passive until struck. * Every fourth blow she wheels up and folds into her Dive: a pale ring spreads on the rock under her a full turn ahead; step out of its reach and it misses * (the E8 step-clear counter, bossSignatures.ts `skerry-dive`). Drawn as the Grandfather Gull's gull model at a larger scale until a model of her own exists * (upgrades row `skerrywing-model`). * * Nothing here is 41+. Every number is a PLACEHOLDER for the balance pass. World tiles (x east, z south). */ import type { LanternWakeBox } from './lanternWake.js'; import type { DiscoveryZone } from './landmarks.js'; export type GannetDenKind = 'cliffgull' | 'reefcrab' | 'coasthound' | 'isleraider'; export type GannetDenSiteId = 'gannet-cliffs' | 'hales-light' | 'hopper-shelf' | 'gannet-stack'; export type GannetDenSpot = { readonly x: number; readonly z: number; readonly leash: number; }; export type GannetDenGroup = { readonly kind: GannetDenKind; readonly level: readonly [number, number]; readonly maxHit: number; readonly healthScale: number; readonly aggro: number; readonly leashRadius: number; readonly notice: string; readonly respawnMs: { readonly minMs: number; readonly maxMs: number; }; readonly pace: { readonly speed: number; readonly idleChance: number; readonly pause: readonly [number, number]; }; readonly spots: readonly GannetDenSpot[]; readonly drops: readonly { readonly itemKind: string; readonly chance: number; readonly minQty: number; readonly maxQty: number; }[]; }; export type GannetDenSite = { readonly id: GannetDenSiteId; readonly label: string; readonly box: LanternWakeBox; /** Where the guide and the verify link send a player: open ground on the den's edge nearest the road. */ readonly stand: { readonly x: number; readonly z: number; }; readonly blurb: string; readonly groups: readonly GannetDenGroup[]; }; export declare const GANNET_DEN_SITES: readonly GannetDenSite[]; export declare const GANNET_DEN_SITE_IDS: readonly GannetDenSiteId[]; export declare function inGannetDenBox(box: LanternWakeBox, x: number, z: number): boolean; /** The den whose box holds this tile, or null. The boxes never overlap (scripts/gannet-point-test.mjs). */ export declare function gannetDenSiteAt(x: number, z: number): GannetDenSite | null; /** A den creature's server id: `gpd---`. */ export declare const GANNET_DEN_ID_PREFIX = "gpd-"; export declare function gannetDenId(site: GannetDenSiteId, kind: GannetDenKind, n: number): string; /** The site and group an id names, or null for any other creature. */ export declare function parseGannetDenId(id: string): { site: GannetDenSite; group: GannetDenGroup; } | null; export declare const SKERRYWING_KIND = "skerrywing"; export declare const SKERRYWING_NAME = "Old Skerrywing"; export declare const SKERRYWING: { readonly id: "gpd-skerrywing-1"; readonly x: 2018; readonly z: 1335; readonly leash: 4; readonly level: readonly [number, number]; readonly maxHit: 22; /** A mini-boss's hide: much thicker than the level's ordinary health. */ readonly healthScale: 2.2; /** Drawn bigger than the gull she wears (the same model, scaled). */ readonly scale: 2.6; /** The stack is her aggro ground (the stack's box). */ readonly aggro: 6; readonly notice: "Old Skerrywing lifts her scarred wings off the nest and glares at you."; readonly note: "A huge scarred gannet matriarch that has seen off every egg-hunter on this coast. Passive until struck. Every fourth blow she wheels up and folds into her Dive: a pale ring spreads on the rock under her a full turn ahead, and if you step out of its reach the dive goes wide. Back six to eight minutes after she falls."; }; export declare const SKERRYWING_RESPAWN_MS: { readonly minMs: 360000; readonly maxMs: 480000; }; export declare const SKERRYWING_PACE: { readonly speed: 0.9; readonly idleChance: 0.7; readonly pause: readonly [number, number]; }; /** Placeholders for the balance pass: coins, feathers, a little steel and a chance of a silver or gold bar from the hoard. */ export declare const SKERRYWING_DROPS: readonly { itemKind: string; chance: number; minQty: number; maxQty: number; }[]; /** The model the client draws her with until she has one (the Grandfather Gull's, at SKERRYWING.scale). */ export declare const SKERRYWING_STAND_IN = "grandfathergull"; export declare const GANNET_DISCOVERY_ZONES: readonly DiscoveryZone[]; //# sourceMappingURL=gannetPointDens.d.ts.map