35 lines
983 B
CoffeeScript
35 lines
983 B
CoffeeScript
|
self = (if window? then window.PokeBattle.PBV ?= {} else this)
|
||
|
|
||
|
BATON_PASS_PBV = 15
|
||
|
|
||
|
self.determinePBV = (genData, pokemonArray) ->
|
||
|
if pokemonArray not instanceof Array then pokemonArray = [ pokemonArray ]
|
||
|
total = 0
|
||
|
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
|
||
|
|
||
|
# Get PBV of the Pokemon's forme
|
||
|
pbv = speciesData?[forme]?.pokeBattleValue || 0
|
||
|
|
||
|
# Handle Eviolite
|
||
|
pbv = Math.round(1.3 * pbv / 5) * 5 if item == 'Eviolite'
|
||
|
|
||
|
# Add to total
|
||
|
total += pbv
|
||
|
|
||
|
# Handle Baton Pass. Baton Pass cray.
|
||
|
bpers = (p for p in pokemonArray when "Baton Pass" in (p.moves || []))
|
||
|
total += BATON_PASS_PBV * Math.pow(2, bpers.length - 1) if bpers.length > 0
|
||
|
|
||
|
return total
|