/** * PIRATE BAY PHASE 6: the bay's pets and Bird Keeper Nell's quests (James's round-2 sheets C7 "The parrot quest: a feathered * friend" and C8 "The golden parrot and other bay pets", 2026-10-15; plan dreadwoods/.cursor/task-plans/2026-10-15-pirate-bay-phase6.md). * * Five pets, each a bag item: the bag's action lets it out or calls it back, one pet out at a time (the member beagle, the warthog * and Nye's pup go home when a bay pet comes out, and the other way round). A pet goes home when its item leaves the bag, and is * never lost on death. Parrots ride the shoulder; the hermit crab, the ship's cat and the seal pup follow at heel. They are * cosmetic only: no combat help, no stats. * * - The parrot: ONLY the reward of Nell's A Feathered Friend, a hard quest for levels 10-15 (never a drop, never sold). * - The golden parrot: a very rare drop from Captain Rowena only (drops.ts on her kind, so it follows her into the boss ship). * - The hermit crab in a tankard: the driftwood and sea chests, and now and then a washed-up crate on the beach. * - The ship's cat: Nell's The Ship's Cat (a Blackwake ship's cat hiding in the Landing's crates). * - The seal pup: Nell's The Stranded Pup (a pup caught in Blackwake netting on the rocks below Saltmark Light). * * Nell's treats are bird food, not player food: they never heal and no counter sells them (the no-shop-food rule). Every tile is a * WORLD tile in the final frame (public); the backend lays the quest props on the nearest open tile within a few tiles. * This file only imports types from storyQuests.ts (an erased import) so the two do not form a cycle. */ import type { StoryQuestDef } from './storyQuests.js'; export type BayPetCompanion = 'parrot' | 'goldenparrot' | 'hermitcrab' | 'shipscat' | 'sealpup'; export type BayPet = { /** The bag item. */ readonly kind: string; /** What the companion is drawn as (CompanionPublic kind). */ readonly companion: BayPetCompanion; readonly name: string; /** Rides the owner's shoulder, or follows at heel. */ readonly carry: 'shoulder' | 'heel'; readonly rarity: 'Quest reward' | 'Very rare' | 'Uncommon' | 'Rare'; /** What the pet says when patted, over its head for everyone near. */ readonly pat: string; /** What any trader pays (placeholder). */ readonly price: number; readonly note: string; }; export declare const BAY_PETS: readonly BayPet[]; export declare const BAY_PET_KINDS: readonly string[]; export declare const BAY_PET_COMPANIONS: readonly BayPetCompanion[]; export declare function isBayPetKind(kind: string | null | undefined): boolean; export declare function bayPetByKind(kind: string | null | undefined): BayPet | null; export declare function bayPetByCompanion(companion: string | null | undefined): BayPet | null; export declare const BAY_PET_NAMES: Readonly>; export declare const BAY_PET_PRICES: Readonly>; export declare const BAY_PET_NOTES: Readonly>; /** The golden parrot on Captain Rowena's kills (drops.ts): about one kill in 170. */ export declare const GOLDEN_PARROT_DROP_CHANCE = 0.006; /** The hermit crab in the bay's chests (pirateTreasure.ts PIRATE_CHEST_LOOT): uncommon in the driftwood boxes. */ export declare const HERMIT_CRAB_CHEST_CHANCE: Readonly>; /** And now and then in a washed-up crate on the north beach (sunderedBeach.ts forage patches). */ export declare const HERMIT_CRAB_FORAGE_CHANCE: Readonly>; /** The pet's menu (its right-click or a tap on it): pat it, or send it back into the bag. */ export declare const BAY_PET_ACTIONS: readonly ["pat", "home"]; export type BayPetAction = (typeof BAY_PET_ACTIONS)[number]; /** The menu's id and kind on the client (GameHud.showNpcInteract), as the warthog's. */ export declare const BAY_PET_NPC_ID = "pet:bay"; export declare const BAY_PET_NPC_KIND = "baypet"; export declare const PARROT_BERRIES_KIND = "parrotberries"; export declare const PARROT_SPRATS_KIND = "parrotsprats"; export declare const PARROT_NUTMIX_KIND = "parrotnutmix"; export declare const PARROT_TREAT_KINDS: readonly string[]; export declare const PARROT_TREAT_NAMES: Readonly>; export declare const PARROT_TREAT_NOTES: Readonly>; export declare const BAY_PET_PROP: { /** A red and green feather on the ground in Port Blackwake's street (A Feathered Friend, step 1). */ readonly feather: "parrotfeather"; /** The runaway parrot perched on the north beach rocks (step 3). */ readonly rocks: "parrotrocks"; /** The rock pools' stepping stones, crossed in order (step 4). */ readonly stone: "poolstone"; /** The parrot on the rock pools' far outcrop (step 5). */ readonly pools: "parrotpools"; /** The parrot on the cliff perch north of Saltmark Light (step 6). */ readonly cliff: "parrotcliff"; /** The ship's cat in the Landing's crates (The Ship's Cat). */ readonly cat: "strayshipscat"; /** The seal pup in Blackwake netting below Saltmark Light (The Stranded Pup). */ readonly pup: "nettedpup"; }; export type BayPetProp = { id: string; x: number; z: number; style: string; }; export declare const PARROT_FEATHER: BayPetProp; export declare const PARROT_ROCKS: BayPetProp; /** The three stones, sea to shore; their names on hover are the puzzle's clue. */ export declare const POOL_STONES: readonly BayPetProp[]; /** The order the parrot hops them (Nell's rhyme: "barnacles first, then the weed, the flat stone last"). */ export declare const POOL_STONE_ORDER: readonly string[]; export declare const PARROT_POOLS: BayPetProp; export declare const PARROT_CLIFF: BayPetProp; export declare const STRAY_SHIPS_CAT: BayPetProp; export declare const NETTED_PUP: BayPetProp; export declare const BAY_PET_QUEST_PROPS: readonly BayPetProp[]; /** The Blender model each prop draws with (frontend BUILDING_MODELS); the stones each their own, by style. */ export declare function bayPetPropModel(prop: string, style?: string): string | null; export declare const BAY_PET_PROP_NAMES: Readonly>; /** What a click on a prop says when no quest step wants it (the backend's propIdleLine). */ export declare const BAY_PET_PROP_IDLE_LINES: Readonly>; export declare const BIRD_KEEPER_NELL_NAME = "Bird Keeper Nell"; export type BayPetQuestId = 'aFeatheredFriend' | 'theShipsCat' | 'theStrandedPup'; export declare const BAY_PET_QUEST_IDS: readonly BayPetQuestId[]; /** The Combat level A Feathered Friend asks for: the sheet's 10-15 band, and Port Blackwake's lookouts are level 10. */ export declare const PARROT_QUEST_COMBAT = 10; export declare const BAY_PET_QUESTS: Record; //# sourceMappingURL=bayPets.d.ts.map