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 +4 -4
- data/.gitignore +2 -0
- data/bin/gemwarrior +0 -0
- data/lib/gemwarrior/entities/items/floor_tile.rb +1 -1
- data/lib/gemwarrior/entities/items/keystone.rb +19 -0
- data/lib/gemwarrior/entities/items/massive_door.rb +16 -3
- data/lib/gemwarrior/entities/items/tower_switch.rb +1 -1
- data/lib/gemwarrior/evaluator.rb +54 -31
- data/lib/gemwarrior/inventory.rb +8 -4
- data/lib/gemwarrior/misc/version.rb +1 -1
- data/lib/gemwarrior/world.rb +162 -30
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d645e9d63d18268d68ccb530aceedce650f68b3
|
4
|
+
data.tar.gz: 6285dd9e0779230fedb17edf536342af39d28ab7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae8f0babc3338425030bb6d22cd1fda25efedabb9f3b6d548b8290142e2c3d2c62a64f4682dfbf0c78856b048f0cdb103fddf9a853eeeb9189a36f2e2bf45965
|
7
|
+
data.tar.gz: 971d03ca009d04fa82f732964512bd3a4f1225cfb921e5ffeeea07b058ce3e9e0984bc94c153939bdb9cc8e7505a72205e2db49e64148535c0c29a066dbde35a
|
data/.gitignore
CHANGED
data/bin/gemwarrior
CHANGED
File without changes
|
@@ -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 = '
|
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 =
|
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
|
data/lib/gemwarrior/evaluator.rb
CHANGED
@@ -7,36 +7,38 @@ module Gemwarrior
|
|
7
7
|
class Evaluator
|
8
8
|
# CONSTANTS
|
9
9
|
## MESSAGES
|
10
|
-
PROGRAM_NAME
|
11
|
-
QUIT_MESSAGE
|
12
|
-
RESUME_MESSAGE
|
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
|
16
|
-
CHANGE_PARAMS
|
17
|
-
DEBUG_LIST_PARAMS
|
18
|
-
DEBUG_STAT_PARAMS
|
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
|
21
|
+
ERROR_COMMAND_INVALID = 'That is not something the game yet understands.'
|
22
22
|
|
23
|
-
ERROR_GO_PARAM_MISSING
|
24
|
-
ERROR_GO_PARAM_INVALID
|
25
|
-
ERROR_ATTACK_PARAM_MISSING
|
26
|
-
ERROR_ATTACK_PARAM_INVALID
|
27
|
-
ERROR_TAKE_PARAM_MISSING
|
28
|
-
ERROR_USE_PARAM_MISSING
|
29
|
-
ERROR_USE_PARAM_INVALID
|
30
|
-
ERROR_USE_PARAM_UNUSEABLE
|
31
|
-
ERROR_DROP_PARAM_MISSING
|
32
|
-
ERROR_EQUIP_PARAM_MISSING
|
33
|
-
ERROR_UNEQUIP_PARAM_MISSING
|
34
|
-
ERROR_CHANGE_PARAM_MISSING
|
35
|
-
ERROR_CHANGE_PARAM_INVALID
|
36
|
-
ERROR_LIST_PARAM_MISSING
|
37
|
-
ERROR_LIST_PARAM_INVALID
|
38
|
-
ERROR_DEBUG_STAT_PARAM_MISSING
|
39
|
-
ERROR_DEBUG_STAT_PARAM_INVALID
|
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
|
data/lib/gemwarrior/inventory.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
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
|
data/lib/gemwarrior/world.rb
CHANGED
@@ -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?
|
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 =>
|
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 => [
|
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 =>
|
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 (
|
370
|
+
:name => 'Pain Desert (East)',
|
338
371
|
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
339
|
-
:coords => {:x =>
|
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 =>
|
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 (
|
425
|
+
:name => 'Pain Desert (North)',
|
360
426
|
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
361
|
-
:coords => {:x =>
|
362
|
-
:locs_connected => {:north =>
|
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,
|
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 => '
|
382
|
-
:description => '
|
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 =>
|
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 (
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
450
|
-
:locs_connected => {:north =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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.
|
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-
|
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.
|
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
|