pokemongodb 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d9827fd8159f94b0f7b3d513414ed55920c9bc7
4
- data.tar.gz: bc02fc64008488a605b5e6ad0880d0409e3ac86e
3
+ metadata.gz: 3de28ddbc8b64e47d7d5e8b06a7e92bac5913bf2
4
+ data.tar.gz: b456325269aeac29a42f2e90f193015464c43815
5
5
  SHA512:
6
- metadata.gz: 59f00f5eee85dd3d76ff1b81b7214008c54a0c6a915491c193c7ccb1cd6590ebb48d7d3dcd9b44f2b57f58d25147eec4ba0f52c824f443d00bc0d82ca7b86178
7
- data.tar.gz: 4d6b42e999753bcda35d146e7fc061ae62cff2958d25fdebd6b2adba82d08489889d4fd7c3ec150e05e610f1bc4aa22c8f79a8034888ea08b348d7e5c40070ff
6
+ metadata.gz: 48f359f71a4f0aad2ddb59edb4a5b30faf15f5d5b218411a8f0d085521613b0ecccf55f957b82c64cbb53399b56b16581e2f108dd56ed5f8f447b8a6d1f313b5
7
+ data.tar.gz: 4df8cce955437642b2ec81ad23f4d729a8c42987bb973f3cd86b803c4e34fb3717cab8eb26484c4cfe075d88d5ea3dee7f9ad92eaf2ca35b8d55c345f624820a
@@ -22,5 +22,6 @@ end
22
22
 
23
23
  require 'pokemongodb/location'
24
24
  require 'pokemongodb/move'
25
+ require 'pokemongodb/move_set'
25
26
  require 'pokemongodb/pokemon'
26
27
  require 'pokemongodb/type'
@@ -0,0 +1,52 @@
1
+ class Pokemongodb
2
+ class MoveSet < Pokemongodb
3
+ # Returns all available MoveSets for Pokemon
4
+ #
5
+ # Example:
6
+ # >> Pokemongodb::MoveSet.from_pokemon(Pokemongodb::Pokemon::Bulbasaur)
7
+ # => [#<Pokemongodb::MoveSet:0xXXXXXX @fast_move=Pokemongodb::Move::VineWhip, @charge_move=Pokemongodb::Move::SludgeBomb, @dps=18.76>, ...]
8
+ def self.from_pokemon(pokemon)
9
+ sets = []
10
+ pokemon.fast_moves.each do |fast_move|
11
+ pokemon.charge_moves.each do |charge_move|
12
+ sets << Pokemongodb::MoveSet.new(fast_move, charge_move, pokemon)
13
+ end
14
+ end
15
+ sets.sort_by { |set| set.dps }.reverse
16
+ end
17
+
18
+ def initialize(fast_move, charge_move, pokemon)
19
+ @fast_move = fast_move
20
+ @charge_move = charge_move
21
+ @pokemon = pokemon
22
+ @dps = dps
23
+ end
24
+
25
+ def dps
26
+ timer = 90.0
27
+ damage = 0
28
+ energy = 0.0
29
+
30
+ until timer <= 0
31
+ move = energy >= @charge_move.energy.abs ? @charge_move : @fast_move
32
+ timer -= move.cooldown
33
+ damage += calculated_power(move)
34
+ energy += calculated_energy(move)
35
+ end
36
+
37
+ return (damage / 90.0).round(2)
38
+ end
39
+
40
+ private
41
+ def calculated_power(move)
42
+ modifier = @pokemon.types.include?(move.type) ? 1.25 : 1
43
+ (move.power * modifier).round(2)
44
+ end
45
+
46
+ def calculated_energy(move)
47
+ return move.energy if move.energy <= 0
48
+ modifier = @pokemon.types.include?(move.type) ? 1.25 : 1
49
+ (move.energy * modifier).round(2)
50
+ end
51
+ end
52
+ end
@@ -139,6 +139,15 @@ class Pokemongodb
139
139
  all.detect { |type| type.evolves_into == self }
140
140
  end
141
141
 
142
+ # Returns all available MoveSets for Pokemon
143
+ #
144
+ # Example:
145
+ # >> Pokemongodb::Pokemon::Bulbasaur.move_sets
146
+ # => [#<Pokemongodb::MoveSet:0xXXXXXX @fast_move=Pokemongodb::Move::VineWhip, @charge_move=Pokemongodb::Move::SludgeBomb, @dps=18.76>, ...]
147
+ def self.move_sets
148
+ Pokemongodb::MoveSet.from_pokemon(self)
149
+ end
150
+
142
151
  # Returns array of possible move types
143
152
  #
144
153
  # Example:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pokemongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TeoUCSB82
@@ -69,6 +69,7 @@ files:
69
69
  - lib/pokemongodb/locations/wetland.rb
70
70
  - lib/pokemongodb/locations/woodland.rb
71
71
  - lib/pokemongodb/move.rb
72
+ - lib/pokemongodb/move_set.rb
72
73
  - lib/pokemongodb/moves/acid.rb
73
74
  - lib/pokemongodb/moves/aerial_ace.rb
74
75
  - lib/pokemongodb/moves/air_cutter.rb