Files
personal-website/src/lib/availability.ts
Stan Runge a10585a4d2
All checks were successful
Test and deploy staging / staging (push) Successful in 18s
add game tracker with owned pokemon data and call of duty mastery
Fold catchemall into /projects/game-tracker (old URL redirects) and add
Call of Duty tracking for Black Ops through WWII.

- Pokémon catalog is now owned: locations, encounters and per-game
  evolution methods are built from the pinned PokéAPI snapshot and seeded.
- Pokémon you can evolve or breed in a game count as obtainable; mythicals
  without another route are marked event-only.
- Detail dialog with evolution chain and where to find it, location pages
  with admin notes and pictures, and admin corrections that survive reseeds.
- Call of Duty weapons, milestones and Steam achievements per game, with
  derived Diamond / Dark Matter / Solar / Black Sky / Chrome tiers.
- New migration (db:migrate:game-tracker), seeds (db:seed, db:seed:cod) and
  deploy preflight checks for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 17:36:18 +00:00

34 lines
1.0 KiB
TypeScript

// How a Pokémon can be obtained in a game. Missing rows mean no source record;
// they do not prove absence. Unknown rows establish presence, not availability.
// New values go at the end: the client receives availability as an index.
// Shared between the db schema and the client, which receives availability as
// an index into this array to keep the page payload small.
export const availabilityValues = [
'catchable',
'trade_only',
'transfer_only',
'event_only',
'unknown',
'evolve',
'breed'
] as const;
export type Availability = (typeof availabilityValues)[number];
export const availabilityLabels: Record<Availability, string> = {
catchable: 'catch it',
trade_only: 'trade only',
transfer_only: 'transfer only',
event_only: 'event only',
unknown: 'not confirmed',
evolve: 'evolve it',
breed: 'breed it'
};
// Obtainable inside the game itself, so it counts toward progress and can be ticked.
export const obtainableAvailability: ReadonlySet<Availability> = new Set([
'catchable',
'evolve',
'breed'
]);