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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 214b51cef137a58bb89714b22d1dcaf53887e0e1
4
- data.tar.gz: 511f3f3531a5923e1a17278262ac218325db4b5a
3
+ metadata.gz: f02d5526a735c39b33dd88a5bc4ca62fbecbcf68
4
+ data.tar.gz: 23b403831920ce94db83189ccbe68369f5b39f73
5
5
  SHA512:
6
- metadata.gz: 44b68d28a14d5ebe2935fbc0a3bee80a180562eed4fa610df9444db642e28e220114601a1cbc84701be63525893a02ba27d4359da29f8101e806ee26b086794e
7
- data.tar.gz: c967f7f4af2aa97602990437eb9a5179e6acdd4ca800ee79b2766c1541427f6c311be0f69fa2b478a060c8f7e1fd08c87057b1cdc0b899f77d30f2eb9a72dbd7
6
+ metadata.gz: 44224c01dabd51cada90e1575872979819712c06e6a002a7690360de6a0df2f1f8d08a26163db6a8911a3d505fc10e5c7de8aa6091e92f1b7038b2ea2527e04c
7
+ data.tar.gz: 1879e4167fd293d048da3e9d91e7040a7c4cb0db9e020c7fa9999f1c99ce7b8c5688c7f9574d88561b216b9b91bc1645877fc5c23ab279a2b3d8673129ccb7df
@@ -10,6 +10,11 @@ module Gemwarrior
10
10
  :takeable,
11
11
  :useable,
12
12
  :equippable,
13
- :equipped
13
+ :equipped,
14
+ :use
15
+
16
+ def use
17
+ 'That items does not do anything...yet'
18
+ end
14
19
  end
15
20
  end
@@ -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
@@ -11,7 +11,7 @@ module Gemwarrior
11
11
  self.atk_lo = nil
12
12
  self.atk_hi = nil
13
13
  self.takeable = true
14
- self.useable = true
14
+ self.useable = false
15
15
  self.equippable = false
16
16
  self.equipped = false
17
17
  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 = 'SparklyThing(tm)'
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
@@ -11,7 +11,7 @@ module Gemwarrior
11
11
  self.atk_lo = 2
12
12
  self.atk_hi = 3
13
13
  self.takeable = true
14
- self.useable = true
14
+ self.useable = false
15
15
  self.equippable = true
16
16
  self.equipped = false
17
17
  end
@@ -11,7 +11,7 @@ module Gemwarrior
11
11
  self.atk_lo = 2
12
12
  self.atk_hi = 3
13
13
  self.takeable = true
14
- self.useable = true
14
+ self.useable = false
15
15
  self.equippable = true
16
16
  self.equipped = false
17
17
  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 switch_beast_mode
160
- if self.beast_mode
161
- binding.pry
162
- self.beast_mode = false
163
- self.atk_lo = has_weapon_equipped? ? self.inventory.weapon.atk_lo : PlayerLevels::get_level_stats(self.level)[:atk_lo]
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)
@@ -7,15 +7,15 @@ 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
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
@@ -2,5 +2,5 @@
2
2
  # Version of Gem Warrior
3
3
 
4
4
  module Gemwarrior
5
- VERSION = "0.6.5"
5
+ VERSION = "0.7.0"
6
6
  end
@@ -184,18 +184,12 @@ module Gemwarrior
184
184
  private
185
185
 
186
186
  def init_monsters
187
- require_relative 'entities/monsters/alexandrat'
188
- require_relative 'entities/monsters/amberoo'
189
- require_relative 'entities/monsters/amethystle'
190
- require_relative 'entities/monsters/apatiger'
191
- require_relative 'entities/monsters/aquamarine'
192
- require_relative 'entities/monsters/bloodstorm'
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
- require_relative 'entities/items/bed'
218
- require_relative 'entities/items/feather'
219
- require_relative 'entities/items/gun'
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 => 'Home',
230
- :description => 'The little, unimportant, decrepit hut that you live in.',
231
- :coords => {:x => 5, :y => 0},
232
- :locs_connected => {:north => true, :east => true, :south => false, :west => true},
233
- :danger_level => :none,
234
- :items => [Bed.new, Stone.new],
235
- :bosses_abounding => []
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 => 'Cave (Entrance)',
240
- :description => 'A nearby, dank entrance to a cavern, surely filled with stacktites, stonemites, and rocksites.',
241
- :coords => {:x => 6, :y => 0},
242
- :locs_connected => {:north => false, :east => true, :south => false, :west => true},
243
- :danger_level => :low,
244
- :items => [],
245
- :bosses_abounding => []
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 => 'Cave (Antechamber)',
250
- :description => 'Now inside the entrance to the cavern, you confirm that there are stacktites, stonemites, rocksites, and even one or two pebblejites.',
251
- :coords => {:x => 7, :y => 0},
252
- :locs_connected => {:north => true, :east => true, :south => false, :west => true},
253
- :danger_level => :moderate,
254
- :items => [Stalactite.new, Stonemite.new],
255
- :bosses_abounding => []
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 => 'Cave (Nook)',
260
- :description => 'A depression in the cave wall casts a shadow over a small rock shelf.',
261
- :coords => {:x => 7, :y => 1},
262
- :locs_connected => {:north => false, :east => true, :south => true, :west => false},
263
- :danger_level => :moderate,
264
- :items => [],
265
- :bosses_abounding => []
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 => 'Cave (Dropoff)',
270
- :description => 'Caves do not usually feature sudden chasms spilling down into an unknowable void, but this one does.',
271
- :coords => {:x => 8, :y => 1},
272
- :locs_connected => {:north => false, :east => false, :south => true, :west => true},
273
- :danger_level => :moderate,
274
- :items => [],
275
- :bosses_abounding => []
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 => 'Cave (Causeway)',
280
- :description => 'Paths lead north and west, but nothing of interest is in this causeway.',
281
- :coords => {:x => 8, :y => 0},
282
- :locs_connected => {:north => true, :east => false, :south => false, :west => true},
283
- :danger_level => :moderate,
284
- :items => [],
285
- :bosses_abounding => []
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 => 'Forest',
290
- :description => 'Trees exist here, in droves.',
291
- :coords => {:x => 4, :y => 0},
292
- :locs_connected => {:north => false, :east => true, :south => false, :west => true},
293
- :danger_level => :low,
294
- :items => [Feather.new, Tree.new],
295
- :bosses_abounding => []
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 => 'Pain Desert (Southeast)',
300
- :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
301
- :coords => {:x => 3, :y => 0},
302
- :locs_connected => {:north => true, :east => true, :south => false, :west => true},
303
- :danger_level => :assured,
304
- :items => [],
305
- :bosses_abounding => [Garynetty.new]
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 => 'Pain Desert (Northeast)',
310
- :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
311
- :coords => {:x => 3, :y => 1},
312
- :locs_connected => {:north => false, :east => false, :south => true, :west => true},
313
- :danger_level => :assured,
314
- :items => [],
315
- :bosses_abounding => [Garynetty.new]
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 => 'Pain Desert (Northwest)',
320
- :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
321
- :coords => {:x => 2, :y => 1},
322
- :locs_connected => {:north => false, :east => true, :south => true, :west => false},
323
- :danger_level => :assured,
324
- :items => [],
325
- :bosses_abounding => [Garynetty.new]
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 => 'Pain Desert (Southwest)',
330
- :description => 'Horrible terribleness emanates from this desolate land of unkind misery.',
331
- :coords => {:x => 2, :y => 0},
332
- :locs_connected => {:north => true, :east => true, :south => false, :west => false},
333
- :danger_level => :assured,
334
- :items => [],
335
- :bosses_abounding => [Garynetty.new]
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 => '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
- :items => [],
345
- :bosses_abounding => []
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 => 'Sky Tower (Entrance)',
350
- :description => 'The craziest guy that ever existed is inside the towering structure of cloud floors and snow walls standing before you.',
351
- :coords => {:x => 5, :y => 2},
352
- :locs_connected => {:north => true, :east => false, :south => true, :west => false},
353
- :danger_level => :high,
354
- :items => [Gun.new],
355
- :bosses_abounding => []
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 => 'Sky Tower (Foyer)',
360
- :description => 'There appears to be one path forward, towards the throne room.',
361
- :coords => {:x => 5, :y => 3},
362
- :locs_connected => {:north => true, :east => false, :south => true, :west => false},
363
- :danger_level => :high,
364
- :items => [],
365
- :bosses_abounding => []
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 => 'Sky Tower (Throne Room)',
370
- :description => 'There, on a mighty seat made of broken dreams, sits Emerald himself, staring at you coldly, silently.',
371
- :coords => {:x => 5, :y => 4},
372
- :locs_connected => {:north => false, :east => false, :south => true, :west => false},
373
- :danger_level => :high,
374
- :items => [Throne.new],
375
- :bosses_abounding => [Emerald.new]
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.6.5
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