gemwarrior 0.6.5 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gemwarrior/entities/item.rb +6 -1
- data/lib/gemwarrior/entities/items/apple.rb +19 -0
- data/lib/gemwarrior/entities/items/bed.rb +6 -0
- data/lib/gemwarrior/entities/items/couch.rb +25 -0
- data/lib/gemwarrior/entities/items/cup.rb +19 -0
- data/lib/gemwarrior/entities/items/dehumidifier.rb +19 -0
- data/lib/gemwarrior/entities/items/feather.rb +1 -1
- data/lib/gemwarrior/entities/items/floor_tile.rb +32 -0
- data/lib/gemwarrior/entities/items/flower.rb +19 -0
- data/lib/gemwarrior/entities/items/gun.rb +5 -0
- data/lib/gemwarrior/entities/items/massive_door.rb +19 -0
- data/lib/gemwarrior/entities/items/sparklything.rb +7 -1
- data/lib/gemwarrior/entities/items/stalactite.rb +1 -1
- data/lib/gemwarrior/entities/items/stone.rb +1 -1
- data/lib/gemwarrior/entities/items/tower_switch.rb +32 -0
- data/lib/gemwarrior/entities/items/waterfall.rb +25 -0
- data/lib/gemwarrior/entities/location.rb +2 -1
- data/lib/gemwarrior/entities/player.rb +13 -13
- data/lib/gemwarrior/evaluator.rb +68 -10
- data/lib/gemwarrior/misc/version.rb +1 -1
- data/lib/gemwarrior/world.rb +217 -125
- metadata +10 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f02d5526a735c39b33dd88a5bc4ca62fbecbcf68
|
4
|
+
data.tar.gz: 23b403831920ce94db83189ccbe68369f5b39f73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44224c01dabd51cada90e1575872979819712c06e6a002a7690360de6a0df2f1f8d08a26163db6a8911a3d505fc10e5c7de8aa6091e92f1b7038b2ea2527e04c
|
7
|
+
data.tar.gz: 1879e4167fd293d048da3e9d91e7040a7c4cb0db9e020c7fa9999f1c99ce7b8c5688c7f9574d88561b216b9b91bc1645877fc5c23ab279a2b3d8673129ccb7df
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/apple.rb
|
2
|
+
# Item::Apple
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Apple < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'apple'
|
10
|
+
self.description = 'Reddish-orangeish in color, this fruit looks sweet, but it is heavy and feels more like a rock you would sooner not bite into.'
|
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
|
@@ -15,5 +15,11 @@ module Gemwarrior
|
|
15
15
|
self.equippable = false
|
16
16
|
self.equipped = false
|
17
17
|
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'You unmake the bed, get under the covers, close your eyes, and begin to think about all the things you need to do today. You realize sleep is not one of them and quickly get back up, remake the bed, and get on about your day.'
|
21
|
+
puts 'You regain a few hit points.'
|
22
|
+
{:type => 'rest', :data => 5}
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/couch.rb
|
2
|
+
# Item::Couch
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Couch < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'couch'
|
10
|
+
self.description = 'Ever wanted to sit on a cloud? Now is your chance.'
|
11
|
+
self.atk_lo = nil
|
12
|
+
self.atk_hi = nil
|
13
|
+
self.takeable = false
|
14
|
+
self.useable = true
|
15
|
+
self.equippable = false
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'Your body comes to rest somewhere below the surface of the cloudy apparatus, almost as if it were floating *amongst* the couch. The feeling is heavenly, and you actually feel somewhat worse after getting back up.'
|
21
|
+
puts
|
22
|
+
{:type => 'rest', :data => 1}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/cup.rb
|
2
|
+
# Item::Cup
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Cup < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'cup'
|
10
|
+
self.description = 'A nice, stone mug, perfect for putting things into and then using to carry such things from place to place.'
|
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
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/dehumidifier.rb
|
2
|
+
# Item::Dehumidifier
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Dehumidifier < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'dehumidifier'
|
10
|
+
self.description = 'Petals the color of clear sky and a stem of bright white. A most curious plant.'
|
11
|
+
self.atk_lo = 2
|
12
|
+
self.atk_hi = 4
|
13
|
+
self.takeable = true
|
14
|
+
self.useable = false
|
15
|
+
self.equippable = true
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/floor_tile.rb
|
2
|
+
# Item::FloorTile
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class FloorTile < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'floor_tile'
|
10
|
+
self.description = 'One of the floor tiles, rough-hewn but immaculate, looks...off. Pressable, even.'
|
11
|
+
self.atk_lo = nil
|
12
|
+
self.atk_hi = nil
|
13
|
+
self.takeable = false
|
14
|
+
self.useable = true
|
15
|
+
self.equippable = false
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'You slowly lower your foot onto the tile, and then gently depress it, through the floor. Your whole body begins to feel light, lifeless. You black out.'
|
21
|
+
puts
|
22
|
+
|
23
|
+
t = Thread.new do
|
24
|
+
print "#{Matrext::process({ :phrase => '*** SHOOOOOM ***', :oneline => true })}"
|
25
|
+
puts
|
26
|
+
end
|
27
|
+
t.join
|
28
|
+
|
29
|
+
{:type => 'move', :data => 'Sky Tower (Entrance)'}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/flower.rb
|
2
|
+
# Item::Flower
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Flower < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'flower'
|
10
|
+
self.description = 'Petals the color of clear sky and a stem of bright white. A most curious plant.'
|
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
|
@@ -15,5 +15,10 @@ module Gemwarrior
|
|
15
15
|
self.equippable = true
|
16
16
|
self.equipped = false
|
17
17
|
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'You pull the trigger on the gun, but realize there are no bullets in it. So, it does not do much except cause a barely audible *click* sound.'
|
21
|
+
{:type => nil, :data => nil}
|
22
|
+
end
|
18
23
|
end
|
19
24
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/massive_door.rb
|
2
|
+
# Item::MassiveDoor
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class MassiveDoor < Item
|
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.'
|
11
|
+
self.atk_lo = nil
|
12
|
+
self.atk_hi = nil
|
13
|
+
self.takeable = false
|
14
|
+
self.useable = false
|
15
|
+
self.equippable = false
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -6,7 +6,7 @@ require_relative '../item'
|
|
6
6
|
module Gemwarrior
|
7
7
|
class SparklyThing < Item
|
8
8
|
def initialize
|
9
|
-
self.name = '
|
9
|
+
self.name = 'Sparkly Thing(tm)'
|
10
10
|
self.description = 'The sparkling that this thing does is unimaginably brilliant.'
|
11
11
|
self.atk_lo = nil
|
12
12
|
self.atk_hi = nil
|
@@ -15,5 +15,11 @@ module Gemwarrior
|
|
15
15
|
self.equippable = false
|
16
16
|
self.equipped = false
|
17
17
|
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'Everything, and I mean *everything*, begins to sparkle. Huh.'
|
21
|
+
puts
|
22
|
+
{:type => nil, :data => nil}
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/tower_switch.rb
|
2
|
+
# Item::TowerSwitch
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class TowerSwitch < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'tower_switch'
|
10
|
+
self.description = 'A pedestal about 4 feet in height rises up from the ground, a switch atop it. It is labeled "Tower" and the choices are "Yes" and "No". It is currently set to "No".'
|
11
|
+
self.atk_lo = nil
|
12
|
+
self.atk_hi = nil
|
13
|
+
self.takeable = false
|
14
|
+
self.useable = true
|
15
|
+
self.equippable = false
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'You move the switch from "No" to "Yes". Suddenly, a great wind picks up and you are gently lifted up by it. The ground moves away and your whole body begins to gently drift towards Emerald\'s compound high in the stratosphere.'
|
21
|
+
puts
|
22
|
+
|
23
|
+
t = Thread.new do
|
24
|
+
print "#{Matrext::process({ :phrase => '*** WHOOOOOSH ***', :oneline => true })}"
|
25
|
+
puts
|
26
|
+
end
|
27
|
+
t.join
|
28
|
+
|
29
|
+
{:type => 'move', :data => 'Sky Tower (Foyer)'}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# lib/gemwarrior/entities/items/waterfall.rb
|
2
|
+
# Item::Waterfall
|
3
|
+
|
4
|
+
require_relative '../item'
|
5
|
+
|
6
|
+
module Gemwarrior
|
7
|
+
class Waterfall < Item
|
8
|
+
def initialize
|
9
|
+
self.name = 'waterfall'
|
10
|
+
self.description = 'Gallons of murky, sparkling water fall downward from an unknown spot in the sky, ending in a pool on the ground, yet never overflowing.'
|
11
|
+
self.atk_lo = nil
|
12
|
+
self.atk_hi = nil
|
13
|
+
self.takeable = false
|
14
|
+
self.useable = true
|
15
|
+
self.equippable = false
|
16
|
+
self.equipped = false
|
17
|
+
end
|
18
|
+
|
19
|
+
def use
|
20
|
+
puts 'You stretch out your hand and touch the waterfall. It stings you with its cold and forceful gushing. Your hand is now wet and rougher than before. In time, it will dry.'
|
21
|
+
puts
|
22
|
+
{:type => 'dmg', :data => rand(0..1)}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -12,7 +12,7 @@ module Gemwarrior
|
|
12
12
|
## ERRORS
|
13
13
|
ERROR_LOCATION_ITEM_REMOVE_INVALID = 'That item cannot be removed as it does not exist here.'
|
14
14
|
|
15
|
-
attr_accessor :coords, :locs_connected, :danger_level, :items,
|
15
|
+
attr_accessor :coords, :locs_connected, :danger_level, :monster_level_range, :items,
|
16
16
|
:monsters_abounding, :bosses_abounding, :checked_for_monsters
|
17
17
|
|
18
18
|
def initialize(options)
|
@@ -21,6 +21,7 @@ module Gemwarrior
|
|
21
21
|
self.coords = options.fetch(:coords)
|
22
22
|
self.locs_connected = options.fetch(:locs_connected)
|
23
23
|
self.danger_level = options.fetch(:danger_level)
|
24
|
+
self.monster_level_range = options.fetch(:monster_level_range)
|
24
25
|
self.items = options.fetch(:items)
|
25
26
|
self.monsters_abounding = []
|
26
27
|
self.bosses_abounding = options[:bosses_abounding]
|
@@ -155,22 +155,22 @@ module Gemwarrior
|
|
155
155
|
return nil
|
156
156
|
end
|
157
157
|
end
|
158
|
-
|
159
|
-
def
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
self.atk_hi = has_weapon_equipped? ? self.inventory.weapon.atk_hi : PlayerLevels::get_level_stats(self.level)[:atk_hi]
|
165
|
-
else
|
166
|
-
self.beast_mode = true
|
167
|
-
self.atk_lo = BEAST_MODE_ATTACK
|
168
|
-
binding.pry
|
169
|
-
self.atk_hi = BEAST_MODE_ATTACK
|
158
|
+
|
159
|
+
def take_damage(dmg)
|
160
|
+
self.hp_cur = self.hp_cur - dmg.to_i
|
161
|
+
|
162
|
+
if hp_cur <= 0
|
163
|
+
player_death
|
170
164
|
end
|
171
165
|
end
|
172
|
-
|
166
|
+
|
173
167
|
private
|
168
|
+
|
169
|
+
def player_death
|
170
|
+
puts 'You\'re actions have reduced you to death.'.colorize(:red)
|
171
|
+
puts 'Your adventure ends here. Try again next time!'.colorize(:red)
|
172
|
+
exit(0)
|
173
|
+
end
|
174
174
|
|
175
175
|
# TRAVEL
|
176
176
|
def print_traveling_text(direction_text)
|
data/lib/gemwarrior/evaluator.rb
CHANGED
@@ -7,15 +7,15 @@ 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
21
|
ERROR_COMMAND_INVALID = 'That is not something the game yet understands.'
|
@@ -25,6 +25,9 @@ module Gemwarrior
|
|
25
25
|
ERROR_ATTACK_PARAM_MISSING = 'You cannot just "attack". You gotta choose something to attack.'
|
26
26
|
ERROR_ATTACK_PARAM_INVALID = 'That monster does not exist here or can\'t be attacked.'
|
27
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.'
|
28
31
|
ERROR_DROP_PARAM_MISSING = 'You cannot just "drop". You gotta choose something to drop.'
|
29
32
|
ERROR_EQUIP_PARAM_MISSING = 'You cannot just "equip". You gotta choose something to equip.'
|
30
33
|
ERROR_UNEQUIP_PARAM_MISSING = 'You cannot just "unequip". You gotta choose something to unequip.'
|
@@ -53,8 +56,8 @@ module Gemwarrior
|
|
53
56
|
'Change player stat'
|
54
57
|
]
|
55
58
|
|
56
|
-
self.commands = %w(character inventory rest look take drop equip unequip go attack change help quit quit!)
|
57
|
-
self.aliases = %w(c i r l t d e ue g a ch h q qq)
|
59
|
+
self.commands = %w(character inventory rest look take use drop equip unequip go attack change help quit quit!)
|
60
|
+
self.aliases = %w(c i r l t u d e ue g a ch h q qq)
|
58
61
|
self.extras = %w(exit exit! x x)
|
59
62
|
self.cmd_descriptions = [
|
60
63
|
'Display character information',
|
@@ -62,6 +65,7 @@ module Gemwarrior
|
|
62
65
|
'Take a load off and regain HP',
|
63
66
|
'Look around your current location',
|
64
67
|
'Take item',
|
68
|
+
'Use item (in inventory or environment)',
|
65
69
|
'Drop item',
|
66
70
|
'Equip item',
|
67
71
|
'Unequip item',
|
@@ -183,6 +187,60 @@ module Gemwarrior
|
|
183
187
|
else
|
184
188
|
world.player.inventory.add_item(world.location_by_coords(world.player.cur_coords), param1)
|
185
189
|
end
|
190
|
+
when 'use', 'u'
|
191
|
+
if param1.nil?
|
192
|
+
ERROR_USE_PARAM_MISSING
|
193
|
+
else
|
194
|
+
item_name = param1
|
195
|
+
result = nil
|
196
|
+
location_inventory = world.location_by_coords(world.player.cur_coords).items
|
197
|
+
|
198
|
+
if location_inventory.map(&:name).include?(item_name)
|
199
|
+
location_inventory.each do |i|
|
200
|
+
if i.name.eql?(item_name)
|
201
|
+
if i.useable
|
202
|
+
result = i.use
|
203
|
+
else
|
204
|
+
return ERROR_USE_PARAM_UNUSEABLE
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
elsif
|
209
|
+
player_inventory = world.player.inventory.items
|
210
|
+
if player_inventory.map(&:name).include?(item_name)
|
211
|
+
player_inventory.each do |i|
|
212
|
+
if i.name.eql?(item_name)
|
213
|
+
if i.useable
|
214
|
+
result = i.use
|
215
|
+
else
|
216
|
+
return ERROR_USE_PARAM_UNUSEABLE
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
if result.nil?
|
224
|
+
ERROR_USE_PARAM_INVALID
|
225
|
+
else
|
226
|
+
case result[:type]
|
227
|
+
when 'move'
|
228
|
+
world.player.cur_coords = world.location_coords_by_name(result[:data])
|
229
|
+
world.describe(world.location_by_coords(world.player.cur_coords))
|
230
|
+
when 'dmg'
|
231
|
+
world.player.take_damage(result[:data])
|
232
|
+
return
|
233
|
+
when 'rest'
|
234
|
+
world.player.hp_cur = world.player.hp_cur + result[:data]
|
235
|
+
if world.player.hp_cur > world.player.hp_max
|
236
|
+
world.player.hp_cur = world.player.hp_max
|
237
|
+
end
|
238
|
+
return
|
239
|
+
else
|
240
|
+
return
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
186
244
|
when 'drop', 'd'
|
187
245
|
if param1.nil?
|
188
246
|
ERROR_DROP_PARAM_MISSING
|
data/lib/gemwarrior/world.rb
CHANGED
@@ -184,18 +184,12 @@ module Gemwarrior
|
|
184
184
|
private
|
185
185
|
|
186
186
|
def init_monsters
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
require_relative 'entities/monsters/citrinaga'
|
194
|
-
require_relative 'entities/monsters/coraliz'
|
195
|
-
require_relative 'entities/monsters/cubicat'
|
196
|
-
require_relative 'entities/monsters/diaman'
|
197
|
-
require_relative 'entities/monsters/bosses/emerald'
|
198
|
-
require_relative 'entities/monsters/bosses/garynetty'
|
187
|
+
Dir.glob('lib/gemwarrior/entities/monsters/*.rb').each do |item|
|
188
|
+
require_relative item[item.index('/', item.index('/')+1)+1..item.length]
|
189
|
+
end
|
190
|
+
Dir.glob('lib/gemwarrior/entities/monsters/bosses/*.rb').each do |item|
|
191
|
+
require_relative item[item.index('/', item.index('/')+1)+1..item.length]
|
192
|
+
end
|
199
193
|
|
200
194
|
self.monsters = [
|
201
195
|
Alexandrat.new,
|
@@ -214,165 +208,263 @@ module Gemwarrior
|
|
214
208
|
end
|
215
209
|
|
216
210
|
def init_locations
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
require_relative 'entities/items/stalactite'
|
221
|
-
require_relative 'entities/items/stonemite'
|
222
|
-
require_relative 'entities/items/stone'
|
223
|
-
require_relative 'entities/items/throne'
|
224
|
-
require_relative 'entities/items/tree'
|
211
|
+
Dir.glob('lib/gemwarrior/entities/items/*.rb').each do |item|
|
212
|
+
require_relative item[item.index('/', item.index('/')+1)+1..item.length]
|
213
|
+
end
|
225
214
|
|
226
215
|
locations = []
|
227
216
|
|
228
217
|
locations.push(Location.new({
|
229
|
-
:name
|
230
|
-
:description
|
231
|
-
:coords
|
232
|
-
:locs_connected
|
233
|
-
:danger_level
|
234
|
-
:
|
235
|
-
:
|
218
|
+
:name => 'Home',
|
219
|
+
:description => 'The little, unimportant, decrepit hut that you live in.',
|
220
|
+
:coords => {:x => 5, :y => 0},
|
221
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => true},
|
222
|
+
:danger_level => :none,
|
223
|
+
:monster_level_range => nil,
|
224
|
+
:items => [Bed.new, Stone.new],
|
225
|
+
:bosses_abounding => []
|
226
|
+
})
|
227
|
+
)
|
228
|
+
locations.push(Location.new({
|
229
|
+
:name => 'Cave (Entrance)',
|
230
|
+
:description => 'A nearby, dank entrance to a cavern, surely filled with stacktites, stonemites, and rocksites.',
|
231
|
+
:coords => {:x => 6, :y => 0},
|
232
|
+
:locs_connected => {:north => false, :east => true, :south => false, :west => true},
|
233
|
+
:danger_level => :low,
|
234
|
+
:monster_level_range => 1..2,
|
235
|
+
:items => [],
|
236
|
+
:bosses_abounding => []
|
237
|
+
})
|
238
|
+
)
|
239
|
+
locations.push(Location.new({
|
240
|
+
:name => 'Cave (Antechamber)',
|
241
|
+
:description => 'Now inside the entrance to the cavern, you confirm that there are stacktites, stonemites, rocksites, and even one or two pebblejites.',
|
242
|
+
:coords => {:x => 7, :y => 0},
|
243
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => true},
|
244
|
+
:danger_level => :moderate,
|
245
|
+
:monster_level_range => 2..3,
|
246
|
+
:items => [Stalactite.new, Stonemite.new],
|
247
|
+
:bosses_abounding => []
|
248
|
+
})
|
249
|
+
)
|
250
|
+
locations.push(Location.new({
|
251
|
+
:name => 'Cave (Nook)',
|
252
|
+
:description => 'A depression in the cave wall casts a shadow over a small rock shelf.',
|
253
|
+
:coords => {:x => 7, :y => 1},
|
254
|
+
:locs_connected => {:north => false, :east => true, :south => true, :west => false},
|
255
|
+
:danger_level => :moderate,
|
256
|
+
:monster_level_range => 2..3,
|
257
|
+
:items => [],
|
258
|
+
:bosses_abounding => []
|
259
|
+
})
|
260
|
+
)
|
261
|
+
locations.push(Location.new({
|
262
|
+
:name => 'Cave (Dropoff)',
|
263
|
+
:description => 'Caves do not usually feature sudden chasms spilling down into an unknowable void, but this one does.',
|
264
|
+
:coords => {:x => 8, :y => 1},
|
265
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => true},
|
266
|
+
:danger_level => :moderate,
|
267
|
+
:monster_level_range => 2..4,
|
268
|
+
:items => [],
|
269
|
+
:bosses_abounding => []
|
270
|
+
})
|
271
|
+
)
|
272
|
+
locations.push(Location.new({
|
273
|
+
:name => 'Cave (Causeway)',
|
274
|
+
:description => 'Paths lead north and west, but nothing of interest is in this causeway.',
|
275
|
+
:coords => {:x => 8, :y => 0},
|
276
|
+
:locs_connected => {:north => true, :east => false, :south => false, :west => true},
|
277
|
+
:danger_level => :moderate,
|
278
|
+
:monster_level_range => 2..3,
|
279
|
+
:items => [],
|
280
|
+
:bosses_abounding => []
|
281
|
+
})
|
282
|
+
)
|
283
|
+
locations.push(Location.new({
|
284
|
+
:name => 'Forest',
|
285
|
+
:description => 'Trees exist here, in droves.',
|
286
|
+
:coords => {:x => 4, :y => 0},
|
287
|
+
:locs_connected => {:north => false, :east => true, :south => false, :west => true},
|
288
|
+
:danger_level => :low,
|
289
|
+
:monster_level_range => 1..3,
|
290
|
+
:items => [Feather.new, Tree.new],
|
291
|
+
:bosses_abounding => []
|
292
|
+
})
|
293
|
+
)
|
294
|
+
locations.push(Location.new({
|
295
|
+
:name => 'Pain Desert (Southeast)',
|
296
|
+
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
297
|
+
:coords => {:x => 3, :y => 0},
|
298
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => true},
|
299
|
+
:danger_level => :assured,
|
300
|
+
:monster_level_range => 5..20,
|
301
|
+
:items => [],
|
302
|
+
:bosses_abounding => [Garynetty.new]
|
303
|
+
})
|
304
|
+
)
|
305
|
+
locations.push(Location.new({
|
306
|
+
:name => 'Pain Desert (Northeast)',
|
307
|
+
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
308
|
+
:coords => {:x => 3, :y => 1},
|
309
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => true},
|
310
|
+
:danger_level => :assured,
|
311
|
+
:monster_level_range => 5..20,
|
312
|
+
:items => [],
|
313
|
+
:bosses_abounding => [Garynetty.new]
|
236
314
|
})
|
237
315
|
)
|
238
316
|
locations.push(Location.new({
|
239
|
-
:name
|
240
|
-
:description
|
241
|
-
:coords
|
242
|
-
:locs_connected
|
243
|
-
:danger_level
|
244
|
-
:
|
245
|
-
:
|
317
|
+
:name => 'Pain Desert (Northwest)',
|
318
|
+
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
319
|
+
:coords => {:x => 2, :y => 1},
|
320
|
+
:locs_connected => {:north => false, :east => true, :south => true, :west => false},
|
321
|
+
:danger_level => :assured,
|
322
|
+
:monster_level_range => 5..20,
|
323
|
+
:items => [],
|
324
|
+
:bosses_abounding => [Garynetty.new]
|
246
325
|
})
|
247
326
|
)
|
248
327
|
locations.push(Location.new({
|
249
|
-
:name
|
250
|
-
:description
|
251
|
-
:coords
|
252
|
-
:locs_connected
|
253
|
-
:danger_level
|
254
|
-
:
|
255
|
-
:
|
328
|
+
:name => 'Pain Desert (Southwest)',
|
329
|
+
:description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
|
330
|
+
:coords => {:x => 2, :y => 0},
|
331
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => false},
|
332
|
+
:danger_level => :assured,
|
333
|
+
:monster_level_range => 5..20,
|
334
|
+
:items => [],
|
335
|
+
:bosses_abounding => [Garynetty.new]
|
256
336
|
})
|
257
337
|
)
|
258
338
|
locations.push(Location.new({
|
259
|
-
:name
|
260
|
-
:description
|
261
|
-
:coords
|
262
|
-
:locs_connected
|
263
|
-
:danger_level
|
264
|
-
:
|
265
|
-
:
|
339
|
+
:name => 'Plains',
|
340
|
+
:description => 'A lot of grass and nothing, but you see a mysterious tower further north, and your home to the south.',
|
341
|
+
:coords => {:x => 5, :y => 1},
|
342
|
+
:locs_connected => {:north => true, :east => false, :south => true, :west => false},
|
343
|
+
:danger_level => :low,
|
344
|
+
:monster_level_range => 2..3,
|
345
|
+
:items => [],
|
346
|
+
:bosses_abounding => []
|
266
347
|
})
|
267
348
|
)
|
268
349
|
locations.push(Location.new({
|
269
|
-
:name
|
270
|
-
:description
|
271
|
-
:coords
|
272
|
-
:locs_connected
|
273
|
-
:danger_level
|
274
|
-
:
|
275
|
-
:
|
350
|
+
:name => 'Sky Tower (Entrance)',
|
351
|
+
:description => 'The craziest guy that ever existed is inside the towering structure before you.',
|
352
|
+
:coords => {:x => 5, :y => 2},
|
353
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => false},
|
354
|
+
:danger_level => :moderate,
|
355
|
+
:monster_level_range => 3..4,
|
356
|
+
:items => [Gun.new, TowerSwitch.new],
|
357
|
+
:bosses_abounding => []
|
276
358
|
})
|
277
359
|
)
|
278
360
|
locations.push(Location.new({
|
279
|
-
:name
|
280
|
-
:description
|
281
|
-
:coords
|
282
|
-
:locs_connected
|
283
|
-
:danger_level
|
284
|
-
:
|
285
|
-
:
|
361
|
+
:name => 'Sky Tower (Foyer)',
|
362
|
+
:description => 'You feel unsettled as you gaze upon the wondrous proportions of Emerald\'s home.',
|
363
|
+
:coords => {:x => 5, :y => 4},
|
364
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => true},
|
365
|
+
:danger_level => :moderate,
|
366
|
+
:monster_level_range => 3..4,
|
367
|
+
:items => [FloorTile.new],
|
368
|
+
:bosses_abounding => []
|
286
369
|
})
|
287
370
|
)
|
288
371
|
locations.push(Location.new({
|
289
|
-
:name
|
290
|
-
:description
|
291
|
-
:coords
|
292
|
-
:locs_connected
|
293
|
-
:danger_level
|
294
|
-
:
|
295
|
-
:
|
372
|
+
:name => 'Sky Tower (Cloud Garden)',
|
373
|
+
:description => 'A perfectly-maintained array of wispy flowers and other ethereal plantlife contained within a cumulonimbus barrier.',
|
374
|
+
:coords => {:x => 5, :y => 5},
|
375
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => false},
|
376
|
+
:danger_level => :moderate,
|
377
|
+
:monster_level_range => 3..4,
|
378
|
+
:items => [Flower.new],
|
379
|
+
:bosses_abounding => []
|
296
380
|
})
|
297
381
|
)
|
298
382
|
locations.push(Location.new({
|
299
|
-
:name
|
300
|
-
:description
|
301
|
-
:coords
|
302
|
-
:locs_connected
|
303
|
-
:danger_level
|
304
|
-
:
|
305
|
-
:
|
383
|
+
:name => 'Sky Tower (Armory)',
|
384
|
+
:description => 'Weapons of all kinds litter the ground and are hung on hooks from the wall, assumedly for use against assailants who might try to storm the tower.',
|
385
|
+
:coords => {:x => 4, :y => 4},
|
386
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => false},
|
387
|
+
:danger_level => :moderate,
|
388
|
+
:monster_level_range => 3..4,
|
389
|
+
:items => [Dehumidifier.new],
|
390
|
+
:bosses_abounding => []
|
306
391
|
})
|
307
392
|
)
|
308
393
|
locations.push(Location.new({
|
309
|
-
:name
|
310
|
-
:description
|
311
|
-
:coords
|
312
|
-
:locs_connected
|
313
|
-
:danger_level
|
314
|
-
:
|
315
|
-
:
|
394
|
+
:name => 'Sky Tower (West Hallway)',
|
395
|
+
:description => 'The hallway seems to stretch on for days.',
|
396
|
+
:coords => {:x => 4, :y => 5},
|
397
|
+
:locs_connected => {:north => true, :east => false, :south => true, :west => false},
|
398
|
+
:danger_level => :moderate,
|
399
|
+
:monster_level_range => 3..4,
|
400
|
+
:items => [Flower.new],
|
401
|
+
:bosses_abounding => []
|
316
402
|
})
|
317
403
|
)
|
318
404
|
locations.push(Location.new({
|
319
|
-
:name
|
320
|
-
:description
|
321
|
-
:coords
|
322
|
-
:locs_connected
|
323
|
-
:danger_level
|
324
|
-
:
|
325
|
-
:
|
405
|
+
:name => 'Sky Tower (Waterfalls)',
|
406
|
+
:description => 'The seemingly neverending deluge of water causes this room to be quite loud, yet pretty.',
|
407
|
+
:coords => {:x => 4, :y => 6},
|
408
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => false},
|
409
|
+
:danger_level => :moderate,
|
410
|
+
:monster_level_range => 3..4,
|
411
|
+
:items => [Waterfall.new],
|
412
|
+
:bosses_abounding => []
|
326
413
|
})
|
327
414
|
)
|
328
415
|
locations.push(Location.new({
|
329
|
-
:name
|
330
|
-
:description
|
331
|
-
:coords
|
332
|
-
:locs_connected
|
333
|
-
:danger_level
|
334
|
-
:
|
335
|
-
:
|
416
|
+
:name => 'Sky Tower (Massive Door)',
|
417
|
+
:description => 'Before you lies a massive collection of cumulus clouds that form into a door, beyond which may well be your doom.',
|
418
|
+
:coords => {:x => 5, :y => 6},
|
419
|
+
:locs_connected => {:north => true, :east => true, :south => false, :west => true},
|
420
|
+
:danger_level => :moderate,
|
421
|
+
:monster_level_range => 4..5,
|
422
|
+
:items => [MassiveDoor.new],
|
423
|
+
:bosses_abounding => []
|
336
424
|
})
|
337
425
|
)
|
338
426
|
locations.push(Location.new({
|
339
|
-
:name
|
340
|
-
:description
|
341
|
-
:coords
|
342
|
-
:locs_connected
|
343
|
-
:danger_level
|
344
|
-
:
|
345
|
-
:
|
427
|
+
:name => 'Sky Tower (Throne Room)',
|
428
|
+
:description => 'There, on a mighty seat made of broken dreams, sits Emerald himself, staring at you coldly, silently.',
|
429
|
+
:coords => {:x => 5, :y => 7},
|
430
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => false},
|
431
|
+
:danger_level => :high,
|
432
|
+
:monster_level_range => 5..7,
|
433
|
+
:items => [Throne.new],
|
434
|
+
:bosses_abounding => [Emerald.new]
|
346
435
|
})
|
347
436
|
)
|
348
437
|
locations.push(Location.new({
|
349
|
-
:name
|
350
|
-
:description
|
351
|
-
:coords
|
352
|
-
:locs_connected
|
353
|
-
:danger_level
|
354
|
-
:
|
355
|
-
:
|
438
|
+
:name => 'Sky Tower (Lounge)',
|
439
|
+
:description => 'Nothing but a simple couch, which looks very comfortable, exists in this corner of the tower.',
|
440
|
+
:coords => {:x => 6, :y => 6},
|
441
|
+
:locs_connected => {:north => false, :east => false, :south => true, :west => true},
|
442
|
+
:danger_level => :moderate,
|
443
|
+
:monster_level_range => 3..4,
|
444
|
+
:items => [Couch.new],
|
445
|
+
:bosses_abounding => []
|
356
446
|
})
|
357
447
|
)
|
358
448
|
locations.push(Location.new({
|
359
|
-
:name
|
360
|
-
:description
|
361
|
-
:coords
|
362
|
-
:locs_connected
|
363
|
-
:danger_level
|
364
|
-
:
|
365
|
-
:
|
449
|
+
:name => 'Sky Tower (East Hallway)',
|
450
|
+
:description => 'Longish and neverending is what you might say about this stretch of the tower.',
|
451
|
+
:coords => {:x => 6, :y => 5},
|
452
|
+
:locs_connected => {:north => true, :east => false, :south => true, :west => false},
|
453
|
+
:danger_level => :moderate,
|
454
|
+
:monster_level_range => 3..4,
|
455
|
+
:items => [],
|
456
|
+
:bosses_abounding => []
|
366
457
|
})
|
367
458
|
)
|
368
459
|
locations.push(Location.new({
|
369
|
-
:name
|
370
|
-
:description
|
371
|
-
:coords
|
372
|
-
:locs_connected
|
373
|
-
:danger_level
|
374
|
-
:
|
375
|
-
:
|
460
|
+
:name => 'Sky Tower (Kitchen)',
|
461
|
+
:description => 'This kitchen looks well-used, as appliances abound, and leftover food sits atop counters.',
|
462
|
+
:coords => {:x => 6, :y => 4},
|
463
|
+
:locs_connected => {:north => true, :east => false, :south => false, :west => true},
|
464
|
+
:danger_level => :moderate,
|
465
|
+
:monster_level_range => 3..4,
|
466
|
+
:items => [Apple.new, Cup.new],
|
467
|
+
:bosses_abounding => []
|
376
468
|
})
|
377
469
|
)
|
378
470
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemwarrior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Chadwick
|
@@ -177,15 +177,24 @@ files:
|
|
177
177
|
- lib/gemwarrior/entities/creature.rb
|
178
178
|
- lib/gemwarrior/entities/entity.rb
|
179
179
|
- lib/gemwarrior/entities/item.rb
|
180
|
+
- lib/gemwarrior/entities/items/apple.rb
|
180
181
|
- lib/gemwarrior/entities/items/bed.rb
|
182
|
+
- lib/gemwarrior/entities/items/couch.rb
|
183
|
+
- lib/gemwarrior/entities/items/cup.rb
|
184
|
+
- lib/gemwarrior/entities/items/dehumidifier.rb
|
181
185
|
- lib/gemwarrior/entities/items/feather.rb
|
186
|
+
- lib/gemwarrior/entities/items/floor_tile.rb
|
187
|
+
- lib/gemwarrior/entities/items/flower.rb
|
182
188
|
- lib/gemwarrior/entities/items/gun.rb
|
189
|
+
- lib/gemwarrior/entities/items/massive_door.rb
|
183
190
|
- lib/gemwarrior/entities/items/sparklything.rb
|
184
191
|
- lib/gemwarrior/entities/items/stalactite.rb
|
185
192
|
- lib/gemwarrior/entities/items/stone.rb
|
186
193
|
- lib/gemwarrior/entities/items/stonemite.rb
|
187
194
|
- lib/gemwarrior/entities/items/throne.rb
|
195
|
+
- lib/gemwarrior/entities/items/tower_switch.rb
|
188
196
|
- lib/gemwarrior/entities/items/tree.rb
|
197
|
+
- lib/gemwarrior/entities/items/waterfall.rb
|
189
198
|
- lib/gemwarrior/entities/location.rb
|
190
199
|
- lib/gemwarrior/entities/monster.rb
|
191
200
|
- lib/gemwarrior/entities/monsters/alexandrat.rb
|