Show navigation
Fishing
Fishing is one of the game's pastimes: bait crafted for the fish wanted, a line cast at a rippling fishing point, a bite struck, and the fish reeled in by keeping the line's tension in its zone. Fish are cooked, kept in the Serenitea Pot's ponds, and traded at each region's Fishing Association for rods and rewards. The game holds all of it in tables the client keeps whole, so it can be rebuilt to the number. Its bait is crafted (crafting), and the points, stocks, fish, rods and the cast's and reel's rules are built.
Decisions
- A point's stock is its region's pools, for now. Each region's pools are the game's, filed by city. Neither the official map's points nor the dump's tables tie a point to one pool, so until a recording shows which pool a point draws from, a point draws from every pool of its region. Nod-Krai's city is filed under no pool, so its points draw nothing, and the fifty-four pools filed under city zero, which no region names, are left out until a recording places them.
- Stocks come back as the game sets them. The game's clock picks the day's or the night's stock, and an emptied stock is back in full seventy-two hours on, the day's and the night's kept apart by their own emptying, as the fishing page records (built).
- Bait is not tied to a fish yet. The bait table's feature tags name no fish, and no fish row names the tags it wants, so which bait draws which fish is read from the wiki's fish pages, each of which names its bait. Each kind is drawn only by its own bait, crafted from its recipe.
- The bite is the fish's own. A fish nibbles for a time within its feeler range and bites, and the bite is struck within its
biteTimeoutor lost. The timing and the caller's clock are not yet built. - The nibble's length is drawn from the fish's feeler times.
feelerTimesis a range in seconds, its least and its most (from[0.75, 1]to[2, 8]across the table), so a fish nibbles for a time drawn evenly between them by the caller's random source, asclaimExpeditiondraws a count. A strike while it only nibbles scares it off and the cast is back to aiming, as a strike afterbiteTimeoutseconds of biting is. The owedfishing-reel.mkvchecks the scare; it does not gate the build. - The reel's zone moves by the fish's own fields. The moving zone's width, speed, offset and duration are the fish's, and the reel takes the zone as its input meanwhile. How the zone travels over its duration waits on a recording of the minigame, as the tension rate and the allowance do.
- The fish fights back with its skills. Each fish's skills from
FishSkillExcelConfigDataact on the tension and the hit points on a clock of their own; the rod's pull and the struggles are read from the skill rows once the reel's zone is. - The stock limits stay unread. Each pool's two limit numbers have scrambled names, and their meaning is not settled by any table here, so they wait on a reading.
- What a catch gives. The fish itself into the bag, its reward row, and proficiency toward the Fishing Association's rewards, exchanged at its shop (shops).
- Opened as the game opens it, once the Serenitea Pot is owned and its quest is done, as the wiki gives the unlock.
How it works
stateDiagram-v2 [*] --> Aiming: at a fishing point, rod out Aiming --> Waiting: cast Waiting --> Aiming: the lure within a fish's flee range, it flees Waiting --> Aiming: struck while a fish within attract range only nibbles, it is scared off Waiting --> Biting: the nibble's seconds drawn from its feeler times pass, it bites Biting --> Aiming: not struck within its bite timeout Biting --> Reeling: struck Reeling --> Caught: its health worn to none Reeling --> Aiming: the tension out of the zone too long Caught --> [*]
Scope and order
Built (fishing): the fishing points by region, the fish, rods and each region's pools, the day and night stocks and their refill, the weighted draw, the lure's reaction and the reel's tension and allowance.
This adds, in order:
Copy
packages/genshin-world/src/
├── models/fishing/FishingBite.ts
└── services/fishing/stepFishingBite.ts
- The bite and the nibbles, as a pure rule. No source is owed:
packages/genshin-world/src/generated/fishing/fish.jsonalready holds each fish'sfeelerTimesandbiteTimeout.FishingBite.ts: a bite under way, itsnibbleSecondsand itselapsedSeconds. The caller drawsnibbleSecondsasfeelerTimes[0] + random() * (feelerTimes[1] - feelerTimes[0])when the fish turns to the lure, with no helper around it.stepFishingBite.ts: the bite afterseconds, given whether the strike was pressed, returning its nextFishingPhaseand bite:Waitingwhile it nibbles,BitingfromnibbleSeconds,Reelingon a strike while biting, andAimingon a strike while nibbling or oncebiteTimeoutseconds of biting pass unstruck.stepFishingBite.test.tsbeside it asserts each of those four transitions on a fish withbiteTimeout: 5and a bite withnibbleSeconds: 1.
- The reel's zone and the fish's skills. The zone travels on the fish's own
bonusWidth,bonusSpeed,bonusOffsetandbonusDuration, read provisionally untilfishing-reel.mkvre-measures it, and the skills fromFishSkillExcelConfigData, which the dump already holds. - Bait and the rod's choice, which fish each bait draws read from the wiki's fish pages, each naming its bait, through the repository's wiki reader, with the crafting recipes and the rod's multiplier and accuracy.
- The screen, the prompt in reach, the cast's input and the catch into the bag.
- The Fishing Associations' exchanges.
Data and measures
- Read from the game's tables:
FishSkillExcelConfigData,FishBaitExcelConfigDataandFishProficientExcelConfigDataare not read yet; the fish, pool, stock and rod tables are. - Waiting on a recording: the reel's tension rate and its allowance, the zone's travel over its duration, and which pool a point draws from. Each is listed on the roadmap's Recordings owed list, and a provisional constant holds each meanwhile.
Key files
| File | Role after the change |
|---|---|
packages/genshin-world/src/services/interaction/computeInteractionPrompts.ts | Offers fishing at a point in reach |
packages/genshin-engine/src/input/InputActionBindingMap.ts | The cast, strike and reel |
packages/genshin-world/src/services/inventory/addInventoryItem.ts | The fish caught, into the bag |
packages/genshin-world/src/models/screen/ScreenKind.ts | Gains the fishing view |
Sources
- Fishing, Genshin Impact Wiki: the unlock after the Serenitea Pot, one bait per fish, the cast's distance, the bite and the tension, points emptied and back every 72 hours with separate day and night fish, and the Fishing Associations.
- AnimeGameData, the community's per-patch dump: the skill, bait and proficiency tables, which the build does not read yet.
Scroll to top