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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/changelog.md +7 -0
- data/config/characters.yml +51 -0
- data/lib/gloomhaven.rb +3 -2
- data/lib/gloomhaven/player.rb +8 -13
- data/lib/gloomhaven/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1aac70f2909cf4c8f6fd7160283185b5f31c7894d274f68a07b9c298faac6fa8
|
4
|
+
data.tar.gz: 8147e0c3ac5a933fbe9b6c84071b6f476db4e0f101c80b278ff686508a3de38a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01f7903680309e558d603db7e8d994e2cf7119615b811248339b4077bb22bf1ff8a41d42ccb30ca45af32f6c60ca974b289c7499e15d2e1199cea8121a9d856a
|
7
|
+
data.tar.gz: 5cdde8f634b075baf086f05624e0491c2f42ed9e0b8f1c7bca5f0ec7ed8f328cb03917f7762d3af094e68c3a606cc53d6da8df9626dd00025b60ff215fb11370
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
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
|
data/config/characters.yml
CHANGED
@@ -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'] }
|
16
|
+
CHARACTER_NAMES = CHARACTERS.map { |character| character['name'] }
|
16
17
|
|
17
18
|
def self.version
|
18
19
|
VERSION
|
data/lib/gloomhaven/player.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
module Gloomhaven
|
2
2
|
class Player
|
3
3
|
|
4
|
-
attr_reader :
|
5
|
-
attr_accessor :gold, :
|
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("#{
|
22
|
-
raise ArgumentError.new("#{
|
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
|
30
|
-
|
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
|
37
|
+
character.perks[perk.key]
|
43
38
|
end
|
44
39
|
|
45
40
|
def update_attack_modifier_deck_from!(perk)
|
data/lib/gloomhaven/version.rb
CHANGED