99 lines
2.2 KiB
CoffeeScript
99 lines
2.2 KiB
CoffeeScript
self = (if window? then window.PokeBattle.Tier ?= {} else this)
|
|
|
|
if !window?
|
|
{Tiers} = require('./conditions')
|
|
{_} = require('underscore')
|
|
actualtiers = Tiers
|
|
else
|
|
conditions = window.conditions ? {}
|
|
actualtiers = Tiers
|
|
_ = window._
|
|
|
|
self.Tiers =
|
|
Unsorted:
|
|
name : "Unsorted"
|
|
humanName : "Unsorted"
|
|
tierRank : -1
|
|
playable : false
|
|
PA:
|
|
name : "PA"
|
|
humanName : "Pathetic"
|
|
tierRank : 0
|
|
playable : false
|
|
LC:
|
|
name : "LC"
|
|
humanName : "Little Cup"
|
|
tierRank : 1
|
|
playable : true
|
|
priority : 3
|
|
PU:
|
|
name : "PU"
|
|
humanName : "Poorly Used"
|
|
tierRank : 2
|
|
playable : false
|
|
NU:
|
|
name : "NU"
|
|
humanName : "Never Used"
|
|
tierRank : 3
|
|
playable : false
|
|
RU:
|
|
name : "RU"
|
|
humanName : "Rarely Used"
|
|
tierRank : 4
|
|
playable : false
|
|
UU:
|
|
name : "UU"
|
|
humanName : "Under Used"
|
|
tierRank : 5
|
|
playable : true
|
|
priority : 1
|
|
OU:
|
|
name : "OU"
|
|
humanName : "Over Used"
|
|
tierRank : 6
|
|
playable : true
|
|
priority : 0
|
|
Uber:
|
|
name : "Uber"
|
|
humanName : "Ubers"
|
|
tierRank : 7
|
|
playable : true
|
|
priority : 2
|
|
AG:
|
|
name : "AG"
|
|
humanName : "Anything Goes"
|
|
tierRank : 8
|
|
playable : false
|
|
|
|
self.determineTier = (genData, pokemonArray) ->
|
|
actualtiers = @Tiers
|
|
if pokemonArray not instanceof Array then pokemonArray = [ pokemonArray ]
|
|
tierrank = -1
|
|
for pokemon in pokemonArray
|
|
species = pokemon.species
|
|
forme = pokemon.forme || "default"
|
|
item = pokemon.item
|
|
speciesData = genData?.FormeData[species]
|
|
|
|
# Handle megas
|
|
mega = genData?.ItemData[item]?.mega
|
|
if mega
|
|
[ megaSpecies, megaForme ] = mega
|
|
if species == megaSpecies
|
|
forme = megaForme
|
|
|
|
# Handle Mega Rayquaza
|
|
if species is "Rayquaza" and pokemon.moves? and "Dragon Ascent" in pokemon.moves
|
|
forme = "mega"
|
|
|
|
# Get PBV of the Pokemon's forme
|
|
tier = speciesData?[forme]?.tier[0] || 'Unsorted'
|
|
tierdata = actualtiers[tier]
|
|
|
|
tierdata = actualtiers['Unsorted'] if typeof tierdata == 'undefined'
|
|
|
|
if tierdata.tierRank > tierrank
|
|
tierrank = tierdata.tierRank
|
|
|
|
actualtier = _.findWhere(actualtiers, {tierRank: tierrank});
|
|
return actualtier |