BattleSim/shared/pokebattle_values.coffee

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