Cole em scripts adicionais, acima de Main. As configurações estão destacadas e explicadas na primeira parte do script.
=begin
Menu Estilo Castlevania
por br_lemes
É permitido, livre de quaisquer ônus, usar, copiar, modificar e/ou
distribuir cópias deste script, desde que seja mantido este aviso.
NÃO HÁ QUALQUER GARANTIA, USE POR SUA PRÓPRIA CONTA E RISCO.
=end
# Este é um menu estilo Castlevania para um só herói, com troca de
# windowskin, bestiário e familiares.
################################################################################
# CONFIGURAÇÕES: Modifique aqui
################################################################################
module CTV
# windowskin padrão
SKIN_DEFAULT = "Default"
# Lista de windowskin, incluindo a padrão. Deve haver um arquivo com mesmo
# nome na pasta Graphics / System
SKIN_LIST = [CTV::SKIN_DEFAULT,"Classic","Darkish","Golden_Green",
"Greenish","Grizzle","Heavy_Blue","Heavy_Brown",
"Heavy_Green","Light_Blue","Light_Gold","Light_Green",
"Orangeade","Purplish","Reddish","Wood"]
# Vocabulário extra
FAMILLIARS = "Ajudantes"
WINDOWSKIN = "Temas"
MONSTERS = "Monstros"
KILLS = "Mortos"
TIME = "Tempo"
GOLD = "Dinheiro"
end
################################################################################
# NÃO MODIFIQUE A PARTIR DAQUI. A menos que saiba bem o que está fazendo.
################################################################################
class Window_Base < Window
alias wor_changeskin_winbase_ini initialize
alias wor_changeskin_winbase_upd update
def initialize(x, y, width, height)
wor_changeskin_winbase_ini(x, y, width, height)
self.windowskin = Cache.system($game_system.skin)
@winskin = $game_system.skin
end
def update
wor_changeskin_winbase_upd
if @winskin != $game_system.skin
self.windowskin = Cache.system($game_system.skin)
@winskin = $game_system.skin
end
end
end
class Game_System
attr_accessor :skin
attr_accessor :monsters
attr_accessor :kills
alias wor_changeskin_gamesys_ini initialize
def initialize
wor_changeskin_gamesys_ini
@skin = CTV::SKIN_DEFAULT
@monsters = []
@kills = 0
end
end
class Scene_Equip < Scene_Base
def return_scene
$scene = Scene_Menu.new(0)
end
end
class Scene_Item < Scene_Base
def return_scene
$scene = Scene_Menu.new(2)
end
end
class Scene_End < Scene_Base
def return_scene
$scene = Scene_Menu.new(6)
end
end
class Window_CTVStatus < Window_Base
def initialize
super(0, 0, 544, 416)
refresh
end
def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 64, WLH, Vocab::level)
self.contents.font.color = normal_color
self.contents.draw_text(x + 64, y, 24, WLH, actor.level, 2)
end
def draw_actor_hp(actor, x, y, width = 120)
draw_actor_hp_gauge(actor, x + 30, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::hp)
self.contents.font.color = hp_color(actor)
xr = x + 30 + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp, 2)
end
end
def draw_actor_mp(actor, x, y, width = 120)
draw_actor_mp_gauge(actor, x + 30, y, width)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, Vocab::mp)
self.contents.font.color = mp_color(actor)
xr = x + 30 + width
if width < 120
self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
else
self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp, 2)
end
end
def draw_exp_info(actor, x, y)
s1 = actor.exp_s
s2 = actor.next_rest_exp_s
s_next = sprintf(Vocab::ExpNext, Vocab::level)
self.contents.font.color = system_color
self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
self.contents.draw_text(x, y + WLH * 2, 180, WLH, s_next)
self.contents.font.color = normal_color
self.contents.draw_text(x, y + WLH * 1, 180, WLH, s1, 2)
self.contents.draw_text(x, y + WLH * 3, 180, WLH, s2, 2)
end
def refresh
actor = $game_party.members[0]
self.contents.clear
draw_actor_face(actor, 0, 0)
draw_actor_name(actor, 218, 0)
draw_actor_level(actor, 416, WLH * 2)
draw_actor_state(actor, 416, WLH * 3)
draw_actor_hp(actor, 158, WLH * 2)
draw_actor_mp(actor, 158, WLH * 3)
for i in 0..3
draw_actor_parameter(actor, 348, WLH * (6+i), i)
end
self.contents.font.color = system_color
self.contents.draw_text(348, 264, 80, WLH, CTV::MONSTERS)
self.contents.draw_text(348, 288, 80, WLH, CTV::KILLS)
self.contents.font.color = normal_color
self.contents.draw_text(428, 264, 76, WLH, "#{$game_system.monsters.nitems}/#{$data_enemies.size}",2)
self.contents.draw_text(428, 288, 76, WLH, $game_system.kills,2)
self.contents.font.color = system_color
self.contents.draw_text(348, 360, 120, WLH, CTV::TIME)
tmp = Graphics.frame_count / Graphics.frame_rate
hor = tmp / 60 / 60
min = tmp / 60 % 60
sec = tmp % 60
self.contents.font.color = normal_color
self.contents.draw_text(384, 360, 120, WLH,
sprintf("%02d:%02d:%02d", hor, min, sec), 2)
draw_exp_info(actor, 0, 240)
self.contents.font.color = system_color
self.contents.draw_text(0, 336, 180, WLH, CTV::GOLD)
draw_currency_value($game_party.gold, 0, 360, 180)
end
end
class Scene_Menu < Scene_Base
def initialize(menu_index = 0)
@menu_index = menu_index
end
def start
s1 = Vocab::equip
s2 = Vocab::skill
s3 = Vocab::item
s4 = CTV::FAMILLIARS
s5 = Vocab::save
s6 = CTV::WINDOWSKIN
s7 = Vocab::game_end
super
create_menu_background
@wstatus = Window_CTVStatus.new
@wcommand = Window_Command.new(160,[s1, s2, s3, s4, s5, s6, s7])
@wcommand.x = 199
@wcommand.y = 144
@wcommand.index = @menu_index
if $game_system.save_disabled # Se salvar for proibido
@wcommand.draw_item(4, false) # Desabilita "Salvar"
end
@wskin = Window_Command.new(160,CTV::SKIN_LIST)
@wskin.x = 327
@wskin.y = 264
@wskin.height = 128
@wskin.active = false
@wskin.visible = false
end
def terminate
super
dispose_menu_background
@wstatus.dispose
@wcommand.dispose
@wskin.dispose
end
def update
super
update_menu_background
@wstatus.update
if @wskin.active
@wskin.update
if Input.trigger?(Input::B)
Sound.play_cancel
@wskin.active = false
@wskin.visible = false
end
if Input.trigger?(Input::C)
Sound.play_decision
$game_system.skin = CTV::SKIN_LIST[@wskin.index]
@wstatus.update
@wcommand.update
@wskin.update
end
else
@wcommand.update
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
case @wcommand.index
when 0 # Equipamentos
$scene = Scene_Equip.new(0)
when 1 # Técnicas
$scene = Scene_Skill.new(0)
when 2 # Relíquias
$scene = Scene_Item.new
when 3 # Ajudantes
$scene = Scene_CTVFamilliars.new
when 4 # Salvar
$scene = Scene_File.new(true, false, false)
when 5 # Windowskin
@wskin.active = true
@wskin.visible = true
@wskin.refresh
when 6 # Sair
$scene = Scene_End.new
end
end
end
end
end
class Window_Item < Window_Selectable
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 5
self.index = 0
refresh
end
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.item_number(item)
enabled = enable?(item)
rect.width -= 4
draw_icon(item.icon_index, rect.x, rect.y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, sprintf(": %2d", number), 2)
end
end
end
class Window_ShopBuy < Window_Selectable
def initialize(x, y)
super(x, y, 304, 304)
@column_max = 2
@shop_goods = $game_temp.shop_goods
refresh
self.index = 0
end
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold and number < 99)
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_icon(item.icon_index, rect.x, rect.y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
rect.width -= 4
self.contents.draw_text(rect, item.price, 2)
end
end
class Scene_Battle < Scene_Base
alias ctv_battle_end battle_end
def battle_end(result)
if result == 0
for enemy in $game_troop.dead_members
unless enemy.hidden
$game_system.monsters[enemy.enemy_id] = true
$game_system.kills += 1
end
end
end
ctv_battle_end(result)
end
end
class Window_CTVFamilliars < Window_Base
def initialize
super(0, 0, 544, 416)
refresh
end
def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 64, WLH, Vocab::level)
self.contents.font.color = normal_color
self.contents.draw_text(x + 64, y, 24, WLH, actor.level, 2)
end
def draw_exp_info(actor, x, y)
s1 = actor.exp_s
s2 = actor.next_rest_exp_s
s_next = sprintf(Vocab::ExpNext, Vocab::level)
self.contents.font.color = system_color
self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
self.contents.draw_text(x, y + WLH * 2, 180, WLH, s_next)
self.contents.font.color = normal_color
self.contents.draw_text(x, y + WLH * 1, 180, WLH, s1, 2)
self.contents.draw_text(x, y + WLH * 3, 180, WLH, s2, 2)
end
def refresh
self.contents.clear
if $game_party.members[1] != nil
draw_actor_face ($game_party.members[1], 0, 24)
draw_actor_level($game_party.members[1], 0, 120)
draw_exp_info ($game_party.members[1], 0, 144)
end
if $game_party.members[2] != nil
draw_actor_face ($game_party.members[2], 208, 168)
draw_actor_level($game_party.members[2], 166, 264)
draw_exp_info ($game_party.members[2], 166, 288)
end
if $game_party.members[3] != nil
draw_actor_face ($game_party.members[3], 332, 24)
draw_actor_level($game_party.members[3], 332, 120)
draw_exp_info ($game_party.members[3], 332, 144)
end
self.contents.draw_text(0,0,self.width-32,WLH,CTV::FAMILLIARS,1)
end
end
class Scene_CTVFamilliars < Scene_Base
def start
super
create_menu_background
@wfamilliars = Window_CTVFamilliars.new
end
def terminate
super
dispose_menu_background
@wfamilliars.dispose
end
def update
super
update_menu_background
@wfamilliars.update
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Menu.new(3)
end
end
end
br_lemes, o Paladino insano (Demente)
Theme by Breno Ramalho Lemes under Creative Commons Attribution, based on Jekyll Clean by Scott Emmons and icons by FatCow.