-
Notifications
You must be signed in to change notification settings - Fork 0
Cups & Formats
PvPoke's Rankings and Team Builder rely on two key data structures, cups and formats.
- A cup contains a specific set of rules that define which Pokemon are eligible. Cup data is stored in
data/gamemaster/cups
directory in individual JSON files. Cup data is league agnostic - a cup can take place in any league. - A format includes a league CP and a cup name that refers to the cup data described above. Format data is stored in
data/gamemaster/formats.json
.
A cup JSON object can contain the following properties and values. You can quickly obtain a cup's JSON object with Custom Rankings feature's Import/Export Settings.
Lowercase string used as a cup ID in formats and URLs. The cup name must contain alphanumeric characters only.
String displayed in the UI, only visible in the Custom Rankings advanced settings.
Array of filter objects that define Pokemon eligibility. A Pokemon must match all include
filters to be eligible, or be explicitly listed in an id
filter. This array can be empty (an empty array allows all Pokemon except those that meet the exclude
criteria).
A filter object has the following properties:
-
filterType
- A string defining the type of filter. Common values includetype
,id
, andtag
. A full list of filters can be found on the Custom Rankings page. -
values
- An array of values for the filter. -
leagues
(optional) - An array of integer CP values for leagues to apply the specific filter. For example, this property is used for the Remix cup to define differentexclusion
lists in different leagues. -
includeShadows
(optional) - A boolean for theid
filter that defines if the filter includes Shadow versions of the listed Pokemon. This value isfalse
by default forinclude
filters andtrue
by default forexclude
filters.
Array of filter objects that define excluded or banned Pokemon. A Pokemon is excluded if it matches any exclude
filter. See above for filter object properties.
Integer with default value of 50
. This value can be set to 40
for classic cups. 40
and 50
are the only supported values.
Integer with default value of 6
. Supported values are 3
for GO Battle League cups, and 8
for show 8 ban 2 cups. This value is used by the Train feature to disable the "Tournament (6v6)" mode for these cups. It is also used by the Team Builder to set the default team size to 8
for cups with a partySize
value of 8
.
Integer that defines the number of restricted Pokemon allowed on a team.
Array of Pokemon ID's that define a cup's restricted Pokemon list. Shadow Pokemon don't need to be explicitly listed.
An object that defines points and eligibility in tier-based cups. This object has the following properties:
-
max
- Integer maximum number of points allowed on a team. -
floor
- Integer point value for Pokemon that are eligible in the cup but not defined in a tier (ie the lowest tier). -
tiers
- Array of tier objects that define points and eligibility per tier.
A tier
object has the following properties:
-
points
- Integer value for the point cost of a Pokemon in the tier. -
pokemon
- Array of Pokemon ID's. Shadow versions of the listed Pokemon are automatically included in point calculation and don't need to be explicitly listed.
Below is an example of a cup JSON object.
{
"name": "venture",
"title": "Venture Cup",
"include": [],
"exclude": [{
"filterType": "type",
"values": ["dark", "fairy", "steel"]
}, {
"filterType": "tag",
"values": ["mega"]
}, {
"filterType": "id",
"values": ["chansey", "pidgeot"]
}],
"tierRules": {
"max": 20,
"floor": 1,
"tiers": [{
"points": 10,
"pokemon": ["hypno", "hypno_shadow", "lickitung", "altaria", "froslass", "cresselia", "marowak_alolan"]
}, {
"points": 6,
"pokemon": ["dewgong", "lapras", "snorlax", "dragonair", "politoed", "kingdra", "vigoroth", "medicham", "regirock", "deoxys_defense", "munchlax", "lickilicky", "jellicent", "galvantula", "talonflame", "dragalge", "lugia"]
}, {
"points": 4,
"pokemon": ["machamp", "haunter", "gengar", "dragonite", "mew", "lanturn", "wobbuffet", "mantine", "swampert", "pelipper", "zangoose", "whiscash", "cradily", "dusclops", "tropius", "sealeo", "pachirisu", "drifblim", "abomasnow", "crustle", "stunfisk", "goodra", "graveler_alolan", "sirfetchd", "nidoqueen", "flygon"]
}]
}
}
Each format object listed in data/gamemaster/formats.json
controls which formats are listed in the UI of the Rankings, Team Builder, and Multi-Battle dropdowns. Note that Great League, Ultra League, and Master League are listed by default and not included in the data files. A format JSON object can contain the following properties and values.
String displayed in the UI for the site's format select dropdowns.
String of the associated cup
object. This must match the cup's name
property.
Integer value for the format's league CP. Accepted values are 500
1500
2500
10000
(10000
is the site's CP limit for Master League).
String of the format's meta group. This must match the filename of the JSON file located in the data/groups
directory (do not include the .json
file extension).
Boolean that controls if this format is listed in the Multi-Battle cup select dropdown.
Boolean that controls if this format is listed in the Rankings and Team Builder dropdowns.
Boolean that controls if this format is listed in Custom Multi-Battle "quick fill" dropdown.
Boolean that will remove the format from the Rankings page dropdown. This may be used for formats that require Team Builder support but not ranking support (such as Cliffhanger).
The above values are usually true
for all active formats. Formats that are inactive or contain Multi-Battle resources for community cups may have one or more of these set to false
.
Below is an example of a format JSON object.
{
"title": "Master League (Premier Classic)",
"cup": "premierclassic",
"cp": 10000,
"meta": "masterpremierclassic",
"showCup": false,
"showFormat": false,
"showMeta": true
}
Each JSON file listed in data/groups
directory contains a list of Pokemon that make up the most common / relevant Pokemon for the specified meta. These groups can be used in places like the quick select list for Matrix Battles and Custom Threats for Team Builder.
The name of each file in the directory corresponds to the meta
field of an entry in formats.json
. Each group contains a list with each element having the following properties.
String that matches a speciesId
found in data/gamemaster/pokemon.json
String that matches one of the elements of fastMoves
from the above Pokemon in data/gamemaster/pokemon.json
.
Array of 2 Strings that are both elements of chargedMoves
from the above Pokemon in data/gamemaster/pokemon.json
[
{
"speciesId":"azumarill",
"fastMove":"BUBBLE",
"chargedMoves":["ICE_BEAM","PLAY_ROUGH"]
},
{
"speciesId":"walrein",
"fastMove":"POWDER_SNOW",
"chargedMoves":["ICICLE_SPEAR","EARTHQUAKE"]
}
]