gloomhaven 1.0.8.1 → 1.0.9

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: ffdd2073dce92807ec5c640abd57e6fe4a6822f2ff597aa03988c55d5e51d765
4
- data.tar.gz: aebb68a804b733d6ba5954734d85ae1e8f8947a935f3889708f733db8bc7f663
3
+ metadata.gz: 1aac70f2909cf4c8f6fd7160283185b5f31c7894d274f68a07b9c298faac6fa8
4
+ data.tar.gz: 8147e0c3ac5a933fbe9b6c84071b6f476db4e0f101c80b278ff686508a3de38a
5
5
  SHA512:
6
- metadata.gz: e0445bd45748462aafe9378dd808e6d878c1595ad21bd17af8f3e9b429d045646ec6fadd9214961e7db4adee319f64d1dd82721335f5dc4a3e2270d25a9fe401
7
- data.tar.gz: 7938aef43c796a5151b33d255fe4ebcbe349fa630c323ce0d557b041580ad502b410233caa94b5fe201365f220ab63e2cc3eb5ff7cc117b1b6160bfa80ed4f1f
6
+ metadata.gz: 01f7903680309e558d603db7e8d994e2cf7119615b811248339b4077bb22bf1ff8a41d42ccb30ca45af32f6c60ca974b289c7499e15d2e1199cea8121a9d856a
7
+ data.tar.gz: 5cdde8f634b075baf086f05624e0491c2f42ed9e0b8f1c7bca5f0ec7ed8f328cb03917f7762d3af094e68c3a606cc53d6da8df9626dd00025b60ff215fb11370
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source "https://rubygems.org"
3
3
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in gloomhaven.gemspec
6
- gemspec
6
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gloomhaven (1.0.8.1)
4
+ gloomhaven (1.0.9)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/changelog.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 1.0.9
2
+ - add class Character for character logic
3
+ - moved most of logic from Player to character, add a @character to player initialize, delegate to char
4
+ - player keeps things like gold, xp, items, perks
5
+ - takes in class name
6
+ - Track hand_size, hex_code (color theme for character cards), character number, perks, health_scale
7
+
1
8
  # 1.0.8
2
9
  - Allow gold, xp
3
10
  - Update characters yaml to return name, spoiler_name, number. Sort by number
@@ -3,6 +3,9 @@
3
3
  name: Beast Tyrant
4
4
  spoiler_name: Two Mini
5
5
  number: 17
6
+ hand_size: 10
7
+ health_scale: Low
8
+ hex_color: a47760
6
9
  perks:
7
10
  remove_two_minus_one_cards: 1
8
11
  replace_one_minus_one_card_with_one_plus_one_card: 3
@@ -16,6 +19,9 @@
16
19
  name: Berserker
17
20
  spoiler_name: Lightning Bolt
18
21
  number: 12
22
+ hand_size: 10
23
+ health_scale: High
24
+ hex_color: c05754
19
25
  perks:
20
26
  remove_two_minus_one_cards: 1
21
27
  remove_four_plus_zero_cards: 1
@@ -30,6 +36,9 @@
30
36
  -
31
37
  name: Brute
32
38
  number: 1
39
+ hand_size: 10
40
+ health_scale: High
41
+ hex_color: 5a7ebc
33
42
  perks:
34
43
  remove_two_minus_one_cards: 1
35
44
  replace_one_minus_one_card_with_one_plus_one_card: 1
@@ -45,6 +54,9 @@
45
54
  -
46
55
  name: Cragheart
47
56
  number: 5
57
+ hand_size: 11
58
+ health_scale: High
59
+ hex_color: 8c9447
48
60
  perks:
49
61
  remove_four_plus_zero_cards: 1
50
62
  replace_one_minus_one_card_with_one_plus_one_card: 3
@@ -60,6 +72,9 @@
60
72
  name: Doomstalker
61
73
  spoiler_name: Angry Face
62
74
  number: 14
75
+ hand_size: 12
76
+ health_scale: Medium
77
+ hex_color: 69c1ec
63
78
  perks:
64
79
  remove_two_minus_one_cards: 2
65
80
  replace_two_plus_zero_cards_with_two_plus_one_cards: 3
@@ -75,6 +90,9 @@
75
90
  name: Elementalist
76
91
  spoiler_name: Triforce
77
92
  number: 16
93
+ hand_size: 10
94
+ health_scale: Low
95
+ hex_color: 9e9e9e
78
96
  perks:
79
97
  remove_two_minus_one_cards: 2
80
98
  replace_one_minus_one_card_with_one_plus_one_card: 1
@@ -92,6 +110,9 @@
92
110
  -
93
111
  name: Mindthief
94
112
  number: 6
113
+ hand_size: 10
114
+ health_scale: Low
115
+ hex_color: 6a7c9a
95
116
  perks:
96
117
  remove_two_minus_one_cards: 2
97
118
  remove_four_plus_zero_cards: 1
@@ -109,6 +130,9 @@
109
130
  name: Nightshroud
110
131
  spoiler_name: Eclipse/Moon
111
132
  number: 10
133
+ hand_size: 9
134
+ health_scale: Medium
135
+ hex_color: 9f9fcb
112
136
  perks:
113
137
  remove_two_minus_one_cards: 2
114
138
  remove_four_plus_zero_cards: 1
@@ -124,6 +148,9 @@
124
148
  name: Plagueherald
125
149
  spoiler_name: Cthulu
126
150
  number: 11
151
+ hand_size: 11
152
+ health_scale: Low
153
+ hex_color: 89c4ba
127
154
  perks:
128
155
  replace_one_minus_two_card_with_one_plus_zero_card: 1
129
156
  replace_one_minus_one_card_with_one_plus_one_card: 2
@@ -139,6 +166,9 @@
139
166
  name: Quartermaster
140
167
  spoiler_name: Three Spears
141
168
  number: 8
169
+ hand_size: 9
170
+ health_scale: High
171
+ hex_color: cc8c3e
142
172
  perks:
143
173
  remove_two_minus_one_cards: 2
144
174
  remove_four_plus_zero_cards: 1
@@ -154,6 +184,9 @@
154
184
  name: Sawbones
155
185
  spoiler_name: Saw
156
186
  number: 15
187
+ hand_size: 10
188
+ health_scale: Medium
189
+ hex_color: dee0c9
157
190
  perks:
158
191
  remove_two_minus_one_cards: 2
159
192
  remove_four_plus_zero_cards: 1
@@ -167,6 +200,9 @@
167
200
  -
168
201
  name: Scoundrel
169
202
  number: 4
203
+ hand_size: 9
204
+ health_scale: Medium
205
+ hex_color: b0cf76
170
206
  perks:
171
207
  remove_two_minus_one_cards: 2
172
208
  remove_four_plus_zero_cards: 1
@@ -183,6 +219,9 @@
183
219
  name: Soothsinger
184
220
  spoiler_name: Music Note
185
221
  number: 13
222
+ hand_size: 9
223
+ health_scale: Low
224
+ hex_color: d0837d
186
225
  perks:
187
226
  remove_two_minus_one_cards: 2
188
227
  remove_one_minus_two_card: 1
@@ -199,6 +238,9 @@
199
238
  -
200
239
  name: Spellweaver
201
240
  number: 3
241
+ hand_size: 8
242
+ health_scale: Low
243
+ hex_color: aa7baf
202
244
  perks:
203
245
  remove_four_plus_zero_cards: 1
204
246
  replace_one_minus_one_card_with_one_plus_one_card: 2
@@ -215,6 +257,9 @@
215
257
  name: Summoner
216
258
  spoiler_name: Concentric Circles
217
259
  number: 9
260
+ hand_size: 9
261
+ health_scale: Medium
262
+ hex_color: da76a1
218
263
  perks:
219
264
  remove_two_minus_one_cards: 1
220
265
  replace_one_minus_two_card_with_one_plus_zero_card: 1
@@ -230,6 +275,9 @@
230
275
  name: Sunkeeper
231
276
  spoiler_name: Sun
232
277
  number: 7
278
+ hand_size: 11
279
+ health_scale: High
280
+ hex_color: ebc355
233
281
  perks:
234
282
  remove_two_minus_one_cards: 2
235
283
  remove_four_plus_zero_cards: 1
@@ -245,6 +293,9 @@
245
293
  -
246
294
  name: Tinkerer
247
295
  number: 2
296
+ hand_size: 12
297
+ health_scale: Medium
298
+ hex_color: c1b691
248
299
  perks:
249
300
  remove_two_minus_one_cards: 2
250
301
  replace_one_minus_two_card_with_one_plus_zero_card: 1
data/lib/gloomhaven.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require 'yaml'
2
2
  require 'gloomhaven/version'
3
3
  require 'gloomhaven/card'
4
+ require 'gloomhaven/character'
4
5
  require 'gloomhaven/deck'
5
- require 'gloomhaven/player'
6
6
  require 'gloomhaven/perk'
7
+ require 'gloomhaven/player'
7
8
 
8
9
  module Gloomhaven
9
10
  class CardNotFoundError < StandardError; end
@@ -12,7 +13,7 @@ module Gloomhaven
12
13
  CHARACTERS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/characters.yml'))).sort_by { |c| c['number'] }
13
14
  PERKS = YAML.load(File.read(File.join(File.dirname(__FILE__), '../config/perks.yml')))
14
15
 
15
- CHARACTER_NAMES = CHARACTERS.map { |character| character['name'] }.map(&:downcase)
16
+ CHARACTER_NAMES = CHARACTERS.map { |character| character['name'] }
16
17
 
17
18
  def self.version
18
19
  VERSION
@@ -1,13 +1,12 @@
1
1
  module Gloomhaven
2
2
  class Player
3
3
 
4
- attr_reader :character_class, :name, :deck
5
- attr_accessor :gold, :items, :perks, :xp
4
+ attr_reader :character, :deck, :name, :items, :perks
5
+ attr_accessor :gold, :xp
6
6
 
7
7
  def initialize(options = {})
8
8
  validate!(options)
9
-
10
- @character_class = options[:character_class].downcase
9
+ @character = Character.new(options[:character_class])
11
10
  @deck = Deck.new
12
11
  @name = options[:name]
13
12
  @gold = options[:gold] || 0
@@ -18,20 +17,16 @@ module Gloomhaven
18
17
 
19
18
  def add_perk!(perk)
20
19
  raise TypeError.new('Perk must be a Gloomhaven::Perk') unless perk.is_a?(Gloomhaven::Perk)
21
- raise ArgumentError.new("#{character_class} cannot select #{perk.description}. Must be one of the following: #{character_class_perks}") unless character_class_perks.include?(perk.key)
22
- raise ArgumentError.new("#{character_class} has the maximum number of #{perk.description} perks") if existing_perk_count(perk) >= character_perk_limit(perk)
20
+ raise ArgumentError.new("#{character} cannot select #{perk.description}. Must be one of the following: #{class_perks}") unless class_perks.include?(perk.key)
21
+ raise ArgumentError.new("#{character} has the maximum number of #{perk.description} perks") if existing_perk_count(perk) >= character_perk_limit(perk)
23
22
  update_attack_modifier_deck_from!(perk)
24
23
  @perks << perk
25
24
  end
26
25
 
27
26
  private
28
27
 
29
- def character
30
- CHARACTERS.detect { |character| character['name'].downcase == character_class.downcase }
31
- end
32
-
33
- def character_class_perks
34
- character['perks'].keys
28
+ def class_perks
29
+ character.perks.keys
35
30
  end
36
31
 
37
32
  def existing_perk_count(perk)
@@ -39,7 +34,7 @@ module Gloomhaven
39
34
  end
40
35
 
41
36
  def character_perk_limit(perk)
42
- character['perks'][perk.key]
37
+ character.perks[perk.key]
43
38
  end
44
39
 
45
40
  def update_attack_modifier_deck_from!(perk)
@@ -1,3 +1,3 @@
1
1
  module Gloomhaven
2
- VERSION = '1.0.8.1'
2
+ VERSION = '1.0.9'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloomhaven
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8.1
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teo Dell'Amico