From e2a461149aff48d1140407c129f169f5858502be Mon Sep 17 00:00:00 2001 From: surfnWOB <252378604+surfnWOB@users.noreply.github.com> Date: Tue, 21 Apr 2026 23:34:01 -0400 Subject: [PATCH] UUBL teambuilder: include (OU) by technicality mons in the picker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Gen 3 UUBL, Porygon2, Raikou, and Regice are (OU) by technicality but explicitly unbanned from the format (smogon/pokemon-showdown#11980). The teambuilder picker slices the tier set at the UUBL boundary, which is set AFTER the (OU) section, so these mons fall into baseIllegalResults and display as Illegal. Fix is data-driven: - build-indexes now emits formatSlices['(OU)'], so the picker has an index pointing at the start of the "OU by technicality" section. - battle-dex-search.ts uses slices['(OU)'] || slices.UUBL for the uubl format, matching the existing fallback pattern used by RU/NU/PU/ZU. No hardcoded pokemon IDs or gen checks — the "OU by technicality" header and its entries are already in the tier list; we just start the slice a little earlier. --- build-tools/build-indexes | 2 +- play.pokemonshowdown.com/src/battle-dex-search.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-tools/build-indexes b/build-tools/build-indexes index 4287f8bb1..7990ddcec 100755 --- a/build-tools/build-indexes +++ b/build-tools/build-indexes @@ -613,7 +613,7 @@ process.stdout.write("Building `data/teambuilder-tables.js`... "); for (const tier of tierOrder) { if (tier in { - OU: 1, UUBL: 1, AG: 1, Uber: 1, UU: 1, RU: 1, NU: 1, PU: 1, ZU: 1, NFE: 1, LC: 1, DOU: 1, DUU: 1, + OU: 1, "(OU)": 1, UUBL: 1, AG: 1, Uber: 1, UU: 1, RU: 1, NU: 1, PU: 1, ZU: 1, NFE: 1, LC: 1, DOU: 1, DUU: 1, "(DUU)": 1, New: 1, Legal: 1, Regular: 1, Restricted: 1, "CAP LC": 1, }) { let usedTier = tier; diff --git a/play.pokemonshowdown.com/src/battle-dex-search.ts b/play.pokemonshowdown.com/src/battle-dex-search.ts index 25b6c2018..ac7fb8922 100644 --- a/play.pokemonshowdown.com/src/battle-dex-search.ts +++ b/play.pokemonshowdown.com/src/battle-dex-search.ts @@ -1142,7 +1142,7 @@ class BattlePokemonSearch extends BattleTypedSearch<'pokemon'> { }); } } else if (format === 'ou') tierSet = tierSet.slice(slices.OU); - else if (format === 'uubl') tierSet = tierSet.slice(slices.UUBL); + else if (format === 'uubl') tierSet = tierSet.slice(slices['(OU)'] || slices.UUBL); else if (format === 'uu') tierSet = tierSet.slice(slices.UU); else if (format === 'ru') tierSet = tierSet.slice(slices.RU || slices.UU); else if (format === 'nu') tierSet = tierSet.slice(slices.NU);