RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
{ABANDONED} [VXA] Witchtooth 2

0 Members and 1 Guest are viewing this topic.

****
Rep:
Level 71
Here is the fog script, I ran out of characters in the first post.
Code: [Select]
#==============================================================================
# ** Victor Engine - Fog Effect
#------------------------------------------------------------------------------
# Author : Victor Sant
#
# Version History:
#  v 1.00 - 2011.12.19 > First relase
#  v 1.01 - 2011.12.30 > Faster Regular Expressions
#  v 1.02 - 2012.01.02 > Fixed fog dispose when changing maps
#  v 1.03 - 2012.01.04 > Fixed load fail when fog ON
#  v 1.04 - 2012.01.10 > Fixed fog movement y bug
#  v 1.05 - 2012.01.14 > Fixed the positive sign on some Regular Expressions
#  v 1.06 - 2012.01.15 > Fixed the Regular Expressions problem with "" and “”
#  v 1.07 - 2012.01.15 > Fixed fog position in maps with loop
#------------------------------------------------------------------------------
#  This script allows to add varied of effects to the maps. Fos are picutres
# placed above the player layer and loops. Differently from pictures the fog
# follows the map movement instead of the screen (this behavior can be changed)
# You can add various fogs to the map.
#------------------------------------------------------------------------------
# Compatibility
#   Requires the script 'Victor Engine - Basic Module' v 1.09 or higher
#
# * Alias methods (Default)
#   class Game_Screen
#     def initialize
#     def clear
#     def update
#
#   class Game_Map
#     def setup(map_id)
#     def scroll_down(distance)
#     def scroll_left(distance)
#     def scroll_right(distance)
#     def scroll_up(distance)
#
#   class Spriteset_Map
#     def initialize
#     def dispose
#     def update
#
# * Alias methods (Basic Module)
#   class Game_Interpreter
#     def comment_call
#
#------------------------------------------------------------------------------
# Instructions:
#  To instal the script, open you script editor and paste this script on
#  a new section on bellow the Materials section. This script must also
#  be bellow the script 'Victor Engine - Basic'
#  The fogs must be placed on the folder "Graphics/Fogs". Create a folder
#  named "Fogs" on the Graphics folder.
#
#------------------------------------------------------------------------------
# Maps and Comment calls note tags:
#  Tags to be used on the Maps note box in the database or in events
#  comment box, works like a script call
#
#  <fog effect>
#  settings
#  </fog effect>
#   Create a fog effect on the map, add the following values to the info
#   the ID and name must be added, other values are optional.
#     id: x      : fog ID
#     name: "x"  : fog graphic filename ("filename")
#     opacity: x : fog opacity (0-255)
#     move: x    : fog screen movement (32 = fog follows the map)
#     zoom: x    : fog zoom (100 = default size)
#     hue: x     : fog hue (0-360)
#     blend: x   : fog blend type (0: normal, 1: add, 2: subtract)
#     depth: x   : fog Z axis (300 = default value)
#
#  <fog opacity id: o, d>
#   This tag allows to change the fog opacity gradually
#     id : fog ID
#     o  : new opacity (0-255)
#     d  : wait until complete change (60 frames = 1 second)
#
#  <fog move id: x, y>
#   This tag adds fog continuous movement
#     id : fog ID
#     x  : horizontal movement, can be positive or negative
#     y  : vertical movement, can be positive or negative
#
#  <fog  tone id: r, g, b, y, d>
#   This tag allows to change the fog opacity gradually
#     id : fog ID
#     r  : red tone   (0-255, can be negative)
#     g  : green tone (0-255, can be negative)
#     b  : blue tone  (0-255, can be negative)
#     y  : gray tone  (0-255)
#     d  : wait until complete change (60 frames = 1 second)
#
#------------------------------------------------------------------------------
# Additional instructions:
#
#   Map note tags commands are called right when enters the map, comment calls
#   are called during the event process.
#
#==============================================================================

#==============================================================================
# ** Victor Engine
#------------------------------------------------------------------------------
#   Setting module for the Victor Engine
#==============================================================================

module Victor_Engine
  #--------------------------------------------------------------------------
  # * Set fogs visibility on battle
  #    When true, fogs are visible on battle
  #--------------------------------------------------------------------------
  VE_BATTLE_FOGS = false
  #--------------------------------------------------------------------------
  # * required
  #   This method checks for the existance of the basic module and other
  #   VE scripts required for this script to work, don't edit this
  #--------------------------------------------------------------------------
  def self.required(name, req, version, type = nil)
    if !$imported[:ve_basic_module]
      msg = "The script '%s' requires the script\n"
      msg += "'VE - Basic Module' v%s or higher above it to work properly\n"
      msg += "Go to http://victorscripts.wordpress.com/ to download this script."
      msgbox(sprintf(msg, self.script_name(script), version))
      exit
    else
      self.required_script(name, req, version, type)
    end
  end
  #--------------------------------------------------------------------------
  # * script_name
  #   Get the script name base on the imported value, don't edit this
  #--------------------------------------------------------------------------
  def self.script_name(name, ext = "VE")
    name = name.to_s.gsub("_", " ").upcase.split
    name.collect! {|char| char == ext ? "#{char} -" : char.capitalize }
    name.join(" ")
  end
end

$imported ||= {}
$imported[:ve_fog_effects] = 1.07
Victor_Engine.required(:ve_fog_effects, :ve_basic_module, 1.09, :above)
#==============================================================================
# ** Game_Screen
#------------------------------------------------------------------------------
#  This class handles screen maintenance data, such as change in color tone,
# flashes, etc. It's used within the Game_Map and Game_Troop classes.
#==============================================================================

class Game_Screen
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :fogs
  #--------------------------------------------------------------------------
  # * Alias method: initialize
  #--------------------------------------------------------------------------
  alias :initialize_ve_fog_effects :initialize
  def initialize
    @fogs = Game_Fogs.new
    initialize_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * Alias method: clear
  #--------------------------------------------------------------------------
  alias :clear_ve_fog_effects :clear
  def clear
    clear_ve_fog_effects
    clear_fogs
  end
  #--------------------------------------------------------------------------
  # * Alias method: update
  #--------------------------------------------------------------------------
  alias :update_ve_fog_effects :update
  def update
    update_ve_fog_effects
    update_fogs
  end
  #--------------------------------------------------------------------------
  # * New method: fogs
  #--------------------------------------------------------------------------
  def fogs
    @fogs ||= Game_Fogs.new
  end
  #--------------------------------------------------------------------------
  # * New method: clear_fogs
  #--------------------------------------------------------------------------
  def clear_fogs
    fogs.each {|fog| fog.erase }
  end
  #--------------------------------------------------------------------------
  # * New method: update_fogs
  #--------------------------------------------------------------------------
  def update_fogs
    fogs.each {|fog| fog.update }
  end
  #--------------------------------------------------------------------------
  # * New method: create_fog
  #--------------------------------------------------------------------------
  def create_fog(*args)
    fogs[args.first].show(*args)
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_move
  #--------------------------------------------------------------------------
  def set_fog_move(id, sx, sy)
    fogs[id].start_movement(sx, sy)
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_tone
  #--------------------------------------------------------------------------
  def set_fog_tone(id, red, green, blue, gray, duration = 0)
    tone = Tone.new(red, green, blue, gray)
    fogs[id].start_tone_change(tone, duration)
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_opacity
  #--------------------------------------------------------------------------
  def set_fog_opacity(id, opacity, duration = 0)
    fogs[id].start_opacity_change(opacity, duration)
  end
end

#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
#  This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :fog_x
  attr_reader   :fog_y
  #--------------------------------------------------------------------------
  # * Alias method: setup
  #--------------------------------------------------------------------------
  alias :setup_ve_fog_effects :setup
  def setup(map_id)
    setup_ve_fog_effects(map_id)
    setup_fogs_effect
  end
  #--------------------------------------------------------------------------
  # * Alias method: scroll_down
  #--------------------------------------------------------------------------
  alias :scroll_down_ve_fog_effects :scroll_down
  def scroll_down(distance)
    last_y = @display_y
    scroll_down_ve_fog_effects(distance)
    @fog_y += loop_vertical? ? distance : @display_y - last_y
  end
  #--------------------------------------------------------------------------
  # * Alias method: scroll_left
  #--------------------------------------------------------------------------
  alias :scroll_left_ve_fog_effects :scroll_left
  def scroll_left(distance)
    last_x = @display_x
    scroll_left_ve_fog_effects(distance)
    @fog_x += loop_horizontal? ? -distance : @display_x - last_x
  end
  #--------------------------------------------------------------------------
  # * Alias method: scroll_right
  #--------------------------------------------------------------------------
  alias :scroll_right_ve_fog_effects :scroll_right
  def scroll_right(distance)
    last_x = @display_x
    scroll_right_ve_fog_effects(distance)
    @fog_x += loop_horizontal? ? distance : @display_x - last_x
  end
  #--------------------------------------------------------------------------
  # * Alias method: scroll_up
  #--------------------------------------------------------------------------
  alias :scroll_up_ve_fog_effects :scroll_up
  def scroll_up(distance)
    last_y = @display_y
    scroll_up_ve_fog_effects(distance)
    @fog_y += loop_vertical? ?  -distance : @display_y - last_y
  end
  #--------------------------------------------------------------------------
  # * New method: setup_fogs_effect
  #--------------------------------------------------------------------------
  def setup_fogs_effect
    @fog_x = 0
    @fog_y = 0
    create_fog(note)
    set_fog_opacity(note)
    set_fog_move(note)
    set_fog_tone(note)
  end
  #--------------------------------------------------------------------------
  # * New method: create_fog
  #--------------------------------------------------------------------------
  def create_fog(note)
    regexp = /<FOG EFFECT>([^><]*)<\/FOG EFFECT>/im
    note.scan(regexp) { setup_fog($1) }
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_opacity
  #--------------------------------------------------------------------------
  def set_fog_opacity(note)
    regexp = /<FOG OPACITY (\d+): (\d+) *, *(\d+)>/i
    note.scan(regexp) do  |id, o, d|
      @screen.set_fog_opacity(id.to_i, o.to_i, d.to_i)
    end
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_move
  #--------------------------------------------------------------------------
  def set_fog_move(note)
    regexp = /<FOG MOVE (\d+): ([+-]?\d+) *, *([+-]?\d+)>/i
    note.scan(regexp) do |id, sx, sy|
      @screen.set_fog_move(id.to_i, sx.to_i, sy.to_i)
    end
  end
  #--------------------------------------------------------------------------
  # * New method: set_fog_tone
  #--------------------------------------------------------------------------
  def set_fog_tone(note)
    values = "(\\d+) *, *(\\d+) *, *(\\d+) *, *(\\d+)(?: *, *(\\d+))?"
    regexp = /<FOG TONE (\d+): #{values}>/i
    note.scan(regexp) do |i, r, g, b, a, d|
      info = [i.to_i, r.to_i, g.to_i, b.to_i, a.to_i, d ? d.to_i : 0]
      @screen.set_fog_tone(*info)
    end
  end
  #--------------------------------------------------------------------------
  # * New method: setup_fog
  #--------------------------------------------------------------------------
  def setup_fog(info)
    id    = info =~ /ID: (\d+)/i       ? $1.to_i : 0
    name  = info =~ /NAME: #{get_filename}/i  ? $1.dup  : ""
    op    = info =~ /OPACITY: (\d+)/i  ? $1.to_i : 192
    move  = info =~ /MOVE: (\d+)/i     ? $1.to_i : 32
    zoom  = info =~ /ZOOM: (\d+)/i     ? $1.to_f : 100.0
    hue   = info =~ /HUE: (\d+)/i      ? $1.to_i : 0
    blend = info =~ /BLEND: (\d+)/i    ? $1.to_i : 0
    depth = info =~ /DEPTH: ([+-]?\d+)/i ? $1.to_i : 300
    @screen.create_fog(id, name, op, move, zoom, hue, blend, depth)
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Alias method: comment_call
  #--------------------------------------------------------------------------
  alias :comment_call_ve_fog_effects :comment_call
  def comment_call
    call_create_fog_effect
    comment_call_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * New method: call_create_fog_effect
  #--------------------------------------------------------------------------
  def call_create_fog_effect
    $game_map.create_fog(note)
    $game_map.set_fog_opacity(note)
    $game_map.set_fog_move(note)
    $game_map.set_fog_tone(note)
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é
# usada internamente pela classe Scene_Map.
#==============================================================================

class Spriteset_Map
  #--------------------------------------------------------------------------
  # * Alias method: initialize
  #--------------------------------------------------------------------------
  alias :initialize_ve_fog_effects :initialize
  def initialize
    create_fogs
    initialize_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * Alias method: dispose
  #--------------------------------------------------------------------------
  alias :dispose_ve_fog_effects :dispose
  def dispose
    dispose_ve_fog_effects
    dispose_fogs
  end
  #--------------------------------------------------------------------------
  # * Alias method: update
  #--------------------------------------------------------------------------
  alias :update_ve_fog_effects :update
  def update
    update_ve_fog_effects
    update_fogs
  end
  #--------------------------------------------------------------------------
  # * New method: create_fogs
  #--------------------------------------------------------------------------
  def create_fogs
    @fog_sprites = []
  end
  #--------------------------------------------------------------------------
  # * New method: dispose_fogs
  #--------------------------------------------------------------------------
  def dispose_fogs
    if @fog_sprites
      @fog_sprites.compact.each {|sprite| sprite.dispose }
      @fog_sprites.clear
    end
  end
  #--------------------------------------------------------------------------
  # * New method: update_fogs
  #--------------------------------------------------------------------------
  def update_fogs
    $game_map.screen.fogs.each do |fog|
      @fog_sprites[fog.id] ||= Sprite_Fog.new(@viewport1, fog)
      @fog_sprites[fog.id].update
    end
  end
end

#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  This class brings together battle screen sprites. It's used within the
# Scene_Battle class.
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Alias method: initialize
  #--------------------------------------------------------------------------
  alias :initialize_ve_fog_effects :initialize
  def initialize
    create_fogs if VE_BATTLE_FOGS
    initialize_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * Alias method: dispose
  #--------------------------------------------------------------------------
  alias :dispose_ve_fog_effects :dispose
  def dispose
    dispose_fogs if VE_BATTLE_FOGS
    dispose_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * Alias method: update
  #--------------------------------------------------------------------------
  alias :update_ve_fog_effects :update
  def update
    update_fogs if VE_BATTLE_FOGS
    update_ve_fog_effects
  end
  #--------------------------------------------------------------------------
  # * New method: create_fogs
  #--------------------------------------------------------------------------
  def create_fogs
    @fog_sprites = []
  end
  #--------------------------------------------------------------------------
  # * New method: dispose_fogs
  #--------------------------------------------------------------------------
  def dispose_fogs
    if @fog_sprite
      $game_map.screen.fogs.clear
      @fog_sprites.compact.each {|sprite| sprite.dispose }
      @fog_sprites.clear
    end
  end
  #--------------------------------------------------------------------------
  # * New method: update_fogs
  #--------------------------------------------------------------------------
  def update_fogs
    $game_map.screen.fogs.each do |fog|
      @fog_sprites[fog.id] ||= Sprite_Fog.new(@viewport1, fog)
      @fog_sprites[fog.id].update
    end
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================

class Scene_Map
  #--------------------------------------------------------------------------
  # * Alias method: pre_transfer
  #--------------------------------------------------------------------------
  alias :pre_transfer_ve_fog_effects :pre_transfer
  def pre_transfer
    pre_transfer_ve_fog_effects
    if $game_player.new_map_id != $game_map.map_id
      @spriteset.dispose_fogs
      $game_map.screen.clear_fogs
      $game_map.screen.fogs.clear
    end
  end
end

#==============================================================================
# ** Game_Fog
#------------------------------------------------------------------------------
#  This class handles fog data. This class is used within the Game_Fogs class.
#==============================================================================

class Game_Fog
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :id
  attr_reader   :name
  attr_reader   :hue
  attr_reader   :sx
  attr_reader   :sy
  attr_reader   :ox
  attr_reader   :oy
  attr_reader   :depth
  attr_reader   :move
  attr_reader   :zoom_x
  attr_reader   :zoom_y
  attr_reader   :opacity
  attr_reader   :blend_type
  attr_reader   :tone
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize(id)
    @id = id
    init_basic
    init_target
    init_tone
  end
  #--------------------------------------------------------------------------
  # * init_basic
  #--------------------------------------------------------------------------
  def init_basic
    @name    = ""
    @depth   = 300
    @zoom_x  = 1.0
    @zoom_y  = 1.0
    @move    = 32
    @opacity = 255.0
    @blend_type = 1
    @sx  = 0
    @sy  = 0
    @ox  = 0
    @oy  = 0
    @hue = 0
    @opacity_duration = 0
    @tone_duration    = 0
  end
  #--------------------------------------------------------------------------
  # * init_target
  #--------------------------------------------------------------------------
  def init_target
    @target_x = @x
    @target_y = @y
    @target_zoom_x  = @zoom_x
    @target_zoom_y  = @zoom_y
    @target_opacity = @opacity
  end
  #--------------------------------------------------------------------------
  # * init_tone
  #--------------------------------------------------------------------------
  def init_tone
    @tone        = Tone.new
    @tone_target = Tone.new
    @tone_duration = 0
  end
  #--------------------------------------------------------------------------
  # * show
  #--------------------------------------------------------------------------
  def show(id, name, opacity, move, zoom, hue, blend, depth)
    @id      = id
    @name    = name
    @move    = move
    @zoom_x  = zoom.to_f
    @zoom_y  = zoom.to_f
    @depth   = depth
    @opacity = opacity.to_f
    @blend_type = blend
    init_target
    init_tone
  end
  #--------------------------------------------------------------------------
  # * start_movement
  #--------------------------------------------------------------------------
  def start_movement(sx, sy)
    @sx = sx
    @sy = sy
  end
  #--------------------------------------------------------------------------
  # * start_tone_change
  #--------------------------------------------------------------------------
  def start_tone_change(tone, duration)
    @tone_target   = tone.clone
    @tone_duration = [duration.to_i, 0].max
    @tone = @tone_target.clone if @tone_duration == 0
  end
  #--------------------------------------------------------------------------
  # * start_opacity_change
  #--------------------------------------------------------------------------
  def start_opacity_change(opacity, duration)
    @opacity_target   = opacity
    @opacity_duration = [duration.to_i, 0].max
    @opacity = @opacity_target if @opacity_duration == 0
  end
  #--------------------------------------------------------------------------
  # * erase
  #--------------------------------------------------------------------------
  def erase
    @name = ""
  end
  #--------------------------------------------------------------------------
  # * update
  #--------------------------------------------------------------------------
  def update
    update_move
    update_tone
    update_opacity
  end
  #--------------------------------------------------------------------------
  # * update_move
  #--------------------------------------------------------------------------
  def update_move
    @ox -= @sx / 16.0
    @oy -= @sy / 16.0
  end
  #--------------------------------------------------------------------------
  # * update_opacity
  #--------------------------------------------------------------------------
  def update_opacity
    return if @opacity_duration == 0
    d = @opacity_duration
    @opacity = (@opacity * (d - 1) + @opacity_target) / d
    @opacity_duration -= 1
  end
  #--------------------------------------------------------------------------
  # * update_tone
  #--------------------------------------------------------------------------
  def update_tone
    return if @tone_duration == 0
    d = @tone_duration
    @tone.red   = (@tone.red   * (d - 1) + @tone_target.red)   / d
    @tone.green = (@tone.green * (d - 1) + @tone_target.green) / d
    @tone.blue  = (@tone.blue  * (d - 1) + @tone_target.blue)  / d
    @tone.gray  = (@tone.gray  * (d - 1) + @tone_target.gray)  / d
    @tone_duration -= 1
  end
end

#==============================================================================
# ** Game_Fogs
#------------------------------------------------------------------------------
#  This class handles fogs. This class is used within the Game_Screen class.
#==============================================================================

class Game_Fogs
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # * []
  #--------------------------------------------------------------------------
  def [](number)
    @data[number] ||= Game_Fog.new(number)
  end
  #--------------------------------------------------------------------------
  # * each
  #--------------------------------------------------------------------------
  def each
    @data.compact.each {|fog| yield fog } if block_given?
  end
  #--------------------------------------------------------------------------
  # * clear
  #--------------------------------------------------------------------------
  def clear
    @data.clear
  end
end

#==============================================================================
# ** Sprite_Fog
#------------------------------------------------------------------------------
#  This sprite is used to display fgos. It observes a instance of the
# Game_Fog class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Fog < Plane
  #--------------------------------------------------------------------------
  # * initialize
  #--------------------------------------------------------------------------
  def initialize(viewport, fog)
    super(viewport)
    @fog = fog
    @x = 0
    @y = 0
    @old_x = $game_map.round_x($game_map.display_x)
    @old_y = $game_map.round_y($game_map.display_y)
    update
  end
  #--------------------------------------------------------------------------
  # * dispose
  #--------------------------------------------------------------------------
  def dispose
    bitmap.dispose if bitmap
    super
  end
  #--------------------------------------------------------------------------
  # * update
  #--------------------------------------------------------------------------
  def update
    update_bitmap
    update_position
    update_zoom
    update_other
  end
  #--------------------------------------------------------------------------
  # * update bitmap
  #--------------------------------------------------------------------------
  def update_bitmap
    if @fog_name != @fog.name
      self.bitmap = Cache.picture(@fog.name)
      @fog_name = @fog.name.dup
    end
  end
  #--------------------------------------------------------------------------
  # * update_position
  #--------------------------------------------------------------------------
  def update_position
    self.ox = $game_map.fog_x * @fog.move + @fog.ox
    self.oy = $game_map.fog_y * @fog.move + @fog.oy
    self.z  = @fog.depth
  end
  #--------------------------------------------------------------------------
  # * update_zoom
  #--------------------------------------------------------------------------
  def update_zoom
    self.zoom_x = @fog.zoom_x / 100.0
    self.zoom_y = @fog.zoom_y / 100.0
  end
  #--------------------------------------------------------------------------
  # * update_other
  #--------------------------------------------------------------------------
  def update_other
    self.opacity    = @fog.opacity
    self.blend_type = @fog.blend_type
    self.tone.set(@fog.tone)
  end
end

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
That's awesome man! Thanks a lot for that. Lemme just get it all set up so it's up and running for Demo 2.

****
Rep:
Level 71
No problem.  :)

***
if you try & edit my custom title i will hack you
Rep:
Level 66
Im PRO get used to it!
Looks great i will have to play the demo!



Spoiler for projects:
God of Darkness
Devils nest
Unnamed Games(2)
The CREW experience


****
Raped by DrSword
Rep:
Level 83
Dance with the enemy
Contestant - GIAW 10Contestant - GIAW 9
Just downloaded the demo. Gonna play it now.


****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
I seriously apologize for the lack of updates on the game. Sadly, this isn't much of an update, but I wanted to just say that the game is very much in production and I want to have a demo out as soon as possible. My schedule however, filled with Guild Wars and high school (plus being on the football team), has become difficult to find time to work on Witchtooth. At the most, the second demo will be out in a month, that being said I will try to get more screenshots/gameplay out in between this time.


PS: I bought Torchlight 2...hopefully that doesn't take up too much time.  :V

*
*crack*
Rep:
Level 64
2012 Most Unsung Member2012 Best NewbieFor frequently finding and reporting spam and spam bots
I still haven't played it, not really sure if I should. I'll probably LP it when it's complete and LP's kinda suck when the player already knows what's gonna happen.

I do however have something for you. I decided to loop your music for you; no longer will they have to restart after completion :)
I can't really do that to midi files without converting them to ogg. So I guess it's up to you if you're willing to compensate file size for smoother sounds  :-\
All of my scripts are totally free to use for commercial use. You don't need to ask me for permission. I'm too lazy to update every single script post I ever made with this addendum. So ignore whatever "rule" I posted there. :)

All scripts can be found at: https://pastebin.com/u/diamondandplatinum3

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
Oh that's amazing dude! So many helpful fellas on the RMRK. Thanks a lot for that.

***
You pie feeders!
Rep:
Level 68
Everyone... Actually Everyone hates me :)
2012 Biggest Drama Whore
Blah!!! nerdgasm, though the first game was great i look forward to this, and again i'm available for whatever help you may need. (except for scripting)
Final Statement: I chowder5lock am a dipshit and MA is a pretty cool dude.

*
Rep:
Level 82
GIAW 14: 1st Place (Easy Mode)2013 Most Promising Project2013 Best RPG Maker User (Programming)2013 Project of the YearParticipant - GIAW 11Bronze - GIAW 10
After meandering through the available demonstration, I believe that you are off to a good start on the sequel! I played through most of the first Witchtooth, although I never completed the game (something that I will correct eventually).

The mapping is solid, and while most areas do feel boxy and rigid, one can sense that time was taken to make everything feel organic and populated. The attention to detail is also evident in the many secret chests and items available throughout the game. Toss several more difficult to find secrets in, please! As for the music selection, the songs do tie in nicely to the areas and scenes, but the volume was louder than I enjoy.

There is quite a bit of dialog to wade through and very little action at this point, but considering the span of time that has passed in the story and how early in production the game is, this is understandable. I do not agree with starting the characters from level one as well as with next to no gear when they have clearly adventured in the past. But overall, I believe that you are on the right track!


I did notice some errors along the way, and have noted them below.



[ General ]
-- Color used for the hi-lighted selection within the menu system is extremely difficult to see at times.
-- After returning from witch island, Lin does not join the party.
-- After returning from witch island, ocean background sound continues to play.


[ Cairesville ]

< Bar >
- <Minor>
-- When facing candle holders in the bar and pressing the action button, the light briefly flickers.

- <Minor> : ( Before Image - After Image )
-- Rippul virus has infected the patrons of the bar after 'tipping' the street performer.

< Salvadore Residence >
- <Minor> : ( Image of Issue )
-- Sophie doppelganger after returning from witch island.


[ Dreamland Knights' House of Magical Paradise ]
- <Minor> : ( Image of Issue )
-- Passage settings incorrect.


[ Mine ]
- <Minor> : ( Image of Issue )
-- Passage settings incorrect.


[ Witch Island ]

< Beach Tent >
- <Minor> : ( Image of Issue )
-- Passage settings incorrect.

- <Minor> : ( Image of Issue )
-- Passage settings incorrect.


< Witch Village >
- <Minor> : ( Image of Issue )
-- Village soundtrack abruptly restarts upon entering and exiting pictured house.


< Sacred Cave >
- <Minor> : ( Image of Issue )
-- Passage settings incorrect.

- <Minor> : ( Image of Issue )
-- Passage settings incorrect.

- <Minor> : ( Image of Issue )
-- Passage settings incorrect.

UPDATED 05-29-14


IS YOUR PROJECT OPTIMIZED?
UPDATED 07/04/15 - v2.5

RPG MAKER TOOLBOX
UPDATED 07/04/15 - v1.5

***
Rep:
Level 77
RMRK Junior
Protip: Don't put passable tiles on roof/wall tiles, and set the candles to "Direction Fix".

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
Yeah I discovered the problem with the wall tiles and stuff, I have to go back and find them all.

Thanks a lot for that Exhydra, I'll get that worked out now. Thanks for the images too, that REALLY helps me out.

Pretty much 100% of those passability errors have been fixed, I just haven't had the game updated, I should do that. But, about the Rippul virus and the Sophie clone, it's probably me messing up my switches like I always do. I'll get those worked out right away along with the audio.
It really wasn't specified much, nor shown, but Lin will not fight for you, but she is following. I'll add a small cutscene right after getting off the boat from the Witch Island that'll clarify all of this.
If there is a way to make someone follow the party, but not actually be IN the party, that'd be nice.
« Last Edit: October 13, 2012, 10:56:33 PM by hiromu656 »

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
My laptop has been suffering from some serious problems. Because of this I've put in little to no progress onto the game. When I get everything settled out I will get a bit more stuff out, such as the videos and screenshots I promised.
My high school football career is officially over so I'll have a ton of time on my hands. So apologies for the lack of updates, I'm working on it.

****
Raped by DrSword
Rep:
Level 83
Dance with the enemy
Contestant - GIAW 10Contestant - GIAW 9
I'm way too excited. I'm actually as excited for this as I am with Pokemon games or Zelda games XD


*
Rep:
Level 88
&& Lime
Winner - 2011 Spring Project of the Season
I'm loving the progress! Look forward to when this is completed. Also, make sure you back up your projects if your computer is acting touchy. I've lost a few substantial projects (one was posted here, too!) that way.


hey, pasta!

i'm not okay.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
I'm pretty sure all types of problems have been solved with my laptop. Previously, it simply did not turn on, leaving my game sitting there for at least a month. Now I've got it fixed and the game backed up on my home computer. I can finally do something.
Sorry again! I've been making all these posts of stuff no one really wants to hear, I'll finally get working on the game.

I'm going to be setting myself some deadlines for things I want to have posted/released. I realized that when I don't create deadlines for myself, my procrastinating ways truly kick in. I'll get back on when I'd like to showcase some more of the game really soon.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
On Sunday, (Nov. 11) I'll be uploading a new gameplay video and posting it here. Screenshots are kinda boring.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
<a href="http://www.youtube.com/watch?v=xizq09CKB0w" target="_blank">http://www.youtube.com/watch?v=xizq09CKB0w</a>
Here is a bit more Gameplay Footage. It's not much of a trailer, but it showcases one of the game's early zones.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
The current demo for the game is awfully buggy and I've been way too lazy when it comes to updating it. So this week I'll be releasing an updated and extended demo (with an hour or so of additional content). Once the demo is fixed I'll be able to get more people to review it without getting all the same feedback about the glitches.

The game is progressing well and I plan on putting up some new screenshots and/or videos once I've built a couple more maps.

Yup.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
The second version of the demo is done, you can get it here:
http://www.mediafire.com/?7zqti8dxcudw2c2

Again, this adds another hour to the original demo and fixes most if not all of its bugs.

If anything is found please tell me about them, but what I'm really looking for is the difficulty factor, since its hard to measure difficulty when you're the one who created the game.

An extractor (such as WinRar/7zip) maybe be needed
« Last Edit: December 20, 2012, 04:04:56 AM by hiromu656 »

**
Rep: +0/-0Level 57
RMRK Junior
in second demo version, I think I found a bug, when I finally proceed through the bridge, instead of pay up, I beat up two bandits, then I head to cairesville heal up and back to bridge, they're still there asking to pay up, this time I pay up, but cannot proceed to Ellrock city.

----------
And it would be nice to have a quest log too.
« Last Edit: January 11, 2013, 09:29:50 AM by Fanatik007 »

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
That must be a bug, because for this demo I tried to seal that bridge off... And I'm surprised you could beat them.

I guess I'll be updating the demo again. I'm thinking about adding a quest log, but not a traditional one. We'll see.
« Last Edit: January 11, 2013, 12:24:36 PM by hiromu656 »

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
I haven't posted anything for Witchtooth 2 in a long time... here's why:

When I created Witchtooth 1, it was incredibly rushed, mainly because I didn't have much time to work on it and releasing it was more of a "look i finished a game" type of thing than it being something I was truly proud of. It had numerous flaws, one of which was its linearity, which I slowly see Witchtooth 2 falling into that same hole. A sequel was never what I truly wanted for the game. I'm not highly motivated to continue a story with these specific characters, or with similar gameplay. I'm on the fence on whether or not I'll try to finish this game. If I did continue at the rate I have been developing the game, I'll hit another roadblock, College. That would make development last even longer.
I want to continue using RPG Maker, but with my time constraints I want to make a game worth the effort. Witchtooth 2 may not be it. I have something else in my head that I'm really excited about working on, but that would kick Witchtooth 2 aside if I decided to work on it.

So for now I'm putting Witchtooth 2 into hiatus until I decide what I want to do with it. I'm sure I'll come back to the witchtooth "universe" with a future game, but for now I'm not motivated to work on this.

I sincerely apologize to the few looking forward to its completion. 

***
You pie feeders!
Rep:
Level 68
Everyone... Actually Everyone hates me :)
2012 Biggest Drama Whore
You haven't disappointed me, I understand the rushed feeling quite well. I'm Sure others understand too. Take your time and Build the Game you want to, not the one everybody tells you to. otherwise your just a mindless producer. Good Luck to you!
Final Statement: I chowder5lock am a dipshit and MA is a pretty cool dude.

****
Rep:
Level 76
Praise the Sun (Arcana)
GIAW 14: 1st Place (Hard Mode)
I think it's safe to say, I'm done with this project. I've got something else I'd rather work on.

Could a mod please move this? (to abandoned)