class Pokemongodb::MoveSet
Attributes
charge_move[R]
fast_move[R]
Public Class Methods
from_pokemon(pokemon)
click to toggle source
Returns all available MoveSets for Pokemon
Example:
>> Pokemongodb::MoveSet.from_pokemon(Pokemongodb::Pokemon::Bulbasaur) => [#<Pokemongodb::MoveSet:0xXXXXXX @fast_move=Pokemongodb::Move::VineWhip, @charge_move=Pokemongodb::Move::SludgeBomb, @dps=18.76>, ...]
# File lib/pokemongodb/move_set.rb, line 11 def self.from_pokemon(pokemon) sets = [] pokemon.fast_moves.each do |fast_move| pokemon.charge_moves.each do |charge_move| sets << Pokemongodb::MoveSet.new(fast_move, charge_move, pokemon) end end sets.sort_by { |set| set.dps }.reverse end
new(fast_move, charge_move, pokemon)
click to toggle source
# File lib/pokemongodb/move_set.rb, line 21 def initialize(fast_move, charge_move, pokemon) @fast_move = fast_move @charge_move = charge_move @pokemon = pokemon @dps = dps end
Public Instance Methods
dps()
click to toggle source
# File lib/pokemongodb/move_set.rb, line 28 def dps timer = 90.0 damage = 0 energy = 0.0 until timer <= 0 move = energy >= @charge_move.energy.abs ? @charge_move : @fast_move timer -= move.cooldown damage += calculated_power(move) energy += calculated_energy(move) end return (damage / 90.0).round(2) end
Private Instance Methods
calculated_energy(move)
click to toggle source
# File lib/pokemongodb/move_set.rb, line 49 def calculated_energy(move) return move.energy if move.energy <= 0 modifier = @pokemon.types.include?(move.type) ? 1.25 : 1 (move.energy * modifier).round(2) end
calculated_power(move)
click to toggle source
# File lib/pokemongodb/move_set.rb, line 44 def calculated_power(move) modifier = @pokemon.types.include?(move.type) ? 1.25 : 1 (move.power * modifier).round(2) end