#============================================================================
# ** Ocarina System (Revised)
#----------------------------------------------------------------------------
# Rudy_Guillan : RENEGADEOFBMX : vpcdmd
# 2.0
# 2/16/2008
#---
# ~ Originally Created by : Rudy_Guillan
# ~ Edited by : RENEGADEOFBMX
# ~ Revised and Rewrite by : vpcdmd
#============================================================================
#----------------------------------------------------------------------------
# ** Game_System
#----------------------------------------------------------------------------
class Game_System
attr_reader :ocarina, :ocarina_down, :ocarina_right, :ocarina_up, :ocarina_left
alias tsu_ocarina_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@ocarina = []
#------------------------------------------------------------------------
@ocarina_down = "001-System01"
@ocarina_left = "002-System02"
@ocarina_right = "003-System03"
@ocarina_up = "004-System04"
#------------------------------------------------------------------------
@ocarina[0] = []
@ocarina[0][0] = 2
@ocarina[0][1] = 2
@ocarina[0][2] = 2
@ocarina[0][3] = 2
@ocarina[0][4] = 2
@ocarina[0][5] = 2
@ocarina[0][6] = "Bolero of fire"
@ocarina[0][7] = Color.new(0, 255, 0)
@ocarina[0][8] = "001-Victory01"
@ocarina[0][9] = 1
#------------------------------------------------------------------------
@ocarina[1] = []
@ocarina[1][0] = 8
@ocarina[1][1] = 6
@ocarina[1][2] = 2
@ocarina[1][3] = 4
@ocarina[1][4] = 8
@ocarina[1][5] = 6
@ocarina[1][6] = 2
@ocarina[1][7] = "Song of Night"
@ocarina[1][8] = Color.new(0, 0, 255)
@ocarina[1][9] = "002-Victory02"
@ocarina[1][10] = 2
#------------------------------------------------------------------------
@ocarina[2] = []
@ocarina[2][0] = 2
@ocarina[2][1] = 6
@ocarina[2][2] = 8
@ocarina[2][3] = 4
@ocarina[2][4] = 2
@ocarina[2][5] = 6
@ocarina[2][6] = 8
@ocarina[2][7] = "Song of Day"
@ocarina[2][8] = Color.new(0, 0, 255)
@ocarina[2][9] = "002-Victory02"
@ocarina[2][10] = 3
#------------------------------------------------------------------------
@ocarina[3] = []
@ocarina[3][0] = 8
@ocarina[3][1] = 2
@ocarina[3][2] = 8
@ocarina[3][3] = 2
@ocarina[3][7] = "Song of Misery"
@ocarina[3][8] = Color.new(0, 255, 255)
@ocarina[3][9] = "015-Mystery01"
@ocarina[3][10] = 4
#------------------------------------------------------------------------
@ocarina[2] = []
@ocarina[2][0] = 8
@ocarina[2][1] = 6
@ocarina[2][2] = 2
@ocarina[2][3] = 4
@ocarina[2][4] = 2
@ocarina[2][5] = 6
@ocarina[2][6] = 2
@ocarina[2][7] = 4
@ocarina[2][8] = "Song of Rain"
@ocarina[2][9] = Color.new(0, 0, 255)
@ocarina[2][10] = "010-Item01"
@ocarina[2][11] = 6
#---------------------------------------------------------------------------
tsu_ocarina_initialize
end
end
#----------------------------------------------------------------------------
# ** Scene_Ocarina
#----------------------------------------------------------------------------
class Ocarina
#--------------------------------------------------------------------------
# * Main
#--------------------------------------------------------------------------
def main
@spriteset = Spriteset_Map.new
@ocarina_window = Window_Ocarina.new
@back = Sprite.new
@back.bitmap = RPG::Cache.picture("back")
@back.x = 0
@back.y = 0
@back.opacity = 255
@arrow = []
@max_notes = 0
for i in 0...$game_system.ocarina.size
size = $game_system.ocarina[i].size - 4
@max_notes = size > @max_notes ? size : @max_notes
end
for i in 1..@max_notes
@arrow[i] = Sprite.new
@arrow[i].bitmap = RPG::Cache.picture("arrow")
@arrow[i].ox = @arrow[i].bitmap.width / 2
@arrow[i].oy = @arrow[i].bitmap.height / 2
@arrow[i].opacity = 0
end
@song = []
@correct = false
@counter = 0
@objects = [@spriteset, @back, @ocarina_window]
Graphics.transition
while $scene == self
Graphics.update
Input.update
@objects.each {|x| x.update}
update
end
Graphics.freeze
@objects.each {|object| object.dispose}
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if @correct
if @counter == 0
@ocarina_window.set_text(@i)
se = $game_system.ocarina[@i].size - 2
Audio.me_play("Audio/ME/" + $game_system.ocarina[@i][se], 80, 100)
for i in 1..@max_notes
@arrow[i].opacity = 255
end
switch = $game_system.ocarina[@i].size - 1
$game_switches[$game_system.ocarina[@i][switch]] = true
end
@counter += 1
if @counter >= 200
$scene = Scene_Map.new
$game_map.autoplay
$game_map.refresh
end
else
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
for @i in 0...$game_system.ocarina.size
correct = true
for j in 0...$game_system.ocarina[@i].size - 4
if @song[j] != $game_system.ocarina[@i][j]
correct = false
end
end
if correct == true
@correct = true
break
end
end
if @song.size >= @max_notes && @correct == false
@counter += 1
if @counter >= 80
$scene = Scene_Map.new
end
end
if Input.trigger?(Input::DOWN) && @song.size < @max_notes
Audio.se_play("Audio/SE/" + $game_system.ocarina_down, 80, 100)
@song.push(2)
for i in 1..@song.size
if i == @song.size
@arrow[i].angle = 180
@arrow[i].opacity = 160
@arrow[i].x = 80 + ((400/(@max_notes-1)) * i)
@arrow[i].y = 440
end
end
end
if Input.trigger?(Input::LEFT) && @song.size < @max_notes
Audio.se_play("Audio/SE/" + $game_system.ocarina_left, 80, 100)
@song.push(4)
for i in 1..@song.size
if i == @song.size
@arrow[i].angle = 90
@arrow[i].opacity = 160
@arrow[i].x = 80 + ((400/(@max_notes-1)) * i)
@arrow[i].y = 400
end
end
end
if Input.trigger?(Input::RIGHT) && @song.size < @max_notes
Audio.se_play("Audio/SE/" + $game_system.ocarina_right, 80, 100)
@song.push(6)
for i in 1..@song.size
if i == @song.size
@arrow[i].angle = 270
@arrow[i].opacity = 160
@arrow[i].x = 80 + ((400/(@max_notes-1)) * i)
@arrow[i].y = 372
end
end
end
if Input.trigger?(Input::UP) && @song.size < @max_notes
Audio.se_play("Audio/SE/" + $game_system.ocarina_up, 80, 100)
@song.push(8)
for i in 1..@song.size
if i == @song.size
@arrow[i].opacity = 160
@arrow[i].x = 80 + ((400/(@max_notes-1)) * i)
@arrow[i].y = 339
end
end
end
end
end
end
#--------------------------------------------------------------------------
# ** Window_Ocarina
#--------------------------------------------------------------------------
class Window_Ocarina < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 280, 640, 80)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
@song = []
@correct = false
@counter = 0
end
#--------------------------------------------------------------------------
# * Set Text
#--------------------------------------------------------------------------
def set_text(index)
col = $game_system.ocarina[index].size - 3
text = $game_system.ocarina[index].size - 4
self.contents.font.color = $game_system.ocarina[index][col]
self.contents.draw_text(0, 0, 618, 48, $game_system.ocarina[index][text], 1)
end
end