gemwarrior 0.14.4 → 0.14.5

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: 2116e67dae88fd5d7ed8aaf66aa3893c4f400ea9
4
- data.tar.gz: 028aaabc8fffe0f2732abf2d8103dd6e0c0c5cab
3
+ metadata.gz: 9eed4c481dd9b8c403851ed62c05ea92757f56d7
4
+ data.tar.gz: b2d8cbfee1c8dac0daed910d8436970e8cdab12a
5
5
  SHA512:
6
- metadata.gz: baa12d9a3195ea0c9ea48e025d0f6bf89028eab69e7eb174d5c04b520a8bfe216732bde1acaf0df750f5f1ea1f23fd128db92e7becf543a65ab8487a7d1cebac
7
- data.tar.gz: bf58ddec9f4cbca65ad6230ebdc6c96a25b9b0ac0e7ce54aaf63c15f428d2154e8253cc75ecb0725c89943387daaf196d8b207c33b70248eab617d60e067cd2c
6
+ metadata.gz: 2c9168749c94929d96c7175698a90f44c393846d45d7d5d9d2000ac20fe077adf1305ddecbe46b6b7a24a47f5a552363720c7f4ee7d8c306e9c2f98396a70110
7
+ data.tar.gz: 7c7e3eb9aab5d32d8f20ef14577935ba3d4aa69666fbb6c28a64262b0fc6baf77f6e3d91e7a08764e8fa924651c010d5bb6a2ca97c57cf9f63ad239b5492d76c
data/bin/gemwarrior CHANGED
@@ -117,7 +117,7 @@ end
117
117
  def init_config
118
118
  Dir.mkdir(GW_HOME) unless Dir.exist?(GW_HOME)
119
119
 
120
- sound_system_default = OS.windows? ? 'win32-sound' : 'feep'
120
+ sound_system_default = OS.windows? ? 'win32-sound' : 'bloops'
121
121
 
122
122
  GameOptions.add 'sound_system', sound_system_default
123
123
  GameOptions.add 'save_file_mode', 'Y'
data/gemwarrior.gemspec CHANGED
@@ -25,19 +25,16 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency 'colorize', '~> 0.7.7'
26
26
  spec.add_runtime_dependency 'matrext', '~> 0.4.10'
27
27
  spec.add_runtime_dependency 'clocker', '~> 0.1.6'
28
- spec.add_runtime_dependency 'win32-sound', '~> 0.6.0'
29
- spec.add_runtime_dependency 'feep', '~> 0.1.3'
30
28
  spec.add_runtime_dependency 'gems', '~> 0.8.3'
31
-
32
- # gems for future features
33
- # spec.add_runtime_dependency 'hr', '~> 0.0.2'
34
- # spec.add_runtime_dependency 'github_api', '~> 0.12.4'
29
+
30
+ # sound systems
31
+ #spec.add_runtime_dependency 'feep', '~> 0.1.3'
32
+ #spec.add_runtime_dependency 'win32-sound', '~> 0.6.0'
33
+ #spec.add_runtime_dependency 'bloopsaphone', '>= 0.4'
35
34
 
36
35
  spec.add_development_dependency 'bundler', '~> 1.8'
37
36
  spec.add_development_dependency 'rake', '~> 10.0'
38
-
39
37
  spec.add_development_dependency 'rubocop', '~> 0.29'
40
-
41
38
  spec.add_development_dependency 'rspec'
42
39
  spec.add_development_dependency 'rspec-nc'
43
40
  spec.add_development_dependency 'guard'
@@ -541,7 +541,6 @@ module Gemwarrior
541
541
  end
542
542
 
543
543
  def monster_death
544
- Audio.play_synth(:battle_win)
545
544
  puts " YOU HAVE DEFEATED #{monster.name.upcase}!\n".colorize(:green)
546
545
 
547
546
  if monster.is_boss
@@ -557,6 +556,8 @@ module Gemwarrior
557
556
  # game ending: initiate
558
557
  return monster.initiate_ending(world)
559
558
  elsif monster.name.eql?('jaspern')
559
+ Audio.play_synth(:battle_win_boss)
560
+
560
561
  puts ' You just beat a MINIBOSS! Fantastic!'
561
562
  puts
562
563
 
@@ -565,11 +566,15 @@ module Gemwarrior
565
566
  # river bridge boss: initiate
566
567
  return monster.river_bridge_success(world)
567
568
  else
569
+ Audio.play_synth(:battle_win_boss)
570
+
568
571
  reward_player(monster)
569
572
 
570
573
  world.location_by_coords(player.cur_coords).remove_monster(monster.name)
571
574
  end
572
575
  else
576
+ Audio.play_synth(:battle_win_monster)
577
+
573
578
  # stats
574
579
  world.player.monsters_killed += 1
575
580
 
@@ -33,6 +33,7 @@ module Gemwarrior
33
33
 
34
34
  case answer
35
35
  when 'mineral'
36
+ Audio.play_synth(:uncover_secret)
36
37
  forest_southwest.paths[:west] = true
37
38
  puts
38
39
  Animation.run(phrase: OPEN_TEXT)
@@ -16,6 +16,7 @@ module Gemwarrior
16
16
  def use(world)
17
17
  puts 'You attempt to open the seriously massive door that separates you from Emerald himself.'
18
18
  if world.player.inventory.contains_item?('keystone')
19
+ Audio.play_synth(:uncover_secret)
19
20
  puts 'The keystone in your inventory glows as you approach the incredibly titanic-sized door, so you naturally pull it out and thrust it into the stone-shaped depression within the cloudy obstruction. The door "opens" in a way and you can now pass through.'
20
21
  { type: 'move', data: 'Sky Tower (Throne Room)' }
21
22
  else
@@ -93,6 +93,7 @@ module Gemwarrior
93
93
  end
94
94
 
95
95
  if pedestal_configured
96
+ Audio.play_synth(:uncover_secret)
96
97
  puts 'You push the large gem into the pedestal and it descends without a hitch, almost as if it were meant to be. The pedestal begins to violently shake and a strong gust of wind picks you up off the ground. You feel completely taken aback and unsettled, but you have no choice: you are being whisked away somewhere into the sky, destination unknown.'.colorize(:yellow)
97
98
 
98
99
  # stats
@@ -20,6 +20,7 @@ module Gemwarrior
20
20
  puts 'You gently place your fingers on the pond\'s rippling surface.'
21
21
 
22
22
  if (NEEDED_ITEMS - world.player.inventory.items.map(&:name)).empty?
23
+ Audio.play_synth(:uncover_secret)
23
24
  puts 'The pond water explodes with a force that knocks you back onto the ground. When you come to, you notice the depression in the ground where the pond once was now has a new curious object!'
24
25
  self.description = 'A barren depression in the ground is all that is left of the pond.'
25
26
  return { type: 'item', data: 'Opalaser' }
@@ -17,6 +17,7 @@ module Gemwarrior
17
17
  if !self.used
18
18
  self.used = true
19
19
 
20
+ Audio.play_synth(:uncover_secret)
20
21
  puts 'You lower yourself to the ground and attempt to peer in the hole in the wall. Just as you begin to think this is a fruitless endeavor, a pair of bright, beady eyes manifest, and an unexpectedly low voice speaks:'
21
22
  Person.new.speak('Hello. I\'m Rockney, of Rockney\'s Hole in the Wall. Pleasure!')
22
23
 
@@ -20,7 +20,9 @@ module Gemwarrior
20
20
  return { type: nil, data: nil }
21
21
  elsif self.used
22
22
  self.used_again = true
23
-
23
+
24
+ Audio.play_synth(:uncover_secret)
25
+
24
26
  puts 'Looking further into the small opening in the trunk your eye catches the light glinting off a few small metallic objects.'
25
27
 
26
28
  cur_loc = world.location_by_name('forest-southeast')
@@ -88,6 +88,11 @@ module Gemwarrior
88
88
  # create options file if not existing
89
89
  update_options_file
90
90
 
91
+ # require needed files for selected sound_system if sound_enabled
92
+ if GameOptions.data['sound_enabled']
93
+ Audio.init
94
+ end
95
+
91
96
  # create the console
92
97
  self.evaluator = Evaluator.new(world)
93
98
  self.repl = Repl.new(self, world, evaluator)
@@ -1,25 +1,40 @@
1
1
  # lib/gemwarrior/misc/audio.rb
2
2
  # Audio cues using either synth or samples
3
- # Synth: win32-sound or feep, depending on platform
3
+ # Synth: win32-sound, feep, or bloopsaphone depending on platform/choice
4
4
  # Samples: small wav files
5
5
 
6
6
  require_relative '../game_options'
7
- require_relative 'audio_cues'
8
- require_relative 'musical_notes'
9
7
 
10
8
  module Gemwarrior
11
9
  module Audio
12
- def self.play_sample(audio_cue_symbol)
13
- # future use
10
+ def self.init
11
+ if GameOptions.data['sound_system'].eql?('win32-sound')
12
+ begin
13
+ require 'win32/sound'
14
+ rescue LoadError => e
15
+ GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Gem Warrior will be silent for now."
16
+ end
17
+ elsif GameOptions.data['sound_system'].eql?('feep')
18
+ begin
19
+ require 'feep'
20
+ rescue LoadError => e
21
+ GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Gem Warrior will be silent for now."
22
+ end
23
+ elsif GameOptions.data['sound_system'].eql?('bloops')
24
+ begin
25
+ require 'bloops'
26
+ rescue LoadError => e
27
+ GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}aphone'. Gem Warrior will be silent for now."
28
+ end
29
+ end
14
30
  end
15
31
 
16
32
  def self.play_synth(audio_cue_symbol)
17
33
  if GameOptions.data['sound_enabled']
18
- # if Windows, use superior win32-sound library
19
- if GameOptions.data['sound_system'].eql?('win32-sound')
20
- require 'win32/sound'
34
+ case GameOptions.data['sound_system']
35
+ when 'win32-sound'
36
+ require_relative 'audio_cues'
21
37
  require_relative 'musical_notes'
22
-
23
38
  Thread.start do
24
39
  AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
25
40
  threads = []
@@ -31,10 +46,8 @@ module Gemwarrior
31
46
  threads.each { |th| th.join }
32
47
  end
33
48
  end
34
- # otherwise, use inferior feep library
35
- elsif GameOptions.data['sound_system'].eql?('feep')
36
- require 'feep'
37
-
49
+ when 'feep'
50
+ require_relative 'audio_cues'
38
51
  feep_defaults = {
39
52
  frequencies: '440',
40
53
  waveform: 'sine',
@@ -42,7 +55,7 @@ module Gemwarrior
42
55
  duration: 500,
43
56
  notext: true
44
57
  }
45
-
58
+
46
59
  Thread.start do
47
60
  AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
48
61
  seq = feep_defaults.merge(seq)
@@ -56,8 +69,35 @@ module Gemwarrior
56
69
  })
57
70
  end
58
71
  end
72
+ when 'bloops'
73
+ require_relative 'bloops_cues'
74
+ Thread.start do
75
+ BloopsCues.cues[audio_cue_symbol][:synth].each do |seq|
76
+ threads = []
77
+
78
+ seq.each do |note|
79
+ threads << Thread.new do
80
+ b = Bloops.new
81
+ b.tempo = 240
82
+ snd = b.sound Bloops::SQUARE
83
+ snd.punch = GameOptions.data['sound_volume']/2
84
+ snd.sustain = 0.7
85
+ snd.decay = 0.2
86
+ b.tune snd, note[1]
87
+ b.play
88
+ sleep 0.1 while !b.stopped?
89
+ end
90
+ end
91
+
92
+ threads.each { |th| th.join }
93
+ end
94
+ end
59
95
  end
60
96
  end
61
97
  end
98
+
99
+ def self.play_sample(audio_cue_symbol)
100
+ # future use
101
+ end
62
102
  end
63
103
  end
@@ -93,13 +93,11 @@ module Gemwarrior
93
93
 
94
94
  self.add :intro, {
95
95
  synth: [
96
- { frequencies: 'A3,E5', duration: 50 },
97
- { frequencies: 'B3,F5', duration: 50 },
98
- { frequencies: 'C4,G5', duration: 50 },
99
- { frequencies: 'D4,A5', duration: 50 },
100
- { frequencies: 'E4,B5', duration: 50 },
101
- { frequencies: 'F4,C6', duration: 50 },
102
- { frequencies: 'G4,B5,D6', duration: 500 }
96
+ { frequencies: 'C3,G4', duration: 50 },
97
+ { frequencies: 'D3,A4', duration: 50 },
98
+ { frequencies: 'E3,B4', duration: 50 },
99
+ { frequencies: 'F3,C5', duration: 50 },
100
+ { frequencies: 'G3,B4,D5', duration: 350 }
103
101
  ],
104
102
  sample: 'intro.wav'
105
103
  }
@@ -131,6 +129,19 @@ module Gemwarrior
131
129
  sample: 'player_travel.wav'
132
130
  }
133
131
 
132
+ self.add :uncover_secret, {
133
+ synth: [
134
+ { frequencies: 'F5', duration: 150 },
135
+ { frequencies: 'E5', duration: 150 },
136
+ { frequencies: 'C#4', duration: 150 },
137
+ { frequencies: 'C4', duration: 150 },
138
+ { frequencies: 'D#5', duration: 150 },
139
+ { frequencies: 'F#5', duration: 150 },
140
+ { frequencies: 'A5', duration: 150 }
141
+ ],
142
+ sample: 'uncover_secret.wav'
143
+ }
144
+
134
145
  self.add :win_game, {
135
146
  synth: [
136
147
  { frequencies: 'G3', duration: 250 },
@@ -0,0 +1,166 @@
1
+ # lib/gemwarrior/misc/bloops_cues.rb
2
+ # Bloops cue symbol -> notes/wav_file
3
+
4
+ module Gemwarrior
5
+ module BloopsCues
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 :bg1, {
16
+ synth: [
17
+ { s1: '2:C4' },
18
+ { s1: '2:C5' },
19
+ { s1: '2:C4' },
20
+ { s1: '2:C5' },
21
+ { s1: '2:C4' },
22
+ { s1: '2:C5' },
23
+ { s1: '2:G4' },
24
+ { s1: '2:A4' },
25
+ { s1: '2:C4' },
26
+ { s1: '2:C5' },
27
+ { s1: '2:C4' },
28
+ { s1: '2:C5' },
29
+ { s1: '2:C4' },
30
+ { s1: '2:C5' },
31
+ { s1: '2:B4' },
32
+ { s1: '2:A4' },
33
+ ],
34
+ sample: 'bg1.wav'
35
+ }
36
+
37
+ self.add :battle_start, {
38
+ synth: [
39
+ { s1: '16:G4' },
40
+ { s1: '16:G#4' },
41
+ { s1: '16:G4' },
42
+ { s1: '16:G#4' },
43
+ { s1: '16:G4' },
44
+ { s1: '16:G#4' }
45
+ ],
46
+ sample: 'battle_start.wav'
47
+ }
48
+
49
+ self.add :battle_player_attack, {
50
+ synth: [{ s1: '16:A4', s2: '16:E4', s3: '16:B5' }],
51
+ sample: 'battle_player_attack.wav'
52
+ }
53
+
54
+ self.add :battle_player_miss, {
55
+ synth: [{ s1: '8:A4' }],
56
+ sample: 'battle_player_miss.wav'
57
+ }
58
+
59
+ self.add :battle_monster_attack, {
60
+ synth: [{ s1: '16:B4', s2: '16:E#5', s3: '16:A5' }],
61
+ sample: 'battle_monster_attack.wav'
62
+ }
63
+
64
+ self.add :battle_monster_miss, {
65
+ synth: [{ s1: '8:B4' }],
66
+ sample: 'battle_monster_miss.wav'
67
+ }
68
+
69
+ self.add :battle_win_boss, {
70
+ synth: [
71
+ { s1: '16:E5' },
72
+ { s1: '16:F5' },
73
+ { s1: '8:E5' },
74
+ { s1: '16:E5' },
75
+ { s1: '16:F5' },
76
+ { s1: '8:E5' },
77
+ { s1: '16:E4', s2: '16:A4' },
78
+ { s1: '4:E4', s2: '4:A4' }
79
+ ],
80
+ sample: 'battle_win_boss.wav'
81
+ }
82
+
83
+ self.add :battle_win_monster, {
84
+ synth: [
85
+ { s1: '16:D5' },
86
+ { s1: '16:E5' },
87
+ { s1: '8:D5' },
88
+ { s1: '16:D4' },
89
+ { s1: '4:D4' }
90
+ ],
91
+ sample: 'battle_win_monster.wav'
92
+ }
93
+
94
+ self.add :intro, {
95
+ synth: [
96
+ { s1: '16:C3', s2: '16:G4' },
97
+ { s1: '16:D3', s2: '16:A4' },
98
+ { s1: '16:E3', s2: '16:B4' },
99
+ { s1: '16:F3', s2: '16:C5' },
100
+ { s1: '4:G3', s2: '4:B4', s3: '4:D5' }
101
+ ],
102
+ sample: 'intro.wav'
103
+ }
104
+
105
+ self.add :player_level_up, {
106
+ synth: [
107
+ { s1: '8:D4', s2: '8:A4', s3: '8:D5', s4: '8:A5', s5: '8:D6' },
108
+ { s1: '4:D4', s2: '4:A4', s3: '4:D5', s4: '4:A5', s5: '4:D6' },
109
+ { s1: '1:E4', s2: '1:B4', s3: '1:E5', s4: '1:B5', s5: '1:E6' }
110
+ ]
111
+ }
112
+
113
+ self.add :player_resurrection, {
114
+ synth: [
115
+ { s1: '16:D#5' },
116
+ { s1: '14:A4' },
117
+ { s1: '12:F#4' },
118
+ { s1: '2:F4' }
119
+ ],
120
+ sample: 'player_resurrection.wav'
121
+ }
122
+
123
+ self.add :player_travel, {
124
+ synth: [
125
+ { s1: '16:C4' },
126
+ { s1: '16:D4' },
127
+ { s1: '16:E4' }
128
+ ],
129
+ sample: 'player_travel.wav'
130
+ }
131
+
132
+ self.add :uncover_secret, {
133
+ synth: [
134
+ { s1: '8:F5' },
135
+ { s1: '8:E5' },
136
+ { s1: '8:C#4' },
137
+ { s1: '8:C4' },
138
+ { s1: '8:D#5' },
139
+ { s1: '8:F#5' },
140
+ { s1: '8:A5' }
141
+ ],
142
+ sample: 'uncover_secret.wav'
143
+ }
144
+
145
+ self.add :win_game, {
146
+ synth: [
147
+ { s1: '4:G3' },
148
+ { s1: '16:A3' },
149
+ { s1: '16:B3' },
150
+ { s1: '16:C4' },
151
+ { s1: '4:D4' },
152
+ { s1: '16:E4' },
153
+ { s1: '16:F#4' },
154
+ { s1: '16:G4' },
155
+ { s1: '4:A4' },
156
+ { s1: '16:B4' },
157
+ { s1: '16:C5' },
158
+ { s1: '16:D5' },
159
+ { s1: '16:E5' },
160
+ { s1: '16:F#5' },
161
+ { s1: '1:G5' }
162
+ ],
163
+ sample: 'win_game.wav'
164
+ }
165
+ end
166
+ end
@@ -203,9 +203,17 @@ module Gemwarrior
203
203
  print ' (2) FEEP '
204
204
  print '(SELECTED)'.colorize(:yellow) if GameOptions.data['sound_system'].eql?('feep')
205
205
  print "\n"
206
+ print ' (3) BLOOPS '
207
+ print '(SELECTED)'.colorize(:yellow) if GameOptions.data['sound_system'].eql?('bloops')
208
+ print "\n"
209
+ puts
210
+ puts ' WIN32-SOUND : good quality; Windows-only'
211
+ puts ' FEEP : cross-platform; VERY SLOW and BUGGY'
212
+ puts ' BLOOPS : cross-platform; requires portaudio'
206
213
  puts
207
- puts 'Note: WIN32-SOUND is Windows-only, and will break the game if sound is enabled on non-Windows machines.'
208
- puts 'Note: FEEP is cross-platform, but VERY SLOW and BUGGY, so use at your discretion!'
214
+ puts ' NOTE: none of these are required dependencies anymore, as sound is optional.'
215
+ puts ' If you do not have the one selected installed on your machine, you will get '
216
+ puts ' an error on game load, and no sound will be heard.'
209
217
  puts
210
218
  puts '================================='.colorize(:yellow)
211
219
  puts
@@ -221,6 +229,9 @@ module Gemwarrior
221
229
  when '2'
222
230
  GameOptions.add 'sound_system', 'feep'
223
231
  print_options_sound_sytem
232
+ when '3'
233
+ GameOptions.add 'sound_system', 'bloops'
234
+ print_options_sound_sytem
224
235
  else
225
236
  return
226
237
  end
@@ -493,6 +504,7 @@ module Gemwarrior
493
504
 
494
505
  # main menu loop until new game or exit
495
506
  if new_skip
507
+ print_errors
496
508
  play_intro_tune
497
509
  print_splash_message
498
510
  print_fortune
@@ -501,6 +513,7 @@ module Gemwarrior
501
513
  if result.nil?
502
514
  run_main_menu
503
515
  else
516
+ print_errors
504
517
  self.world = result
505
518
  self.evaluator = Evaluator.new(self.world)
506
519
  end
@@ -513,6 +526,12 @@ module Gemwarrior
513
526
  puts evaluator.parse(extra_command) unless extra_command.nil?
514
527
  end
515
528
 
529
+ def print_errors
530
+ if GameOptions.data['errors']
531
+ puts GameOptions.data['errors'].colorize(:red)
532
+ end
533
+ end
534
+
516
535
  def play_intro_tune
517
536
  Audio.play_synth(:intro)
518
537
  end
@@ -2,5 +2,5 @@
2
2
  # Version of Gem Warrior
3
3
 
4
4
  module Gemwarrior
5
- VERSION = '0.14.4'
5
+ VERSION = '0.14.5'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemwarrior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.14.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Chadwick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-26 00:00:00.000000000 Z
11
+ date: 2015-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -100,34 +100,6 @@ dependencies:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
102
  version: 0.1.6
103
- - !ruby/object:Gem::Dependency
104
- name: win32-sound
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 0.6.0
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 0.6.0
117
- - !ruby/object:Gem::Dependency
118
- name: feep
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 0.1.3
124
- type: :runtime
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: 0.1.3
131
103
  - !ruby/object:Gem::Dependency
132
104
  name: gems
133
105
  requirement: !ruby/object:Gem::Requirement
@@ -354,6 +326,7 @@ files:
354
326
  - lib/gemwarrior/misc/animation.rb
355
327
  - lib/gemwarrior/misc/audio.rb
356
328
  - lib/gemwarrior/misc/audio_cues.rb
329
+ - lib/gemwarrior/misc/bloops_cues.rb
357
330
  - lib/gemwarrior/misc/formatting.rb
358
331
  - lib/gemwarrior/misc/hr.rb
359
332
  - lib/gemwarrior/misc/musical_notes.rb