Formats
File: config/frontier/formats.conf
Formats define the competitive rules for battles — which clauses apply, what’s banned, level caps, team sizes, and team preview behavior. Each ladder references a format by ID.
Quick Example
Section titled “Quick Example”formats { standard { displayName = Standard clauses = [ "species_clause" "sleep_clause" "evasion_clause" "ohko_clause" "gimmick_ban" ] teamPreview = true teamSize = 6 validateLegality = true }}All Fields
Section titled “All Fields”| Field | Type | Default | Description |
|---|---|---|---|
displayName | String | "Standard" | Human-readable name shown in GUIs and messages. |
includes | List<String> | [] | Other format IDs to merge rules from. Clauses and bans are combined. |
clauses | List<String> | [] | Clause IDs to apply. Must match keys in clauses.conf. |
bannedSpecies | List<String> | [] | Species to ban (Showdown IDs, e.g. "mewtwo", "arceus"). |
bannedMoves | List<String> | [] | Moves to ban (e.g. "swagger", "baton_pass"). |
bannedAbilities | List<String> | [] | Abilities to ban (e.g. "moody", "shadow_tag"). |
bannedItems | List<String> | [] | Items to ban (e.g. "kings_rock"). |
targetLevel | Int? | null | If set, all Pokemon are treated as this level. null = use actual levels. |
teamSize | Int | 6 | Maximum Pokemon on a team. |
pickCount | Int? | null | Number of Pokemon to pick from the team for battle (bring 6, pick 4 for VGC). null = use all. |
requireUnevolved | Boolean | false | Only unevolved Pokemon (Little Cup). |
randomTeams | Boolean | false | Generate random teams instead of using the player’s party. |
teamPreview | Boolean | true | Show team preview phase before battle. |
randomGens | List<Int> | [9] | Generations to pull from for random team generation. |
validateLegality | Boolean | false | Check that each Pokemon’s moves and abilities are legal for its species/form. |
previewSettings.hideOpponentTeam | Boolean | false | Hide the opponent’s team during preview. |
previewSettings.randomLeadSelection | Boolean | false | Leads are chosen randomly instead of by the player. |
Default Formats
Section titled “Default Formats”Frontier ships with seven formats out of the box:
| ID | Display Name | Key Rules |
|---|---|---|
standard | Standard | 6v6, standard clauses, legality checks |
doubles | Doubles | 6v6 doubles, standard clauses |
vgc | VGC | Bring 6 pick 4, level 50, standard clauses |
little_cup | Little Cup | Level 5, unevolved only, standard clauses |
monotype | Monotype | All team members must share a type |
random | Random Battle | Random teams, team preview on |
random_doubles | Random Doubles | Random teams, doubles, pick 4 |
Here’s what the VGC format looks like in the actual config:
vgc { clauses = [ "species_clause" "sleep_clause" "evasion_clause" "ohko_clause" "gimmick_ban" ] displayName = VGC pickCount = 4 targetLevel = 50 teamPreview = true teamSize = 6 validateLegality = true}Format Inheritance
Section titled “Format Inheritance”The includes field lets you build formats on top of other formats. Clauses and ban lists are merged from all included formats. Scalar fields (like displayName and teamSize) use the top-level format’s values.
formats { base_ou { clauses = ["species_clause", "sleep_clause", "evasion_clause", "ohko_clause"] bannedSpecies = ["mewtwo", "arceus", "zacian"] validateLegality = true } ou_no_tera { displayName = "OU (No Tera)" includes = ["base_ou"] clauses = ["ban_tera"] }}In this example, ou_no_tera inherits all clauses and bans from base_ou, then adds ban_tera on top. The final clause list is the union of both.