Break down the genlocke tracking epic into 8 child beans with checklists, dependency chains, and success criteria. Add CLAUDE.md instruction for updating parent checklists on child completion. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
---
|
|
# nuzlocke-tracker-p74f
|
|
title: Genlocke transfer UI
|
|
status: todo
|
|
type: feature
|
|
priority: normal
|
|
created_at: 2026-02-09T07:42:33Z
|
|
updated_at: 2026-02-09T07:46:06Z
|
|
parent: nuzlocke-tracker-25mh
|
|
blocking:
|
|
- nuzlocke-tracker-lsc2
|
|
---
|
|
|
|
After completing a genlocke leg, the user selects which surviving Pokemon to carry forward to the next leg. Transferred Pokemon appear as egg encounters in the next run.
|
|
|
|
## Flow
|
|
|
|
### Transfer Step (between legs)
|
|
1. User completes a leg (beats the Champion / enters Hall of Fame)
|
|
2. A transfer screen is shown, displaying all surviving Pokemon from the completed leg
|
|
3. User selects which Pokemon to transfer (typically up to 6, the HoF team)
|
|
4. Selected Pokemon are "bred" — they'll appear as level 1 eggs/starters in the next leg
|
|
5. The transfer is recorded and the next leg's run is started
|
|
|
|
### Transfer Records
|
|
- Each transfer links a source encounter (from the completed leg) to a new egg encounter (in the next leg)
|
|
- The new encounter in the next leg should:
|
|
- Be the base form of the evolutionary line (e.g., Charizard → Charmander egg)
|
|
- Have a special status/flag indicating it's a genlocke transfer (not a wild encounter)
|
|
- Optionally keep the same nickname
|
|
- Not count against any route's first-encounter rule
|
|
|
|
### UI Components
|
|
- Transfer selection screen: grid of surviving Pokemon with checkboxes
|
|
- Show each Pokemon's sprite, nickname, species, and level
|
|
- "Transfer Selected" button to confirm
|
|
- Option to skip transferring (transfer none) for added challenge
|
|
|
|
## Backend
|
|
- `POST /api/v1/genlockes/{id}/legs/{leg_id}/transfer` — Accept list of encounter IDs to transfer
|
|
- Creates `GenlockeTransfer` records linking source encounters to new egg encounters
|
|
- Auto-creates the egg encounters in the next leg's run
|
|
|
|
## Data Model
|
|
- `GenlockeTransfer` table: from_leg_id, to_leg_id, from_encounter_id, to_encounter_id
|
|
- Egg encounters need a way to be distinguished from regular encounters (possibly a flag or encounter method)
|
|
|
|
## Checklist
|
|
- [ ] Create `GenlockeTransfer` SQLAlchemy model (from_leg_id, to_leg_id, from_encounter_id, to_encounter_id)
|
|
- [ ] Create Alembic migration for the GenlockeTransfer table
|
|
- [ ] Add logic to resolve a Pokemon's base form from its evolutionary chain (e.g., Charizard → Charmander)
|
|
- [ ] Implement `GET /api/v1/genlockes/{id}/legs/{leg_order}/survivors` — return surviving (non-fainted) encounters from a completed leg
|
|
- [ ] Implement `POST /api/v1/genlockes/{id}/legs/{leg_order}/transfer` — accept encounter IDs, create GenlockeTransfer records, create egg encounters in the next leg's run
|
|
- [ ] Build the transfer selection screen: grid of surviving Pokemon with checkboxes, sprites, nicknames, and levels
|
|
- [ ] Add a "Transfer Selected" confirmation action and a "Skip" option
|
|
- [ ] Wire up the transfer screen to appear after leg completion (integrate with leg progression flow)
|
|
- [ ] Ensure transferred egg encounters don't count against route first-encounter rules
|
|
- [ ] Add TypeScript types for transfer API request/response |