Files
nuzlocke-tracker/.beans/nuzlocke-tracker-p74f--genlocke-transfer-ui.md
Julian Tabel e1dac10d27 Fix run deletion crash and transfer modal initialization error
Run deletion now properly cleans up boss_results, genlocke_transfers,
and genlocke_leg references before deleting the run. Also fix
showTransferModal being referenced before initialization in
RunEncounters by moving its useState declaration above useLegSurvivors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 11:28:22 +01:00

3.0 KiB

title, status, type, priority, created_at, updated_at, parent, blocking
title status type priority created_at updated_at parent blocking
Genlocke transfer UI completed feature normal 2026-02-09T07:42:33Z 2026-02-09T10:20:53Z nuzlocke-tracker-25mh
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