RPG Maker Forums

Okay sooooo.... I have an issue with Mog_Weather_EX and it's 'weather_stop' command. I also have Khas Awesome Light Effects included in my script list and whenever I run 'weather_stop' on a map, it removes:

- Weather (like it should)

- Screen Tint

- Khas Awesome Light Effects's surface alpha.

I can post screenshots if need be, but every time I call the weather_stop script on the same map that I have a screen tint and/or Khas's alpha changing script, it removes both completely without me ordering it to do so. Anyone have a similar issue or possibly know how to fix this?

Edit: Here are the two scripts:

MOG_Weather_EX:

#==============================================================================# +++ MOG - Weather EX (v2.1) +++#==============================================================================# By Moghunter # http://www.atelier-rgss.com/#==============================================================================# Sistema de clima com efeitos animados.#==============================================================================# As imagens usadas pelo sistema do clima devem ser gravadas na pasta## GRAPHICS/WEATHER/##==============================================================================# UTILIZAÇÃO# # Use o comando abaixo através da função chamar script.*(Evento)## weather(TYPE, POWER, IMAGE_FILE)## TYPE - Tipo de clima. (de 0 a 6)# POWER - Quantidade de partículas na tela. (de 1 a 10)# IMAGE_FILE - Nome da imagem.## Exemplo (Eg)## weather(0, 5, "Leaf")##==============================================================================# Tipos de Clima.## O sistema vem com 7 climas pré-configurados, que podem ser testados na demo# que vem com esse script.## 0 - (Rain) # 1 - (Wind)# 2 - (Fog) # 3 - (Light)# 4 - (Snow)# 5 - (Spark)# 6 - (Random)##==============================================================================# NOTA## Evite de usar imagens muito pesadas ou de tamanho grande, caso for usar# diminua o poder do clima para evitar lag.##==============================================================================#==============================================================================# Para parar o clima use o comando abaixo.## weather_stop##==============================================================================# Para parar reativar o clima com as caracteríticas préviamente usadas use o# comando abaixo.## weather_restore#==============================================================================# Se você precisar ativar um novo clima mas deseja gravar as caracteríticas # do clima atual para ser reativado depois use os códigos abaixo.## weather_store# weather_restore_store##==============================================================================#==============================================================================# ● Histórico (Version History)#==============================================================================# v 2.1 - Melhoria na posição das partículas durante as transições# de scenes.# v 2.0 - Correção do bug do Crash aleatório.#==============================================================================module MOG_WEATHER_EX #Prioridade do clima na tela. WEATHER_SCREEN_Z = 90 #Definição da eficiência do poder do clima. #NOTA - Um valor muito alto pode causar lag, dependendo do tipo de clima e # imagem usada. WEATHER_POWER_EFIC = 5 #Ativar o clima no sistema de batalha. WEATHER_BATTLE = falseend$imported = {} if $imported.nil?$imported[:mog_weather_ex] = true#==============================================================================# ■ Cache#==============================================================================module Cache #-------------------------------------------------------------------------- # ● Weather #-------------------------------------------------------------------------- def self.weather(filename) load_bitmap("Graphics/Weather/", filename) end end#==============================================================================# ■ Game System#==============================================================================class Game_System attr_accessor :weather attr_accessor :weather_restore attr_accessor :weather_record_set attr_accessor :weather_temp #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias weather_ex_initialize initialize def initialize @weather = [-1,0,""] @weather_restore = [-1,0,""] @weather_temp = [-1,0,""] @weather_record_set = [-1,0,""] weather_ex_initialize end end #==============================================================================# ■ Game Temp#==============================================================================class Game_Temp attr_accessor :weather_ex_set attr_accessor :weather_fade attr_accessor :weather_rf_time #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_weather_ex_temp_initialize initialize def initialize @weather_ex_set = [] @weather_fade = false @weather_rf_time = 0 mog_weather_ex_temp_initialize end end#==============================================================================# ■ Game Interpreter#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # ● Weather #-------------------------------------------------------------------------- def weather(type = -1, power = 0, image = "") $game_temp.weather_fade = false $game_temp.weather_rf_time = 0 $game_system.weather.clear $game_system.weather = [type,power,image] end #-------------------------------------------------------------------------- # ● Weather Stop #-------------------------------------------------------------------------- def weather_stop $game_temp.weather_fade = false $game_system.weather.clear $game_system.weather = [-1,0,""] $game_system.weather_restore = [-1,0,""] $game_system.weather_temp = [-1,0,""] end #-------------------------------------------------------------------------- # ● Weather Restore #-------------------------------------------------------------------------- def weather_restore $game_temp.weather_fade = false if $game_system.weather[0] != -1 w = $game_system.weather $game_system.weather_restore = [w[0],w[1],w[2]] $game_system.weather.clear $game_system.weather = [-1,0,""] return end w = $game_system.weather_restore weather(w[0],w[1],w[2]) end #-------------------------------------------------------------------------- # ● Weather Fade #-------------------------------------------------------------------------- def weather_fade(value) $game_temp.weather_fade = value end #-------------------------------------------------------------------------- # ● Weather Store #-------------------------------------------------------------------------- def weather_store w = $game_system.weather $game_system.weather_record_set = [w[0],w[1],w[2]] end #-------------------------------------------------------------------------- # ● Weather Restore Store #-------------------------------------------------------------------------- def weather_restore_store w = $game_system.weather_record_set weather(w[0],w[1],w[2]) end end #==============================================================================# ** Spriteset_Map#==============================================================================class Spriteset_Map #-------------------------------------------------------------------------- # * Create Viewport #-------------------------------------------------------------------------- alias mog_weather_ex_create_viewports create_viewports def create_viewports create_viewport_weather mog_weather_ex_create_viewports end #-------------------------------------------------------------------------- # * Create Viewport Weather #-------------------------------------------------------------------------- def create_viewport_weather return if @viewport_weather != nil @viewport_weather = Viewport.new @viewport_weather.z = MOG_WEATHER_EX::WEATHER_SCREEN_Z @viewport_weather.ox = ($game_map.display_x * 32) @viewport_weather.oy = ($game_map.display_y * 32) end #-------------------------------------------------------------------------- # * Dispose Viewports #-------------------------------------------------------------------------- alias mog_weather_ex_dispose_viewports dispose_viewports def dispose_viewports mog_weather_ex_dispose_viewports dispose_viewport_weather end #-------------------------------------------------------------------------- # * Dispose Viewport Weather #-------------------------------------------------------------------------- def dispose_viewport_weather return if @viewport_weather == nil @viewport_weather.dispose end #-------------------------------------------------------------------------- # * Update Viewports #-------------------------------------------------------------------------- alias mog_weather_ex_update_viewports update_viewports def update_viewports mog_weather_ex_update_viewports update_viewport_weather end #-------------------------------------------------------------------------- # * Update Viewports Weather #-------------------------------------------------------------------------- def update_viewport_weather return if @viewport_weather == nil @viewport_weather.ox = ($game_map.display_x * 32) @viewport_weather.oy = ($game_map.display_y * 32) end end#==============================================================================# ** Spriteset_Battle#==============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # * Create Viewport #-------------------------------------------------------------------------- alias mog_weather_ex_create_viewports_battle create_viewports def create_viewports mog_weather_ex_create_viewports_battle create_viewport_weather end #-------------------------------------------------------------------------- # * Create Viewport Weather #-------------------------------------------------------------------------- def create_viewport_weather return if @viewport_weather != nil @viewport_weather = Viewport.new @viewport_weather.z = MOG_WEATHER_EX::WEATHER_SCREEN_Z end #-------------------------------------------------------------------------- # * Dispose Viewports #-------------------------------------------------------------------------- alias mog_weather_ex_dispose_viewports_battle dispose_viewports def dispose_viewports mog_weather_ex_dispose_viewports_battle dispose_viewport_weather end #-------------------------------------------------------------------------- # * Dispose Viewport Weather #-------------------------------------------------------------------------- def dispose_viewport_weather return if @viewport_weather == nil @viewport_weather.dispose end #-------------------------------------------------------------------------- # * Update Viewports #-------------------------------------------------------------------------- alias mog_weather_ex_update_viewports_battle update_viewports def update_viewports mog_weather_ex_update_viewports_battle update_viewport_weather end #-------------------------------------------------------------------------- # * Update Viewports Weather #-------------------------------------------------------------------------- def update_viewport_weather return if @viewport_weather == nil end end#==============================================================================# ■ Weather_EX#==============================================================================class Weather_EX #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(viewport = nil ,type = 0, image_name = "",index = 0,nx,ny) @wp = Sprite.new @wp.bitmap = Cache.weather(image_name.to_s) @wp.opacity = 0 @wp.viewport = viewport @cw = @wp.bitmap.width @cwm = (@cw / 2) + @cw @ch = @wp.bitmap.height @chm = (@ch / 2) + @ch @range_x = [-@cwm,Graphics.width + @cwm] @range_y = [-@chm,Graphics.height + @chm] @angle_speed = 0 @x_speed = 0 @y_speed = 0 @zoom_speed = 0 @opacity_speed = 0 @type = type @index = index @nx = 0 @nx_old = 0 @ny = 0 @ny_old = 0 @old_nx = nx @old_ny = ny type_setup(nx,ny) end #-------------------------------------------------------------------------- # ● x #-------------------------------------------------------------------------- def x @wp.x end #-------------------------------------------------------------------------- # ● y #-------------------------------------------------------------------------- def y @wp.y end #-------------------------------------------------------------------------- # ● Opacity #-------------------------------------------------------------------------- def opacity @wp.opacity end #-------------------------------------------------------------------------- # ● Angle #-------------------------------------------------------------------------- def angle @wp.angle end #-------------------------------------------------------------------------- # ● Zoom X #-------------------------------------------------------------------------- def zoom_x @wp.zoom_x end #-------------------------------------------------------------------------- # ● Dispose Weather #-------------------------------------------------------------------------- def dispose_weather return if @wp == nil @wp.bitmap.dispose @wp.dispose @wp = nil end #-------------------------------------------------------------------------- # ● Pre Values #-------------------------------------------------------------------------- def pre_values(index) return if $game_temp.weather_ex_set[index] == nil @wp.x = $game_temp.weather_ex_set[index][0] @wp.y = $game_temp.weather_ex_set[index][1] @wp.opacity = 1#$game_temp.weather_ex_set[index][2] @wp.angle = $game_temp.weather_ex_set[index][3] @wp.zoom_x = $game_temp.weather_ex_set[index][4] @wp.zoom_y = $game_temp.weather_ex_set[index][4] $game_temp.weather_ex_set[index].clear $game_temp.weather_ex_set[index] = nil end #-------------------------------------------------------------------------- # ● Type Setup #-------------------------------------------------------------------------- def type_setup(nx = 0, ny = 0) @cw2 = [@range_x[1] + nx, @range_x[0] + nx] @ch2 = [@range_y[1] + ny, @range_y[0] + ny] check_weather_type pre_values(@index) @opacity_speed = -1 if $game_temp.weather_fade end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update_weather(nx = 0, ny = 0) @wp.x += @x_speed @wp.y += @y_speed @wp.opacity += @opacity_speed @wp.angle += @angle_speed @wp.zoom_x += @zoom_speed @wp.zoom_y += @zoom_speed check_loop_map(nx,ny) type_setup(nx,ny) if can_reset_setup? end #-------------------------------------------------------------------------- # ● Check Loop Map #-------------------------------------------------------------------------- def check_loop_map(nx,ny) if (@old_nx - nx).abs > 32 @cw2 = [@range_x[1] + nx, @range_x[0] + nx] @wp.x += nx @wp.x -= @old_nx if nx == 0 end if (@old_ny - ny).abs > 32 @ch2 = [@range_y[1] + ny, @range_y[0] + ny] @wp.y += ny @wp.y -= @old_ny if ny == 0 end @old_nx = nx @old_ny = ny end #-------------------------------------------------------------------------- # ● Can Reset Setup #-------------------------------------------------------------------------- def can_reset_setup? return true if @wp.x > @cw2[0] or @wp.x < @cw2[1] return true if @wp.y > @ch2[0] or @wp.y < @ch2[1] return true if @wp.opacity == 0 return true if @wp.zoom_x > 2.0 or @wp.zoom_x < 0.5 return false end #-------------------------------------------------------------------------- # ● Check Weather Type #-------------------------------------------------------------------------- def check_weather_type case @type when 0; rain when 1; wind when 2; fog when 3; light when 4; snow when 5; spark when 6; random when 7; leaves end end #-------------------------------------------------------------------------- # ● Snow #-------------------------------------------------------------------------- def snow @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(100) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x @y_speed = [[rand(5), 1].max, 5].min @opacity_speed = 5 @angle_speed = rand(3) end #-------------------------------------------------------------------------- # ● Spark #-------------------------------------------------------------------------- def spark @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(100) + 100) / 100.0 @wp.zoom_y = @wp.zoom_x @wp.blend_type = 1 @opacity_speed = 10 @zoom_speed = -0.01 end #-------------------------------------------------------------------------- # ● Rain #-------------------------------------------------------------------------- def rain @wp.x = rand(@cw2[0]) if @start == nil @wp.y = rand(@ch2[0]) @start = true else @wp.y = @ch2[1] end @wp.opacity = 1 @wp.zoom_y = (rand(50) + 100) / 100.0 @wp.zoom_x = (rand(25) + 100) / 100.0 @y_speed = [[rand(10) + 10, 10].max, 20].min @opacity_speed = 10 end #-------------------------------------------------------------------------- # ● Fog #-------------------------------------------------------------------------- def fog rand_angle = rand(2) @wp.angle = rand_angle == 1 ? 180 : 0 @wp.x = rand(@cw2[1]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(80) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x @x_speed = [[rand(2), 1].max, 1].min @opacity_speed = 8 end #-------------------------------------------------------------------------- # ● Light #-------------------------------------------------------------------------- def light @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(100) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x @wp.blend_type = 1 @angle_speed = [[rand(3), 1].max, 3].min @y_speed = -[[rand(10), 1].max, 10].min @opacity_speed = 2 end #-------------------------------------------------------------------------- # ● Wind #-------------------------------------------------------------------------- def wind @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(100) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x @x_speed = [[rand(3), 1].max, 3].min @y_speed = [[rand(6), 1].max, 2].min @opacity_speed = 8 end #-------------------------------------------------------------------------- # ● Random #-------------------------------------------------------------------------- def random @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]) @wp.opacity = 1 @wp.zoom_x = (rand(100) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x x_s = [[rand(10), 1].max, 10].min y_s = [[rand(10), 1].max, 10].min rand_x = rand(2) rand_y = rand(2) @x_speed = rand_x == 1 ? x_s : -x_s @y_speed = rand_y == 1 ? y_s : -y_s @opacity_speed = 10 end #-------------------------------------------------------------------------- # ● Leaves #-------------------------------------------------------------------------- def leaves @wp.angle = rand(360) @wp.x = rand(@cw2[0]) @wp.y = rand(@ch2[0]+2) @wp.opacity = 1 @wp.zoom_x = (rand(80) + 50) / 100.0 @wp.zoom_y = @wp.zoom_x @x_speed = [[rand(4), 1].max, 1].min @y_speed = [[rand(11), 1].max, 1].min @opacity_speed = 6 @angle_speed = rand(3) end end#==============================================================================# ■ Module Weather EX#==============================================================================module Module_Weather_EX #-------------------------------------------------------------------------- # ● Create Weather EX #-------------------------------------------------------------------------- def create_weather_ex dispose_weather_ex create_weather_sprite end #-------------------------------------------------------------------------- # ● Dispose Wheater EX #-------------------------------------------------------------------------- def dispose_weather_ex dispose_weather_ex_sprite end #-------------------------------------------------------------------------- # ● Create Weather Sprite #-------------------------------------------------------------------------- def create_weather_sprite dispose_weather_ex_sprite @old_weather = $game_system.weather return if $game_system.weather == [] or $game_system.weather[0] == -1 @weather_ex = [] @weather_oxy = [$game_map.display_x * 32, $game_map.display_y * 32] index = 0 power_efic = MOG_WEATHER_EX::WEATHER_POWER_EFIC power_efic = 1 if power_efic < 1 power = [[$game_system.weather[1] * power_efic, power_efic].max, 999].min for i in 0...power @weather_ex.push(Weather_EX.new(@viewport_weather,$game_system.weather[0],$game_system.weather[2],index, @viewport1.ox, @viewport1.oy)) index += 1 end end #-------------------------------------------------------------------------- # ● Dispose Weather EX #-------------------------------------------------------------------------- def dispose_weather_ex_sprite return if @weather_ex == nil index = 0 for i in @weather_ex $game_temp.weather_ex_set[index] = [] if $game_temp.weather_ex_set[index] == nil $game_temp.weather_ex_set[index].push(i.x,i.y,i.opacity,i.angle,i.zoom_x) i.dispose_weather index += 1 end @weather_ex.each {|sprite| sprite.dispose_weather} @weather_ex = nil end #-------------------------------------------------------------------------- # ● Dispose Refresh #-------------------------------------------------------------------------- def dispose_refresh $game_temp.weather_ex_set.clear return if @weather_ex == nil @weather_ex.each {|sprite| sprite.dispose_weather} @weather_ex = nil end #-------------------------------------------------------------------------- # ● Update Weather EX #-------------------------------------------------------------------------- def update_weather_ex $game_temp.weather_rf_time -= 1 if $game_temp.weather_rf_time > 0 refresh_weather_ex if $game_temp.weather_rf_time == 0 return if @weather_ex == nil @weather_ex.each {|sprite| sprite.update_weather(@viewport_weather.ox,@viewport_weather.oy)} end #-------------------------------------------------------------------------- # ● Refresh Weather EX #-------------------------------------------------------------------------- def refresh_weather_ex return if @old_weather == nil return if @old_weather == $game_system.weather dispose_refresh create_weather_sprite end end #==============================================================================# ■ Spriteset Map#==============================================================================class Spriteset_Map include Module_Weather_EX #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_weather_ex_initialize initialize def initialize dispose_weather_ex mog_weather_ex_initialize create_weather_ex end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_weather_ex_dispose dispose def dispose dispose_weather_ex mog_weather_ex_dispose end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- alias mog_weather_ex_update update def update mog_weather_ex_update update_weather_ex end endif MOG_WEATHER_EX::WEATHER_BATTLE #==============================================================================# ■ Spriteset Battle#==============================================================================class Spriteset_Battle include Module_Weather_EX #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_weather_ex_initialize initialize def initialize dispose_weather_ex mog_weather_ex_initialize create_weather_ex end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_weather_ex_dispose dispose def dispose mog_weather_ex_dispose dispose_weather_ex end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- alias mog_weather_ex_update update def update mog_weather_ex_update update_weather_ex end endend#=============================================================================# ■ Scene Base#=============================================================================class Scene_Base #-------------------------------------------------------------------------- # ● Weather Recover Data #-------------------------------------------------------------------------- def weather_recover_data if $game_system.weather.empty? or $game_system.weather[0] == -1 if !$game_system.weather_restore.empty? and $game_system.weather_restore[0] != -1 v = $game_system.weather_restore $game_system.weather = [v[0],v[1],v[2]] end end end #-------------------------------------------------------------------------- # ● Weather Restore #-------------------------------------------------------------------------- def weather_recover_scene return if $game_system.weather_temp.empty? return if $game_system.weather_temp[0] == -1 w = $game_system.weather_temp $game_system.weather = [w[0],w[1],w[2]] $game_system.weather_temp.clear $game_system.weather_temp = [-1,0,""] end #-------------------------------------------------------------------------- # ● Main #-------------------------------------------------------------------------- alias mog_weather_ex_main main def main dispose_weather_ex_base weather_recover_scene if can_recover_weather_scene? mog_weather_ex_main end #-------------------------------------------------------------------------- # ● Can Recover Weather Scene #-------------------------------------------------------------------------- def can_recover_weather_scene? return true if SceneManager.scene_is?(Scene_Map) return true if SceneManager.scene_is?(Scene_Battle) return false end #-------------------------------------------------------------------------- # ● terminate #-------------------------------------------------------------------------- alias mog_weather_ex_terminate_base terminate def terminate mog_weather_ex_terminate_base dispose_weather_ex_base end #-------------------------------------------------------------------------- # ● Dispose Weather EX Base #-------------------------------------------------------------------------- def dispose_weather_ex_base return if @spriteset == nil @spriteset.dispose_weather_ex rescue nil end end#=============================================================================# ■ Scene Load#=============================================================================class Scene_Load < Scene_File #-------------------------------------------------------------------------- # ● On Load Success #-------------------------------------------------------------------------- alias mog_weather_ex_on_load_success on_load_success def on_load_success mog_weather_ex_on_load_success weather_recover_data endend#=============================================================================# ■ Scene Manager#=============================================================================class << SceneManager #-------------------------------------------------------------------------- # ● Call #-------------------------------------------------------------------------- alias mog_weather_ex_call call def call(scene_class) weather_dispose mog_weather_ex_call(scene_class) end #-------------------------------------------------------------------------- # ● Weather Restore #-------------------------------------------------------------------------- def weather_dispose return if $game_system.weather.empty? return if $game_system.weather[0] == -1 w = $game_system.weather $game_system.weather_temp = [w[0],w[1],w[2]] $game_system.weather.clear $game_system.weather = [-1,0,""] end end
Khas Awesome Light Effects:

#-------------------------------------------------------------------------------# * [ACE] Khas Awesome Light Effects#-------------------------------------------------------------------------------# * By Khas Arcthunder - arcthunder.site40.net# * Version: 1.0 EN# * Released on: 17/01/2012##-------------------------------------------------------------------------------# * Terms of Use#-------------------------------------------------------------------------------# When using any Khas script, you agree with the following terms:# 1. You must give credit to Khas;# 2. All Khas scripts are licensed under a Creative Commons license;# 3. All Khas scripts are for non-commercial projects. If you need some script# for your commercial project (I accept requests for this type of project),# send an email to nilokruch@live.com with your request;# 4. All Khas scripts are for personal use, you can use or edit for your own# project, but you are not allowed to post any modified version;# 5. You can’t give credit to yourself for posting any Khas script;# 6. If you want to share a Khas script, don’t post the direct download link,# please redirect the user to arcthunder.site40.net##-------------------------------------------------------------------------------# * Features#-------------------------------------------------------------------------------# - Realistic Light# - Light does not pass over walls, blocks and roofs# - Static Light Sources# - Dynamic Light Sources (like a player's lantern)# - Multiple effects# - Easy to use (comments)##-------------------------------------------------------------------------------# * WARNING - Performance#-------------------------------------------------------------------------------# This script may be too heavy to old processors! The Awesome Light Effects was# tested on a Core 2 Duo E4500 and on a Core i5, without any lag. However,# there's other factors that may influence the script performance:## 1. Map size# This script searches surfaces on the map, in order to cut the light pictures.# In a huge map, the number of surfaces may increase a lot, affecting the# DYNAMIC LIGHT SOURCE only. Map size does not influence the static sources.## 2. Number of effects# This script draws the effects on the screen, but before drawing, it checks# if the effect is out of screen (in this case, the script will skip the# light drawing). Too much effects may cause lag, but this is just a prevision.## 3. Effect's picture size# The picture size of the DYNAMIC LIGHT SOURCE influences directly on your# game's performace. The bigger is the picture, the slower it will be to# draw it dynamically. The recommended maximum size is 200x200 pixels##-------------------------------------------------------------------------------# * WARNING - Light pictures#-------------------------------------------------------------------------------# In order to run this script correctly, the light pictures MUST obey the# following conditions:# 1. The picture's size MUST be multiple of 2. Example: 150x150# 2. The picture's width MUST be equal to it's height. Example: 156x156# 3. The picture's colors MUST be inverted! This is necessary because# the script inverts the colors to draw the effect. The black color# will be transparent!##-------------------------------------------------------------------------------# * Instructions - 1. Setup your effects!#-------------------------------------------------------------------------------# In order to setup your static effects, go to the setup part and define your# effects inside the Effects hash. Do as the following mode:## X => [picture,opacity,variation,cut], <= Remember to put a comma here!## Where:# picture => Picture's name, inside the Graphics/Lights folder;# opacity => Effect's opacity;# variation => Effect's opacity variation;# cut => Put true to cut the effect or false to don't;# X => The effect's ID, it will be used on events.## Check the default effects to understand how they work.##-------------------------------------------------------------------------------# * Instructions - 2. Use your effects!#-------------------------------------------------------------------------------# In order to use a effect, put the following comment on a event:## [light x]## Where x must be the Effect's ID.##-------------------------------------------------------------------------------# * Instructions - 3. Use an awesome lantern!#-------------------------------------------------------------------------------# The dynamic light source (lantern) is initialized invisible by default.# You may call the following commands:## l = $game_map.lantern# Gets the lantern into a variable# l.set_graphic(i)# Sets the lantern's graphic to i, where i must be the picture's file name on# Graphics/Lights folder.## l.set_multiple_graphics(h)# Sets the lantern's graphics to h, where h must be a hash with the following# structure:## h = {2=>"ld",4=>"ll",6=>"lr",8=>"lu"}## Where:# "ld" is the name of the picture when the lantern's owner is looking down;# "ll" is the name of the picture when the lantern's owner is looking left;# "lr" is the name of the picture when the lantern's owner is looking right;# "lu" is the name of the picture when the lantern's owner is looking up.## l.change_owner(char)# Sets the lantern's owner to char. Char must be ONE of the following commands:# $game_player <= The player itself;# self_event <= The event where the command was called;# $game_map.events[x] <= The event ID x.## l.set_opacity(o,p)# Sets the lantern's opacity, where:# o is the opacity itself;# p is the opacity variation.## l.show# After setting the lantern with the commands above, you may set it to visible# using this command.## l.hide# Use this command to set the lantern as invisible.##-------------------------------------------------------------------------------# * Instructions - 4. Use the effect's surface!#-------------------------------------------------------------------------------# The Awesome Light Effects draws the effects on a surface. In order to make# the effects visible, the effect's surface MUST be visible. The Effect's# Surface is initialized with it's opacity set to zero. You can call the# following commands:## s = $game_map.effect_surface# Gets the Effect's Surface into a variable## s.set_color(r,g, # Changes the Effect's Surface color instantly, where:# r => red level;# g => green level;# b => blue level;## s.set_alpha(a)# Changes the Effect's Surface opacity instantly to a.## s.change_color(time,r,g, # Changes the Effect's Surface color ONLY in a certain time, where:# time => The change's time (frames);# r => red level;# g => green level;# b => blue level;## s.change_color(time,r,g,b,a)# Changes the Effect's Surface color and it's opacity in a certain time, where:# time => The change's time (frames);# r => red level;# g => green level;# b => blue level;# a => opacity## s.change_alpha(time,a)# Changes the Effect's Surface opacity in a certain time, where:# time => The change's time (frames);# a => opacity##-------------------------------------------------------------------------------# * Instructions - 5. Use the effect's surface with Tone command!#-------------------------------------------------------------------------------# You can access the Effect's Surface with the "Screen Tone" command. In order# to turn this feature on, set the "Surface_UE" constant to true.## If you decided to use this feature, please note some details:# 1. The colors values must be between 0 and 255;# 2. The time is in frames;# 3. The "gray" value will be sent as the opacity value##-------------------------------------------------------------------------------# * Instructions - 6. Setup your Tileset Tags!#-------------------------------------------------------------------------------# In order to cut the effect's picture correctly, there's 3 types of behavior# for a tile: wall, block and roof. Walls will make shadows as real walls,# blocks as blocks and roofs as roofs. So, the tileset tags MUST be configured.# Check the demo to understand how this system works. If the tilesets aren't# configured correctly, the script won't cut the effects correctly.##-------------------------------------------------------------------------------# * Setup Part#-------------------------------------------------------------------------------module Light_Core Effects = { # <= DON'T change this!#-------------------------------------------------------------------------------# PUT YOUR EFFECTS HERE!#------------------------------------------------------------------------------- 0 => ["light",255,0,true], 1 => ["torch",200,20,true], 2 => ["torch_small",180,30,true], 3 => ["light_mid",255,0,true], 4 => ["light_window",255,0,true], 5 => ["room_light",255,0,true], 6 => ["room_light_l",255,0,true], 7 => ["room_light_ru",255,0,true], 8 => ["room_light_lu",255,0,true], #-------------------------------------------------------------------------------# End of effecs configuration#------------------------------------------------------------------------------- } # <= DON'T change this! # Z coordinate of the Effect's Surface Surface_Z = 89 # Enable Effect's Surface control by "Screen Tone" command? Surface_UE = false # Roof behavior tag Roof_Tag = 5 # Wall behavior tag Wall_Tag = 6 # Block behavior tag Block_Tag = 7 # Don't change this! ACC = Math.tan(Math::pI/26)end#-------------------------------------------------------------------------------# Script#-------------------------------------------------------------------------------module Cache def self.light(filename) load_bitmap("Graphics/Lights/", filename) endendclass Light_SSource attr_reader :real_x attr_reader :real_y attr_reader :range attr_accessor :bitmap attr_reader :w attr_reader :h attr_reader :hs def initialize(char,bitmap,opacity,plus,hs) sync(char) @key = bitmap @bitmap = Cache.light(@key).clone @range = @bitmap.width/2 @w = @bitmap.width @h = @bitmap.height @mr = @range - 16 @opacity = opacity @plus = plus @hs = hs render if @hs end def render tx = x ty = y tsx = x + @range tsy = y + @range dr = @range*2 for s in $game_map.surfaces next if !s.visible?(tsx,tsy) || !s.within?(tx,tx+dr,ty,ty+dr) s.render_shadow(tx,ty,tsx,tsy,@range,@bitmap) end end def restore return unless @bitmap.nil? @bitmap = Cache.light(@key).clone render if @hs end def opacity @plus == 0 ? @opacity : (@opacity + rand(@plus)) end def sx return $game_map.adjust_x(@real_x)*32-@mr end def sy return $game_map.adjust_y(@real_y)*32-@mr end def sync(char) @real_x = char.real_x @real_y = char.real_y end def x return (@real_x*32 - @mr).to_f end def y return (@real_y*32 - @mr).to_f end def dispose return if @bitmap.nil? @bitmap.dispose @bitmap = nil end endclass Light_DSource < Light_SSource attr_reader :bitmap attr_reader :visible def initialize @key = nil @bitmap = nil @opacity = 255 @plus = 0 @char = $game_player @visible = false end def set_opacity(o,p) @opacity = o @plus = p end def set_graphic(sb) dispose @key = {2=>sb,4=>sb,6=>sb,8=>sb} @bitmap = { 2=>Cache.light(@key[2]).clone, 4=>Cache.light(@key[4]).clone, 6=>Cache.light(@key[6]).clone, 8=>Cache.light(@key[8]).clone } @range = @bitmap[2].width/2 @w = @bitmap[2].width @h = @bitmap[2].height @mr = @range - 16 end def set_multiple_graphics(ba) dispose @key = ba @bitmap = { 2=>Cache.light(@key[2]).clone, 4=>Cache.light(@key[4]).clone, 6=>Cache.light(@key[6]).clone, 8=>Cache.light(@key[8]).clone } @range = @bitmap[2].width/2 @w = @bitmap[2].width @h = @bitmap[2].height @mr = @range - 16 end def get_graphic return @bitmap[@char.direction].clone end def show return if @bitmap.nil? @visible = true end def hide @visible = false end def restore return if @key.nil? @bitmap = { 2=>Cache.light(@key[2]).clone, 4=>Cache.light(@key[4]).clone, 6=>Cache.light(@key[6]).clone, 8=>Cache.light(@key[8]).clone } end def dispose return if @bitmap.nil? @bitmap.values.each { |b| b.dispose } @bitmap = nil end def change_owner(char) @char = char end def render end def sx return $game_map.adjust_x(@char.real_x)*32-@mr end def sy return $game_map.adjust_y(@char.real_y)*32-@mr end def x return (@char.real_x*32 - @mr).to_f end def y return (@char.real_y*32 - @mr).to_f end endclass Light_Surface def initialize @ta = @a = 0 @tr = @r = 255 @tg = @g = 255 @tb = @b = 255 @va = @vr = @vg = @vb = 0.0 @timer = 0 end def refresh return if @timer == 0 @a += @va @r += @vr @g += @vg @b += @vb $game_map.light_surface.opacity = @a @timer -= 1 end def change_color(time,r,g,b,a=nil) r = 0 if r < 0; r = 255 if r > 255 g = 0 if g < 0; g = 255 if g > 255 b = 0 if b < 0; b = 255 if b > 255 unless a.nil? a = 0 if a < 0; a = 255 if a > 255 end @timer = time @tr = 255-r @tg = 255-g @tb = 255-b @va = (a.nil? ? 0 : (a-@a).to_f/@timer) @vr = (@tr - @r).to_f/@timer @vg = (@tg - @g).to_f/@timer @vb = (@tb - @.to_f/@timer end def change_alpha(time,a) a = 0 if a < 0; a = 255 if a > 255 @timer = time @ta = a @vr = @vg = @vb = 0.0 @va = (a-@a).to_f/@timer end def set_color(r,g, r = 0 if r < 0; r = 255 if r > 255 g = 0 if g < 0; g = 255 if g > 255 b = 0 if b < 0; b = 255 if b > 255 @tr = @r = 255-r @tg = @g = 255-g @tb = @b = 255-b @va = @vr = @vg = @vb = 0.0 @timer = 0 end def set_alpha(a) a = 0 if a < 0; a = 255 if a > 255 @ta = @a = a $game_map.light_surface.opacity = @a if $game_map.light_surface @va = @vr = @vg = @vb = 0.0 @timer = 0 end def alpha return @a end def color return Color.new(@r,@g,@ end endclass Game_Map include Light_Core attr_accessor :light_surface attr_accessor :light_sources attr_accessor :surfaces attr_accessor :effect_surface attr_accessor :lantern alias kbl_setup_events setup_events alias kbl_initialize initialize alias kbl_update update def initialize kbl_initialize @effect_surface = Light_Surface.new @lantern = Light_DSource.new end def update(arg) @effect_surface.refresh if arg kbl_update(arg) end def first_tag(x,y) tag = tileset.flags[tile_id(x,y,0)] >> 12 return tag > 0 ? tag : 0 end def setup_events @light_sources.nil? ? @light_sources = [] : @light_sources.clear setup_surfaces merge_surfaces @effect_surface.set_alpha(0) if @effect_surface @lantern.hide kbl_setup_events end def setup_surfaces @surfaces = [] for x in 0..(width-1) for y in 0..(height-1) tag = first_tag(x,y) if tag == Wall_Tag i = tile_id(x,y,0) if i & 0x02 == 0x02 @surfaces << Block_SD.new(x*32,y*32,x*32+32,y*32) end if i & 0x04 == 0x04 @surfaces << Block_WR.new(x*32+31,y*32,x*32+31,y*32+32) @surfaces << Block_IL.new(x*32+32,y*32,x*32+32,y*32+32) end if i & 0x01 == 0x01 @surfaces << Block_IR.new(x*32-1,y*32,x*32-1,y*32+32) @surfaces << Block_WL.new(x*32,y*32,x*32,y*32+32) end elsif tag == Roof_Tag i = tile_id(x,y,0) @surfaces << Block_SU.new(x*32,y*32,x*32+32,y*32) if i & 0x02 == 0x02 @surfaces << Block_SR.new(x*32+31,y*32,x*32+31,y*32+32) if i & 0x04 == 0x04 @surfaces << Block_SL.new(x*32,y*32,x*32,y*32+32) if i & 0x01 == 0x01 elsif tag == Block_Tag f = tileset.flags[tile_id(x,y,0)] @surfaces << Block_SL.new(x*32,y*32,x*32,y*32+32) if f & 0x02 == 0x02 @surfaces << Block_SR.new(x*32+31,y*32,x*32+31,y*32+32) if f & 0x04 == 0x04 @surfaces << Block_SU.new(x*32,y*32,x*32+32,y*32) if f & 0x08 == 0x08 end end end end def merge_surfaces new_surfaces = [] hs = []; vs = [] ws = []; is = [] for surface in @surfaces if surface.type & 0x05 == 0 hs << surface else if surface.type & 0x010 == 0 vs << surface else if surface.type & 0x08 == 0 ws << surface else is << surface end end end end for surface in hs surface.ready ? next : surface.ready = true for s in hs next if s.ready || s.y1 != surface.y1 || surface.type != s.type if s.x2 == surface.x1 surface.x1 = s.x1 s.trash = true s.ready = true surface.ready = false elsif s.x1 == surface.x2 surface.x2 = s.x2 s.trash = true s.ready = true surface.ready = false end end end hs.each { |s| @surfaces.delete(s) if s.trash} for surface in vs surface.ready ? next : surface.ready for s in vs next if s.ready || s.x1 != surface.x1 if s.y2 == surface.y1 surface.y1 = s.y1 s.trash = true s.ready = true surface.ready = false elsif s.y1 == surface.y2 surface.y2 = s.y2 s.trash = true s.ready = true surface.ready = false end end end vs.each { |s| @surfaces.delete(s) if s.trash} for surface in ws surface.ready ? next : surface.ready for s in ws next if s.ready || s.x1 != surface.x1 if s.y2 == surface.y1 surface.y1 = s.y1 s.trash = true s.ready = true surface.ready = false elsif s.y1 == surface.y2 surface.y2 = s.y2 s.trash = true s.ready = true surface.ready = false end end end ws.each { |s| @surfaces.delete(s) if s.trash} for surface in is surface.ready ? next : surface.ready for s in is next if s.ready || s.x1 != surface.x1 if s.y2 == surface.y1 surface.y1 = s.y1 s.trash = true s.ready = true surface.ready = false elsif s.y1 == surface.y2 surface.y2 = s.y2 s.trash = true s.ready = true surface.ready = false end end end is.each { |s| @surfaces.delete(s) if s.trash} endendclass Game_Event < Game_Character alias kbl_initialize initialize alias kbl_setup_page setup_page def initialize(m,e) @light = nil kbl_initialize(m,e) end def setup_page(np) kbl_setup_page(np) setup_light(np.nil?) end def setup_light(dispose) unless @light.nil? $game_map.light_sources.delete(self) @light.dispose @light = nil end unless dispose && @list.nil? for command in @list if command.code == 108 && command.parameters[0].include?("[light") command.parameters[0].scan(/\[light ([0.0-9.9]+)\]/) effect = Light_Core::Effects[$1.to_i] @light = Light_SSource.new(self,effect[0],effect[1],effect[2],effect[3]) $game_map.light_sources << self return end end end end def draw_light sx = @light.sx sy = @light.sy w = @light.w h = @light.h return if sx > Graphics.width && sy > Graphics.height && sx + w < 0 && sy + h < 0 $game_map.light_surface.bitmap.blt(sx,sy,@light.bitmap,Rect.new(0,0,w,h),@light.opacity) end def dispose_light @light.dispose end def restore_light @light.restore end endif Light_Core::Surface_UE class Game_Interpreter def command_223 $game_map.effect_surface.change_color(@params[1], @params[0].red, @params[0].green, @params[0].blue, @params[0].gray) wait(@params[1]) if @params[2] end endendclass Game_Interpreter def self_event return $game_map.events[@event_id] endendclass Block_Surface include Light_Core attr_accessor :x1 attr_accessor :y1 attr_accessor :x2 attr_accessor :y2 attr_accessor :ready attr_accessor :trash def initialize(x1,y1,x2,y2) @x1 = x1 @y1 = y1 @x2 = x2 @y2 = y2 @ready = false @trash = false end def within?(min_x,max_x,min_y,max_y) return @x2 > min_x && @x1 < max_x && @y2 > min_y && @y1 < max_y end endclass Block_SL < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x01 end def visible?(sx,sy) return sx < @x1 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = sy - @m1*sx @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx for x in @x1..(sx+range) init = shadow_iy(x) bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+3) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_SR < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x04 end def visible?(sx,sy) return sx > @x1 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = sy - @m1*sx @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx for x in (sx-range).to_i..@x1 init = shadow_iy(x) bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+3) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_IL < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x019 end def visible?(sx,sy) return sx < @x1 && sy > @y1 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = @y1 - @m1*@x1 @m2 = (@y2-sy)/(@x2-sx) @m2 = 0 if @m2 > 0 @n2 = @y2 - @m2*@x2 for x in @x1..(sx+range) init = shadow_iy(x).floor bitmap.clear_rect(x-phx,init-3-phy,1,shadow_fy(x)-init+3) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_IR < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x01c end def visible?(sx,sy) return sx > @x1 && sy > @y1 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = @y1 - @m1*@x1 @m2 = (@y2-sy)/(@x2-sx) @m2 = 0 if @m2 < 0 @n2 = @y2 - @m2*@x2 for x in (sx-range).to_i..@x1 init = shadow_iy(x).floor bitmap.clear_rect(x-phx,init-3-phy,1,shadow_fy(x)-init+3) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_WL < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x011 end def visible?(sx,sy) return sx < @x1 && sy < @y2 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = sy - @m1*sx @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx for x in @x1..(sx+range) init = shadow_iy(x) bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+2) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_WR < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x014 end def visible?(sx,sy) return sx > @x1 && sy < @y2 end def render_shadow(phx,phy,sx,sy,range,bitmap) @m1 = (@y1-sy)/(@x1-sx) @n1 = sy - @m1*sx @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx for x in (sx-range).to_i..@x1 init = shadow_iy(x) bitmap.clear_rect(x-phx,init-phy,1,shadow_fy(x)-init+2) end end def shadow_iy(x) return @m1*x+@n1 end def shadow_fy(x) return @m2*x+@n2 end endclass Block_SU < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x02 end def visible?(sx,sy) return sy < @y1 end def render_shadow(phx,phy,sx,sy,range,bitmap) if @x1 == sx @m1 = nil else @m1 = (@y1-sy)/(@x1-sx) @m1 += ACC if @m1 < -ACC @n1 = @y1 - @m1*@x1 end if @x2 == sx @m2 = nil else @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx end for y in @y1..(sy+range) init = shadow_ix(y) bitmap.clear_rect(init-phx,y-phy,shadow_fx(y)-init+1,1) end end def shadow_ix(y) return @m1.nil? ? @x1 : (y-@n1)/@m1 end def shadow_fx(y) return @m2.nil? ? @x2 : (y-@n2)/@m2 end endclass Block_SD < Block_Surface attr_reader :type def initialize(x1,y1,x2,y2) super(x1,y1,x2,y2) @type = 0x08 end def visible?(sx,sy) return sy > @y1 end def render_shadow(phx,phy,sx,sy,range,bitmap) if @x1 == sx @m1 = nil else @m1 = (@y1-sy)/(@x1-sx) @m1 -= ACC if @m1 > ACC @n1 = sy - @m1*sx end if x2 == sx @m2 = nil else @m2 = (@y2-sy)/(@x2-sx) @n2 = sy - @m2*sx end for y in (sy-range).to_i..@y1 init = shadow_ix(y) bitmap.clear_rect(init-phx,y-phy,shadow_fx(y)-init+1,1) end end def shadow_ix(y) return @m1.nil? ? @x1 : (y-@n1)/@m1 end def shadow_fx(y) return @m2.nil? ? @x2 : (y-@n2)/@m2 end endclass Spriteset_Map include Light_Core alias kbl_initialize initialize alias kbl_update update alias kbl_dispose dispose def initialize kbl_initialize setup_lights end def update kbl_update update_lights if $game_map.effect_surface.alpha > 0 end def dispose kbl_dispose dispose_lights end def dispose_lights $game_map.lantern.dispose $game_map.light_sources.each { |source| source.dispose_light} $game_map.light_surface.bitmap.dispose $game_map.light_surface.dispose $game_map.light_surface = nil end def update_lights return unless $game_map.light_surface $game_map.light_surface.bitmap.clear $game_map.light_surface.bitmap.fill_rect(0,0,Graphics.width, Graphics.height,$game_map.effect_surface.color) $game_map.light_sources.each { |source| source.draw_light } return unless $game_map.lantern.visible @btr = $game_map.lantern.get_graphic x = $game_map.lantern.x y = $game_map.lantern.y r = $game_map.lantern.range sx = x + r sy = y + r dr = r*2 $game_map.surfaces.each { |s| s.render_shadow(x,y,sx,sy,r,@btr) if s.visible?(sx,sy) && s.within?(x,x+dr,y,y+dr) } $game_map.light_surface.bitmap.blt($game_map.lantern.sx,$game_map.lantern.sy,@btr,Rect.new(0,0,dr,dr),$game_map.lantern.opacity) end def setup_lights @btr = nil $game_map.lantern.restore $game_map.light_sources.each { |source| source.restore_light } $game_map.light_surface = Sprite.new(@viewport1) $game_map.light_surface.bitmap = Bitmap.new(Graphics.width, Graphics.height) $game_map.light_surface.bitmap.fill_rect(0,0,Graphics.width, Graphics.height,$game_map.effect_surface.color) $game_map.light_surface.blend_type = 2 $game_map.light_surface.opacity = $game_map.effect_surface.alpha $game_map.light_surface.z = Surface_Z end end
Thanks in advance! :D

Latest Threads

Latest Profile Posts

Don't forget, aspiring writers: Personality isn't what your characters do, it is WHY they do it.
Hello! I would like to know if there are any pluggings or any way to customize how battles look?
I was thinking that when you start the battle for it to appear the eyes of your characters and opponents sorta like Ace Attorney.
Sadly I don't know how that would be possible so I would be needing help! If you can help me in any way I would really apreciate it!
The biggest debate we need to complete on which is better, Waffles or Pancakes?
rux
How is it going? :D
Day 9 of giveaways! 8 prizes today :D

Forum statistics

Threads
106,049
Messages
1,018,546
Members
137,835
Latest member
yetisteven
Top