gemwarrior 0.7.3 → 0.7.4

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: d91e48c65260ba5b61f52b93ad8eea2b45fe8c18
4
- data.tar.gz: cb95d7af28130ed0b74ad1f5f36d2c8d010f7244
3
+ metadata.gz: 1d645e9d63d18268d68ccb530aceedce650f68b3
4
+ data.tar.gz: 6285dd9e0779230fedb17edf536342af39d28ab7
5
5
  SHA512:
6
- metadata.gz: 76d5776994978dbd5a4bd076ec5adb99e05f0ef1a6c047d570a0da16e8291e4483ad7577b4740c9ee6d68bb9aa5f4220526d49bc0cc2ab8e6c1455efb1063bda
7
- data.tar.gz: 7d42296d573a9d911a8a49a6485c95b24cf0e8648899264c391d6394369a43f4042000a93c9f00a61d9f7cdbcdb221b197d468603686db1eccb3b20cf3ba0d40
6
+ metadata.gz: ae8f0babc3338425030bb6d22cd1fda25efedabb9f3b6d548b8290142e2c3d2c62a64f4682dfbf0c78856b048f0cdb103fddf9a853eeeb9189a36f2e2bf45965
7
+ data.tar.gz: 971d03ca009d04fa82f732964512bd3a4f1225cfb921e5ffeeea07b058ce3e9e0984bc94c153939bdb9cc8e7505a72205e2db49e64148535c0c29a066dbde35a
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gct
11
+ /img/
data/bin/gemwarrior CHANGED
File without changes
@@ -22,7 +22,7 @@ module Gemwarrior
22
22
 
23
23
  Animation::run({ :phrase => '*** SHOOOOOM ***' })
24
24
 
25
- {:type => 'move', :data => 'Sky Tower (Entrance)'}
25
+ {:type => 'move', :data => 'Rock Quarry'}
26
26
  end
27
27
  end
28
28
  end
@@ -0,0 +1,19 @@
1
+ # lib/gemwarrior/entities/items/keystone.rb
2
+ # Item::Keystone
3
+
4
+ require_relative '../item'
5
+
6
+ module Gemwarrior
7
+ class Keystone < Item
8
+ def initialize
9
+ self.name = 'keystone'
10
+ self.description = 'Certainly greater than the sum of its parts, this smallish stone glows faintly and feels slick to the touch.'
11
+ self.atk_lo = nil
12
+ self.atk_hi = nil
13
+ self.takeable = true
14
+ self.useable = false
15
+ self.equippable = false
16
+ self.equipped = false
17
+ end
18
+ end
19
+ end
@@ -6,14 +6,27 @@ require_relative '../item'
6
6
  module Gemwarrior
7
7
  class MassiveDoor < Item
8
8
  def initialize
9
- self.name = 'massive door'
10
- self.description = 'Translucent, but not transparent, this door constructed of condensed water vapor is like nothing you have ever seen.'
9
+ self.name = 'massive_door'
10
+ self.description = 'Translucent, but not transparent, this door constructed of condensed water vapor is like nothing you have ever seen. It has no keyhole, but it does have a stone-shaped depression floating centrally within it.'
11
11
  self.atk_lo = nil
12
12
  self.atk_hi = nil
13
13
  self.takeable = false
14
- self.useable = false
14
+ self.useable = true
15
15
  self.equippable = false
16
16
  self.equipped = false
17
17
  end
18
+
19
+ def use(inventory = nil)
20
+ puts 'You attempt to open the seriously massive door that separates you from Emerald himself.'
21
+ if inventory.has_item?('keystone')
22
+ puts 'The keystone in your inventory glows as you approach the incredibly titanic-sized door, so you naturally pull it out and thrust it into the stone-shaped depression within the cloudy obstruction. The door "opens" in a way and you can now pass through.'
23
+ puts
24
+ {:type => 'move', :data => 'Sky Tower (Throne Room)'}
25
+ else
26
+ puts 'Your hand just goes right through the astonishingly gigantic door, but the rest of your body does not. A moment later, your hand is shoved backwards by some unknown force, and you remain where you were before your unsuccessful attempt.'
27
+ puts
28
+ {:type => nil, :data => nil}
29
+ end
30
+ end
18
31
  end
19
32
  end
@@ -22,7 +22,7 @@ module Gemwarrior
22
22
 
23
23
  Animation::run({ :phrase => '*** WHOOOOOSH ***' })
24
24
 
25
- {:type => 'move', :data => 'Sky Tower (Foyer)'}
25
+ {:type => 'move', :data => 'Sky Tower (Entryway)'}
26
26
  end
27
27
  end
28
28
  end
@@ -7,36 +7,38 @@ module Gemwarrior
7
7
  class Evaluator
8
8
  # CONSTANTS
9
9
  ## MESSAGES
10
- PROGRAM_NAME = 'Gem Warrior'
11
- QUIT_MESSAGE = 'Thanks for playing the game. Until next time...'.colorize(:yellow)
12
- RESUME_MESSAGE = 'Back to adventuring!'.colorize(:green)
13
- SEPARATOR = '=========================================================================='
10
+ PROGRAM_NAME = 'Gem Warrior'
11
+ QUIT_MESSAGE = 'Thanks for playing the game. Until next time...'.colorize(:yellow)
12
+ RESUME_MESSAGE = 'Back to adventuring!'.colorize(:green)
13
+ SEPARATOR = '=========================================================================='
14
14
 
15
- GO_PARAMS = 'Options: north, east, south, west'
16
- CHANGE_PARAMS = 'Options: name'
17
- DEBUG_LIST_PARAMS = 'Options: monsters, items, locations'
18
- DEBUG_STAT_PARAMS = 'Options: atk_lo, atk_hi, strength, dexterity'
15
+ GO_PARAMS = 'Options: north, east, south, west'
16
+ CHANGE_PARAMS = 'Options: name'
17
+ DEBUG_LIST_PARAMS = 'Options: monsters, items, locations'
18
+ DEBUG_STAT_PARAMS = 'Options: atk_lo, atk_hi, strength, dexterity'
19
19
 
20
20
  ## ERRORS
21
- ERROR_COMMAND_INVALID = 'That is not something the game yet understands.'
21
+ ERROR_COMMAND_INVALID = 'That is not something the game yet understands.'
22
22
 
23
- ERROR_GO_PARAM_MISSING = 'Just wander aimlessly? A direction would be nice.'
24
- ERROR_GO_PARAM_INVALID = 'The place in that direction is far, far, FAR too dangerous. You should try a different way.'
25
- ERROR_ATTACK_PARAM_MISSING = 'You cannot just "attack". You gotta choose something to attack.'
26
- ERROR_ATTACK_PARAM_INVALID = 'That monster does not exist here or can\'t be attacked.'
27
- ERROR_TAKE_PARAM_MISSING = 'You cannot just "take". You gotta choose something to take.'
28
- ERROR_USE_PARAM_MISSING = 'You cannot just "use". You gotta choose something to use.'
29
- ERROR_USE_PARAM_INVALID = 'You cannot use that, as it does not exist here or in your inventory.'
30
- ERROR_USE_PARAM_UNUSEABLE = 'That object is not useable.'
31
- ERROR_DROP_PARAM_MISSING = 'You cannot just "drop". You gotta choose something to drop.'
32
- ERROR_EQUIP_PARAM_MISSING = 'You cannot just "equip". You gotta choose something to equip.'
33
- ERROR_UNEQUIP_PARAM_MISSING = 'You cannot just "unequip". You gotta choose something to unequip.'
34
- ERROR_CHANGE_PARAM_MISSING = 'You cannot just "change". You gotta choose something to change.'
35
- ERROR_CHANGE_PARAM_INVALID = 'You cannot change that...yet.'
36
- ERROR_LIST_PARAM_MISSING = 'You cannot just "list". You gotta choose something to list.'
37
- ERROR_LIST_PARAM_INVALID = 'You cannot list that...yet.'
38
- ERROR_DEBUG_STAT_PARAM_MISSING = 'You cannot just "change stats". You gotta choose a stat to change.'
39
- ERROR_DEBUG_STAT_PARAM_INVALID = 'You cannot change that stat...yet.'
23
+ ERROR_GO_PARAM_MISSING = 'Just wander aimlessly? A direction would be nice.'
24
+ ERROR_GO_PARAM_INVALID = 'The place in that direction is far, far, FAR too dangerous. You should try a different way.'
25
+ ERROR_ATTACK_PARAM_MISSING = 'You cannot just "attack". You gotta choose something to attack.'
26
+ ERROR_ATTACK_PARAM_INVALID = 'That monster does not exist here or can\'t be attacked.'
27
+ ERROR_TAKE_PARAM_MISSING = 'You cannot just "take". You gotta choose something to take.'
28
+ ERROR_USE_PARAM_MISSING = 'You cannot just "use". You gotta choose something to use.'
29
+ ERROR_USE_PARAM_INVALID = 'You cannot use that, as it does not exist here or in your inventory.'
30
+ ERROR_USE_PARAM_UNUSEABLE = 'That object is not useable.'
31
+ ERROR_DROP_PARAM_MISSING = 'You cannot just "drop". You gotta choose something to drop.'
32
+ ERROR_EQUIP_PARAM_MISSING = 'You cannot just "equip". You gotta choose something to equip.'
33
+ ERROR_UNEQUIP_PARAM_MISSING = 'You cannot just "unequip". You gotta choose something to unequip.'
34
+ ERROR_CHANGE_PARAM_MISSING = 'You cannot just "change". You gotta choose something to change.'
35
+ ERROR_CHANGE_PARAM_INVALID = 'You cannot change that...yet.'
36
+ ERROR_LIST_PARAM_MISSING = 'You cannot just "list". You gotta choose something to list.'
37
+ ERROR_LIST_PARAM_INVALID = 'You cannot list that...yet.'
38
+ ERROR_DEBUG_STAT_PARAM_MISSING = 'You cannot just "change stats". You gotta choose a stat to change.'
39
+ ERROR_DEBUG_STAT_PARAM_INVALID = 'You cannot change that stat...yet.'
40
+ ERROR_DEBUG_TELEPORT_PARAMS_MISSING = 'You cannot just "teleport". You gotta choose somewhere to teleport to.'
41
+ ERROR_DEBUG_TELEPORT_PARAMS_INVALID = 'You cannot teleport there...yet.'
40
42
 
41
43
  attr_accessor :world,
42
44
  :commands, :aliases, :extras, :cmd_descriptions,
@@ -45,15 +47,16 @@ module Gemwarrior
45
47
  def initialize(world)
46
48
  self.world = world
47
49
 
48
- self.devcommands = %w(god beast list vars map stat)
49
- self.devaliases = %w(gd bs ls v m s)
50
+ self.devcommands = %w(god beast list vars map stat teleport)
51
+ self.devaliases = %w(gd bs ls v m s tp)
50
52
  self.devcmd_descriptions = [
51
53
  'Toggle god mode (i.e. invincible)',
52
54
  'Toggle beast mode (i.e. super strength)',
53
55
  'List all instances of a specific entity type',
54
56
  'List all the variables in the world',
55
57
  'Show a map of the world',
56
- 'Change player stat'
58
+ 'Change player stat',
59
+ 'Teleport to coordinates (5 0) or location name (\'Home\')'
57
60
  ]
58
61
 
59
62
  self.commands = %w(character inventory rest look take use drop equip unequip go attack change help quit quit!)
@@ -160,6 +163,26 @@ module Gemwarrior
160
163
  return ERROR_DEBUG_STAT_PARAM_INVALID
161
164
  end
162
165
  end
166
+ when 'teleport', 'tp'
167
+ if param1.nil?
168
+ return ERROR_DEBUG_TELEPORT_PARAMS_MISSING
169
+ else
170
+ if (param1.to_i.to_s == param1) && (param2.to_i.to_s == param2)
171
+ world.player.cur_coords = {:x => param1.to_i, :y => param2.to_i}
172
+ else
173
+ locations = []
174
+ world.locations.each do |l|
175
+ locations << l.name.downcase
176
+ end
177
+ if locations.include?(param1.downcase)
178
+ world.player.cur_coords = world.location_coords_by_name(param1)
179
+ else
180
+ return ERROR_DEBUG_TELEPORT_PARAMS_INVALID
181
+ end
182
+ end
183
+ Animation::run({:phrase => '** TELEPORT! **', :speed => :insane})
184
+ return world.describe(world.location_by_coords(world.player.cur_coords))
185
+ end
163
186
  end
164
187
  end
165
188
 
@@ -199,7 +222,7 @@ module Gemwarrior
199
222
  location_inventory.each do |i|
200
223
  if i.name.eql?(item_name)
201
224
  if i.useable
202
- result = i.use
225
+ result = i.use(world.player.inventory)
203
226
  else
204
227
  return ERROR_USE_PARAM_UNUSEABLE
205
228
  end
@@ -211,7 +234,7 @@ module Gemwarrior
211
234
  player_inventory.each do |i|
212
235
  if i.name.eql?(item_name)
213
236
  if i.useable
214
- result = i.use
237
+ result = i.use(world.player.inventory)
215
238
  else
216
239
  return ERROR_USE_PARAM_UNUSEABLE
217
240
  end
@@ -29,8 +29,12 @@ module Gemwarrior
29
29
  end
30
30
  end
31
31
 
32
+ def has_item?(item_name)
33
+ items.map(&:name).include?(item_name)
34
+ end
35
+
32
36
  def describe_item(item_name)
33
- if items.map(&:name).include?(item_name)
37
+ if has_item?(item_name)
34
38
  items.each do |i|
35
39
  if i.name.eql?(item_name)
36
40
  return i.description
@@ -42,7 +46,7 @@ module Gemwarrior
42
46
  end
43
47
 
44
48
  def equip_item(item_name)
45
- if items.map(&:name).include?(item_name)
49
+ if has_item?(item_name)
46
50
  items.each do |i|
47
51
  if i.name.eql?(item_name)
48
52
  if i.equippable
@@ -60,7 +64,7 @@ module Gemwarrior
60
64
  end
61
65
 
62
66
  def unequip_item(item_name)
63
- if items.map(&:name).include?(item_name)
67
+ if has_item?(item_name)
64
68
  items.each do |i|
65
69
  if i.name.eql?(item_name)
66
70
  if i.equippable
@@ -93,7 +97,7 @@ module Gemwarrior
93
97
  end
94
98
 
95
99
  def remove_item(item_name)
96
- if items.map(&:name).include?(item_name)
100
+ if has_item?(item_name)
97
101
  items.reject! { |item| item.name == item_name }
98
102
  return "The #{item_name} has been thrown on the ground, but far out of reach, and you're much too lazy to go get it now, so it's as good as gone."
99
103
  else
@@ -2,5 +2,5 @@
2
2
  # Version of Gem Warrior
3
3
 
4
4
  module Gemwarrior
5
- VERSION = "0.7.3"
5
+ VERSION = "0.7.4"
6
6
  end
@@ -123,7 +123,7 @@ module Gemwarrior
123
123
 
124
124
  def location_coords_by_name(name)
125
125
  locations.each do |l|
126
- if l.name.eql? name
126
+ if l.name.downcase.eql?(name.downcase)
127
127
  return l.coords
128
128
  end
129
129
  end
@@ -312,20 +312,53 @@ module Gemwarrior
312
312
  })
313
313
  )
314
314
  locations.push(Location.new({
315
- :name => 'Forest',
315
+ :name => 'Forest (Southeast)',
316
316
  :description => 'Trees exist here, in droves.',
317
317
  :coords => {:x => 4, :y => 0},
318
- :locs_connected => {:north => false, :east => true, :south => false, :west => true},
318
+ :locs_connected => {:north => true, :east => true, :south => false, :west => false},
319
319
  :danger_level => :low,
320
320
  :monster_level_range => 1..3,
321
- :items => [Feather.new, Tree.new],
321
+ :items => [Tree.new],
322
+ :bosses_abounding => []
323
+ })
324
+ )
325
+ locations.push(Location.new({
326
+ :name => 'Forest (Northeast)',
327
+ :description => 'You see much foliage.',
328
+ :coords => {:x => 4, :y => 1},
329
+ :locs_connected => {:north => false, :east => false, :south => true, :west => true},
330
+ :danger_level => :low,
331
+ :monster_level_range => 1..3,
332
+ :items => [],
333
+ :bosses_abounding => []
334
+ })
335
+ )
336
+ locations.push(Location.new({
337
+ :name => 'Forest (Northwest)',
338
+ :description => 'The amount of leaves and branches and trunks you can see boggles the mind.',
339
+ :coords => {:x => 3, :y => 1},
340
+ :locs_connected => {:north => false, :east => true, :south => true, :west => false},
341
+ :danger_level => :low,
342
+ :monster_level_range => 1..3,
343
+ :items => [Feather.new],
344
+ :bosses_abounding => []
345
+ })
346
+ )
347
+ locations.push(Location.new({
348
+ :name => 'Forest (Southwest)',
349
+ :description => 'While you continue to be impressed at the sheer size of this forest, a clearing appears to open up to the west.',
350
+ :coords => {:x => 3, :y => 0},
351
+ :locs_connected => {:north => true, :east => false, :south => false, :west => true},
352
+ :danger_level => :low,
353
+ :monster_level_range => 1..3,
354
+ :items => [],
322
355
  :bosses_abounding => []
323
356
  })
324
357
  )
325
358
  locations.push(Location.new({
326
359
  :name => 'Pain Desert (Southeast)',
327
360
  :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
328
- :coords => {:x => 3, :y => 0},
361
+ :coords => {:x => 2, :y => 0},
329
362
  :locs_connected => {:north => true, :east => true, :south => false, :west => true},
330
363
  :danger_level => :assured,
331
364
  :monster_level_range => 5..20,
@@ -334,9 +367,9 @@ module Gemwarrior
334
367
  })
335
368
  )
336
369
  locations.push(Location.new({
337
- :name => 'Pain Desert (Northeast)',
370
+ :name => 'Pain Desert (East)',
338
371
  :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
339
- :coords => {:x => 3, :y => 1},
372
+ :coords => {:x => 2, :y => 1},
340
373
  :locs_connected => {:north => false, :east => false, :south => true, :west => true},
341
374
  :danger_level => :assured,
342
375
  :monster_level_range => 5..20,
@@ -344,10 +377,43 @@ module Gemwarrior
344
377
  :bosses_abounding => [Garynetty.new]
345
378
  })
346
379
  )
380
+ locations.push(Location.new({
381
+ :name => 'Pain Desert (Central)',
382
+ :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
383
+ :coords => {:x => 1, :y => 1},
384
+ :locs_connected => {:north => true, :east => true, :south => true, :west => true},
385
+ :danger_level => :assured,
386
+ :monster_level_range => 5..20,
387
+ :items => [],
388
+ :bosses_abounding => [Garynetty.new]
389
+ })
390
+ )
391
+ locations.push(Location.new({
392
+ :name => 'Pain Desert (South)',
393
+ :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
394
+ :coords => {:x => 1, :y => 0},
395
+ :locs_connected => {:north => true, :east => true, :south => false, :west => false},
396
+ :danger_level => :assured,
397
+ :monster_level_range => 5..20,
398
+ :items => [],
399
+ :bosses_abounding => [Garynetty.new]
400
+ })
401
+ )
402
+ locations.push(Location.new({
403
+ :name => 'Pain Desert (West)',
404
+ :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
405
+ :coords => {:x => 0, :y => 1},
406
+ :locs_connected => {:north => true, :east => true, :south => false, :west => false},
407
+ :danger_level => :assured,
408
+ :monster_level_range => 5..20,
409
+ :items => [],
410
+ :bosses_abounding => [Garynetty.new]
411
+ })
412
+ )
347
413
  locations.push(Location.new({
348
414
  :name => 'Pain Desert (Northwest)',
349
415
  :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
350
- :coords => {:x => 2, :y => 1},
416
+ :coords => {:x => 0, :y => 2},
351
417
  :locs_connected => {:north => false, :east => true, :south => true, :west => false},
352
418
  :danger_level => :assured,
353
419
  :monster_level_range => 5..20,
@@ -356,10 +422,10 @@ module Gemwarrior
356
422
  })
357
423
  )
358
424
  locations.push(Location.new({
359
- :name => 'Pain Desert (Southwest)',
425
+ :name => 'Pain Desert (North)',
360
426
  :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
361
- :coords => {:x => 2, :y => 0},
362
- :locs_connected => {:north => true, :east => true, :south => false, :west => false},
427
+ :coords => {:x => 1, :y => 2},
428
+ :locs_connected => {:north => false, :east => false, :south => true, :west => true},
363
429
  :danger_level => :assured,
364
430
  :monster_level_range => 5..20,
365
431
  :items => [],
@@ -367,8 +433,8 @@ module Gemwarrior
367
433
  })
368
434
  )
369
435
  locations.push(Location.new({
370
- :name => 'Plains',
371
- :description => 'A lot of grass and nothing, but you see a mysterious tower further north, and your home to the south.',
436
+ :name => 'Plains (Outskirts)',
437
+ :description => 'A lot of grass and nothing, stretching out northward.',
372
438
  :coords => {:x => 5, :y => 1},
373
439
  :locs_connected => {:north => true, :east => false, :south => true, :west => false},
374
440
  :danger_level => :low,
@@ -378,10 +444,76 @@ module Gemwarrior
378
444
  })
379
445
  )
380
446
  locations.push(Location.new({
381
- :name => 'Sky Tower (Entrance)',
382
- :description => 'The craziest guy that ever existed is inside the towering structure before you.',
447
+ :name => 'Plains (Fields)',
448
+ :description => 'Now you\'re plum in the middle of rolling fields.',
383
449
  :coords => {:x => 5, :y => 2},
384
- :locs_connected => {:north => false, :east => false, :south => true, :west => false},
450
+ :locs_connected => {:north => true, :east => false, :south => true, :west => false},
451
+ :danger_level => :low,
452
+ :monster_level_range => 2..3,
453
+ :items => [],
454
+ :bosses_abounding => []
455
+ })
456
+ )
457
+ locations.push(Location.new({
458
+ :name => 'Plains (South of River)',
459
+ :description => 'A raging river borders the northern side of this bucolic vista.',
460
+ :coords => {:x => 5, :y => 3},
461
+ :locs_connected => {:north => false, :east => false, :south => true, :west => true},
462
+ :danger_level => :low,
463
+ :monster_level_range => 2..3,
464
+ :items => [],
465
+ :bosses_abounding => []
466
+ })
467
+ )
468
+ locations.push(Location.new({
469
+ :name => 'Plains (South of Bridge)',
470
+ :description => 'To the north of these fields lies a bridge that may be crossable.',
471
+ :coords => {:x => 4, :y => 3},
472
+ :locs_connected => {:north => true, :east => true, :south => false, :west => true},
473
+ :danger_level => :low,
474
+ :monster_level_range => 2..3,
475
+ :items => [],
476
+ :bosses_abounding => []
477
+ })
478
+ )
479
+ locations.push(Location.new({
480
+ :name => 'Plains (Hut)',
481
+ :description => 'A straw hut sits alone, curiously, in a patch of grass, sticks, and straw.',
482
+ :coords => {:x => 3, :y => 3},
483
+ :locs_connected => {:north => false, :east => true, :south => false, :west => false},
484
+ :danger_level => :none,
485
+ :monster_level_range => nil,
486
+ :items => [],
487
+ :bosses_abounding => []
488
+ })
489
+ )
490
+ locations.push(Location.new({
491
+ :name => 'River Bridge',
492
+ :description => 'Sturdy and safe, this bridge will get you across the otherwise unpassable river you see below.',
493
+ :coords => {:x => 4, :y => 4},
494
+ :locs_connected => {:north => true, :east => false, :south => true, :west => false},
495
+ :danger_level => :moderate,
496
+ :monster_level_range => 3..5,
497
+ :items => [],
498
+ :bosses_abounding => []
499
+ })
500
+ )
501
+ locations.push(Location.new({
502
+ :name => 'Plains (North of Bridge)',
503
+ :description => 'North of the river feels similar to south of the river, as you continue to be surrounded by grass and grass and, well, grass.',
504
+ :coords => {:x => 4, :y => 5},
505
+ :locs_connected => {:north => false, :east => false, :south => true, :west => true},
506
+ :danger_level => :low,
507
+ :monster_level_range => 2..3,
508
+ :items => [],
509
+ :bosses_abounding => []
510
+ })
511
+ )
512
+ locations.push(Location.new({
513
+ :name => 'Rock Quarry',
514
+ :description => 'Piles of rocks, both big and small, are placed here and there, a testament to someone\'s surely back-breaking labor.',
515
+ :coords => {:x => 3, :y => 5},
516
+ :locs_connected => {:north => false, :east => true, :south => false, :west => false},
385
517
  :danger_level => :moderate,
386
518
  :monster_level_range => 3..4,
387
519
  :items => [Gun.new, TowerSwitch.new],
@@ -389,9 +521,9 @@ module Gemwarrior
389
521
  })
390
522
  )
391
523
  locations.push(Location.new({
392
- :name => 'Sky Tower (Foyer)',
524
+ :name => 'Sky Tower (Entryway)',
393
525
  :description => 'You feel unsettled as you gaze upon the wondrous proportions of Emerald\'s home.',
394
- :coords => {:x => 5, :y => 4},
526
+ :coords => {:x => 8, :y => 6},
395
527
  :locs_connected => {:north => true, :east => true, :south => false, :west => true},
396
528
  :danger_level => :moderate,
397
529
  :monster_level_range => 3..4,
@@ -402,18 +534,18 @@ module Gemwarrior
402
534
  locations.push(Location.new({
403
535
  :name => 'Sky Tower (Cloud Garden)',
404
536
  :description => 'A perfectly-maintained array of wispy flowers and other ethereal plantlife contained within a cumulonimbus barrier.',
405
- :coords => {:x => 5, :y => 5},
537
+ :coords => {:x => 8, :y => 7},
406
538
  :locs_connected => {:north => false, :east => false, :south => true, :west => false},
407
539
  :danger_level => :moderate,
408
540
  :monster_level_range => 3..4,
409
- :items => [Flower.new],
541
+ :items => [Flower.new, Keystone.new],
410
542
  :bosses_abounding => []
411
543
  })
412
544
  )
413
545
  locations.push(Location.new({
414
546
  :name => 'Sky Tower (Armory)',
415
547
  :description => 'Weapons of all kinds litter the ground and are hung on hooks from the wall. Tower assailants beware/rejoice!',
416
- :coords => {:x => 4, :y => 4},
548
+ :coords => {:x => 7, :y => 6},
417
549
  :locs_connected => {:north => true, :east => true, :south => false, :west => false},
418
550
  :danger_level => :moderate,
419
551
  :monster_level_range => 3..4,
@@ -424,7 +556,7 @@ module Gemwarrior
424
556
  locations.push(Location.new({
425
557
  :name => 'Sky Tower (West Hallway)',
426
558
  :description => 'The hallway seems to stretch on for days.',
427
- :coords => {:x => 4, :y => 5},
559
+ :coords => {:x => 7, :y => 7},
428
560
  :locs_connected => {:north => true, :east => false, :south => true, :west => false},
429
561
  :danger_level => :moderate,
430
562
  :monster_level_range => 3..4,
@@ -435,7 +567,7 @@ module Gemwarrior
435
567
  locations.push(Location.new({
436
568
  :name => 'Sky Tower (Waterfalls)',
437
569
  :description => 'The seemingly neverending deluge of water causes this room to be quite loud, yet pretty.',
438
- :coords => {:x => 4, :y => 6},
570
+ :coords => {:x => 7, :y => 8},
439
571
  :locs_connected => {:north => true, :east => true, :south => false, :west => false},
440
572
  :danger_level => :moderate,
441
573
  :monster_level_range => 3..4,
@@ -445,9 +577,9 @@ module Gemwarrior
445
577
  )
446
578
  locations.push(Location.new({
447
579
  :name => 'Sky Tower (Massive Door)',
448
- :description => 'Before you lies a massive collection of cumulus clouds that form into a door, beyond which may well be your doom.',
449
- :coords => {:x => 5, :y => 6},
450
- :locs_connected => {:north => true, :east => true, :south => false, :west => true},
580
+ :description => 'Before you lies a massive collection of cumulus clouds that form into a seemingly impenetrable door, beyond which may well be your doom.',
581
+ :coords => {:x => 8, :y => 8},
582
+ :locs_connected => {:north => false, :east => true, :south => false, :west => true},
451
583
  :danger_level => :moderate,
452
584
  :monster_level_range => 4..5,
453
585
  :items => [MassiveDoor.new],
@@ -457,7 +589,7 @@ module Gemwarrior
457
589
  locations.push(Location.new({
458
590
  :name => 'Sky Tower (Throne Room)',
459
591
  :description => 'There, on a mighty seat made of broken dreams, sits Emerald himself, staring at you coldly, silently.',
460
- :coords => {:x => 5, :y => 7},
592
+ :coords => {:x => 8, :y => 9},
461
593
  :locs_connected => {:north => false, :east => false, :south => true, :west => false},
462
594
  :danger_level => :high,
463
595
  :monster_level_range => 5..7,
@@ -468,7 +600,7 @@ module Gemwarrior
468
600
  locations.push(Location.new({
469
601
  :name => 'Sky Tower (Lounge)',
470
602
  :description => 'Nothing but a simple couch, which looks very comfortable, exists in this corner of the tower.',
471
- :coords => {:x => 6, :y => 6},
603
+ :coords => {:x => 9, :y => 8},
472
604
  :locs_connected => {:north => false, :east => false, :south => true, :west => true},
473
605
  :danger_level => :moderate,
474
606
  :monster_level_range => 3..4,
@@ -479,7 +611,7 @@ module Gemwarrior
479
611
  locations.push(Location.new({
480
612
  :name => 'Sky Tower (East Hallway)',
481
613
  :description => 'Longish and neverending is what you might say about this stretch of the tower.',
482
- :coords => {:x => 6, :y => 5},
614
+ :coords => {:x => 9, :y => 7},
483
615
  :locs_connected => {:north => true, :east => false, :south => true, :west => false},
484
616
  :danger_level => :moderate,
485
617
  :monster_level_range => 3..4,
@@ -490,7 +622,7 @@ module Gemwarrior
490
622
  locations.push(Location.new({
491
623
  :name => 'Sky Tower (Kitchen)',
492
624
  :description => 'This kitchen looks well-used, as appliances abound, and leftover food sits atop counters.',
493
- :coords => {:x => 6, :y => 4},
625
+ :coords => {:x => 9, :y => 6},
494
626
  :locs_connected => {:north => true, :east => false, :south => false, :west => true},
495
627
  :danger_level => :moderate,
496
628
  :monster_level_range => 3..4,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemwarrior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Chadwick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-15 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -187,6 +187,7 @@ files:
187
187
  - lib/gemwarrior/entities/items/flower.rb
188
188
  - lib/gemwarrior/entities/items/gun.rb
189
189
  - lib/gemwarrior/entities/items/herb.rb
190
+ - lib/gemwarrior/entities/items/keystone.rb
190
191
  - lib/gemwarrior/entities/items/massive_door.rb
191
192
  - lib/gemwarrior/entities/items/sparklything.rb
192
193
  - lib/gemwarrior/entities/items/stalactite.rb
@@ -242,8 +243,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
243
  version: '0'
243
244
  requirements: []
244
245
  rubyforge_project:
245
- rubygems_version: 2.4.6
246
+ rubygems_version: 2.4.8
246
247
  signing_key:
247
248
  specification_version: 4
248
249
  summary: RPG as RubyGem
249
- test_files: []
250
+ test_files:
251
+ - spec/rubywarrior_spec.rb
252
+ - spec/spec_helper.rb