BattleSim/shared/tier.coffee

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