gemwarrior 0.15.6 → 0.15.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/README.md +44 -44
- data/bin/gemwarrior +6 -5
- data/data/fantasy_names.yaml +4223 -4223
- data/gemwarrior.gemspec +44 -43
- data/lib/gemwarrior/entities/entity.rb +1 -0
- data/lib/gemwarrior/entities/player.rb +15 -11
- data/lib/gemwarrior/misc/audio.rb +60 -36
- data/lib/gemwarrior/misc/audio_cues.rb +55 -7
- data/lib/gemwarrior/misc/bloops_cues.rb +53 -5
- data/lib/gemwarrior/repl.rb +687 -610
- data/lib/gemwarrior/version.rb +1 -1
- data/tests/test-save-load/save.conf +2 -2
- metadata +16 -2
data/gemwarrior.gemspec
CHANGED
@@ -1,43 +1,44 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'gemwarrior/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'gemwarrior'
|
8
|
-
spec.version = Gemwarrior::VERSION
|
9
|
-
spec.platform = Gem::Platform::RUBY
|
10
|
-
spec.authors = ['Michael Chadwick']
|
11
|
-
spec.email = 'mike@codana.me'
|
12
|
-
spec.homepage = 'http://rubygems.org/gems/gemwarrior'
|
13
|
-
spec.summary = 'RubyGem text adventure'
|
14
|
-
spec.description = 'A fun text adventure in the form of a RubyGem!'
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split("\n")
|
17
|
-
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
-
spec.require_paths = ['lib']
|
20
|
-
spec.license = 'MIT'
|
21
|
-
|
22
|
-
spec.add_runtime_dependency 'os', '~> 0.9', '>= 0.9.6'
|
23
|
-
spec.add_runtime_dependency 'http', '~> 0.8.10'
|
24
|
-
spec.add_runtime_dependency 'json', '~> 1.8.2'
|
25
|
-
spec.add_runtime_dependency 'colorize', '~> 0.8'
|
26
|
-
spec.add_runtime_dependency 'matrext', '~> 1'
|
27
|
-
spec.add_runtime_dependency 'clocker', '~> 0.1.6'
|
28
|
-
spec.add_runtime_dependency 'gems', '~> 0.8.3'
|
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'
|
34
|
-
|
35
|
-
spec.add_development_dependency 'bundler', '~> 2.1'
|
36
|
-
spec.add_development_dependency 'rake', '~> 12.3.3'
|
37
|
-
spec.add_development_dependency 'rubocop', '~> 0.52.1'
|
38
|
-
spec.add_development_dependency 'rspec', '~> 3.9.0'
|
39
|
-
spec.add_development_dependency 'rspec-nc', '~> 0.3'
|
40
|
-
spec.add_development_dependency 'guard', '~> 2.16'
|
41
|
-
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
42
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
43
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gemwarrior/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'gemwarrior'
|
8
|
+
spec.version = Gemwarrior::VERSION
|
9
|
+
spec.platform = Gem::Platform::RUBY
|
10
|
+
spec.authors = ['Michael Chadwick']
|
11
|
+
spec.email = 'mike@codana.me'
|
12
|
+
spec.homepage = 'http://rubygems.org/gems/gemwarrior'
|
13
|
+
spec.summary = 'RubyGem text adventure'
|
14
|
+
spec.description = 'A fun text adventure in the form of a RubyGem!'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split("\n")
|
17
|
+
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.license = 'MIT'
|
21
|
+
|
22
|
+
spec.add_runtime_dependency 'os', '~> 0.9', '>= 0.9.6'
|
23
|
+
spec.add_runtime_dependency 'http', '~> 0.8.10'
|
24
|
+
spec.add_runtime_dependency 'json', '~> 1.8.2'
|
25
|
+
spec.add_runtime_dependency 'colorize', '~> 0.8'
|
26
|
+
spec.add_runtime_dependency 'matrext', '~> 1'
|
27
|
+
spec.add_runtime_dependency 'clocker', '~> 0.1.6'
|
28
|
+
spec.add_runtime_dependency 'gems', '~> 0.8.3'
|
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'
|
34
|
+
|
35
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
36
|
+
spec.add_development_dependency 'rake', '~> 12.3.3'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.52.1'
|
38
|
+
spec.add_development_dependency 'rspec', '~> 3.9.0'
|
39
|
+
spec.add_development_dependency 'rspec-nc', '~> 0.3'
|
40
|
+
spec.add_development_dependency 'guard', '~> 2.16'
|
41
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.7'
|
42
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
43
|
+
spec.add_development_dependency 'awesome_print', '~> 1.8'
|
44
|
+
end
|
@@ -66,7 +66,7 @@ module Gemwarrior
|
|
66
66
|
weapon_slot = self.inventory.weapon.name
|
67
67
|
net_atk_lo = base_atk_lo + self.inventory.weapon.atk_lo
|
68
68
|
net_atk_hi = base_atk_hi + self.inventory.weapon.atk_hi
|
69
|
-
net_dexterity =
|
69
|
+
net_dexterity = base_dexterity + self.inventory.weapon.dex_mod
|
70
70
|
end
|
71
71
|
|
72
72
|
# juice the armor display
|
@@ -104,7 +104,7 @@ module Gemwarrior
|
|
104
104
|
self_text << "ABILITIES :"
|
105
105
|
self_text << "#{abilities}"
|
106
106
|
self_text << "INVENTORY : #{self.inventory.contents}\n"
|
107
|
-
|
107
|
+
|
108
108
|
if GameOptions.data['debug_mode']
|
109
109
|
self_text << "\n"
|
110
110
|
self_text << "[DEBUG STUFF]\n"
|
@@ -126,7 +126,7 @@ module Gemwarrior
|
|
126
126
|
self_text << "\n\n"
|
127
127
|
|
128
128
|
self_text << "[#{"Current Status".colorize(:yellow)}]\nBreathing, non-naked, with a #{self.face.colorize(:yellow)} face, #{self.hands.colorize(:yellow)} hands, and feeling, generally, #{self.mood.colorize(:yellow)}."
|
129
|
-
|
129
|
+
|
130
130
|
self_text << "\n"
|
131
131
|
end
|
132
132
|
|
@@ -210,41 +210,45 @@ module Gemwarrior
|
|
210
210
|
|
211
211
|
def list_inventory
|
212
212
|
inventory.list_contents
|
213
|
-
end
|
213
|
+
end
|
214
214
|
|
215
215
|
def go(world, direction)
|
216
216
|
case direction
|
217
217
|
when 'north', 'n'
|
218
218
|
self.cur_coords = {
|
219
|
-
x: cur_coords[:x],
|
219
|
+
x: cur_coords[:x],
|
220
220
|
y: cur_coords[:y]+1,
|
221
221
|
z: cur_coords[:z]
|
222
222
|
}
|
223
|
+
direction_cue = :player_travel_north
|
223
224
|
direction_text = '^^^'
|
224
225
|
when 'east', 'e'
|
225
226
|
self.cur_coords = {
|
226
|
-
x: cur_coords[:x]+1,
|
227
|
+
x: cur_coords[:x]+1,
|
227
228
|
y: cur_coords[:y],
|
228
229
|
z: cur_coords[:z]
|
229
230
|
}
|
231
|
+
direction_cue = :player_travel_east
|
230
232
|
direction_text = '>>>'
|
231
233
|
when 'south', 's'
|
232
234
|
self.cur_coords = {
|
233
|
-
x: cur_coords[:x],
|
235
|
+
x: cur_coords[:x],
|
234
236
|
y: cur_coords[:y]-1,
|
235
237
|
z: cur_coords[:z]
|
236
238
|
}
|
239
|
+
direction_cue = :player_travel_south
|
237
240
|
direction_text = 'vvv'
|
238
241
|
when 'west', 'w'
|
239
242
|
self.cur_coords = {
|
240
|
-
x: cur_coords[:x]-1,
|
243
|
+
x: cur_coords[:x]-1,
|
241
244
|
y: cur_coords[:y],
|
242
245
|
z: cur_coords[:z]
|
243
246
|
}
|
247
|
+
direction_cue = :player_travel_west
|
244
248
|
direction_text = '<<<'
|
245
249
|
end
|
246
250
|
world.location_by_coords(self.cur_coords).visited = true
|
247
|
-
print_traveling_text(direction_text)
|
251
|
+
print_traveling_text(direction_cue, direction_text)
|
248
252
|
|
249
253
|
# stats
|
250
254
|
self.movements_made += 1
|
@@ -365,8 +369,8 @@ module Gemwarrior
|
|
365
369
|
return 'death'
|
366
370
|
end
|
367
371
|
|
368
|
-
def print_traveling_text(direction_text)
|
369
|
-
Audio.play_synth(
|
372
|
+
def print_traveling_text(direction_cue, direction_text)
|
373
|
+
Audio.play_synth(direction_cue)
|
370
374
|
Animation.run(phrase: "* #{direction_text} *", oneline: false)
|
371
375
|
end
|
372
376
|
|
@@ -11,21 +11,36 @@ module Gemwarrior
|
|
11
11
|
if GameOptions.data['sound_system'].eql?('win32-sound')
|
12
12
|
begin
|
13
13
|
require 'win32/sound'
|
14
|
-
rescue
|
14
|
+
rescue
|
15
15
|
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Silence for now."
|
16
16
|
end
|
17
17
|
elsif GameOptions.data['sound_system'].eql?('feep')
|
18
18
|
begin
|
19
19
|
require 'feep'
|
20
|
-
rescue
|
20
|
+
rescue
|
21
21
|
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}'. Silence for now."
|
22
22
|
end
|
23
23
|
elsif GameOptions.data['sound_system'].eql?('bloops')
|
24
24
|
begin
|
25
25
|
require 'bloops'
|
26
|
-
rescue
|
26
|
+
rescue
|
27
27
|
GameOptions.data['errors'] = "#{GameOptions.data['sound_system']} could not be loaded. You may need to run 'gem install #{GameOptions.data['sound_system']}aphone'. Silence for now."
|
28
28
|
end
|
29
|
+
else
|
30
|
+
GameOptions.data['errors'] = "'#{GameOptions.data['sound_system']}' is not a valid sound system. Audio subsystem load failed."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.get_cues
|
35
|
+
if GameOptions.data['sound_enabled']
|
36
|
+
case GameOptions.data['sound_system']
|
37
|
+
when 'win32-sound', 'feep'
|
38
|
+
require_relative 'audio_cues'
|
39
|
+
AudioCues.cues
|
40
|
+
when 'bloops'
|
41
|
+
require_relative 'bloops_cues'
|
42
|
+
BloopsCues.cues
|
43
|
+
end
|
29
44
|
end
|
30
45
|
end
|
31
46
|
|
@@ -35,19 +50,23 @@ module Gemwarrior
|
|
35
50
|
when 'win32-sound'
|
36
51
|
require_relative 'audio_cues'
|
37
52
|
require_relative 'musical_notes'
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
threads
|
43
|
-
|
53
|
+
|
54
|
+
if AudioCues.cues[audio_cue_symbol]
|
55
|
+
Thread.start do
|
56
|
+
AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
|
57
|
+
threads = []
|
58
|
+
seq[:frequencies].split(',').each do |note|
|
59
|
+
threads << Thread.new do
|
60
|
+
Win32::Sound::play_freq(Notes::NOTE_FREQ[note], seq[:duration], GameOptions.data['sound_volume'])
|
61
|
+
end
|
44
62
|
end
|
63
|
+
threads.each { |th| th.join }
|
45
64
|
end
|
46
|
-
threads.each { |th| th.join }
|
47
65
|
end
|
48
66
|
end
|
49
67
|
when 'feep'
|
50
68
|
require_relative 'audio_cues'
|
69
|
+
|
51
70
|
feep_defaults = {
|
52
71
|
frequencies: '440',
|
53
72
|
waveform: 'sine',
|
@@ -56,40 +75,45 @@ module Gemwarrior
|
|
56
75
|
notext: true
|
57
76
|
}
|
58
77
|
|
59
|
-
|
60
|
-
|
61
|
-
|
78
|
+
if AudioCues.cues[audio_cue_symbol]
|
79
|
+
Thread.start do
|
80
|
+
AudioCues.cues[audio_cue_symbol][:synth].each do |seq|
|
81
|
+
seq = feep_defaults.merge(seq)
|
62
82
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
83
|
+
Feep::Base.new({
|
84
|
+
freq_or_note: seq[:frequencies],
|
85
|
+
waveform: seq[:waveform],
|
86
|
+
volume: seq[:volume],
|
87
|
+
duration: seq[:duration],
|
88
|
+
notext: seq[:notext]
|
89
|
+
})
|
90
|
+
end
|
70
91
|
end
|
71
92
|
end
|
72
93
|
when 'bloops'
|
73
94
|
require_relative 'bloops_cues'
|
74
|
-
Thread.start do
|
75
|
-
BloopsCues.cues[audio_cue_symbol][:synth].each do |seq|
|
76
|
-
threads = []
|
77
95
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
96
|
+
if BloopsCues.cues[audio_cue_symbol]
|
97
|
+
Thread.start do
|
98
|
+
BloopsCues.cues[audio_cue_symbol][:synth].each do |seq|
|
99
|
+
threads = []
|
100
|
+
|
101
|
+
seq.each do |note|
|
102
|
+
threads << Thread.new do
|
103
|
+
b = Bloops.new
|
104
|
+
b.tempo = 240
|
105
|
+
snd = b.sound Bloops::SQUARE
|
106
|
+
snd.punch = GameOptions.data['sound_volume']/2
|
107
|
+
snd.sustain = 0.7
|
108
|
+
snd.decay = 0.2
|
109
|
+
b.tune snd, note[1]
|
110
|
+
b.play
|
111
|
+
sleep 0.1 while !b.stopped?
|
112
|
+
end
|
89
113
|
end
|
90
|
-
end
|
91
114
|
|
92
|
-
|
115
|
+
threads.each { |th| th.join }
|
116
|
+
end
|
93
117
|
end
|
94
118
|
end
|
95
119
|
end
|
@@ -7,7 +7,7 @@ module Gemwarrior
|
|
7
7
|
@@cues ||= {}
|
8
8
|
@@cues[key] = val
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def self.cues
|
12
12
|
@@cues ||= {}
|
13
13
|
end
|
@@ -33,7 +33,7 @@ module Gemwarrior
|
|
33
33
|
],
|
34
34
|
sample: 'bg1.wav'
|
35
35
|
}
|
36
|
-
|
36
|
+
|
37
37
|
self.add :battle_start, {
|
38
38
|
synth: [
|
39
39
|
{ frequencies: 'G4', duration: 50 },
|
@@ -93,15 +93,17 @@ module Gemwarrior
|
|
93
93
|
|
94
94
|
self.add :intro, {
|
95
95
|
synth: [
|
96
|
-
{ frequencies: '
|
97
|
-
{ frequencies: 'D3,A4', duration:
|
98
|
-
{ frequencies: 'E3,B4', duration:
|
99
|
-
{ frequencies: 'F3,C5', duration:
|
96
|
+
{ frequencies: 'C4,G4', duration: 350 },
|
97
|
+
{ frequencies: 'D3,A4', duration: 85 },
|
98
|
+
{ frequencies: 'E3,B4', duration: 85 },
|
99
|
+
{ frequencies: 'F3,C5', duration: 170 },
|
100
|
+
{ frequencies: 'F3,C5', duration: 170 },
|
101
|
+
{ frequencies: 'F3,C5', duration: 170 },
|
100
102
|
{ frequencies: 'G3,B4,D5', duration: 350 }
|
101
103
|
],
|
102
104
|
sample: 'intro.wav'
|
103
105
|
}
|
104
|
-
|
106
|
+
|
105
107
|
self.add :player_level_up, {
|
106
108
|
synth: [
|
107
109
|
{ frequencies: 'D4,A4,D5,A5,D6', duration: 100 },
|
@@ -129,6 +131,52 @@ module Gemwarrior
|
|
129
131
|
sample: 'player_travel.wav'
|
130
132
|
}
|
131
133
|
|
134
|
+
self.add :player_travel_east, {
|
135
|
+
synth: [
|
136
|
+
{ frequencies: 'E4', duration: 75 },
|
137
|
+
{ frequencies: 'G4', duration: 75 },
|
138
|
+
{ frequencies: 'E4', duration: 75 }
|
139
|
+
],
|
140
|
+
sample: 'player_travel_east.wav'
|
141
|
+
}
|
142
|
+
|
143
|
+
self.add :player_travel_north, {
|
144
|
+
synth: [
|
145
|
+
{ frequencies: 'C4', duration: 75 },
|
146
|
+
{ frequencies: 'D4', duration: 75 },
|
147
|
+
{ frequencies: 'E4', duration: 75 }
|
148
|
+
],
|
149
|
+
sample: 'player_travel_north.wav'
|
150
|
+
}
|
151
|
+
|
152
|
+
self.add :player_travel_south, {
|
153
|
+
synth: [
|
154
|
+
{ frequencies: 'E4', duration: 75 },
|
155
|
+
{ frequencies: 'D4', duration: 75 },
|
156
|
+
{ frequencies: 'C4', duration: 75 }
|
157
|
+
],
|
158
|
+
sample: 'player_travel_south.wav'
|
159
|
+
}
|
160
|
+
|
161
|
+
self.add :player_travel_west, {
|
162
|
+
synth: [
|
163
|
+
{ frequencies: 'C4', duration: 75 },
|
164
|
+
{ frequencies: 'A3', duration: 75 },
|
165
|
+
{ frequencies: 'C4', duration: 75 }
|
166
|
+
],
|
167
|
+
sample: 'player_travel_west.wav'
|
168
|
+
}
|
169
|
+
|
170
|
+
self.add :test, {
|
171
|
+
synth: [
|
172
|
+
{ frequencies: 'F4', duration: 75 },
|
173
|
+
{ frequencies: 'E5', duration: 75 },
|
174
|
+
{ frequencies: 'C5', duration: 75 },
|
175
|
+
{ frequencies: 'E5', duration: 75 }
|
176
|
+
],
|
177
|
+
sample: 'test.wav'
|
178
|
+
}
|
179
|
+
|
132
180
|
self.add :uncover_secret, {
|
133
181
|
synth: [
|
134
182
|
{ frequencies: 'F5', duration: 150 },
|
@@ -7,7 +7,7 @@ module Gemwarrior
|
|
7
7
|
@@cues ||= {}
|
8
8
|
@@cues[key] = val
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def self.cues
|
12
12
|
@@cues ||= {}
|
13
13
|
end
|
@@ -33,7 +33,7 @@ module Gemwarrior
|
|
33
33
|
],
|
34
34
|
sample: 'bg1.wav'
|
35
35
|
}
|
36
|
-
|
36
|
+
|
37
37
|
self.add :battle_start, {
|
38
38
|
synth: [
|
39
39
|
{ s1: '16:G4' },
|
@@ -93,15 +93,17 @@ module Gemwarrior
|
|
93
93
|
|
94
94
|
self.add :intro, {
|
95
95
|
synth: [
|
96
|
-
{ s1: '
|
96
|
+
{ s1: '4:C4', s2: '4:G4' },
|
97
97
|
{ s1: '16:D3', s2: '16:A4' },
|
98
98
|
{ s1: '16:E3', s2: '16:B4' },
|
99
|
-
{ s1: '
|
99
|
+
{ s1: '8:F3', s2: '8:C5' },
|
100
|
+
{ s1: '8:F3', s2: '8:C5' },
|
101
|
+
{ s1: '8:F3', s2: '8:C5' },
|
100
102
|
{ s1: '4:G3', s2: '4:B4', s3: '4:D5' }
|
101
103
|
],
|
102
104
|
sample: 'intro.wav'
|
103
105
|
}
|
104
|
-
|
106
|
+
|
105
107
|
self.add :player_level_up, {
|
106
108
|
synth: [
|
107
109
|
{ s1: '8:D4', s2: '8:A4', s3: '8:D5', s4: '8:A5', s5: '8:D6' },
|
@@ -129,6 +131,52 @@ module Gemwarrior
|
|
129
131
|
sample: 'player_travel.wav'
|
130
132
|
}
|
131
133
|
|
134
|
+
self.add :player_travel_east, {
|
135
|
+
synth: [
|
136
|
+
{ s1: '16:E4' },
|
137
|
+
{ s1: '16:G4' },
|
138
|
+
{ s1: '16:E4' }
|
139
|
+
],
|
140
|
+
sample: 'player_travel_east.wav'
|
141
|
+
}
|
142
|
+
|
143
|
+
self.add :player_travel_north, {
|
144
|
+
synth: [
|
145
|
+
{ s1: '16:C4' },
|
146
|
+
{ s1: '16:D4' },
|
147
|
+
{ s1: '16:E4' }
|
148
|
+
],
|
149
|
+
sample: 'player_travel_north.wav'
|
150
|
+
}
|
151
|
+
|
152
|
+
self.add :player_travel_south, {
|
153
|
+
synth: [
|
154
|
+
{ s1: '16:E4' },
|
155
|
+
{ s1: '16:D4' },
|
156
|
+
{ s1: '16:C4' }
|
157
|
+
],
|
158
|
+
sample: 'player_travel_south.wav'
|
159
|
+
}
|
160
|
+
|
161
|
+
self.add :player_travel_west, {
|
162
|
+
synth: [
|
163
|
+
{ s1: '16:C4' },
|
164
|
+
{ s1: '16:A4' },
|
165
|
+
{ s1: '16:C4' }
|
166
|
+
],
|
167
|
+
sample: 'player_travel_west.wav'
|
168
|
+
}
|
169
|
+
|
170
|
+
self.add :test, {
|
171
|
+
synth: [
|
172
|
+
{ s1: '4:F4' },
|
173
|
+
{ s1: '4:E5' },
|
174
|
+
{ s1: '4:C5' },
|
175
|
+
{ s1: '4:E5' }
|
176
|
+
],
|
177
|
+
sample: 'test.wav'
|
178
|
+
}
|
179
|
+
|
132
180
|
self.add :uncover_secret, {
|
133
181
|
synth: [
|
134
182
|
{ s1: '8:F5' },
|