/** * The Beacon Ledge at Lantern Wake (PLAN_1_TO_40 slice B6a, NEXT_STEPS "Slice 1c-5, Left (3)": "a higher ledge with longer lanes * for Archery 10-20"). The gallery's butts and lanterns stop paying at Archery 10 (TRAINING_DUMMY_MAX_LEVEL); the ledge carries * archery on from 10 to 20, so the bow ladder (Spruce Bow, Woodwork 15) has somewhere to train before the real fights. * * Where: the south-east corner of the beacon knoll (lanternWake.ts LANTERN_WAKE_BEACON_KNOLL, height 12, four above the gallery's * terrace), three firing tiles on its edge and three lanterns hung over the sea 11-16 tiles off to the south (the gallery's * lanterns are six). Every lane runs over the cliff and the open sea, so no standable tile lies on any lane. * * It is the gallery's drill (backend world.ts handleTrainStart / tickTrain) with a band: Archery 10 to 20, a steadier 6 XP a beat. * No chained bow is lent (an archer at 10 owns a bow), no hit or miss roll, and the lanterns swing in the client only. * Every number is a WORLD tile. Balance numbers (the band, the XP) are placeholders for the balance pass. */ import type { LanternWakePiece } from './lanternWake.js'; import type { ArcheryTargetStyle } from './lanternWakeGallery.js'; export declare const LANTERN_WAKE_LEDGE_TARGET_PREFIX = "lw-ledge-target-"; /** The ledge teaches from this Archery level (the gallery's cap) ... */ export declare const LANTERN_WAKE_LEDGE_MIN_LEVEL = 10; /** ... to this one (a PLACEHOLDER for the balance pass). */ export declare const LANTERN_WAKE_LEDGE_MAX_LEVEL = 20; /** Archery XP a beat at the ledge (the gallery gives ARCHERY_BUTT_XP = 3; PLACEHOLDER). */ export declare const LANTERN_WAKE_LEDGE_XP = 6; export type LanternWakeLedgeTarget = { readonly id: string; readonly style: ArcheryTargetStyle; readonly x: number; readonly z: number; readonly fx: number; readonly fz: number; }; export declare const LANTERN_WAKE_LEDGE_TARGETS: readonly LanternWakeLedgeTarget[]; /** The ledge target standing on a tile, if any (archeryFiringPosition's table). */ export declare function lanternWakeLedgeTargetAt(x: number, z: number): LanternWakeLedgeTarget | undefined; /** Is this entity one of the ledge's targets (the Archery 10-20 band applies there and nowhere else)? */ export declare function isLanternWakeLedgeTargetId(id: string | undefined | null): boolean; /** What the drill says at the ledge (the customer's words, not the code's). */ export declare const LANTERN_WAKE_LEDGE_LINES: { readonly tooEarly: "The far lanterns want a steadier hand than yours. Practise on the gallery below until your Archery reaches 10."; readonly capped: "The far lanterns have nothing more to teach you. Find a real target."; readonly start: "You nock a practice arrow and draw on the far lantern."; }; type LedgePiece = LanternWakePiece & { kind?: 'dreadmodel' | 'yardprop' | 'flowers'; }; /** * The ledge's dressing: the gallery's own pieces. A firing mark and a low rail on each firing tile (the rail's sea edge to the * south), a rope post west of each lantern over the water, and a rack of the gallery's chained bows is NOT repeated * (a player here owns a bow). */ export declare const LANTERN_WAKE_LEDGE_PIECES: readonly LedgePiece[]; export declare const LANTERN_WAKE_HIGH_LEDGE_TARGET_PREFIX = "lw-high-target-"; /** The high ledge teaches from the near ledge's cap ... */ export declare const LANTERN_WAKE_HIGH_LEDGE_MIN_LEVEL = 20; /** ... to this one (a PLACEHOLDER; the 31-40 bow ladder has real fights, not a lantern). */ export declare const LANTERN_WAKE_HIGH_LEDGE_MAX_LEVEL = 30; /** Archery XP a beat at the high ledge (PLACEHOLDER; the near ledge gives 6). */ export declare const LANTERN_WAKE_HIGH_LEDGE_XP = 9; export declare const LANTERN_WAKE_HIGH_LEDGE_TARGETS: readonly LanternWakeLedgeTarget[]; export declare function lanternWakeHighLedgeTargetAt(x: number, z: number): LanternWakeLedgeTarget | undefined; /** Is this entity one of the high ledge's targets (the Archery 20-30 band applies there and nowhere else)? */ export declare function isLanternWakeHighLedgeTargetId(id: string | undefined | null): boolean; /** What the drill says at the high ledge. */ export declare const LANTERN_WAKE_HIGH_LEDGE_LINES: { readonly tooEarly: "These lanterns hang past the far ones, out where the wind has a say. Come back with an Archery of 20 and a steadier draw."; readonly capped: "The high lanterns have nothing more to teach you. Find a real fight."; readonly start: "You nock a practice arrow and draw on the high lantern, a long way out over the water."; }; /** The high ledge's dressing: a rail and a firing mark on each firing tile, a rope post west of each lantern. */ export declare const LANTERN_WAKE_HIGH_LEDGE_PIECES: readonly LedgePiece[]; export {}; //# sourceMappingURL=lanternWakeLedge.d.ts.map