Class: Pokemongodb::Pokemon
- Inherits:
-
Pokemongodb
- Object
- Pokemongodb
- Pokemongodb::Pokemon
- Defined in:
- lib/pokemongodb/pokemon.rb,
lib/pokemongodb/pokemon/mew.rb,
lib/pokemongodb/pokemon/muk.rb,
lib/pokemongodb/pokemon/abra.rb,
lib/pokemongodb/pokemon/jynx.rb,
lib/pokemongodb/pokemon/onix.rb,
lib/pokemongodb/pokemon/seel.rb,
lib/pokemongodb/pokemon/arbok.rb,
lib/pokemongodb/pokemon/ditto.rb,
lib/pokemongodb/pokemon/doduo.rb,
lib/pokemongodb/pokemon/eevee.rb,
lib/pokemongodb/pokemon/ekans.rb,
lib/pokemongodb/pokemon/gloom.rb,
lib/pokemongodb/pokemon/golem.rb,
lib/pokemongodb/pokemon/hypno.rb,
lib/pokemongodb/pokemon/paras.rb,
lib/pokemongodb/pokemon/zubat.rb,
lib/pokemongodb/pokemon/cubone.rb,
lib/pokemongodb/pokemon/dodrio.rb,
lib/pokemongodb/pokemon/fearow.rb,
lib/pokemongodb/pokemon/gastly.rb,
lib/pokemongodb/pokemon/gengar.rb,
lib/pokemongodb/pokemon/golbat.rb,
lib/pokemongodb/pokemon/grimer.rb,
lib/pokemongodb/pokemon/horsea.rb,
lib/pokemongodb/pokemon/kabuto.rb,
lib/pokemongodb/pokemon/kakuna.rb,
lib/pokemongodb/pokemon/krabby.rb,
lib/pokemongodb/pokemon/lapras.rb,
lib/pokemongodb/pokemon/machop.rb,
lib/pokemongodb/pokemon/magmar.rb,
lib/pokemongodb/pokemon/mankey.rb,
lib/pokemongodb/pokemon/meowth.rb,
lib/pokemongodb/pokemon/mewtwo.rb,
lib/pokemongodb/pokemon/oddish.rb,
lib/pokemongodb/pokemon/pidgey.rb,
lib/pokemongodb/pokemon/pinsir.rb,
lib/pokemongodb/pokemon/ponyta.rb,
lib/pokemongodb/pokemon/raichu.rb,
lib/pokemongodb/pokemon/rhydon.rb,
lib/pokemongodb/pokemon/seadra.rb,
lib/pokemongodb/pokemon/staryu.rb,
lib/pokemongodb/pokemon/tauros.rb,
lib/pokemongodb/pokemon/vulpix.rb,
lib/pokemongodb/pokemon/weedle.rb,
lib/pokemongodb/pokemon/zapdos.rb,
lib/pokemongodb/pokemon/chansey.rb,
lib/pokemongodb/pokemon/dewgong.rb,
lib/pokemongodb/pokemon/diglett.rb,
lib/pokemongodb/pokemon/dratini.rb,
lib/pokemongodb/pokemon/drowzee.rb,
lib/pokemongodb/pokemon/dugtrio.rb,
lib/pokemongodb/pokemon/flareon.rb,
lib/pokemongodb/pokemon/geodude.rb,
lib/pokemongodb/pokemon/goldeen.rb,
lib/pokemongodb/pokemon/golduck.rb,
lib/pokemongodb/pokemon/haunter.rb,
lib/pokemongodb/pokemon/ivysaur.rb,
lib/pokemongodb/pokemon/jolteon.rb,
lib/pokemongodb/pokemon/kadabra.rb,
lib/pokemongodb/pokemon/kingler.rb,
lib/pokemongodb/pokemon/koffing.rb,
lib/pokemongodb/pokemon/machamp.rb,
lib/pokemongodb/pokemon/machoke.rb,
lib/pokemongodb/pokemon/marowak.rb,
lib/pokemongodb/pokemon/metapod.rb,
lib/pokemongodb/pokemon/moltres.rb,
lib/pokemongodb/pokemon/mr_mime.rb,
lib/pokemongodb/pokemon/omanyte.rb,
lib/pokemongodb/pokemon/omastar.rb,
lib/pokemongodb/pokemon/persian.rb,
lib/pokemongodb/pokemon/pidgeot.rb,
lib/pokemongodb/pokemon/pikachu.rb,
lib/pokemongodb/pokemon/poliwag.rb,
lib/pokemongodb/pokemon/porygon.rb,
lib/pokemongodb/pokemon/psyduck.rb,
lib/pokemongodb/pokemon/rattata.rb,
lib/pokemongodb/pokemon/rhyhorn.rb,
lib/pokemongodb/pokemon/scyther.rb,
lib/pokemongodb/pokemon/seaking.rb,
lib/pokemongodb/pokemon/slowbro.rb,
lib/pokemongodb/pokemon/snorlax.rb,
lib/pokemongodb/pokemon/spearow.rb,
lib/pokemongodb/pokemon/starmie.rb,
lib/pokemongodb/pokemon/tangela.rb,
lib/pokemongodb/pokemon/venonat.rb,
lib/pokemongodb/pokemon/voltorb.rb,
lib/pokemongodb/pokemon/weezing.rb,
lib/pokemongodb/pokemon/alakazam.rb,
lib/pokemongodb/pokemon/arcanine.rb,
lib/pokemongodb/pokemon/articuno.rb,
lib/pokemongodb/pokemon/beedrill.rb,
lib/pokemongodb/pokemon/caterpie.rb,
lib/pokemongodb/pokemon/clefable.rb,
lib/pokemongodb/pokemon/clefairy.rb,
lib/pokemongodb/pokemon/cloyster.rb,
lib/pokemongodb/pokemon/graveler.rb,
lib/pokemongodb/pokemon/gyarados.rb,
lib/pokemongodb/pokemon/kabutops.rb,
lib/pokemongodb/pokemon/magikarp.rb,
lib/pokemongodb/pokemon/magneton.rb,
lib/pokemongodb/pokemon/nidoking.rb,
lib/pokemongodb/pokemon/nidorina.rb,
lib/pokemongodb/pokemon/nidorino.rb,
lib/pokemongodb/pokemon/parasect.rb,
lib/pokemongodb/pokemon/primeape.rb,
lib/pokemongodb/pokemon/rapidash.rb,
lib/pokemongodb/pokemon/raticate.rb,
lib/pokemongodb/pokemon/shellder.rb,
lib/pokemongodb/pokemon/slowpoke.rb,
lib/pokemongodb/pokemon/squirtle.rb,
lib/pokemongodb/pokemon/vaporeon.rb,
lib/pokemongodb/pokemon/venomoth.rb,
lib/pokemongodb/pokemon/venusaur.rb,
lib/pokemongodb/pokemon/blastoise.rb,
lib/pokemongodb/pokemon/bulbasaur.rb,
lib/pokemongodb/pokemon/charizard.rb,
lib/pokemongodb/pokemon/dragonair.rb,
lib/pokemongodb/pokemon/dragonite.rb,
lib/pokemongodb/pokemon/electrode.rb,
lib/pokemongodb/pokemon/exeggcute.rb,
lib/pokemongodb/pokemon/exeggutor.rb,
lib/pokemongodb/pokemon/farfetchd.rb,
lib/pokemongodb/pokemon/growlithe.rb,
lib/pokemongodb/pokemon/hitmonlee.rb,
lib/pokemongodb/pokemon/lickitung.rb,
lib/pokemongodb/pokemon/magnemite.rb,
lib/pokemongodb/pokemon/nidoqueen.rb,
lib/pokemongodb/pokemon/nidoran_f.rb,
lib/pokemongodb/pokemon/nidoran_m.rb,
lib/pokemongodb/pokemon/ninetales.rb,
lib/pokemongodb/pokemon/pidgeotto.rb,
lib/pokemongodb/pokemon/poliwhirl.rb,
lib/pokemongodb/pokemon/poliwrath.rb,
lib/pokemongodb/pokemon/sandshrew.rb,
lib/pokemongodb/pokemon/sandslash.rb,
lib/pokemongodb/pokemon/tentacool.rb,
lib/pokemongodb/pokemon/vileplume.rb,
lib/pokemongodb/pokemon/wartortle.rb,
lib/pokemongodb/pokemon/aerodactyl.rb,
lib/pokemongodb/pokemon/bellsprout.rb,
lib/pokemongodb/pokemon/butterfree.rb,
lib/pokemongodb/pokemon/charmander.rb,
lib/pokemongodb/pokemon/charmeleon.rb,
lib/pokemongodb/pokemon/electabuzz.rb,
lib/pokemongodb/pokemon/hitmonchan.rb,
lib/pokemongodb/pokemon/jigglypuff.rb,
lib/pokemongodb/pokemon/kangaskhan.rb,
lib/pokemongodb/pokemon/tentacruel.rb,
lib/pokemongodb/pokemon/victreebel.rb,
lib/pokemongodb/pokemon/weepinbell.rb,
lib/pokemongodb/pokemon/wigglytuff.rb
Direct Known Subclasses
Abra, Aerodactyl, Alakazam, Arbok, Arcanine, Articuno, Beedrill, Bellsprout, Blastoise, Bulbasaur, Butterfree, Caterpie, Chansey, Charizard, Charmander, Charmeleon, Clefable, Clefairy, Cloyster, Cubone, Dewgong, Diglett, Ditto, Dodrio, Doduo, Dragonair, Dragonite, Dratini, Drowzee, Dugtrio, Eevee, Ekans, Electabuzz, Electrode, Exeggcute, Exeggutor, Farfetchd, Fearow, Flareon, Gastly, Gengar, Geodude, Gloom, Golbat, Goldeen, Golduck, Golem, Graveler, Grimer, Growlithe, Gyarados, Haunter, Hitmonchan, Hitmonlee, Horsea, Hypno, Ivysaur, Jigglypuff, Jolteon, Jynx, Kabuto, Kabutops, Kadabra, Kakuna, Kangaskhan, Kingler, Koffing, Krabby, Lapras, Lickitung, Machamp, Machoke, Machop, Magikarp, Magmar, Magnemite, Magneton, Mankey, Marowak, Meowth, Metapod, Mew, Mewtwo, Moltres, MrMime, Muk, Nidoking, Nidoqueen, NidoranF, NidoranM, Nidorina, Nidorino, Ninetales, Oddish, Omanyte, Omastar, Onix, Paras, Parasect, Persian, Pidgeot, Pidgeotto, Pidgey, Pikachu, Pinsir, Poliwag, Poliwhirl, Poliwrath, Ponyta, Porygon, Primeape, Psyduck, Raichu, Rapidash, Raticate, Rattata, Rhydon, Rhyhorn, Sandshrew, Sandslash, Scyther, Seadra, Seaking, Seel, Shellder, Slowbro, Slowpoke, Snorlax, Spearow, Squirtle, Starmie, Staryu, Tangela, Tauros, Tentacool, Tentacruel, Vaporeon, Venomoth, Venonat, Venusaur, Victreebel, Vileplume, Voltorb, Vulpix, Wartortle, Weedle, Weepinbell, Weezing, Wigglytuff, Zapdos, Zubat
Defined Under Namespace
Classes: Abra, Aerodactyl, Alakazam, Arbok, Arcanine, Articuno, Beedrill, Bellsprout, Blastoise, Bulbasaur, Butterfree, Caterpie, Chansey, Charizard, Charmander, Charmeleon, Clefable, Clefairy, Cloyster, Cubone, Dewgong, Diglett, Ditto, Dodrio, Doduo, Dragonair, Dragonite, Dratini, Drowzee, Dugtrio, Eevee, Ekans, Electabuzz, Electrode, Exeggcute, Exeggutor, Farfetchd, Fearow, Flareon, Gastly, Gengar, Geodude, Gloom, Golbat, Goldeen, Golduck, Golem, Graveler, Grimer, Growlithe, Gyarados, Haunter, Hitmonchan, Hitmonlee, Horsea, Hypno, Ivysaur, Jigglypuff, Jolteon, Jynx, Kabuto, Kabutops, Kadabra, Kakuna, Kangaskhan, Kingler, Koffing, Krabby, Lapras, Lickitung, Machamp, Machoke, Machop, Magikarp, Magmar, Magnemite, Magneton, Mankey, Marowak, Meowth, Metapod, Mew, Mewtwo, Moltres, MrMime, Muk, Nidoking, Nidoqueen, NidoranF, NidoranM, Nidorina, Nidorino, Ninetales, Oddish, Omanyte, Omastar, Onix, Paras, Parasect, Persian, Pidgeot, Pidgeotto, Pidgey, Pikachu, Pinsir, Poliwag, Poliwhirl, Poliwrath, Ponyta, Porygon, Primeape, Psyduck, Raichu, Rapidash, Raticate, Rattata, Rhydon, Rhyhorn, Role, Sandshrew, Sandslash, Scyther, Seadra, Seaking, Seel, Shellder, Slowbro, Slowpoke, Snorlax, Spearow, Squirtle, Starmie, Staryu, Tangela, Tauros, Tentacool, Tentacruel, Vaporeon, Venomoth, Venonat, Venusaur, Victreebel, Vileplume, Voltorb, Vulpix, Wartortle, Weedle, Weepinbell, Weezing, Wigglytuff, Zapdos, Zubat
Class Method Summary collapse
-
.all ⇒ Object
Returns array of all moves.
-
.candy_to_evolve ⇒ Object
Returns number of candies to evolve, or nil if no evolution.
-
.charge_move_types ⇒ Object
Returns array of possible charge move types.
-
.charge_moves ⇒ Object
Returns array of possible charge moves.
-
.egg_hatch_distance ⇒ Object
returns integer of distance to hatch an egg, or nil if not hatchable from egg.
-
.evolves_from ⇒ Object
Returns evolution precursor or nil.
-
.evolves_into ⇒ Object
returns the pokemon it evolves into, or nil if no further evolution.
-
.fast_move_types ⇒ Object
Returns array of possible move types.
-
.fast_moves ⇒ Object
Returns array of possible charge moves.
-
.find(query) ⇒ Object
Returns pokemon by id, string, or symbol.
-
.find_by_type(t) ⇒ Object
Returns pokemon by type.
-
.move_sets ⇒ Object
Returns all available MoveSets for Pokemon.
-
.move_types ⇒ Object
Returns array of possible move types.
-
.perfect_hatch_iv ⇒ Object
returns integer of perfect iv for hatched egg, or nil if not hatchable.
-
.role ⇒ Object
Returns pokemon by id, string, or symbol.
-
.strong_against ⇒ Object
Returns array of pokemon the subject is strong against.
-
.weak_against ⇒ Object
Returns array of pokemon the subject is weak against.
Methods inherited from Pokemongodb
Class Method Details
.all ⇒ Object
Returns array of all moves
Example:
>> Pokemongodb::Pokemon.all
=> [Pokemongodb::Pokemon::Abra, Pokemongodb::Pokemon::Aerodactyl, ...]
.candy_to_evolve ⇒ Object
Returns number of candies to evolve, or nil if no evolution
Example:
>> Pokemongodb::Pokemon::Bulbasaur.candy_to_evolve
=> 25
>> Pokemongodb::Pokemon::Ivysaur.candy_to_evolve
=> 100
>> Pokemongodb::Pokemon::Venusaur.candy_to_evolve
=> nil
28 29 30 |
# File 'lib/pokemongodb/pokemon.rb', line 28 def self.candy_to_evolve nil end |
.charge_move_types ⇒ Object
Returns array of possible charge move types
Example:
>> Pokemongodb::Pokemon::Bulbasaur.charge_move_types
=> [Pokemongodb::Type::Poison, Pokemongodb::Type::Grass]
37 38 39 |
# File 'lib/pokemongodb/pokemon.rb', line 37 def self.charge_move_types charge_moves.map(&:type).uniq end |
.charge_moves ⇒ Object
Returns array of possible charge moves
Example:
>> Pokemongodb::Pokemon::Bulbasaur.charge_moves
=> [Pokemongodb::Move::PowerWhip, Pokemongodb::Move::SeedBomb, Pokemongodb::Move::SludgeBomb]
46 47 48 |
# File 'lib/pokemongodb/pokemon.rb', line 46 def self.charge_moves moves.select { |move| move.category == Pokemongodb::Move::Category::CHARGE } end |
.egg_hatch_distance ⇒ Object
returns integer of distance to hatch an egg, or nil if not hatchable from egg
Example:
>> Pokemongodb::Pokemon::Bulbasaur.egg_hatch_distance
=> 2
>> Pokemongodb::Pokemon::Vulpix.egg_hatch_distance
=> 5
>> Pokemongodb::Pokemon::Venusaur.egg_hatch_distance
=> nil
61 62 63 |
# File 'lib/pokemongodb/pokemon.rb', line 61 def self.egg_hatch_distance nil end |
.evolves_from ⇒ Object
Returns evolution precursor or nil
Example:
>> Pokemongodb::Pokemon::Bulbasaur.evolves_from
=> nil
>> Pokemongodb::Pokemon::Ivysaur.evolves_from
=> Pokemongodb::Type::Bulbasaur
138 139 140 |
# File 'lib/pokemongodb/pokemon.rb', line 138 def self.evolves_from all.detect { |type| type.evolves_into == self } end |
.evolves_into ⇒ Object
returns the pokemon it evolves into, or nil if no further evolution
Example:
>> Pokemongodb::Pokemon::Bulbasaur.evolves_into
=> Pokemongodb::Pokemon::Ivysaur
>> Pokemongodb::Pokemon::Ivysaur.evolves_into
=> Pokemongodb::Pokemon::Venusayr
>> Pokemongodb::Pokemon::Venusaur.evolves_into
=> nil
76 77 78 |
# File 'lib/pokemongodb/pokemon.rb', line 76 def self.evolves_into nil end |
.fast_move_types ⇒ Object
Returns array of possible move types
Example:
>> Pokemongodb::Pokemon::Bulbasaur.fast_move_types
=> [Pokemongodb::Type::Normal, Pokemongodb::Type::Grass]
85 86 87 |
# File 'lib/pokemongodb/pokemon.rb', line 85 def self.fast_move_types fast_moves.map(&:type).uniq end |
.fast_moves ⇒ Object
Returns array of possible charge moves
Example:
>> Pokemongodb::Pokemon::Bulbasaur.fast_moves
=> [Pokemongodb::Move::Tackle, Pokemongodb::Move::VineWhip]
94 95 96 |
# File 'lib/pokemongodb/pokemon.rb', line 94 def self.fast_moves moves.select { |move| move.category == Pokemongodb::Move::Category::FAST } end |
.find(query) ⇒ Object
Returns pokemon by id, string, or symbol
Example:
>> Pokemongodb::Pokemon.find(1)
=> Pokemongodb::Pokemon::Bulbasaur
>> Pokemongodb::Pokemon.find('ivysaur')
=> Pokemongodb::Pokemon::Ivysaur
>> Pokemongodb::Pokemon.find(:venusaur)
=> Pokemongodb::Pokemon::Venusaur
109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/pokemongodb/pokemon.rb', line 109 def self.find(query) if query.is_a?(Integer) all.detect { |type| type.id == query } elsif query.is_a?(String) Pokemongodb::Pokemon.const_get(query.capitalize) elsif query.is_a?(Symbol) Pokemongodb::Pokemon.const_get(query.to_s.capitalize) else nil end end |
.find_by_type(t) ⇒ Object
Returns pokemon by type
Example:
>> Pokemongodb::Pokemon.find_by_type(Pokemongodb::Type::Water)
=> [Pokemongodb::Pokemon::Blastoise, Pokemongodb::Pokemon::Cloyster, ...]
126 127 128 |
# File 'lib/pokemongodb/pokemon.rb', line 126 def self.find_by_type(t) all.select { |pokemon| pokemon.types.include?(t) }.uniq end |
.move_sets ⇒ Object
Returns all available MoveSets for Pokemon
Example:
>> Pokemongodb::Pokemon::Bulbasaur.move_sets
=> [#<Pokemongodb::MoveSet:0xXXXXXX @fast_move=Pokemongodb::Move::VineWhip, @charge_move=Pokemongodb::Move::SludgeBomb, @dps=18.76>, ...]
147 148 149 |
# File 'lib/pokemongodb/pokemon.rb', line 147 def self.move_sets Pokemongodb::MoveSet.from_pokemon(self) end |
.move_types ⇒ Object
Returns array of possible move types
Example:
>> Pokemongodb::Pokemon::Bulbasaur.move_types
=> [[Pokemongodb::Type::Grass, 3]
156 157 158 |
# File 'lib/pokemongodb/pokemon.rb', line 156 def self.move_types (fast_move_types + charge_move_types).uniq end |
.perfect_hatch_iv ⇒ Object
returns integer of perfect iv for hatched egg, or nil if not hatchable
Example:
>> Pokemongodb::Pokemon::Bulbasaur.perfect_hatch_iv
=> 612
>> Pokemongodb::Pokemon::Ivysaur.perfect_hatch_iv
=> nil
168 169 170 171 172 |
# File 'lib/pokemongodb/pokemon.rb', line 168 def self.perfect_hatch_iv return nil unless self.egg_hatch_distance ratio = 4 / 7.0 (self.max_cp * ratio).to_i end |
.role ⇒ Object
Returns pokemon by id, string, or symbol
Example:
>> bulbasaur = Pokemongodb::Pokemon.find(1)
>> bulbasaur.role
=> :defense
>> charmander = Pokemongodb::Pokemon.find(4)
>> charmander.role
=> :offense
184 185 186 |
# File 'lib/pokemongodb/pokemon.rb', line 184 def self.role self.base_attack > self.base_defense ? Role::OFFENSE : Role::DEFENSE end |
.strong_against ⇒ Object
Returns array of pokemon the subject is strong against
Example:
>> Pokemongodb::Pokemon::Bulbasaur.strong_against
=> [Pokemongodb::Pokemon::Cubone, Pokemongodb::Pokemon::Diglett, ...]
193 194 195 |
# File 'lib/pokemongodb/pokemon.rb', line 193 def self.strong_against self.find_type_against(:strong_against) end |
.weak_against ⇒ Object
Returns array of pokemon the subject is weak against
Example:
>> Pokemongodb::Pokemon::Bulbasaur.weak_against
=> Pokemongodb::Pokemon::Beedrill, Pokemongodb::Pokemon::Butterfree, ... ]
202 203 204 |
# File 'lib/pokemongodb/pokemon.rb', line 202 def self.weak_against self.find_type_against(:weak_against) end |