export type NorthWildsBox = { readonly minX: number; readonly maxX: number; readonly minZ: number; readonly maxZ: number; }; /** The existing kinds a den uses. */ export type NorthWildsKind = 'frostwolf' | 'snowfox' | 'polarbear' | 'hijacker'; export type NorthWildsSpot = { readonly x: number; readonly z: number; readonly leash: number; }; export type NorthWildsGroup = { readonly kind: NorthWildsKind; /** Level rolled between these two (each respawn rolls again). */ readonly level: readonly [number, number]; readonly maxHit: number; /** Health is the band's ordinary health for the rolled level, times this. */ readonly healthScale: number; /** A player this close (tiles) inside the den's box is hunted; the creature gives up this far (leash) from its spot. */ readonly aggro: number; readonly leashRadius: number; readonly notice: string; readonly respawnMs: { readonly minMs: number; readonly maxMs: number; }; /** Walk pace on its leash: tiles a second, the chance it stands still, the pause range in seconds. */ readonly pace: { readonly speed: number; readonly idleChance: number; readonly pause: readonly [number, number]; }; readonly spots: readonly NorthWildsSpot[]; /** Existing goods only: no dungeon key (the Ice Prison's frost wolves carry those). */ readonly drops: readonly { readonly itemKind: string; readonly chance: number; readonly minQty: number; readonly maxQty: number; }[]; }; export type NorthWildsSiteId = 'rimewolf-ridge' | 'cold-shore' | 'remnant-camp' | 'pale-ridge' | 'roadside-remnants' | 'drift-hollow' | 'meltwater-shelf' | 'cairn-scrub'; export type NorthWildsSite = { readonly id: NorthWildsSiteId; readonly label: string; /** The town this den lies beyond, and where to stand to be near it (the town is never inside the box). */ readonly town: 'Millbrook' | "Heron's Rest" | "the Surveyors' Camp"; readonly box: NorthWildsBox; /** Where the quest helper, the guide and the verify link send a player: a tile on open ground on the den's edge nearest the town. */ readonly stand: { readonly x: number; readonly z: number; }; readonly blurb: string; readonly groups: readonly NorthWildsGroup[]; }; /** Millbrook's windmill and Heron's Rest's inn: the two towns the dens keep clear of. */ export declare const NORTH_WILDS_TOWNS: { readonly millbrook: { readonly x: 376; readonly z: 151; }; readonly heronsRest: { readonly x: 783; readonly z: 604; }; }; /** No den's box comes nearer a town than this many tiles. */ export declare const NORTH_WILDS_MIN_TOWN_DISTANCE = 30; export declare const NORTH_WILDS_SITES: readonly NorthWildsSite[]; export declare const NORTH_WILDS_SITE_IDS: readonly NorthWildsSiteId[]; export declare function northWildsSite(id: string): NorthWildsSite | null; export declare function inNorthWildsBox(box: NorthWildsBox, x: number, z: number): boolean; /** The den whose box holds this tile, or null. The boxes never overlap (scripts/north-wilds-test.mjs). */ export declare function northWildsSiteAt(x: number, z: number): NorthWildsSite | null; /** A den creature's server id: `nw---`. */ export declare const NORTH_WILDS_ID_PREFIX = "nw-"; export declare function northWildsId(site: NorthWildsSiteId, kind: NorthWildsKind, n: number): string; /** The site and kind an id names, or null for any other creature. */ export declare function parseNorthWildsId(id: string): { site: NorthWildsSite; group: NorthWildsGroup; } | null; /** The nearest town's distance (Chebyshev) from a box: how far the den keeps from where players rest. */ export declare function northWildsTownDistance(box: NorthWildsBox, town: { x: number; z: number; }): number; export declare const MAMMOTH_BULL_KIND = "mammothbull"; export declare const MAMMOTH_BULL: { readonly name: "Greytusk"; /** Far east of the herd, out on the open snow: nothing is near it and nothing gates it but the walk. */ readonly x: 214; readonly z: 390; readonly leash: 4; readonly level: readonly [number, number]; readonly maxHit: 28; /** A boss's hide: much thicker than the level's ordinary health. */ readonly healthScale: 2.6; /** Drawn bigger than the herd's bulls (the mammoth model, scaled). */ readonly scale: 1.35; readonly aggro: 7; readonly leashRadius: 14; readonly note: "The old bull who leads no herd any more: grey to the tusks, scarred, and twice the size of the cows. Every fourth blow he drops his head and charges, announced a turn ahead; step clear of the ring on the snow and it spends itself. Back eight to ten minutes after he falls."; readonly notice: "Greytusk lifts his great grey head and bellows across the snow!"; }; export declare const MAMMOTH_BULL_RESPAWN_MS: { readonly minMs: 480000; readonly maxMs: 600000; }; export declare const MAMMOTH_BULL_PACE: { readonly speed: 0.8; readonly idleChance: 0.65; readonly pause: readonly [number, number]; }; /** Placeholders for the balance pass: placeholder coins, the herd's goods in bulk, and a chance at one more tusk. */ export declare const MAMMOTH_BULL_DROPS: readonly { itemKind: string; chance: number; minQty: number; maxQty: number; }[]; /** * Millbrook's straw-and-oak dummies. The Garrison's dummies stop paying at Strength 10 (TRAINING_DUMMY_MAX_LEVEL) and the Capital's * sergeants carry the player on by guessing duels; these four are the quiet way for a player who wants to stand and swing: oak * stakes in a ring, paying from where the Garrison's stop to Strength 40 (never past it: 41+ is behind the gates). The XP a swing * pays is a PLACEHOLDER for the balance pass. */ export declare const MILLBROOK_YARD_ID_PREFIX = "mill-dummy-"; export declare const MILLBROOK_YARD_DUMMIES: readonly { id: string; x: number; z: number; }[]; export declare const MILLBROOK_YARD_SIGN: { readonly id: "mill-yard-sign"; readonly x: 385; readonly z: 157; readonly style: "placard-Millbrook Yard: swing till you are tired (Strength 10-40)"; }; export declare const MILLBROOK_YARD_BAND: { readonly min: 10; readonly max: 40; readonly xp: 9; }; export declare function isMillbrookYardDummyId(id: string): boolean; /** * The strength band a dummy teaches: the Garrison's (0 to 10, TRAINING_DUMMY_XP a swing) unless it is one of Millbrook's four * (10 to 40). Below its `min` a dummy refuses ("too soft a lesson"), at its `max` it has nothing more to teach. */ export declare function strengthDummyBand(entityId: string): { min: number; max: number; xp: number; }; export declare const MILLBROOK_YARD_LINES: { readonly tooEarly: "These oak dummies are for a strength you have not built yet. Spar the Garrison dummies in Hope Town or the Capital first."; readonly capped: "The oak dummy has nothing more to teach you. Take your strength to a real fight."; }; /** Server entity ids of the lake's board and plaque (the Long Pier's pair are DERBY_BOARD_ID and DERBY_RECORDS_ID). */ export declare const DERBY_LAKE_BOARD_ID = "derby-board-lake"; export declare const DERBY_LAKE_RECORDS_ID = "derby-records-lake"; /** Beside Ulf's bait table and the bait camp's fire on the lake's east bank. */ export declare const DERBY_LAKE_GROUNDS: { readonly board: { readonly x: 76; readonly z: 303; }; readonly records: { readonly x: 78; readonly z: 303; }; }; /** Which of the derby's placards an entity id is (either venue's), or null. */ export declare function derbySignKindOfId(id: string | undefined): 'board' | 'records' | null; /** Stand-in props for The Long Winter's places, built from the kit the lake's bait camp already uses. Logged in upgrades/long-winter-props. */ export declare const LONG_WINTER_PROPS: readonly { id: string; place: string; kind: 'cargo' | 'logpile' | 'campfire'; style: string; x: number; z: number; }[]; //# sourceMappingURL=northWilds.d.ts.map