gloomhaven 1.0.7.1 → 1.0.8.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
  SHA256:
3
- metadata.gz: e7c9d63eeb3b3dde93092d25c7b45b93a041d1ebf87275335edd4589ccece20e
4
- data.tar.gz: fcf5579457b18f484a3dd5175d54caa2672b8b68ca07f7d1b0460d51814ee3e2
3
+ metadata.gz: b9a9c6115b2132fd750f361c54257be7fb60eeeaec8c8a2e8c03f17f12d58a0f
4
+ data.tar.gz: dd2fd656988020b324b62276c29080d0c1fc06e14f32eeb0f811c6e1729d0f2b
5
5
  SHA512:
6
- metadata.gz: '0089b3a4c9676c26b7b6d20c058cb8fbcc1f687b3e3f3471bde5a6754ed5f4cc7ce6043464b4b3fa6c9a59d2b351150956f2bbd27e2308e834571a5c4939897b'
7
- data.tar.gz: a50b06b4e550a457dc635ddf602678545542f546dac56e96eec84b5c4da45d2a14ea5fec875bef82a4f14d88cf52ab4e7c544ccdc8401767caa643345df2c209
6
+ metadata.gz: 881c7920a31728ba1a9aeb43a0ff6558bb1f03696af946a3486e310cf5e8508fe0f342f884b1afe8d172196e43c02550879c225c39157be89657fc9ea3a80392
7
+ data.tar.gz: 2ee41842565711ddbea09bcf82ead6de444a9a7dfc25ceca5a50e648f4f078448716a37c99048b26580a810588d0e0cbce8edddbcd8f64d49109df4c08b5ffb8
data/Gemfile.lock CHANGED
@@ -1,13 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gloomhaven (1.0.7.1)
4
+ gloomhaven (1.0.8.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ coderay (1.1.2)
9
10
  diff-lcs (1.3)
10
11
  docile (1.3.2)
12
+ method_source (0.9.2)
13
+ pry (0.12.2)
14
+ coderay (~> 1.1.0)
15
+ method_source (~> 0.9.0)
11
16
  rake (13.0.1)
12
17
  rspec (3.9.0)
13
18
  rspec-core (~> 3.9.0)
@@ -33,6 +38,7 @@ PLATFORMS
33
38
  DEPENDENCIES
34
39
  bundler (~> 2.0)
35
40
  gloomhaven!
41
+ pry
36
42
  rake (~> 13.0)
37
43
  rspec (~> 3.0)
38
44
  simplecov (~> 0.18.4)
data/changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 1.0.8
2
+ - Allow gold, xp
3
+ - Update characters yaml to return name, spoiler_name, number. Sort by number
4
+
1
5
  # 1.0.7.1
2
6
  - Fixed loading issue with pry gem
3
7
 
@@ -1,5 +1,8 @@
1
1
  ---
2
- beast_tyrant:
2
+ -
3
+ name: Beast Tyrant
4
+ spoiler_name: Two Mini
5
+ number: 17
3
6
  perks:
4
7
  remove_two_minus_one_cards: 1
5
8
  replace_one_minus_one_card_with_one_plus_one_card: 3
@@ -9,7 +12,10 @@ beast_tyrant:
9
12
  add_two_rolling_heal_plus_one_cards: 3
10
13
  add_two_rolling_nature_cards: 1
11
14
  ignore_negative_scenario_effects: 1
12
- berserker:
15
+ -
16
+ name: Berserker
17
+ spoiler_name: Lightning Bolt
18
+ number: 12
13
19
  perks:
14
20
  remove_two_minus_one_cards: 1
15
21
  remove_four_plus_zero_cards: 1
@@ -21,7 +27,9 @@ berserker:
21
27
  add_two_rolling_heal_plus_one_cards: 1
22
28
  add_one_plus_two_fire_card: 2
23
29
  ignore_negative_item_effects: 1
24
- brute:
30
+ -
31
+ name: Brute
32
+ number: 1
25
33
  perks:
26
34
  remove_two_minus_one_cards: 1
27
35
  replace_one_minus_one_card_with_one_plus_one_card: 1
@@ -34,7 +42,9 @@ brute:
34
42
  add_one_rolling_add_target_card: 2
35
43
  add_one_plus_one_shield_one_self_card: 1
36
44
  ignore_negative_item_effects_and_add_one_plus_one_card: 1
37
- cragheart:
45
+ -
46
+ name: Cragheart
47
+ number: 5
38
48
  perks:
39
49
  remove_four_plus_zero_cards: 1
40
50
  replace_one_minus_one_card_with_one_plus_one_card: 3
@@ -46,7 +56,10 @@ cragheart:
46
56
  add_two_rolling_air_cards: 1
47
57
  ignore_negative_item_effects: 1
48
58
  ignore_negative_scenario_effects: 1
49
- doomstalker:
59
+ -
60
+ name: Doomstalker
61
+ spoiler_name: Angry Face
62
+ number: 14
50
63
  perks:
51
64
  remove_two_minus_one_cards: 2
52
65
  replace_two_plus_zero_cards_with_two_plus_one_cards: 3
@@ -58,7 +71,10 @@ doomstalker:
58
71
  add_one_plus_zero_stun_card: 1
59
72
  add_one_rolling_add_target_card: 2
60
73
  ignore_negative_scenario_effects: 1
61
- elementalist:
74
+ -
75
+ name: Elementalist
76
+ spoiler_name: Triforce
77
+ number: 16
62
78
  perks:
63
79
  remove_two_minus_one_cards: 2
64
80
  replace_one_minus_one_card_with_one_plus_one_card: 1
@@ -73,7 +89,9 @@ elementalist:
73
89
  add_one_plus_one_wound_card: 1
74
90
  add_one_plus_zero_stun_card: 1
75
91
  add_one_plus_zero_add_target_card: 1
76
- mindthief:
92
+ -
93
+ name: Mindthief
94
+ number: 6
77
95
  perks:
78
96
  remove_two_minus_one_cards: 2
79
97
  remove_four_plus_zero_cards: 1
@@ -87,7 +105,10 @@ mindthief:
87
105
  add_one_rolling_stun_card: 1
88
106
  add_one_rolling_disarm_card_and_one_rolling_muddle_card: 1
89
107
  ignore_negative_scenario_effects: 1
90
- nightshroud:
108
+ -
109
+ name: Nightshroud
110
+ spoiler_name: Eclipse/Moon
111
+ number: 10
91
112
  perks:
92
113
  remove_two_minus_one_cards: 2
93
114
  remove_four_plus_zero_cards: 1
@@ -99,7 +120,10 @@ nightshroud:
99
120
  add_two_rolling_curse_cards: 2
100
121
  add_one_rolling_add_target_card: 1
101
122
  ignore_negative_scenario_effects_and_add_two_plus_one_cards: 1
102
- plagueherald:
123
+ -
124
+ name: Plagueherald
125
+ spoiler_name: Cthulu
126
+ number: 11
103
127
  perks:
104
128
  replace_one_minus_two_card_with_one_plus_zero_card: 1
105
129
  replace_one_minus_one_card_with_one_plus_one_card: 2
@@ -111,7 +135,10 @@ plagueherald:
111
135
  add_two_rolling_immobilize_cards: 1
112
136
  add_one_rolling_stun_card: 2
113
137
  ignore_negative_scenario_effects_and_add_one_plus_one_card: 1
114
- quartermaster:
138
+ -
139
+ name: Quartermaster
140
+ spoiler_name: Three Spears
141
+ number: 8
115
142
  perks:
116
143
  remove_two_minus_one_cards: 2
117
144
  remove_four_plus_zero_cards: 1
@@ -123,7 +150,10 @@ quartermaster:
123
150
  add_one_rolling_add_target_card: 1
124
151
  add_one_plus_zero_refresh_an_item_card: 3
125
152
  ignore_negative_item_effects_and_add_two_plus_one_cards: 1
126
- sawbones:
153
+ -
154
+ name: Sawbones
155
+ spoiler_name: Saw
156
+ number: 15
127
157
  perks:
128
158
  remove_two_minus_one_cards: 2
129
159
  remove_four_plus_zero_cards: 1
@@ -134,7 +164,9 @@ sawbones:
134
164
  add_one_rolling_stun_card: 1
135
165
  add_one_rolling_heal_plus_three_card: 2
136
166
  add_one_plus_zero_refresh_an_item_card: 1
137
- scoundrel:
167
+ -
168
+ name: Scoundrel
169
+ number: 4
138
170
  perks:
139
171
  remove_two_minus_one_cards: 2
140
172
  remove_four_plus_zero_cards: 1
@@ -147,7 +179,10 @@ scoundrel:
147
179
  add_two_rolling_muddle_cards: 1
148
180
  add_one_rolling_invisible_card: 1
149
181
  ignore_negative_scenario_effects: 1
150
- soothsinger:
182
+ -
183
+ name: Soothsinger
184
+ spoiler_name: Music Note
185
+ number: 13
151
186
  perks:
152
187
  remove_two_minus_one_cards: 2
153
188
  remove_one_minus_two_card: 1
@@ -161,7 +196,9 @@ soothsinger:
161
196
  replace_one_minus_one_card_with_one_plus_zero_stun_card: 1
162
197
  add_three_rolling_plus_one_cards: 1
163
198
  add_two_rolling_curse_cards: 2
164
- spellweaver:
199
+ -
200
+ name: Spellweaver
201
+ number: 3
165
202
  perks:
166
203
  remove_four_plus_zero_cards: 1
167
204
  replace_one_minus_one_card_with_one_plus_one_card: 2
@@ -174,7 +211,10 @@ spellweaver:
174
211
  add_one_plus_two_ice_card: 2
175
212
  add_one_rolling_nature_and_one_rolling_air_card: 1
176
213
  add_one_rolling_light_and_one_rolling_dark_card: 1
177
- summoner:
214
+ -
215
+ name: Summoner
216
+ spoiler_name: Concentric Circles
217
+ number: 9
178
218
  perks:
179
219
  remove_two_minus_one_cards: 1
180
220
  replace_one_minus_two_card_with_one_plus_zero_card: 1
@@ -186,7 +226,10 @@ summoner:
186
226
  add_one_rolling_fire_and_one_rolling_air_card: 1
187
227
  add_one_rolling_dark_and_one_rolling_nature_card: 1
188
228
  ignore_negative_scenario_effects_and_add_two_plus_one_cards: 1
189
- sunkeeper:
229
+ -
230
+ name: Sunkeeper
231
+ spoiler_name: Sun
232
+ number: 7
190
233
  perks:
191
234
  remove_two_minus_one_cards: 2
192
235
  remove_four_plus_zero_cards: 1
@@ -199,7 +242,9 @@ sunkeeper:
199
242
  add_two_rolling_shield_1_self_cards: 1
200
243
  ignore_negative_item_effects_and_add_two_plus_one_cards: 1
201
244
  ignore_negative_scenario_effects: 1
202
- tinkerer:
245
+ -
246
+ name: Tinkerer
247
+ number: 2
203
248
  perks:
204
249
  remove_two_minus_one_cards: 2
205
250
  replace_one_minus_two_card_with_one_plus_zero_card: 1
data/gloomhaven.gemspec CHANGED
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
34
  spec.add_development_dependency 'simplecov', "~> 0.18.4"
35
+ spec.add_development_dependency 'pry'
35
36
  end
@@ -41,11 +41,14 @@ module Gloomhaven
41
41
  end
42
42
 
43
43
  ##
44
+ # Shuffles the deck if trying to draw without any cards left in pile.
44
45
  # Removes the top card from the deck, adds it to the @drawn_cards array (unless it's a bless/curse)
45
46
  # Returns the drawn card.
46
47
  # Ex: Deck.new.draw
47
48
  # => #<Card >
48
49
  def draw
50
+ shuffle! if @cards.empty?
51
+
49
52
  card = @cards.shift
50
53
  @drawn_cards << card unless card.bless? || card.curse?
51
54
  card
@@ -4,16 +4,16 @@ module Gloomhaven
4
4
  attr_reader :character_class, :name, :deck
5
5
  attr_accessor :gold, :items, :perks, :xp
6
6
 
7
- def initialize(options = { character_class: nil, name: nil } )
7
+ def initialize(options = {})
8
8
  validate!(options)
9
9
 
10
10
  @character_class = options[:character_class].downcase
11
11
  @deck = Deck.new
12
12
  @name = options[:name]
13
- @gold = 0
13
+ @gold = options[:gold] || 0
14
+ @xp = options[:xp] || 0
14
15
  @items = []
15
16
  @perks = []
16
- @xp = 0
17
17
  end
18
18
 
19
19
  def add_perk!(perk)
@@ -26,8 +26,12 @@ module Gloomhaven
26
26
 
27
27
  private
28
28
 
29
+ def character
30
+ CHARACTERS.detect { |character| character['name'].downcase == character_class.downcase }
31
+ end
32
+
29
33
  def character_class_perks
30
- CHARACTERS[character_class]['perks'].keys
34
+ character['perks'].keys
31
35
  end
32
36
 
33
37
  def existing_perk_count(perk)
@@ -35,7 +39,7 @@ module Gloomhaven
35
39
  end
36
40
 
37
41
  def character_perk_limit(perk)
38
- CHARACTERS[character_class]['perks'][perk.key]
42
+ character['perks'][perk.key]
39
43
  end
40
44
 
41
45
  def update_attack_modifier_deck_from!(perk)
@@ -46,19 +50,31 @@ module Gloomhaven
46
50
  def validate!(options)
47
51
  validate_character_class!(options[:character_class])
48
52
  validate_name!(options[:name])
53
+ validate_gold!(options[:gold])
54
+ validate_xp!(options[:xp])
49
55
  end
50
56
 
51
57
  def validate_character_class!(character_class)
52
58
  raise ArgumentError.new("options[:character_class] cannot be blank") if character_class.nil?
53
59
 
54
- unless Gloomhaven::CHARACTERS.keys.include?(character_class.downcase)
55
- raise TypeError.new("Invalid character_class: #{character_class} is not supported. Must be one of the following: #{Gloomhaven::CHARACTERS.keys}")
60
+ unless Gloomhaven::CHARACTER_NAMES.map(&:downcase).include?(character_class.downcase)
61
+ raise TypeError.new("Invalid character_class: #{character_class} is not supported. Must be one of the following: #{Gloomhaven::CHARACTER_NAMES}")
56
62
  end
57
63
  end
58
64
 
65
+ def validate_gold!(gold)
66
+ return unless gold
67
+ raise ArgumentError.new("options[:gold] must be an Integer") unless gold.is_a?(Integer)
68
+ end
69
+
59
70
  def validate_name!(name)
60
71
  raise ArgumentError.new("options[:name] cannot be blank") if name.nil?
61
72
  raise ArgumentError.new("options[:name] must be a String") unless name.is_a?(String)
62
73
  end
74
+
75
+ def validate_xp!(xp)
76
+ return unless xp
77
+ raise ArgumentError.new("options[:xp] must be an Integer") unless xp.is_a?(Integer)
78
+ end
63
79
  end
64
80
  end
@@ -1,3 +1,3 @@
1
1
  module Gloomhaven
2
- VERSION = '1.0.7.1'
2
+ VERSION = '1.0.8.0'
3
3
  end
data/lib/gloomhaven.rb CHANGED
@@ -9,9 +9,11 @@ module Gloomhaven
9
9
  class CardNotFoundError < StandardError; end
10
10
 
11
11
  CARDS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/cards.yml')))
12
- CHARACTERS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/characters.yml')))
12
+ CHARACTERS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/characters.yml'))).sort_by { |c| c['number'] }
13
13
  PERKS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/perks.yml')))
14
14
 
15
+ CHARACTER_NAMES = CHARACTERS.map { |character| character['name'] }.map(&:downcase)
16
+
15
17
  def self.version
16
18
  VERSION
17
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloomhaven
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7.1
4
+ version: 1.0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teo Dell'Amico
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-04 00:00:00.000000000 Z
11
+ date: 2020-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.18.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description:
70
84
  email:
71
85
  - teo.dellamico@gmail.com