#==============================================================================
# ** RMXP Fog feature for RMVX
#------------------------------------------------------------------------------
# Allows you to display a fog on map. Brings back the "old" Fog feature from
# RPG Maker XP.
# 08-03-2008 (dd-mm-yyyy) © Hevendor of rmxp.org
# 09-03-2008 Edits/additions by Jirbytaylor
# 09-03-2008 (dd-mm-yyyy) Edited by Hevendor
# 30-05-2008 (dd-mm-yyyy) Edited by Hevendor
# Version 1.3
# Latest update: added fog diasbling switch.
#==============================================================================
module Fog_Map_Settings
#============================================================================
# * Configure map names for setup timesaving. Format:
# {fognumber => 'fogname.extension', ...}
#============================================================================
Fog_names = {1 => 'fog01.png', 2 => 'fog01.png', 3 => 'fog01.png',
4 => 'fog01.png'}
#============================================================================
# * Set maps you wish to have fogs here. Format:
# Fog_maps = {mapID => Fog number, mapID2 => Fog number, ...}
#============================================================================
Fog_maps = {11 => 1, 3 => 2, 7 => 1, 16 => 2, 17 => 2, 18 => 2, 19 => 2,
23 => 3, 25 => 4}
#============================================================================
# * Set up fog settings. Uses (fog number => setting, ...) format
# - Opacity - Opacity of fog, ranging from 0 (invisible) to 255 (opaque)
# - Zoom - size of fog. '1' is normal not '100'.
# - Blend - 0 - Normal, 1 - Add, 2 - Subtract
# - SxSy - Scroll settings. (fog number => [sx,sy] ...)
#============================================================================
Fog_opacity = {1 => 90, 2 => 60, 3 => 60, 4 => 20}
Fog_zoom = {1 => 3, 2 => 3, 3 => 3, 4 => 3}
Fog_blend = {1 => 2, 2 => 2, 3 => 2, 4 => 1}
Fog_sxsy = {1 => [4, 4], 2 => [4, 4], 3 => [0, 0], 4 => [4, 4]}
#============================================================================
# * A switch number. When off, fogs will display; when on, fogs
# will not display. Nil by default.
#============================================================================
Fog_disabling_switch = 6
#============================================================================
end
class Game_Map
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :map_id # map ID
attr_reader :fog_ox # fog oX
attr_reader :fog_oy # fog oY
attr_accessor :fog_over_pictures # does fog go over pictures?
#--------------------------------------------------------------------------
# * Alias Definitions
#--------------------------------------------------------------------------
alias hev_fog_feature_map_update update
alias hev_fog_feature_map_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@fog_ox = 0
@fog_oy = 0
@fog_over_pictures = false
hev_fog_feature_map_initialize
end
#--------------------------------------------------------------------------
# * Update Fog
#--------------------------------------------------------------------------
def update_fog
if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
@fog_ox -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][0] / 8.0
@fog_oy -= Fog_Map_Settings::Fog_sxsy[Fog_Map_Settings::Fog_maps[@map_id]][1] / 8.0
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
update_fog if (Fog_Map_Settings::Fog_disabling_switch == nil || $game_switches[Fog_Map_Settings::Fog_disabling_switch] == false)
hev_fog_feature_map_update
end
end
class Spriteset_Map
#--------------------------------------------------------------------------
# * Alias Definitions
#--------------------------------------------------------------------------
alias hev_fog_feature_initialize initialize
alias hev_fog_feature_create_viewports create_viewports
alias hev_fog_feature_dispose dispose
alias hev_fog_feature_update_viewports update_viewports
alias hev_fog_feature_update update
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
hev_fog_feature_initialize
@fog_removal = nil
create_fog if (Fog_Map_Settings::Fog_disabling_switch == nil || $game_switches[Fog_Map_Settings::Fog_disabling_switch] == false)
end
#--------------------------------------------------------------------------
# * Create Viewport
#--------------------------------------------------------------------------
def create_viewports
@viewport4 = Viewport.new(0, 0, 544, 416)
if @fog_over_pictures == false
@viewport4.z = 9
else
@viewport4.z = 501
end
hev_fog_feature_create_viewports
end
#--------------------------------------------------------------------------
# * Create Fog
#--------------------------------------------------------------------------
def create_fog
@fog_removal = false
@fog = Plane.new(@viewport4)
if Fog_Map_Settings::Fog_maps.include?($game_map.map_id)
fog_number = Fog_Map_Settings::Fog_maps[$game_map.map_id]
update_fog
@fog.bitmap = Cache.picture(Fog_Map_Settings::Fog_names[fog_number])
@fog.opacity = Fog_Map_Settings::Fog_opacity[fog_number]
@fog.zoom_x = @fog.zoom_y = Fog_Map_Settings::Fog_zoom[fog_number]
@fog.blend_type = Fog_Map_Settings::Fog_blend[fog_number]
end
end
#--------------------------------------------------------------------------
# * Update Fog Sprite
#--------------------------------------------------------------------------
def update_fog
if @fog != nil
@fog.ox = $game_map.display_x / 8 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 8 + $game_map.fog_oy
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
hev_fog_feature_update
if @fog_removal == true && $game_switches[Fog_Map_Settings::Fog_disabling_switch] == false
create_fog
@fog_removal = false
end
update_fog if (Fog_Map_Settings::Fog_disabling_switch == nil || $game_switches[Fog_Map_Settings::Fog_disabling_switch] == false)
if @fog_removal == false && $game_switches[Fog_Map_Settings::Fog_disabling_switch] == true
dispose_fog if @fog != nil
@fog_removal = true
end
end
#--------------------------------------------------------------------------
# * Dispose of Fog Sprite
#--------------------------------------------------------------------------
def dispose_fog
@fog.dispose
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
dispose_fog
hev_fog_feature_dispose
end
end