gemwarrior 0.10.8 → 0.11.0

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/bin/gemwarrior +0 -0
  3. data/data/default_world.yaml +282 -436
  4. data/gemwarrior.gemspec +1 -1
  5. data/lib/gemwarrior/arena.rb +17 -17
  6. data/lib/gemwarrior/battle.rb +146 -77
  7. data/lib/gemwarrior/entities/armor.rb +34 -0
  8. data/lib/gemwarrior/entities/armor/iron_helmet.rb +17 -0
  9. data/lib/gemwarrior/entities/creature.rb +81 -4
  10. data/lib/gemwarrior/entities/creatures/cow.rb +24 -0
  11. data/lib/gemwarrior/entities/{items → creatures}/goat.rb +9 -11
  12. data/lib/gemwarrior/entities/creatures/pig.rb +24 -0
  13. data/lib/gemwarrior/entities/entity.rb +59 -5
  14. data/lib/gemwarrior/entities/item.rb +10 -22
  15. data/lib/gemwarrior/entities/items/apple.rb +2 -5
  16. data/lib/gemwarrior/entities/items/arena_door.rb +2 -6
  17. data/lib/gemwarrior/entities/items/bed.rb +7 -11
  18. data/lib/gemwarrior/entities/items/bookcase.rb +57 -0
  19. data/lib/gemwarrior/entities/items/bullet.rb +25 -0
  20. data/lib/gemwarrior/entities/items/couch.rb +6 -10
  21. data/lib/gemwarrior/entities/items/cup.rb +2 -5
  22. data/lib/gemwarrior/entities/items/dehumidifier.rb +3 -6
  23. data/lib/gemwarrior/entities/items/feather.rb +2 -5
  24. data/lib/gemwarrior/entities/items/floor_tile.rb +6 -10
  25. data/lib/gemwarrior/entities/items/flower.rb +1 -4
  26. data/lib/gemwarrior/entities/items/herb.rb +12 -13
  27. data/lib/gemwarrior/entities/items/keystone.rb +2 -5
  28. data/lib/gemwarrior/entities/items/ladder.rb +7 -11
  29. data/lib/gemwarrior/entities/items/letter.rb +20 -23
  30. data/lib/gemwarrior/entities/items/map.rb +3 -6
  31. data/lib/gemwarrior/entities/items/massive_door.rb +3 -7
  32. data/lib/gemwarrior/entities/items/pedestal.rb +6 -10
  33. data/lib/gemwarrior/entities/items/pond.rb +4 -8
  34. data/lib/gemwarrior/entities/items/rope.rb +4 -8
  35. data/lib/gemwarrior/entities/items/small_hole.rb +15 -77
  36. data/lib/gemwarrior/entities/items/snowman.rb +5 -9
  37. data/lib/gemwarrior/entities/items/sparkly_thing.rb +3 -7
  38. data/lib/gemwarrior/entities/items/stonemite.rb +2 -6
  39. data/lib/gemwarrior/entities/items/tent.rb +3 -6
  40. data/lib/gemwarrior/entities/items/throne.rb +7 -6
  41. data/lib/gemwarrior/entities/items/tree.rb +2 -6
  42. data/lib/gemwarrior/entities/items/waterfall.rb +9 -8
  43. data/lib/gemwarrior/entities/location.rb +49 -43
  44. data/lib/gemwarrior/entities/monster.rb +34 -28
  45. data/lib/gemwarrior/entities/monsters/alexandrat.rb +3 -3
  46. data/lib/gemwarrior/entities/monsters/amberoo.rb +3 -3
  47. data/lib/gemwarrior/entities/monsters/amethystle.rb +3 -3
  48. data/lib/gemwarrior/entities/monsters/apatiger.rb +3 -3
  49. data/lib/gemwarrior/entities/monsters/aquamarine.rb +3 -3
  50. data/lib/gemwarrior/entities/monsters/bloodstorm.rb +3 -3
  51. data/lib/gemwarrior/entities/monsters/bosses/emerald.rb +12 -27
  52. data/lib/gemwarrior/entities/monsters/bosses/garynetty.rb +17 -5
  53. data/lib/gemwarrior/entities/monsters/bosses/jaspern.rb +66 -0
  54. data/lib/gemwarrior/entities/monsters/citrinaga.rb +3 -3
  55. data/lib/gemwarrior/entities/monsters/coraliz.rb +3 -3
  56. data/lib/gemwarrior/entities/monsters/cubicat.rb +3 -3
  57. data/lib/gemwarrior/entities/monsters/diaman.rb +3 -3
  58. data/lib/gemwarrior/entities/{items → people}/arena_master.rb +8 -13
  59. data/lib/gemwarrior/entities/{items → people}/drunk_man.rb +14 -35
  60. data/lib/gemwarrior/entities/people/queen_ruby.rb +71 -0
  61. data/lib/gemwarrior/entities/people/rockney.rb +132 -0
  62. data/lib/gemwarrior/entities/{items → people}/shifty_woman.rb +7 -12
  63. data/lib/gemwarrior/entities/{items → people}/thin_man.rb +9 -14
  64. data/lib/gemwarrior/entities/people/ware_hawker.rb +153 -0
  65. data/lib/gemwarrior/entities/person.rb +20 -0
  66. data/lib/gemwarrior/entities/player.rb +102 -60
  67. data/lib/gemwarrior/entities/weapon.rb +38 -0
  68. data/lib/gemwarrior/entities/{items → weapons}/dagger.rb +5 -7
  69. data/lib/gemwarrior/entities/{items → weapons}/gun.rb +8 -10
  70. data/lib/gemwarrior/entities/{items → weapons}/mace.rb +6 -9
  71. data/lib/gemwarrior/entities/{items → weapons}/opalaser.rb +5 -7
  72. data/lib/gemwarrior/entities/weapons/spear.rb +23 -0
  73. data/lib/gemwarrior/entities/{items → weapons}/stalactite.rb +5 -7
  74. data/lib/gemwarrior/entities/weapons/stone.rb +23 -0
  75. data/lib/gemwarrior/evaluator.rb +111 -107
  76. data/lib/gemwarrior/game.rb +61 -29
  77. data/lib/gemwarrior/game_assets.rb +76 -0
  78. data/lib/gemwarrior/inventory.rb +77 -43
  79. data/lib/gemwarrior/misc/animation.rb +17 -13
  80. data/lib/gemwarrior/misc/{music.rb → audio.rb} +15 -7
  81. data/lib/gemwarrior/misc/audio_cues.rb +133 -0
  82. data/lib/gemwarrior/misc/formatting.rb +9 -9
  83. data/lib/gemwarrior/misc/player_levels.rb +21 -0
  84. data/lib/gemwarrior/repl.rb +32 -31
  85. data/lib/gemwarrior/version.rb +1 -1
  86. data/lib/gemwarrior/world.rb +155 -134
  87. metadata +34 -22
  88. data/lib/gemwarrior/entities/items/cow.rb +0 -26
  89. data/lib/gemwarrior/entities/items/pig.rb +0 -26
  90. data/lib/gemwarrior/entities/items/queen_ruby.rb +0 -62
  91. data/lib/gemwarrior/entities/items/spear.rb +0 -26
  92. data/lib/gemwarrior/entities/items/stone.rb +0 -25
  93. data/lib/gemwarrior/entities/items/ware_hawker.rb +0 -93
data/gemwarrior.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency 'http', '~> 0.8.10'
24
24
  spec.add_runtime_dependency 'json', '~> 1.8.2'
25
25
  spec.add_runtime_dependency 'colorize', '~> 0.7.7'
26
- spec.add_runtime_dependency 'matrext', '~> 0.4.9'
26
+ spec.add_runtime_dependency 'matrext', '~> 0.4.10'
27
27
  spec.add_runtime_dependency 'clocker', '~> 0.1.6'
28
28
  spec.add_runtime_dependency 'win32-sound', '~> 0.6.0'
29
29
  spec.add_runtime_dependency 'feep', '~> 0.1.3'
@@ -1,11 +1,14 @@
1
1
  # lib/gemwarrior/arena.rb
2
2
  # Arena series of battles
3
3
 
4
- require_relative 'misc/player_levels'
5
4
  require_relative 'battle'
6
5
 
7
6
  module Gemwarrior
8
7
  class Arena
8
+ # CONSTANTS
9
+ BONUS_ROX_MULTIPLIER = 25
10
+ BONUS_XP_MULTIPLIER = 10
11
+
9
12
  attr_accessor :world, :player
10
13
 
11
14
  def initialize(options)
@@ -21,29 +24,28 @@ module Gemwarrior
21
24
  loop do
22
25
  monster = generate_monster
23
26
  battle = Battle.new(world: world, player: player, monster: monster)
24
- result = battle.start(is_arena = true)
27
+ result = battle.start(is_arena: true)
25
28
 
26
- if result.eql?('death')
27
- return 'death'
28
- end
29
+ return 'death' if result.eql?('death')
29
30
 
30
31
  arena_monsters_vanquished += 1
31
32
 
32
- puts
33
- print 'Do you wish to continue fighting in the Arena? (y/n) '
33
+ print ' Do you wish to continue fighting in the Arena? (y/n) '
34
34
  answer = gets.chomp.downcase
35
35
 
36
36
  case answer
37
37
  when 'y', 'yes'
38
+ puts
38
39
  next
39
40
  else
40
- bonus_rox = arena_monsters_vanquished * 25
41
- bonus_xp = arena_monsters_vanquished * 10
41
+ bonus_rox = arena_monsters_vanquished * BONUS_ROX_MULTIPLIER
42
+ bonus_xp = arena_monsters_vanquished * BONUS_XP_MULTIPLIER
42
43
  player.rox = player.rox + bonus_rox
43
44
  player.xp = player.xp + bonus_xp
44
- puts 'You decided you\'ve had enough of the exhausting Arena for one day and exit the main stage.'
45
- puts "You defeated #{arena_monsters_vanquished} monsters!"
46
- puts "You have gained #{bonus_rox} rox and #{bonus_xp} XP!"
45
+ puts
46
+ puts ' You decided you\'ve had enough of the exhausting Arena for one day and exit the main stage.'
47
+ puts " You defeated #{arena_monsters_vanquished} monsters!"
48
+ puts " You have gained #{bonus_rox} rox and #{bonus_xp} XP!"
47
49
 
48
50
  return print_arena_outro
49
51
  end
@@ -56,14 +58,12 @@ module Gemwarrior
56
58
  random_monster = nil
57
59
 
58
60
  loop do
59
- random_monster = world.monsters[rand(0..world.monsters.length - 1)].clone
61
+ random_monster = GameMonsters.data[rand(0..GameMonsters.data.length - 1)].clone
60
62
 
61
- unless random_monster.is_boss
62
- break
63
- end
63
+ break unless random_monster.is_boss
64
64
  end
65
65
 
66
- return random_monster.clone
66
+ random_monster.clone
67
67
  end
68
68
 
69
69
  def print_arena_intro
@@ -1,16 +1,14 @@
1
1
  # lib/gemwarrior/battle.rb
2
2
  # Monster battle
3
3
 
4
- require_relative 'misc/player_levels'
5
4
  require_relative 'game_options'
6
- require_relative 'entities/items/sparkly_thing'
7
5
 
8
6
  module Gemwarrior
9
7
  class Battle
10
8
  # CONSTANTS
11
9
  ERROR_ATTACK_OPTION_INVALID = 'That will not do anything against the monster.'
12
10
  BEAST_MODE_ATTACK = 100
13
- ESCAPE_TEXT = ' ** POOF **'
11
+ ESCAPE_TEXT = '** POOF **'
14
12
 
15
13
  attr_accessor :world, :player, :monster, :player_is_defending
16
14
 
@@ -22,21 +20,15 @@ module Gemwarrior
22
20
  end
23
21
 
24
22
  def start(is_arena = nil, is_event = nil)
25
- Music::cue([
26
- { frequencies: 'G4', duration: 50 },
27
- { frequencies: 'G#4', duration: 50 },
28
- { frequencies: 'G4', duration: 50 },
29
- { frequencies: 'G#4', duration: 50 },
30
- { frequencies: 'G4', duration: 50 },
31
- { frequencies: 'G#4', duration: 50 }
32
- ])
23
+ Audio.play_synth(:battle_start)
33
24
 
34
25
  # begin battle!
35
26
  print_battle_header unless is_arena
36
27
 
37
28
  if is_arena
38
29
  print ' Your opponent is now...'
39
- Animation::run(phrase: "#{monster.name.upcase}!", speed: :slow)
30
+ Animation.run(phrase: "#{monster.name.upcase}", speed: :slow, oneline: true)
31
+ print "!\n"
40
32
  elsif is_event
41
33
  puts " You are ambushed by #{monster.name}!".colorize(:yellow)
42
34
  else
@@ -55,6 +47,8 @@ module Gemwarrior
55
47
 
56
48
  # main battle loop
57
49
  loop do
50
+ skip_next_monster_attack = false
51
+
58
52
  if monster_dead?
59
53
  result = monster_death
60
54
  return result
@@ -64,12 +58,8 @@ module Gemwarrior
64
58
  end
65
59
 
66
60
  # check for near death
67
- if player_near_death?
68
- puts " You are almost dead!\n".colorize(:yellow)
69
- end
70
- if monster_near_death?
71
- puts " #{monster.name} is almost dead!\n".colorize(:yellow)
72
- end
61
+ puts " You are almost dead!\n".colorize(:yellow) if player_near_death?
62
+ puts " #{monster.name} is almost dead!\n".colorize(:yellow) if monster_near_death?
73
63
 
74
64
  puts
75
65
 
@@ -92,51 +82,92 @@ module Gemwarrior
92
82
  self.player_is_defending = false
93
83
 
94
84
  # battle options prompt
95
- puts ' What do you do?'
96
- print ' ['.colorize(:yellow)
97
- print 'F'.colorize(:green)
98
- print 'ight/'.colorize(:yellow)
99
- print 'A'.colorize(:green)
100
- print 'ttack]['.colorize(:yellow)
101
- print 'D'.colorize(:green)
102
- print 'efend]['.colorize(:yellow)
103
- print 'L'.colorize(:green)
104
- print 'ook]['.colorize(:yellow)
105
- print 'P'.colorize(:green)
106
- print 'ass]['.colorize(:yellow)
107
- print 'R'.colorize(:green)
108
- print 'un]'.colorize(:yellow)
109
- print "\n"
110
- print ' [BATTLE]> '
85
+ print_battle_options
111
86
  player_action = STDIN.gets.chomp.downcase
112
87
 
113
88
  # player action
114
89
  case player_action
115
90
  when 'fight', 'f', 'attack', 'a'
116
- puts " You attack #{monster.name}#{player.cur_weapon_name}!"
117
- dmg = calculate_damage_to(monster)
118
- if dmg > 0
119
- Music::cue([{ frequencies: 'A4,E4,B5', duration: 75 }])
120
-
121
- take_damage(monster, dmg)
122
- if monster_dead?
123
- result = monster_death
124
- return result
91
+ can_attack = true
92
+
93
+ # gun exception
94
+ if player.has_weapon_equipped?
95
+ if player.inventory.weapon.name.eql?('gun')
96
+ if player.inventory.contains_item?('bullet')
97
+ player.inventory.remove_item('bullet')
98
+ else
99
+ puts ' Your gun is out of bullets! Running is your best option now.'.colorize(:red)
100
+ can_attack = false
101
+ end
125
102
  end
126
- else
127
- Music::cue([{ frequencies: 'A4', duration: 75 }])
103
+ end
128
104
 
129
- puts ' You miss entirely!'.colorize(:yellow)
105
+ if can_attack
106
+ puts " You attack #{monster.name}#{player.cur_weapon_name}!"
107
+ dmg = calculate_damage_to(monster)
108
+ if dmg > 0
109
+ Audio.play_synth(:battle_player_attack)
110
+
111
+ take_damage(monster, dmg)
112
+ if monster_dead?
113
+ result = monster_death
114
+ return result
115
+ end
116
+ else
117
+ Audio.play_synth(:battle_player_miss)
118
+
119
+ puts ' You miss entirely!'.colorize(:yellow)
120
+ end
130
121
  end
131
122
  when 'defend', 'd'
132
123
  puts ' You dig in and defend this round.'
133
124
  self.player_is_defending = true
134
- when 'pass', 'p'
135
- puts ' You decide to pass your turn for some reason. Brave!'
125
+ when 'item', 'i'
126
+ if player.inventory.is_empty?
127
+ puts ' You have no items!'
128
+ next
129
+ elsif player.inventory.contains_battle_item?
130
+ puts ' Which item do you want to use?'
131
+ puts
132
+ b_items = player.inventory.list_battle_items
133
+ count = 0
134
+ b_items.each do |bi|
135
+ puts " (#{count + 1}) #{bi.name}"
136
+ count += 1
137
+ end
138
+ puts ' (x) exit'
139
+
140
+ loop do
141
+ print_battle_prompt
142
+ answer = gets.chomp.downcase
143
+
144
+ case answer
145
+ when 'x', 'q'
146
+ skip_next_monster_attack = true
147
+ break
148
+ else
149
+ begin
150
+ item = b_items[answer.to_i - 1]
151
+ if item
152
+ result = item.use(world)
153
+ player.hp_cur += result[:data]
154
+ player.inventory.remove_item(item.name) if item.consumable
155
+ break
156
+ end
157
+ rescue
158
+ puts ' That is not a valid item choice.'
159
+ puts
160
+ next
161
+ end
162
+ end
163
+ end
164
+ else
165
+ puts ' You have no battle items!'
166
+ end
136
167
  when 'look', 'l'
137
168
  print " #{monster.name}".colorize(:white)
138
169
  print " (#{monster.hp_cur}/#{monster.hp_max} HP): #{monster.description}\n"
139
- puts " It has some distinguishing features, too: face is #{monster.face}, hands are #{monster.hands}, and general mood is #{monster.mood}."
170
+ puts " It has some distinguishing features, too: face is #{monster.face.colorize(:yellow)}, hands are #{monster.hands.colorize(:yellow)}, and mood, currently, is #{monster.mood.colorize(:yellow)}."
140
171
  if GameOptions.data['debug_mode']
141
172
  puts ' If defeated, will receive:'
142
173
  puts " >> XP : #{monster.xp}"
@@ -144,23 +175,25 @@ module Gemwarrior
144
175
  puts " >> ITEMS: #{monster.inventory.list_contents}"
145
176
  next
146
177
  end
178
+ when 'pass', 'p'
179
+ puts ' You decide to pass your turn for some reason. Brave!'
147
180
  when 'run', 'r'
148
181
  if player_escape?(is_arena)
149
182
  monster.hp_cur = monster.hp_max
150
183
  puts " You successfully elude #{monster.name}!".colorize(:green)
151
184
  print_escape_text
152
185
  print_battle_line
153
- return 'escaped'
186
+ return
154
187
  else
155
188
  puts ' You were not able to run away! :-('.colorize(:yellow)
156
189
  end
157
190
  else
158
- puts ERROR_ATTACK_OPTION_INVALID
191
+ puts " #{ERROR_ATTACK_OPTION_INVALID}"
159
192
  next
160
193
  end
161
194
 
162
195
  # monster action
163
- monster_attacks_player
196
+ monster_attacks_player unless skip_next_monster_attack
164
197
  end
165
198
  end
166
199
 
@@ -176,12 +209,12 @@ module Gemwarrior
176
209
  # base attack range
177
210
  base_atk_lo = player.atk_lo
178
211
  base_atk_hi = player.atk_hi
179
-
212
+
180
213
  if player.has_weapon_equipped?
181
214
  base_atk_lo += player.inventory.weapon.atk_lo
182
215
  base_atk_hi += player.inventory.weapon.atk_hi
183
216
  end
184
-
217
+
185
218
  atk_range = base_atk_lo..base_atk_hi
186
219
 
187
220
  # beast mode modifier
@@ -221,7 +254,7 @@ module Gemwarrior
221
254
  end
222
255
 
223
256
  print who_gets_wounded_start
224
- Animation::run(phrase: dmg.to_s, speed: :slow, oneline: true, alpha: false, random: false)
257
+ Animation.run(phrase: dmg.to_s, speed: :slow, oneline: true, alpha: false, random: false)
225
258
  print who_gets_wounded_end
226
259
  end
227
260
 
@@ -245,11 +278,11 @@ module Gemwarrior
245
278
 
246
279
  dmg = calculate_damage_to(player)
247
280
  if dmg > 0
248
- Music::cue([{ frequencies: 'B4,E#5,A5', duration: 75 }])
281
+ Audio.play_synth(:battle_monster_attack)
249
282
 
250
283
  take_damage(player, dmg)
251
284
  else
252
- Music::cue([{ frequencies: 'B4', duration: 75 }])
285
+ Audio.play_synth(:battle_monster_miss)
253
286
 
254
287
  puts " #{monster.name} misses entirely!".colorize(:yellow)
255
288
  end
@@ -264,39 +297,56 @@ module Gemwarrior
264
297
  end
265
298
 
266
299
  def monster_death
300
+ Audio.play_synth(:battle_win)
267
301
  puts " YOU HAVE DEFEATED #{monster.name.upcase}!\n".colorize(:green)
268
302
 
269
303
  if monster.is_boss
304
+ # stats
270
305
  world.player.bosses_killed += 1
271
- # end game boss!
272
- if monster.name.eql?('Emerald')
306
+
307
+ if monster.name.eql?('emerald')
308
+ puts ' You just beat THE FINAL BOSS! Unbelievable!'
309
+ puts
310
+
311
+ reward_player(monster)
312
+
273
313
  # game ending: initiate
274
314
  return monster.initiate_ending(world)
275
- else
276
- puts ' You just beat a boss monster. Way to go!'
315
+ elsif monster.name.eql?('jaspern')
316
+ puts ' You just beat a MINIBOSS! Fantastic!'
277
317
  puts
278
- puts ' You get the following spoils of war:'
279
- puts " XP : #{monster.xp}".colorize(:green)
280
- puts " ROX: #{monster.rox}".colorize(:green)
281
- print_battle_line
282
- player.update_stats(reason: :monster, value: monster)
318
+
319
+ reward_player(monster)
320
+
321
+ # river bridge boss: initiate
322
+ return monster.river_bridge_success(world)
323
+ else
324
+ reward_player(monster)
325
+
283
326
  world.location_by_coords(player.cur_coords).remove_monster(monster.name)
284
327
  end
285
328
  else
329
+ # stats
286
330
  world.player.monsters_killed += 1
287
-
288
- puts ' You get the following spoils of war:'
289
- puts " XP : #{monster.xp}".colorize(:green)
290
- puts " ROX : #{monster.rox}".colorize(:green)
291
- unless monster.inventory.nil?
292
- puts " ITEMS: #{monster.inventory.list_contents}".colorize(:green) unless monster.inventory.items.empty?
293
- end
294
- print_battle_line
295
- player.update_stats(reason: :monster, value: monster)
331
+
332
+ reward_player(monster)
333
+
296
334
  world.location_by_coords(player.cur_coords).remove_monster(monster.name)
297
335
  end
298
336
  end
299
337
 
338
+ def reward_player(monster)
339
+ puts ' You get the following spoils of war:'
340
+ puts " XP : #{monster.xp}".colorize(:green)
341
+ puts " ROX : #{monster.rox}".colorize(:green)
342
+ unless monster.inventory.nil?
343
+ puts " ITEMS: #{monster.inventory.list_contents}".colorize(:green) unless monster.inventory.items.empty?
344
+ end
345
+ print_battle_line
346
+ world.player.update_stats(reason: :monster, value: monster)
347
+ puts
348
+ end
349
+
300
350
  # PLAYER
301
351
  def player_near_death?
302
352
  ((player.hp_cur.to_f / player.hp_max.to_f) < 0.10 && !GameOptions.data['god_mode'])
@@ -327,12 +377,13 @@ module Gemwarrior
327
377
  end
328
378
  end
329
379
  end
330
- return false
380
+ false
331
381
  end
332
382
 
333
383
  # STATUS TEXT
334
384
  def print_escape_text
335
- Animation::run(phrase: ESCAPE_TEXT, oneline: false)
385
+ print ' '
386
+ Animation.run(phrase: ESCAPE_TEXT, oneline: false)
336
387
  end
337
388
 
338
389
  def print_battle_line
@@ -340,6 +391,24 @@ module Gemwarrior
340
391
  print "\n"
341
392
  end
342
393
 
394
+ def print_battle_options
395
+ puts ' What do you do?'
396
+ print ' '
397
+ print "#{'['.colorize(:yellow)}"
398
+ print "#{'F'.colorize(:green)}#{'ight]['.colorize(:yellow)}"
399
+ print "#{'D'.colorize(:green)}#{'efend]['.colorize(:yellow)}"
400
+ print "#{'L'.colorize(:green)}#{'ook]['.colorize(:yellow)}"
401
+ print "#{'I'.colorize(:green)}#{'tem]['.colorize(:yellow)}"
402
+ print "#{'P'.colorize(:green)}#{'ass]['.colorize(:yellow)}"
403
+ print "#{'R'.colorize(:green)}#{'un]'.colorize(:yellow)}"
404
+ print "\n"
405
+ print_battle_prompt
406
+ end
407
+
408
+ def print_battle_prompt
409
+ print ' [BATTLE]> '
410
+ end
411
+
343
412
  def print_battle_header
344
413
  print_battle_line
345
414
  puts ' BATTLE BEGINS!'.ljust(GameOptions.data['wrap_width']).colorize(background: :red, color: :white)