/** * SALTGRASS DOWNS' DENS AND GREYBACK (2026-10-18; saltgrassDowns.ts has the place). Four dens of EXISTING kinds, scaled to levels 14-22, in the pattern of * Ashfall's and Ranger's Rest's (ashfallDens.ts, rangersRestDens.ts): a creature of a den is told apart from the same kind elsewhere by its id * (`sgd---`), 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. The sheet's creatures are drawn as the kit's own until models * of their own exist: the downs wolf is the wolf, the gorse badger the badger, the burrow boar the boar, the rustler a hijacker and the shore crab the * shore crab (backend upgrades rows `saltgrass-creatures`); the sheet's kestrel is not built (it was ambience, upgrades row `saltgrass-kestrel`). * * GREYBACK is the Downs' mini-boss (level 23): a huge scarred grey wolf on the stony knoll. Passive until struck. Every fourth blow it is his Pounce * (bossSignatures.ts `pounce`): he crouches and a ring closes round him a full turn ahead; step out of reach and the blow goes wide (the E8 step-clear * counter). Drawn as the wolf at a larger scale until a model of his own exists (upgrades row `greyback-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 SgDenKind = 'wolf' | 'badger' | 'boar' | 'hijacker' | 'shorecrab'; export type SgDenSiteId = 'wolf-country' | 'gorse-warren' | 'rustlers-camp' | 'shore-flats'; export type SgDenSpot = { readonly x: number; readonly z: number; readonly leash: number; }; export type SgDenGroup = { readonly kind: SgDenKind; 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 SgDenSpot[]; readonly drops: readonly { readonly itemKind: string; readonly chance: number; readonly minQty: number; readonly maxQty: number; }[]; }; export type SgDenSite = { readonly id: SgDenSiteId; 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 SgDenGroup[]; }; export declare const SG_DEN_SITES: readonly SgDenSite[]; export declare const SG_DEN_SITE_IDS: readonly SgDenSiteId[]; export declare function inSgDenBox(box: LanternWakeBox, x: number, z: number): boolean; /** The den whose box holds this tile, or null. The boxes never overlap (scripts/saltgrass-downs-test.mjs). */ export declare function sgDenSiteAt(x: number, z: number): SgDenSite | null; /** A den creature's server id: `sgd---`. */ export declare const SG_DEN_ID_PREFIX = "sgd-"; export declare function sgDenId(site: SgDenSiteId, kind: SgDenKind, n: number): string; /** The site and group an id names, or null for any other creature (Greyback's id parses to null). */ export declare function parseSgDenId(id: string): { site: SgDenSite; group: SgDenGroup; } | null; export declare const GREYBACK_KIND = "greyback"; export declare const GREYBACK_NAME = "Greyback"; /** The stony knoll in the north-west of wolf country. */ export declare const GREYBACK_BOX: LanternWakeBox; export declare const GREYBACK: { readonly id: "sgd-greyback-1"; readonly x: 2077; readonly z: 811; readonly leash: 5; readonly level: readonly [number, number]; readonly maxHit: 19; /** A mini-boss's hide: much thicker than the level's ordinary health. */ readonly healthScale: 2.2; /** Drawn bigger than a wolf (the same model, scaled). */ readonly scale: 1.9; readonly note: "A huge scarred grey wolf with a torn ear, lord of the stony knoll above the high pasture. Passive until struck. Every fourth blow he crouches and a ring closes round him, announced a turn ahead: step clear of the ring and his Pounce goes wide. Back five to seven minutes after he falls."; }; export declare const GREYBACK_RESPAWN_MS: { readonly minMs: 300000; readonly maxMs: 420000; }; export declare const GREYBACK_PACE: { readonly speed: 0.9; readonly idleChance: 0.6; readonly pause: readonly [number, number]; }; /** Placeholders for the balance pass: coins, pelts, iron and a rare steel bar. */ export declare const GREYBACK_DROPS: readonly { itemKind: string; chance: number; minQty: number; maxQty: number; }[]; /** The model the client draws him with until he has one (the wolf's, at GREYBACK.scale). */ export declare const GREYBACK_STAND_IN = "wolf"; export declare const SALTGRASS_DISCOVERY_ZONES: readonly DiscoveryZone[]; //# sourceMappingURL=saltgrassDens.d.ts.map