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
@@ -1,19 +1,27 @@
1
- # lib/gemwarrior/misc/music.rb
2
- # Music cues using win32-sound or feep, depending on platform
1
+ # lib/gemwarrior/misc/audio.rb
2
+ # Audio cues using either synth or samples
3
+ # Synth: win32-sound or feep, depending on platform
4
+ # Samples: small wav files
3
5
 
4
6
  require_relative '../game_options'
7
+ require_relative 'audio_cues'
8
+ require_relative 'musical_notes'
5
9
 
6
10
  module Gemwarrior
7
- module Music
8
- def self.cue(sequence)
11
+ module Audio
12
+ def self.play_sample(audio_cue_symbol)
13
+ # future use
14
+ end
15
+
16
+ def self.play_synth(audio_cue_symbol)
9
17
  if GameOptions.data['sound_enabled']
10
18
  # if Windows, use superior win32-sound library
11
19
  if GameOptions.data['sound_system'].eql?('win32-sound')
12
20
  require 'win32/sound'
13
21
  require_relative 'musical_notes'
14
-
22
+
15
23
  Thread.start do
16
- sequence.each do |seq|
24
+ AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
17
25
  threads = []
18
26
  seq[:frequencies].split(',').each do |note|
19
27
  threads << Thread.new do
@@ -36,7 +44,7 @@ module Gemwarrior
36
44
  }
37
45
 
38
46
  Thread.start do
39
- sequence.each do |seq|
47
+ AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
40
48
  seq = feep_defaults.merge(seq)
41
49
 
42
50
  Feep::Base.new({
@@ -0,0 +1,133 @@
1
+ # lib/gemwarrior/misc/audio_cues.rb
2
+ # Audio cue symbol -> notes/wav_file
3
+
4
+ module Gemwarrior
5
+ module AudioCues
6
+ def self.add key, val
7
+ @@cues ||= {}
8
+ @@cues[key] = val
9
+ end
10
+
11
+ def self.cues
12
+ @@cues ||= {}
13
+ end
14
+
15
+ self.add :battle_start, {
16
+ synth: [
17
+ { frequencies: 'G4', duration: 50 },
18
+ { frequencies: 'G#4', duration: 50 },
19
+ { frequencies: 'G4', duration: 50 },
20
+ { frequencies: 'G#4', duration: 50 },
21
+ { frequencies: 'G4', duration: 50 },
22
+ { frequencies: 'G#4', duration: 50 }
23
+ ],
24
+ sample: 'battle_start.wav'
25
+ }
26
+
27
+ self.add :battle_player_attack, {
28
+ synth: [{ frequencies: 'A4,E4,B5', duration: 75 }],
29
+ sample: 'battle_player_attack.wav'
30
+ }
31
+
32
+ self.add :battle_player_miss, {
33
+ synth: [{ frequencies: 'A4', duration: 75 }],
34
+ sample: 'battle_player_miss.wav'
35
+ }
36
+
37
+ self.add :battle_monster_attack, {
38
+ synth: [{ frequencies: 'B4,E#5,A5', duration: 75 }],
39
+ sample: 'battle_monster_attack.wav'
40
+ }
41
+
42
+ self.add :battle_monster_miss, {
43
+ synth: [{ frequencies: 'B4', duration: 75 }],
44
+ sample: 'battle_monster_miss.wav'
45
+ }
46
+
47
+ self.add :battle_win_boss, {
48
+ synth: [
49
+ { frequencies: 'E5', duration: 50 },
50
+ { frequencies: 'F5', duration: 50 },
51
+ { frequencies: 'E5', duration: 100 },
52
+ { frequencies: 'E5', duration: 50 },
53
+ { frequencies: 'F5', duration: 50 },
54
+ { frequencies: 'E5', duration: 100 },
55
+ { frequencies: 'E4,A4', duration: 50 },
56
+ { frequencies: 'E4,A4', duration: 200 }
57
+ ],
58
+ sample: 'battle_win_boss.wav'
59
+ }
60
+
61
+ self.add :battle_win_monster, {
62
+ synth: [
63
+ { frequencies: 'D5', duration: 50 },
64
+ { frequencies: 'E5', duration: 50 },
65
+ { frequencies: 'D5', duration: 100 },
66
+ { frequencies: 'D4', duration: 50 },
67
+ { frequencies: 'D4', duration: 200 }
68
+ ],
69
+ sample: 'battle_win_monster.wav'
70
+ }
71
+
72
+ self.add :intro, {
73
+ synth: [
74
+ { frequencies: 'A3,E5', duration: 50 },
75
+ { frequencies: 'B3,F5', duration: 50 },
76
+ { frequencies: 'C4,G5', duration: 50 },
77
+ { frequencies: 'D4,A5', duration: 50 },
78
+ { frequencies: 'E4,B5', duration: 50 },
79
+ { frequencies: 'F4,C6', duration: 50 },
80
+ { frequencies: 'G4,B5,D6', duration: 500 }
81
+ ],
82
+ sample: 'intro.wav'
83
+ }
84
+
85
+ self.add :player_level_up, {
86
+ synth: [
87
+ { frequencies: 'D4,A4,D5,A5,D6', duration: 100 },
88
+ { frequencies: 'D4,A4,D5,A5,D6', duration: 350 },
89
+ { frequencies: 'E4,B4,E5,B5,E6', duration: 500 }
90
+ ]
91
+ }
92
+
93
+ self.add :player_resurrection, {
94
+ synth: [
95
+ { frequencies: 'D#5', duration: 100 },
96
+ { frequencies: 'A4', duration: 150 },
97
+ { frequencies: 'F#4', duration: 200 },
98
+ { frequencies: 'F4', duration: 1000 }
99
+ ],
100
+ sample: 'player_resurrection.wav'
101
+ }
102
+
103
+ self.add :player_travel, {
104
+ synth: [
105
+ { frequencies: 'C4', duration: 75 },
106
+ { frequencies: 'D4', duration: 75 },
107
+ { frequencies: 'E4', duration: 75 }
108
+ ],
109
+ sample: 'player_travel.wav'
110
+ }
111
+
112
+ self.add :win_game, {
113
+ synth: [
114
+ { frequencies: 'G3', duration: 250 },
115
+ { frequencies: 'A3', duration: 50 },
116
+ { frequencies: 'B3', duration: 50 },
117
+ { frequencies: 'C4', duration: 50 },
118
+ { frequencies: 'D4', duration: 250 },
119
+ { frequencies: 'E4', duration: 50 },
120
+ { frequencies: 'F#4', duration: 50 },
121
+ { frequencies: 'G4', duration: 50 },
122
+ { frequencies: 'A4', duration: 250 },
123
+ { frequencies: 'B4', duration: 50 },
124
+ { frequencies: 'C5', duration: 50 },
125
+ { frequencies: 'D5', duration: 50 },
126
+ { frequencies: 'E5', duration: 50 },
127
+ { frequencies: 'F#5', duration: 50 },
128
+ { frequencies: 'G5', duration: 1000 }
129
+ ],
130
+ sample: 'win_game.wav'
131
+ }
132
+ end
133
+ end
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Gemwarrior
5
5
  module Formatting
6
- def self.upstyle(str_arr)
6
+ def self.upstyle(str_arr, no_space = false)
7
7
  if str_arr.is_a? Array
8
8
  str_arr_upstyled = []
9
9
 
@@ -11,15 +11,15 @@ module Gemwarrior
11
11
  str_arr_item_upstyled = []
12
12
 
13
13
  str_arr_item.split(' ').each do |s|
14
- str_arr_item_upstyled << upstyle_string(s)
14
+ str_arr_item_upstyled << upstyle_string(s, no_space)
15
15
  end
16
16
 
17
17
  str_arr_upstyled << str_arr_item_upstyled.join(' ')
18
18
  end
19
19
 
20
- return str_arr_upstyled
20
+ str_arr_upstyled
21
21
  else
22
- return upstyle_string(str_arr)
22
+ upstyle_string(str_arr, no_space)
23
23
  end
24
24
  end
25
25
 
@@ -35,24 +35,24 @@ module Gemwarrior
35
35
  end
36
36
  words_hooched << w
37
37
  end
38
-
39
- return words_hooched.join(' ')
38
+
39
+ words_hooched.join(' ')
40
40
  end
41
41
 
42
42
  private
43
43
 
44
- def self.upstyle_string(s)
44
+ def self.upstyle_string(s, no_space)
45
45
  s_upstyle = ''
46
46
  s_upstyle << s[0].upcase
47
47
  1.upto(s.length-1) do |i|
48
48
  if s[i-1].eql?('_')
49
- s_upstyle[i-1] = ' '
49
+ s_upstyle[i-1] = no_space ? '' : ' '
50
50
  s_upstyle << s[i].upcase
51
51
  else
52
52
  s_upstyle << s[i].downcase
53
53
  end
54
54
  end
55
- return s_upstyle
55
+ s_upstyle
56
56
  end
57
57
  end
58
58
  end
@@ -61,6 +61,14 @@ module Gemwarrior
61
61
  defense: 15, dexterity: 16,
62
62
  special_abilities: :break_through
63
63
  }
64
+ else
65
+ {
66
+ level: 8, xp_start: 10000,
67
+ hp_max: 200, stam_max: 200,
68
+ atk_lo: 50, atk_hi: 100,
69
+ defense: 50, dexterity: 100,
70
+ special_abilities: nil
71
+ }
64
72
  end
65
73
  end
66
74
 
@@ -79,6 +87,19 @@ module Gemwarrior
79
87
  6
80
88
  elsif xp < 10000
81
89
  7
90
+ else
91
+ 8
92
+ end
93
+ end
94
+
95
+ def self.get_ability_description(ability)
96
+ case ability
97
+ when :rocking_vision
98
+ 'Allows you to see the enemy hit points while in battle.'
99
+ when :rock_slide
100
+ 'Adds a random boost to the player\'s attack in battle.'
101
+ else
102
+ 'Unsure, but it\'s probably cool!'
82
103
  end
83
104
  end
84
105
  end
@@ -17,7 +17,7 @@ module Gemwarrior
17
17
  class Repl
18
18
  # CONSTANTS
19
19
  QUIT_MESSAGE = 'Temporal flux detected. Shutting down...'.colorize(:red)
20
- MAIN_MENU_QUIT_MESSAGE = 'Giving up so soon? Jool will be waiting...'.colorize(:yellow)
20
+ MAIN_MENU_QUIT_MESSAGE = 'Giving up so soon? Jool will be waiting...'.colorize(:red)
21
21
  SPLASH_MESSAGE = 'Welcome to *Jool*, where randomized fortune is just as likely as mayhem.'
22
22
  GITHUB_NAME = 'michaelchadwick'
23
23
  GITHUB_PROJECT = 'gemwarrior'
@@ -48,7 +48,7 @@ module Gemwarrior
48
48
  prompt
49
49
  begin
50
50
  input = read_line
51
- result = evaluator.evaluate(input)
51
+ result = evaluator.parse(input)
52
52
  if result.eql?('exit')
53
53
  exit
54
54
  elsif result.eql?('checkupdate')
@@ -161,7 +161,7 @@ module Gemwarrior
161
161
  print_options
162
162
  when '4'
163
163
  print answer
164
- GameOptions.data['use_wordnik']= !GameOptions.data['use_wordnik']
164
+ GameOptions.data['use_wordnik'] = !GameOptions.data['use_wordnik']
165
165
  print_options
166
166
  else
167
167
  print answer
@@ -180,7 +180,7 @@ module Gemwarrior
180
180
  print ' (2) FEEP '
181
181
  print '(SELECTED)'.colorize(:yellow) if GameOptions.data['sound_system'].eql?('feep')
182
182
  print "\n"
183
- puts
183
+ puts
184
184
  puts 'Enter option number to select sound system, or any other key to exit.'
185
185
  puts 'Note: win32-sound only works on Windows and will break the game is sound is enabled on non-Windows machines. Feep is cross-platform, but very slow and buggy, so use at your discretion!'
186
186
  puts
@@ -198,7 +198,7 @@ module Gemwarrior
198
198
  return
199
199
  end
200
200
  end
201
-
201
+
202
202
  def display_log_of_attempts
203
203
  if File.exist?(GameOptions.data['log_file_path']) and !File.zero?(GameOptions.data['log_file_path'])
204
204
  File.open(GameOptions.data['log_file_path']).readlines.each do |line|
@@ -284,7 +284,7 @@ module Gemwarrior
284
284
  result = resume_game
285
285
  if result.nil?
286
286
  run_main_menu
287
- elsif
287
+ else
288
288
  self.world = result
289
289
  self.evaluator = Evaluator.new(self.world)
290
290
  return
@@ -316,7 +316,7 @@ module Gemwarrior
316
316
  game.update_options_file
317
317
  exit
318
318
  else
319
- run_main_menu(show_choices = false)
319
+ run_main_menu(show_choices: false)
320
320
  end
321
321
  end
322
322
 
@@ -345,7 +345,7 @@ module Gemwarrior
345
345
 
346
346
  # log stats to file in home directory
347
347
  File.open(GameOptions.data['log_file_path'], 'a') do |f|
348
- f.write "#{Time.now} #{pl.name.rjust(10)} - V:#{Gemwarrior::VERSION} LV:#{pl.level} XP:#{pl.xp} $:#{pl.rox} MK:#{pl.monsters_killed} BK:#{pl.bosses_killed} ITM:#{pl.items_taken} MOV:#{pl.movements_made} RST:#{pl.rests_taken} DTH:#{pl.deaths}\n"
348
+ f.write "#{Time.now} #{pl.name.rjust(13)} - V:#{Gemwarrior::VERSION} LV:#{pl.level} XP:#{pl.xp} $:#{pl.rox} MK:#{pl.monsters_killed} BK:#{pl.bosses_killed} ITM:#{pl.items_taken} MOV:#{pl.movements_made} RST:#{pl.rests_taken} DTH:#{pl.deaths}\n"
349
349
  end
350
350
  end
351
351
 
@@ -355,11 +355,11 @@ module Gemwarrior
355
355
 
356
356
  if mode.eql? 'Y'
357
357
  File.open(GameOptions.data['save_file_yaml_path'], 'w') do |f|
358
- f.write YAML::dump(world)
358
+ f.write YAML.dump(world)
359
359
  end
360
360
  elsif mode.eql? 'M'
361
361
  File.open(GameOptions.data['save_file_bin_path'], 'w') do |f|
362
- f.write Marshal::dump(world)
362
+ f.write Marshal.dump(world)
363
363
  end
364
364
  else
365
365
  puts 'Error: Save file mode not set. Game not saved.'
@@ -378,7 +378,7 @@ module Gemwarrior
378
378
  false
379
379
  end
380
380
  end
381
-
381
+
382
382
  def resume_game
383
383
  mode = GameOptions.data['save_file_mode']
384
384
  puts 'Resuming game...'
@@ -386,7 +386,7 @@ module Gemwarrior
386
386
  if mode.eql? 'Y'
387
387
  if File.exist?(GameOptions.data['save_file_yaml_path'])
388
388
  File.open(GameOptions.data['save_file_yaml_path'], 'r') do |f|
389
- return YAML::load(f)
389
+ return YAML.load(f)
390
390
  end
391
391
  else
392
392
  puts 'No save file exists.'
@@ -395,7 +395,7 @@ module Gemwarrior
395
395
  elsif mode.eql? 'M'
396
396
  if File.exist?(GameOptions.data['save_file_marshal_path'])
397
397
  File.open(GameOptions.data['save_file_marshal_path'], 'r') do |f|
398
- return Marshal::load(f)
398
+ return Marshal.load(f)
399
399
  end
400
400
  else
401
401
  puts 'No save file exists.'
@@ -407,17 +407,17 @@ module Gemwarrior
407
407
  def overwrite_save?
408
408
  mode = GameOptions.data['save_file_mode']
409
409
  save_file_path = ''
410
-
410
+
411
411
  if mode.eql? 'Y'
412
412
  save_file_path = GameOptions.data['save_file_yaml_path']
413
413
  elsif mode.eql? 'M'
414
414
  save_file_path = GameOptions.data['save_file_marshal_path']
415
415
  end
416
-
416
+
417
417
  if File.exist?(save_file_path)
418
418
  print 'Overwrite existing save file? (y/n) '
419
419
  answer = gets.chomp.downcase
420
-
420
+
421
421
  case answer
422
422
  when 'y', 'yes'
423
423
  puts 'New game started! Press any key to continue.'
@@ -452,10 +452,7 @@ module Gemwarrior
452
452
  end
453
453
 
454
454
  def play_intro_tune
455
- Music::cue([
456
- { frequencies: 'A3,E4,C#5,E5', duration: 300 },
457
- { frequencies: 'A3,E4,C#5,F#5', duration: 600 }
458
- ])
455
+ Audio.play_synth(:intro)
459
456
  end
460
457
 
461
458
  def setup_screen(initial_command = nil, extra_command = nil, new_skip = false, resume_skip = false)
@@ -472,7 +469,7 @@ module Gemwarrior
472
469
  result = resume_game
473
470
  if result.nil?
474
471
  run_main_menu
475
- elsif
472
+ else
476
473
  self.world = result
477
474
  self.evaluator = Evaluator.new(self.world)
478
475
  end
@@ -481,15 +478,19 @@ module Gemwarrior
481
478
  end
482
479
 
483
480
  # hook to do something right off the bat
484
- puts evaluator.evaluate(initial_command) unless initial_command.nil?
485
- puts evaluator.evaluate(extra_command) unless extra_command.nil?
481
+ puts evaluator.parse(initial_command) unless initial_command.nil?
482
+ puts evaluator.parse(extra_command) unless extra_command.nil?
486
483
  end
487
484
 
488
485
  def prompt
489
- prompt_template = "\n[LV:%2s][XP:%3s][ROX:%3s] [HP:%3s/%-3s][STM:%2s/%-2s] [%s @ %s]"
490
- if GameOptions.data['debug_mode']
491
- prompt_template += "[%s, %s, %s]"
492
- end
486
+ prompt_template = "\n"
487
+ prompt_template += "[LV:%2s][XP:%3s][ROX:%3s] [HP:%3s/%-3s][STM:%2s/%-2s] [".colorize(:yellow)
488
+ prompt_template += "%s".colorize(:green)
489
+ prompt_template += " @ ".colorize(:yellow)
490
+ prompt_template += "%s".colorize(:cyan)
491
+ prompt_template += "]".colorize(:yellow)
492
+ prompt_template += "[%s, %s, %s]".colorize(:yellow) if GameOptions.data['debug_mode']
493
+
493
494
  prompt_vars_arr = [
494
495
  world.player.level,
495
496
  world.player.xp,
@@ -499,18 +500,18 @@ module Gemwarrior
499
500
  world.player.stam_cur,
500
501
  world.player.stam_max,
501
502
  world.player.name,
502
- world.location_by_coords(world.player.cur_coords).name
503
+ world.location_by_coords(world.player.cur_coords).name_display
503
504
  ]
504
505
  if GameOptions.data['debug_mode']
505
506
  prompt_vars_arr.push(world.player.cur_coords[:x], world.player.cur_coords[:y], world.player.cur_coords[:z])
506
507
  end
507
- print (prompt_template % prompt_vars_arr).colorize(:yellow)
508
+ print (prompt_template % prompt_vars_arr)
508
509
  print "\n"
509
510
  end
510
511
 
511
512
  def command_exists?(cmd)
512
- ENV['PATH'].split(File::PATH_SEPARATOR).collect { |d|
513
- Dir.entries d if Dir.exist? d
513
+ ENV['PATH'].split(File::PATH_SEPARATOR).collect { |d|
514
+ Dir.entries d if Dir.exist? d
514
515
  }.flatten.include?(cmd)
515
516
  end
516
517
  end