class Smogon::Type::Pokemon
Attributes
abilities[RW]
base_stats[RW]
moves[RW]
name[RW]
tier[RW]
types[RW]
Public Class Methods
to_pokemon(ary)
click to toggle source
# File lib/botemon/smogon/pokemon.rb, line 29 def self.to_pokemon(ary) Pokemon.new.tap do |pokemon| pokemon.name = ary['name' ] pokemon.types = ary['types' ] pokemon.tier = ary['tier' ] pokemon.abilities = ary['abilities' ] pokemon.base_stats = ary['base_stats'] pokemon.moves = ary['moves' ] end end
Public Instance Methods
clues()
click to toggle source
# File lib/botemon/smogon/pokemon.rb, line 25 def clues "Ability: #{abilities.join(', ')}\nType: #{types.join(?/)}\nBase stats: #{base_stats.join(?/)}" end
stats(level, nature, evs, ivs)
click to toggle source
# File lib/botemon/smogon/pokemon.rb, line 51 def stats(level, nature, evs, ivs) natures = { :jolly => { :plus => :spe, :minus => :atksp }, :rash => { :plus => :atksp, :minus => :defsp }, :hardy => { :plus => :none, :minus => :none }, :brave => { :plus => :atk, :minus => :spe }, :naughty => { :plus => :atk, :minus => :defsp }, :calm => { :plus => :defsp, :minus => :atk }, :careful => { :plus => :defsp, :minus => :atksp }, :adamant => { :plus => :atk, :minus => :atksp }, :docile => { :plus => :none, :minus => :none }, :lax => { :plus => :def, :minus => :defsp }, :quirky => { :plus => :none, :minus => :none }, :gentle => { :plus => :defsp, :minus => :def }, :naive => { :plus => :spe, :minus => :defsp }, :hasty => { :plus => :spe, :minus => :def }, :mild => { :plus => :atksp, :minus => :def }, :modest => { :plus => :atksp, :minus => :atk }, :relaxed => { :plus => :def, :minus => :spe }, :quiet => { :plus => :atksp, :minus => :spe }, :bashful => { :plus => :none, :minus => :none }, :impish => { :plus => :def, :minus => :atksp }, :lonely => { :plus => :atk, :minus => :def }, :serious => { :plus => :none, :minus => :none }, :bold => { :plus => :def, :minus => :atk }, :timid => { :plus => :spe, :minus => :atk }, :sassy => { :plus => :defsp, :minus => :spe }, } fields = [ :hp, :atk, :def, :atksp, :defsp, :spe ] evs = Hash[fields.zip evs] ivs = Hash[fields.zip ivs] base_stats = Hash[fields.zip @base_stats] nature = natures[nature.downcase.to_sym] [].tap { |stats| fields.each_with_index { |field| iv = ivs[field].to_i ev = evs[field].to_i base_stat = base_stats[field].to_i multipler = case field when nature[:plus] then 1.1 when nature[:minus] then 0.9 else 1 end if field == :hp stats << (((iv + 2 * base_stat + ev / 4) * level / 100) + 10 + level).floor else stats << ((((iv + 2 * base_stat + ev / 4) * level / 100) + 5) * multipler).floor end } } end
to_ary()
click to toggle source
# File lib/botemon/smogon/pokemon.rb, line 40 def to_ary { 'name' => @name, 'types' => @types, 'tier' => @tier, 'abilities' => @abilities, 'base_stats' => @base_stats, 'moves' => @moves } end