Skip to content

Region-organized teams & trainers, per-game builds, full animation coverage - #4

Merged
codebend3r merged 10 commits into
mainfrom
new-features
Jul 29, 2026
Merged

Region-organized teams & trainers, per-game builds, full animation coverage#4
codebend3r merged 10 commits into
mainfrom
new-features

Conversation

@codebend3r

@codebend3r codebend3r commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Teams & Trainers

  • TEAMS and TRAINERS grouped by region (release order within), collapsible with expand/collapse-all; teams default collapsed, trainers expanded, state persisted per section
  • Hisui split into its own group tagged Ancient Sinnoh; new x-y team fills the Kalos gap
  • team rosters rebuilt as best-in-game lineups (Red Gyarados, all-three-starters Yellow, etc.) instead of regional showcases
  • counter picks now respect story progression: evo-level gate for all trainers + curated pre-first-gym pools (no more Gyarados vs Brock)
  • trainer portraits enlarged with official animated battle sprites (B2W2 PWT / Platinum / HGSS) for 64 entries

Competitive builds

  • FOR GAME selector pins the build to any game the Pokémon appears in (gen-accurate Smogon sets)
  • clicking a Pokémon from a team card or trainer page jumps straight to that game's build

Sprites & fonts

  • every Pokémon and form now animates: local GIF tier built from PokeRogue/GBA spritesheets + RetroNC's gen-5-style DLC/mega sprites; only 6 brand-new Z-A megas remain static
  • team-pick hover crossfades to the animated sprite; 3D view rendered clean above the scanlines at 1.5x
  • Space Mono swapped in for digit-heavy and small tracked-caps text (Pixelify's 5S, HW confusion)

Tests & CI

  • 18 new tests (96 total): TrainerGrid region grouping/collapse/filters, TrainerCard roster interactions, CompetitiveBuild selector + empty states, useExpandedRegions persistence
  • new ci.yml runs 🎨 format check, 🧹 lint, 🔤 typecheck, 🧪 tests, and 🏗️ build on every PR and every branch push; deploy workflow steps labeled to match

- detail portrait 96 → 160px (128px mobile), grid card 64 → 96px
- 50 animated APNG battle sprites (B2W2 / PWT rips via Bulbagarden) in `public/sprites/trainers/`, covering every gen 1-5 gym leader, champion, and BW character
- `animSprite` field + `trainerPortraitUrl` helper prefer the APNG over the static Showdown sprite
- no animated sprite exists for non-PWT Elite Four, Silver, Barry, Koga, or the Tate & Liza duo — they keep the static portrait (gen 6+ games never had 2D trainer sprites)
- Platinum rips: Sinnoh Elite Four (`aaron`, `bertha`, `flint`, `lucian`) + `barry`
- HGSS rips: `silver`, and E4 `koga`, `will`, `karen`, `bruno` (also used for their Kanto entries)
- `tateliza.gif` composites the two official animated B2W2 sprites side by side
- still static — nothing animated exists, official or fan-made: `agatha`, `lorelei`, Hoenn E4, `nanu`, `hapu`, and all gen 6+ trainers (3D games, no 2D battle sprites)
- `gold-silver`/`crystal`: Red Gyarados + Nidoking over Crobat/Feraligatr filler
- `yellow`: all three gifted starters + Snorlax + Dragonite — the team only Yellow allows
- `sword-shield`: Gyarados, Excadrill, Lucario replace Toxapex/Mr. Rime/Grimmsnarl
- `scarlet-violet`: Annihilape, Arcanine, Gyarados replace late/post-game Gholdengo, Iron Bundle, Koraidon
- `sun-moon`/`ultra-sun-ultra-moon`: Alolan Raichu, Mimikyu, Magnezone, Naganadel over late-evolving Vikavolt/Kommo-o and post-game Tapu Koko
- new `x-y` entry (Kalos had no team): Greninja, Talonflame, gift Lucario, Aegislash, Gardevoir, Snorlax
- `black-white` stays gen-5-only — the game enforces it until post-game
- Showdown 3D GIFs are small natives; smooth upscaling to card size read as blur
- animated 3D now uses `image-rendering: pixelated` like the 2D view
- static official-artwork fallback keeps smooth scaling — it's high-res, pixelated would jaggy it
- 3D GIFs render at natural size inside the 220px box — no upscale, so neither blur nor chunky pixels
- Pixelify's `5` reads like an `S`: compare stats/vitals, dex numbers, pagination, section counts, move `Lv` prefixes, EV values, member levels, and footer move to `Space Mono`
- move-level prefix wrapped in `crt-move-prefix` span so only the digits change font
- natural-size render was too small — `zoom: 1.5` grows it without full-stretch smearing
- `z-index` above the `body::after` scanline overlay so the 3D render is clean
- audited all 1351 PokeAPI entries against every animated source: 39 had no GIF anywhere
- built `iron-treads`, `iron-jugulis`, `maushold-family-of-three` from PokeRogue exp atlases (the only buildable ones)
- `LOCAL_ANIM_SLUGS`/`localAnimUrl` move to `showdownSprite.ts`; `TeamsBrowser` reuses them
- `pickSprite` refactored to a `spriteCandidates` list — local GIF leads the 2D chain and beats static artwork in 3D
- `has2D` probe short-circuits for local slugs; fallback ladder resets on shiny toggle since local GIFs have no shiny variant
- still animation-less anywhere: gen 9 DLC legendaries (Ogerpon/masks, Loyal Three, Pecharunt, late paradoxes), Koraidon/Miraidon ride modes, Legends Z-A megas
- 16 new GIFs from RetroNC's animated gen-5-style sets (downscaled 480→96 nearest-neighbour, durations preserved): Ogerpon, Okidogi, Munkidori, Fezandipiti, Pecharunt, Iron Leaves/Boulder/Crown, and Z-A megas (Zygarde, Heatran, Darkrai, Zeraora, Baxcalibur, Golisopod, Meowstic, Magearna)
- `LOCAL_ANIM_SLUGS` set becomes `LOCAL_ANIM_FILES` map so forms can alias shared art (Ogerpon masks → base, Meowstic female → male, Magearna original → base)
- Koraidon/Miraidon ride poses map to the base slug in `DEFAULT_FORM_SLUGS` — cosmetic travel modes, base sprite is correct
- still static: `absol-mega-z`, `garchomp-mega-z`, `lucario-mega-z`, Tatsugiri megas — no animated art published yet
@netlify

netlify Bot commented Jul 29, 2026

Copy link
Copy Markdown

Deploy Preview for thepokemax ready!

Name Link
🔨 Latest commit 55966ed
🔍 Latest deploy log https://app.netlify.com/projects/thepokemax/deploys/6a6a7bd978793b0008a03b23
😎 Deploy Preview https://deploy-preview-4--thepokemax.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

- `TrainerGrid`: region grouping/order, collapse-all + per-region toggle, filter auto-expand, card selection
- `TrainerCard`: header fields, roster click reports species, back button
- `CompetitiveBuild`: set rendering, gen-accurate source slug, `FOR GAME` options, selection callback, pinned-gen empty state
- `useExpandedRegions`: defaults, no write before first toggle, persistence, corrupted-value fallback
- new CI workflow runs format check, lint, typecheck, tests, and build on every PR and every branch push
- `deploy.yml` steps get names + emojis to match
@codebend3r
codebend3r merged commit cd75ed3 into main Jul 29, 2026
6 checks passed
@codebend3r
codebend3r deleted the new-features branch July 31, 2026 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant