pktool 0.2.0 → 0.2.1

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: 089a7e263e1c981304b149fc8e411068521ffa36
4
- data.tar.gz: c7e85e680df581d54d0f1b00ad568c68699f591b
3
+ metadata.gz: dcfda98a106cfc380a525ded26be5be7441177fb
4
+ data.tar.gz: 9dfd17382348141419dd7567ebe362b799c2d248
5
5
  SHA512:
6
- metadata.gz: a6fc3901e7780a2061757a352885fc49325b0979a142aea23c5c7eb03494522f25c7c932e80b58ed23f0b14d0f79a85da056e55fe8cf309df1c90f04b61d4b2c
7
- data.tar.gz: 41a4d2f9701e00b2e782913d7304f4419b99a212c77ed8ed16ef2536a177bb61d0a1ea58151c9a03df3540311c1c577dc0f35e901530670ea471c996e05f39d7
6
+ metadata.gz: 7229411c11e02d4e89c3d3e8bf000a37fe16bb433de62d6c8c88cfdb43077f16de1c7e565d2962b833810a63e4f0e9f51c51d29b07bbb5a51ac86701516a8d7b
7
+ data.tar.gz: 0624e5a6193b1a7b19a1b9375f9c1dff24ecc80a86cc2e1177aa221e9f304559b76d0471bbcb6e6f7962316ac2a4cdf229388472767e37d5fd23ff5f3f3ee1d2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pktool (0.2.0)
4
+ pktool (0.2.1)
5
5
  activerecord (~> 4.2.1)
6
6
  bundler (~> 1.3)
7
7
  rake (~> 10.4.1)
data/lib/attack.rb ADDED
@@ -0,0 +1,66 @@
1
+ require_relative "models/move"
2
+
3
+ module Pktool
4
+
5
+ class Attack
6
+ def initialize(move, attacker, defender)
7
+ move = Move.where(name: move).first
8
+ raise Error, "存在ない技です。" unless move
9
+ @move = move
10
+ @attacker = attacker
11
+ @defender = defender
12
+ @effects = []
13
+ @level = 50.0
14
+ @effect_rate = 1.0
15
+ @type_match = [attacker.type1, attacker.type2].include?(move.attack_type)
16
+ @type_rate = 1.0
17
+ @vital_rate = 1.5
18
+ end
19
+
20
+ def add_effect(effect)
21
+ end
22
+
23
+ def type_effect
24
+ type_effect = open("data/type.json") do |io|
25
+ JSON.load(io)
26
+ end
27
+ @type_rate *= type_effect[@defender.type1][@move.attack_type]
28
+ @type_rate *= type_effect[@defender.type2][@move.attack_type] unless @defender.type2.empty?
29
+ end
30
+
31
+ def type_match
32
+ @type_match ? 1.5 : 1.0
33
+ end
34
+
35
+ def select_move_type
36
+ case @move.move_type
37
+ when "物理"
38
+ @attack_stat = :A
39
+ @defence_stat = :B
40
+ when "特殊"
41
+ @attack_stat = :C
42
+ @defence_stat = :D
43
+ end
44
+ end
45
+
46
+ def fetch_base_damage
47
+ ((@move.power * @attacker.effected_statistics(@attack_stat) * (@level * 2.0 / 5.0 + 2.0 )) / @defender.effected_statistics(@defence_stat) / 50.0 * @effect_rate * type_match + 2.0) * @type_rate
48
+ end
49
+
50
+ def damage
51
+ type_effect
52
+ select_move_type
53
+ base = fetch_base_damage
54
+ min = base * 0.85
55
+ max = base * 1.0
56
+ {min: min.floor, max: max.floor}
57
+ end
58
+
59
+ def defeat
60
+ hp = @defender.statistics(:H)
61
+ return {num: (hp.to_f / damage[:min]).ceil, rate: (damage[:min] / hp.to_f)}
62
+ end
63
+
64
+ end
65
+
66
+ end
@@ -1,8 +1,9 @@
1
- require_relative 'pokemon'
2
- require_relative "nature"
3
- require_relative 'party'
4
- require_relative 'move'
5
- require_relative 'log'
1
+ require_relative '../models/pokemon'
2
+ require_relative "../models/nature"
3
+ require_relative '../models/move'
4
+ require_relative '../attack'
5
+ require_relative '../party'
6
+ require_relative '../log'
6
7
 
7
8
  module Pktool
8
9
 
@@ -49,10 +50,10 @@ module Pktool
49
50
  return Pokemon.fetch(name, feature)
50
51
  end
51
52
 
52
- def self.move(attacker, defender)
53
+ def self.attack(attacker, defender)
53
54
  moves = Move.pluck(:name)
54
55
  move = fetch("わざ", moves)
55
- move = Move.fetch(move, attacker, defender)
56
+ Attack.new(move, attacker, defender)
56
57
  end
57
58
 
58
59
  def self.fetch(name, completion = [])
@@ -2,12 +2,12 @@ require 'thor'
2
2
  require 'thor/group'
3
3
  require 'romaji'
4
4
  require 'romaji/core_ext/string'
5
- require_relative "log"
6
- require_relative "version"
7
- require_relative "pokemon"
8
- require_relative "move"
9
5
  require_relative "builder"
10
- require_relative "exceptions"
6
+ require_relative "../log"
7
+ require_relative "../version"
8
+ require_relative "../exceptions"
9
+ require_relative "../models/pokemon"
10
+ require_relative "../models/move"
11
11
 
12
12
  Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), "command", "*.rb"))) do |path|
13
13
  require path
@@ -26,8 +26,13 @@ module Pktool
26
26
  puts "<underline>種族値</underline>".termcolor
27
27
  puts pokemon.base_stat.map{|k,v| "<bold>#{k}</bold>:<red>#{v}</red> ".termcolor}.join
28
28
  puts "<underline>相性</underline>".termcolor
29
- puts pokemon.types.select{|k,v| v > 1 }.map{|k,v| "<bold>#{k}</bold>:<red>#{v}</red> ".termcolor}.join
30
- puts pokemon.types.select{|k,v| v < 1 }.map{|k,v| "<bold>#{k}</bold>:<blue>#{v}</blue> ".termcolor}.join
29
+ puts "4.0: " + pokemon.types.select{|k,v| v == 4.00 }.map{|k,v| "<red>#{k}</red>".termcolor}.join
30
+ puts "2.0: " + pokemon.types.select{|k,v| v == 2.00 }.map{|k,v| "<red>#{k}</red>".termcolor}.join
31
+ puts "1.0: " + pokemon.types.select{|k,v| v == 1.00 }.map{|k,v| "#{k}".termcolor}.join
32
+ puts "1/2: " + pokemon.types.select{|k,v| v == 0.50 }.map{|k,v| "<blue>#{k}</blue>".termcolor}.join
33
+ puts "1/4: " + pokemon.types.select{|k,v| v == 0.25 }.map{|k,v| "<blue>#{k}</blue>".termcolor}.join
34
+ puts ""
35
+ power(pokemon)
31
36
  end
32
37
 
33
38
  desc "status", "ポケモンのステータスを見る"
@@ -42,6 +47,16 @@ module Pktool
42
47
  puts pokemon.types.select{|k,v| v < 1 }.map{|k,v| "<bold>#{k}</bold>:<blue>#{v}</blue> ".termcolor}.join
43
48
  end
44
49
 
50
+ desc "power", "ポケモンのタイプ別の威力を見る"
51
+ def power(pokemon = Builder.default_pokemon)
52
+ pokemon.type_ranked_moves.each do |kind, moves|
53
+ puts "<underline>#{kind}</underline>".termcolor
54
+ moves.each do |move|
55
+ puts "<bold>#{move.attack_type}</bold> 威力:#{'%3d' % move.power} 命中:#{'%3d' % move.accuracy} #{move.name}".termcolor
56
+ end
57
+ end
58
+ end
59
+
45
60
  desc "damage", "ダメージ計算する"
46
61
  def damage
47
62
  puts "<underline>攻撃側の指定</underline>".termcolor
@@ -51,7 +66,7 @@ module Pktool
51
66
  defender = Builder.new_pokemon
52
67
 
53
68
  puts "<underline>技の指定</underline>".termcolor
54
- move = Builder.move(attacker, defender)
69
+ attack = Builder.attack(attacker, defender)
55
70
 
56
71
  puts ""
57
72
  puts "<underline>攻撃側</underline>".termcolor
@@ -59,8 +74,8 @@ module Pktool
59
74
  puts "<underline>防御側</underline>".termcolor
60
75
  puts defender.name + " " + defender.stats.map{|k,v| "<bold>#{k}</bold>:<blue>#{v}</blue> ".termcolor}.join
61
76
  puts
62
- puts move.damage.map{|k,v| "<bold>#{k}</bold>:<blue>#{v}</blue> ".termcolor}.join
63
- defeat = move.defeat
77
+ puts attack.damage.map{|k,v| "<bold>#{k}</bold>:<blue>#{v}</blue> ".termcolor}.join
78
+ defeat = attack.defeat
64
79
  puts "<bold>確定数</bold>:<red>#{defeat[:num]}回</red> (#{'%.2f' % (defeat[:rate] * 100)}%) ".termcolor
65
80
 
66
81
  end
@@ -1,5 +1,5 @@
1
- require_relative "../party"
2
- require_relative "../pokemon"
1
+ require_relative "../../party"
2
+ require_relative "../../models/pokemon"
3
3
  require 'termcolorlight'
4
4
 
5
5
  module Pktool
@@ -0,0 +1,13 @@
1
+ require_relative "database"
2
+ require_relative "pokemon"
3
+ require_relative "move"
4
+
5
+ module Pktool
6
+
7
+ class Acquisition < ActiveRecord::Base
8
+ belongs_to :pokemon
9
+ belongs_to :move
10
+
11
+ end
12
+
13
+ end
File without changes
@@ -0,0 +1,13 @@
1
+ require_relative "database"
2
+ require_relative "move"
3
+ require_relative "acquisition"
4
+
5
+ module Pktool
6
+
7
+ class Move < ActiveRecord::Base
8
+ has_many :acquisitions
9
+ has_many :pokemons, through: :acquisitions
10
+
11
+ end
12
+
13
+ end
@@ -1,5 +1,4 @@
1
1
  require_relative "database"
2
- require_relative "exceptions"
3
2
 
4
3
  module Pktool
5
4
  class Nature < ActiveRecord::Base
@@ -1,12 +1,15 @@
1
1
  require 'json'
2
2
  require_relative "database"
3
- require_relative "exceptions"
4
3
  require_relative "nature"
4
+ require_relative "acquisition"
5
+ require_relative "move"
5
6
 
6
7
 
7
8
  module Pktool
8
9
 
9
10
  class Pokemon < ActiveRecord::Base
11
+ has_many :acquisitions
12
+ has_many :moves, through: :acquisitions
10
13
 
11
14
  attr_accessor :nature, :effort_value, :individual_value, :ability, :item
12
15
  attr_accessor :description
@@ -38,6 +41,7 @@ module Pktool
38
41
  @ability = feature[:ability] || 1
39
42
  @item = feature[:item] || ""
40
43
  @level = feature[:level] || 50
44
+ @rank = feature[:rank] || 1
41
45
 
42
46
  if effort_value.instance_of?(Symbol) && @@ways.include?(effort_value)
43
47
  case effort_value
@@ -77,13 +81,36 @@ module Pktool
77
81
  [:H, :A, :B, :C, :D, :S].map { |name| [name, statistics(name)]}.to_h
78
82
  end
79
83
 
84
+ def effected_statistics(name)
85
+ effected = statistics(name)
86
+ effected *= rank_effect
87
+ effected *= 1.5 if name == :A && @item == "こだわりハチマキ"
88
+ effected *= 1.5 if name == :C && @item == "こだわりメガネ"
89
+
90
+ effected
91
+ end
92
+
93
+ def rank_effect
94
+ if @rank == 1
95
+ 1.0
96
+ else
97
+ @rank > 0 ? (@rank.abs + 2.0) / 2.0 : 2.0 / (@rank.abs + 2.0)
98
+ end
99
+ end
100
+
80
101
  def types
81
102
  type_effect = open("data/type.json") do |io|
82
103
  JSON.load(io)
83
104
  end
84
- Hash[type_effect.keys.map do |t|
85
- [t, type_effect[type1][t] * type_effect[type2][t]]
86
- end]
105
+ Hash[type_effect.keys.map { |t| [t, type_effect[type1][t] * (type2.present? ? type_effect[type2][t]: 1.0)] }]
106
+ end
107
+
108
+ def type_ranked_moves
109
+ list = moves.group("move_type, attack_type").having("max(power)").order("power desc")
110
+ {
111
+ "物理": list.where(move_type: "物理"),
112
+ "特殊": list.where(move_type: "特殊"),
113
+ }
87
114
  end
88
115
 
89
116
  def to_h
data/lib/party.rb CHANGED
@@ -1,23 +1,22 @@
1
1
  require 'json'
2
- require_relative "pokemon"
2
+ require_relative "models/pokemon"
3
3
 
4
4
  module Pktool
5
5
 
6
6
  class Party
7
7
  attr_accessor :list
8
8
 
9
- @@party_path = "data/user/"
9
+ @@json_path = "data/user/party.json"
10
10
 
11
- def initialize(name = "party")
12
- @file_path = @@party_path + "#{name}.json"
13
- json = open(@file_path) do |io|
11
+ def initialize
12
+ json = open(@@json_path) do |io|
14
13
  JSON.load(io, nil, { symbolize_names: true})
15
14
  end
16
15
  @list = json.map {|j| Pokemon.fetch(j[:name], j)}
17
16
  end
18
17
 
19
18
  def save
20
- open(@file_path, 'w') do |io|
19
+ open(@@json_path, 'w') do |io|
21
20
  JSON.dump(@list.map{|p| p.to_h}, io)
22
21
  end
23
22
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pktool
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/pktool.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  require_relative 'lib/log'
2
- require_relative 'lib/cli'
2
+ require_relative 'lib/cli/cli'
3
3
 
4
4
  Pktool::Cli.start(ARGV)
@@ -0,0 +1,75 @@
1
+ require_relative '../lib/attack'
2
+ require_relative '../lib/models/pokemon'
3
+
4
+ include Pktool
5
+
6
+ describe "Move" do
7
+
8
+ it "should calculate the damage without any aditional condition in case #1" do
9
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
10
+ defender = Pokemon.fetch("カビゴン", {nature: :ずぶとい, effort_value: :HB})
11
+ a = Attack.new("げきりん", attacker, defender)
12
+
13
+ expect(a.damage).to eq({min: 106, max: 125})
14
+ end
15
+
16
+ it "should calculate the damage without any aditional condition in case #2" do
17
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
18
+ defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB})
19
+ a = Attack.new("げきりん", attacker, defender)
20
+
21
+ expect(a.damage).to eq({min: 72, max: 85})
22
+ end
23
+
24
+ it "should calculate the damage with type effect" do
25
+ attacker = Pokemon.fetch("ボーマンダ", {nature: :いじっぱり, effort_value: :hAS})
26
+ defender = Pokemon.fetch("ナットレイ", {nature: :ずぶとい, effort_value: :HB})
27
+ a = Attack.new("だいもんじ", attacker, defender)
28
+
29
+ expect(a.damage).to eq({min: 148, max: 174})
30
+ # pokemon-trainer: expect(m.damage(attacker, defender)).to eq({min: 144, max: 172})
31
+ end
32
+
33
+ it "should calculate the damage without any aditional condition in case #1" do
34
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
35
+ defender = Pokemon.fetch("カビゴン", {nature: :ずぶとい, effort_value: :HB})
36
+ a = Attack.new("げきりん", attacker, defender)
37
+
38
+ expect(a.damage).to eq({min: 106, max: 125})
39
+ end
40
+
41
+ it "should calculate the damage with attack rank 2" do
42
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS, rank: 2})
43
+ defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB})
44
+ a = Attack.new("げきりん", attacker, defender)
45
+
46
+ expect(a.damage).to eq({min: 144, max: 169})
47
+ end
48
+
49
+ it "should calculate the damage with defence rank 2" do
50
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
51
+ defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB, rank: 2})
52
+ a = Attack.new("げきりん", attacker, defender)
53
+
54
+ expect(a.damage).to eq({min: 37, max: 43})
55
+ # pokemon-trainer: expect(a.damage).to eq({min: 36, max: 43})
56
+ end
57
+
58
+ it "should calculate the damage with こだわりハチマキ" do
59
+ attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS, item: "こだわりハチマキ"})
60
+ defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB})
61
+ a = Attack.new("げきりん", attacker, defender)
62
+
63
+ expect(a.damage).to eq({min: 108, max: 127})
64
+ # pokemon-trainer: expect(a.damage).to eq({min: 36, max: 43})
65
+ end
66
+
67
+ it "should calculate the damage with こだわりハチマキ" do
68
+ attacker = Pokemon.fetch("ラティオス", {nature: :ひかえめ, effort_value: :hCS, item: "こだわりメガネ"})
69
+ defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB})
70
+ a = Attack.new("りゅうせいぐん", attacker, defender)
71
+
72
+ expect(a.damage).to eq({min: 147, max: 173})
73
+ # pokemon-trainer: expect(a.damage).to eq({min: 147, max: 174})
74
+ end
75
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../lib/pokemon.rb'
1
+ require_relative '../../lib/models/pokemon.rb'
2
2
 
3
3
  include Pktool
4
4
 
@@ -39,5 +39,15 @@ describe "Pokemon" do
39
39
  p = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
40
40
  expect(p.types["氷"]).to eq(4)
41
41
  end
42
+
43
+ it "should has moves list" do
44
+ p = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
45
+ expect(p.moves.pluck(:name)).to include("げきりん")
46
+ end
47
+
48
+ it "should has moves list" do
49
+ p = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
50
+ expect(p.type_ranked_moves[:物理].find_by_attack_type("地").name).to include("じしん")
51
+ end
42
52
  end
43
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pktool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - uzimith
@@ -129,22 +129,24 @@ files:
129
129
  - data/pokemonData.sqlite
130
130
  - data/type.json
131
131
  - data/user/party.json
132
- - lib/builder.rb
133
- - lib/cli.rb
134
- - lib/command/party.rb
135
- - lib/database.rb
132
+ - lib/attack.rb
133
+ - lib/cli/builder.rb
134
+ - lib/cli/cli.rb
135
+ - lib/cli/command/party.rb
136
136
  - lib/exceptions.rb
137
137
  - lib/log.rb
138
- - lib/move.rb
139
- - lib/nature.rb
138
+ - lib/models/acquisition.rb
139
+ - lib/models/database.rb
140
+ - lib/models/move.rb
141
+ - lib/models/nature.rb
142
+ - lib/models/pokemon.rb
140
143
  - lib/party.rb
141
144
  - lib/pktool.rb
142
- - lib/pokemon.rb
143
145
  - lib/version.rb
144
146
  - pktool.gemspec
145
147
  - pktool.rb
146
- - spec/move_spec.rb
147
- - spec/pokemon_spec.rb
148
+ - spec/attack_spec.rb
149
+ - spec/models/pokemon_spec.rb
148
150
  - spec/spec_helper.rb
149
151
  - tool/create_pokemon_db/.gitignore
150
152
  - tool/create_pokemon_db/Gemfile
@@ -175,6 +177,6 @@ signing_key:
175
177
  specification_version: 4
176
178
  summary: ''
177
179
  test_files:
178
- - spec/move_spec.rb
179
- - spec/pokemon_spec.rb
180
+ - spec/attack_spec.rb
181
+ - spec/models/pokemon_spec.rb
180
182
  - spec/spec_helper.rb
data/lib/move.rb DELETED
@@ -1,52 +0,0 @@
1
- require_relative "database"
2
-
3
- module Pktool
4
- class Move < ActiveRecord::Base
5
- attr_accessor :attacker, :defender
6
-
7
- def self.fetch(name, attacker, defender)
8
- move = self.where(name: name).first
9
- raise Error, "存在ない技です。" unless move
10
- move.attacker = attacker
11
- move.defender = defender
12
- return move
13
- end
14
-
15
- def damage
16
- level = 50.0
17
- effect = 1.0
18
- effect *= 1.5 if [@attacker.type1, @attacker.type2].include?(self.attack_type)
19
-
20
- # type effect
21
- type_effect = open("data/type.json") do |io|
22
- JSON.load(io)
23
- end
24
- type = 1.0
25
- type *= type_effect[@defender.type1][self.attack_type]
26
- type *= type_effect[@defender.type2][self.attack_type] unless @defender.type2.empty?
27
-
28
- vital = 1.0
29
- case move_type
30
- when "物理"
31
- attack_stat = :A
32
- defence_stat = :B
33
- when "特殊"
34
- attack_stat = :C
35
- defence_stat = :D
36
- end
37
- # todo: this equation may be mistake.
38
- base = ((power * @attacker.statistics(attack_stat) * (level * 2.0 / 5.0 + 2.0 )) / @defender.statistics(defence_stat) / 50.0 * effect + 2.0) * type
39
- min = base * vital * 0.85
40
- max = base * vital * 1.0
41
- {min: min.floor, max: max.floor}
42
- end
43
-
44
- def defeat
45
- hp = @defender.statistics(:H)
46
- damage = self.damage
47
- return {num: (hp.to_f / damage[:min]).ceil, rate: (damage[:min] / hp.to_f)}
48
- end
49
-
50
- end
51
-
52
- end
data/spec/move_spec.rb DELETED
@@ -1,29 +0,0 @@
1
- require_relative '../lib/move.rb'
2
- require_relative '../lib/pokemon.rb'
3
-
4
- include Pktool
5
-
6
- describe "Move" do
7
-
8
- it "should calculate the damage without any aditional condition in case #1" do
9
- attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
10
- defender = Pokemon.fetch("カビゴン", {nature: :ずぶとい, effort_value: :HB})
11
- m = Move.fetch("げきりん", attacker, defender)
12
- expect(m.damage).to eq({min: 106, max: 125})
13
- end
14
-
15
- it "should calculate the damage without any aditional condition in case #2" do
16
- attacker = Pokemon.fetch("ガブリアス", {nature: :いじっぱり, effort_value: :hAS})
17
- defender = Pokemon.fetch("クレセリア", {nature: :ずぶとい, effort_value: :HB})
18
- m = Move.fetch("げきりん", attacker, defender)
19
- expect(m.damage).to eq({min: 72, max: 85})
20
- end
21
-
22
- it "should calculate the damage with type effect" do
23
- attacker = Pokemon.fetch("ボーマンダ", {nature: :いじっぱり, effort_value: :hAS})
24
- defender = Pokemon.fetch("ナットレイ", {nature: :ずぶとい, effort_value: :HB})
25
- m = Move.fetch("だいもんじ", attacker, defender)
26
- # expect(m.damage(attacker, defender)).to eq({min: 144, max: 172})
27
- expect(m.damage).to eq({min: 148, max: 174})
28
- end
29
- end