#-------------------------------------------------------------------------------
# * [RMVX] Neo Light Effects
#-------------------------------------------------------------------------------
# * Este script cria efeitos usando imagens
#-------------------------------------------------------------------------------
# * By Khas (dark_khas@hotmail.com)
# * Version: 1.3
# * Released on: 04/07/2010
#
#-------------------------------------------------------------------------------
# Termos de uso:
#-------------------------------------------------------------------------------
# * ENGLISH
# All Khas' Scripts are licensed under a Creative Commons license
# All Khas' Scripts are for non-commercial projects, if you need
# them for a commercial game, please send a email to dark_khas@hotmail.com
# All Khas' Scripts are for personal use, you can edit them and use in your
# own project, but you can't post any modified version without my permission
#
# * PORTUGUES
# Todos os scripts Khas estão sob licença Creative Commons
# Todos os scripts Khas são para projetos não comerciais, se você precisar em
# seu projeto comercial, envie um email para dark_khas@hotmail.com com o pedido
# Todos os scripts Khas são para uso pessoal, você pode usar e editar para uso
# no seu projeto, porém você não pode postar nenhuma versão modificada sem
# a minha permissão
#
#-------------------------------------------------------------------------------
# Instalação:
#-------------------------------------------------------------------------------
# 1) Este script tem que ser colocado depois do "Khas Script Core"
# 2) Coloque as imagens utilizadas pelo script na pasta "Graphics/Particles/"
# 2) Configure o script na parte de configuração
#
#-------------------------------------------------------------------------------
# Como usar:
#-------------------------------------------------------------------------------
# Para colocar um efeito de luz sobre um evento simplesmente coloque um
# comentario dentro dele com o nome do efeito. Efeitos pré definidos:
#
# Light
# Fire
# Torch
# Window
# Door
# Shine
# Sparkle
# Rainbow
# Blood
# Leaf
# Xenon
#
#-------------------------------------------------------------------------------
# Habilitar o script - Não altere aqui!
#-------------------------------------------------------------------------------
if $enabled_core.nil?
p "The script 'Neo Light Effects' requires Khas Script Core 1.0 or better"
p "Please install Khas Script Core 1.0 or better"
exit
elsif $enabled_core < 1
p "The script 'Neo Light Effects' requires Khas Script Core 1.0 or better"
p "Please install Khas Script Core 1.0"
exit
else
Core.register("Neo Light Effects",1.3)
end
#-------------------------------------------------------------------------------
# Configuração:
#-------------------------------------------------------------------------------
module Neo_Light
# Coloque abaixo o ID da switch que desliga os efeitos
Neo_Light_Switch = 1
# Declaração de efeitos, não altere aqui!
Effects = {
#-------------------------------------------------------------------------------
# Configuração de efeitos
#-------------------------------------------------------------------------------
# * Modo Facil
# "nome do efeito" => Neo_Effect.new(1,2),
# 1 - Nome da imagem, na pasta "Graphics\Particles"
# 2 - Opacidade, use 0~255
#
# * Modo avançado
# "nome do efeito" => Neo_Effect.new(1,2,3,4,5,6,7,8,9),
# 1 - Nome da imagem, na pasta "Graphics\Particles"
# 2 - Opacidade, use 0~255
# 3 - Tom da imagem, use Tone.new(R,G,

# 4 - Blend Mode, use 1~2
# 5 - Efeito X, use 0~64 (valores baixos funcionam melhor)
# 6 - Efeito Y, use 0~64 (valores baixos funcionam melhor)
# 7 - Oscilação de Angulo, use 0~180 (valores baixos funcionam melhor)
# 8 - Oscilação de Opacidade, use 0~120 (valores baixos funcionam melhor)
# 9 - Oscilação de Hue, use 0~180 (valores baixos funcionam melhor)
#
# Veja os efeitos pre definidos para detalhes
#
# NÂO ESQUEÇA DE ADICIONAR UMA VIRGULA APOS CRIAR UM EFEITO ABAIXO!
#
#-------------------------------------------------------------------------------
# * Adicione seus efeitos aqui
#-------------------------------------------------------------------------------
"Lantern" => Neo_Effect.new("Lantern",150,Tone.new(0,0,0),1),
"Arrow" => Neo_Effect.new("Arrow",255),
#-------------------------------------------------------------------------------
# * Efeitos Custom
#-------------------------------------------------------------------------------
"Window" => Neo_Effect.new("window",100),
"Door" => Neo_Effect.new("light3",100),
"Shine" => Neo_Effect.new("light2",150,Tone.new(0,0,0),1,0,0,1,0,0),
"Sparkle" => Neo_Effect.new("sparkle",150,Tone.new(0,0,0),1,0,0,3,0,7),
"Rainbow" => Neo_Effect.new("circle",150,Tone.new(0,0,0),1,0,0,-2,0,4),
"Blood" => Neo_Effect.new("fire",180,Tone.new(255,-230,-230),1,0,0,0,0,0),
"Leaf" => Neo_Effect.new("fire",130,Tone.new(-150,255,-150),1,0,0,0,0,0),
"Xenon" => Neo_Effect.new("fire",180,Tone.new(-200,-200,255),1,0,0,0,0,0),
#-------------------------------------------------------------------------------
# * Efeitos Classicos
#-------------------------------------------------------------------------------
"Light" => Neo_Effect.new("light1",100),
"Fire" => Neo_Effect.new("fire",110,Tone.new(255,-100,-255),1,3,3,0,-20,0),
"Torch" => Neo_Effect.new("fire_big",110,Tone.new(255,-100,-255),1,1,1,0,-20,0),
#-------------------------------------------------------------------------------
# Fim da configuração
#-------------------------------------------------------------------------------
}
def self.bc_sprites; bitmaps = []
Effects.keys.each { |i|
bitmaps << Effects[i].picture_name unless bitmaps.include?(Effects[i].picture_name) }
bitmaps.each { |i| Bitcore.add(Cache.particle(i), "neole_#{i}") }
end; bc_sprites
end
class Game_Event < Game_Character
include Neo_Light
alias nle_ini initialize
alias nle_stp setup
alias nle_up update
def initialize(map_id, event)
@nl_effect = false
@nl_sprite = nil
nle_ini(map_id, event)
end
def setup(new_page)
nle_stp(new_page)
refresh_light(new_page.nil?)
end
def update; nle_up
update_light unless !@nl_effect
end
def update_light
@nl_sprite.visible = !$game_switches[Neo_Light_Switch]
@nl_sprite.x = self.screen_x
@nl_sprite.y = self.screen_y - 16
@nl_sprite.x += (rand(Effects[@nl_effect].ax*2)-Effects[@nl_effect].ax)
@nl_sprite.y += (rand(Effects[@nl_effect].ay*2)-Effects[@nl_effect].ay)
@nl_sprite.opacity = Effects[@nl_effect].opacity + rand(Effects[@nl_effect].opacity_oscillation)
@nl_sprite.angle += Effects[@nl_effect].angle
@nl_sprite.angle -= 360 if @nl_sprite.angle >= 360
@nl_sprite.bitmap.hue_change(Effects[@nl_effect].hue_oscillation) unless !Effects[@nl_effect].hue_oscillation
end
def refresh_light(dispose_light=false)
unless @nl_effect == false
@nl_sprite.bitmap = nil
@nl_sprite.dispose
@nl_sprite = nil
end
@nl_effect = false
unless dispose_light
return if @list.nil?
for key in 0...@list.size
next unless @list[key].code == 108
for string in Effects.keys
@nl_effect = string if @list[key].parameters == [string]
end
end
if @nl_effect != false
@nl_sprite = Sprite.new
@nl_sprite.bitmap = Bitcore["neole_"+Effects[@nl_effect].picture_name]
@nl_sprite.ox = @nl_sprite.width/2
@nl_sprite.oy = @nl_sprite.height/2
@nl_sprite.x = 544 + 2*@nl_sprite.width
@nl_sprite.y = 416 + 2*@nl_sprite.height
@nl_sprite.z = $game_player.screen_z
@nl_sprite.blend_type = Effects[@nl_effect].blend_mode
@nl_sprite.opacity = Effects[@nl_effect].opacity
@nl_sprite.tone = Effects[@nl_effect].color
update_light if $scene.is_a?(Scene_Map)
end
end
end
def dispose_nl
unless @nl_effect == false
return unless @nl_sprite.is_a?(Sprite)
@nl_sprite.bitmap = nil
@nl_sprite.dispose
@nl_sprite = nil
@nl_effect = false
end
end
end
class Game_Map
alias nle_setup setup
def setup(map_id)
dispose_neolight
nle_setup(map_id)
end
def dispose_neolight
return if @events.nil?
@events.keys.each { |id| $game_map.events[id].dispose_nl }
end
def force_light_refresh
return if @events.nil?
@events.keys.each { |id| $game_map.events[id].refresh_light }
end
end
class Spriteset_Map
alias nle_initialize initialize
alias nle_dispose dispose
def initialize
nle_initialize
$game_map.force_light_refresh
end
def dispose
nle_dispose
$game_map.dispose_neolight
end
end