class Oakdex::Pokemon::Move

Represents Pokemon Move with PP

Attributes

max_pp[R]
move_type[R]
pp[RW]

Public Class Methods

create(move_id) click to toggle source
# File lib/oakdex/pokemon/move.rb, line 7
def self.create(move_id)
  move_type = Oakdex::Pokedex::Move.find!(move_id)
  new(move_type, move_type.pp, move_type.pp)
end
new(move_type, pp, max_pp) click to toggle source
# File lib/oakdex/pokemon/move.rb, line 21
def initialize(move_type, pp, max_pp)
  @move_type  = move_type
  @pp         = pp
  @max_pp     = max_pp
end

Public Instance Methods

add_max_pp(change_by) click to toggle source
# File lib/oakdex/pokemon/move.rb, line 50
def add_max_pp(change_by)
  old = max_pp
  @max_pp = [max_pp + change_by, @move_type.max_pp].min
  @pp += @max_pp - old
end
add_pp(change_by) click to toggle source
# File lib/oakdex/pokemon/move.rb, line 56
def add_pp(change_by)
  @pp = [@pp + change_by, @max_pp].min
end
inspect() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 27
def inspect
  fields = instance_variables.map do |name|
    if name == :@move_type
      "#{name}=#<Oakdex::Pokedex::Move #{@move_type.name}>"
    else
      "#{name}=#{instance_variable_get(name)}"
    end
  end
  "#<#{self.class.name}:#{object_id} #{fields.join(', ')}>"
end
max_pp_at_max?() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 42
def max_pp_at_max?
  @max_pp >= @move_type.max_pp
end
name() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 38
def name
  @move_type.names['en']
end
pp_max?() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 46
def pp_max?
  @pp >= @max_pp
end
to_h() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 68
def to_h
  {
    move_id: @move_type.name,
    pp: @pp,
    max_pp: @max_pp
  }
end
type() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 64
def type
  Oakdex::Pokedex::Type.find!(type_id)
end
type_id() click to toggle source
# File lib/oakdex/pokemon/move.rb, line 60
def type_id
  @move_type.type
end