Region-organized teams & trainers, per-game builds, full animation coverage - #4
Merged
Conversation
- 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
✅ Deploy Preview for thepokemax ready!
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Teams & Trainers
Ancient Sinnoh; newx-yteam fills the Kalos gapCompetitive builds
FOR GAMEselector pins the build to any game the Pokémon appears in (gen-accurate Smogon sets)Sprites & fonts
Space Monoswapped in for digit-heavy and small tracked-caps text (Pixelify's5→S,H→Wconfusion)Tests & CI
TrainerGridregion grouping/collapse/filters,TrainerCardroster interactions,CompetitiveBuildselector + empty states,useExpandedRegionspersistenceci.ymlruns 🎨 format check, 🧹 lint, 🔤 typecheck, 🧪 tests, and 🏗️ build on every PR and every branch push; deploy workflow steps labeled to match