XP Wave Effect
#1
XP Wave Effect
por zecomeia

Introduction

Modifications in Sprite class to use the wave effect of RGSS2.

Features

* Muito fiel ao efeito do RMVX


Screen Shot

[Image: xpeaveeffectss.png]

Download

Demo

Instructions

* Paste the script up of main;
* Use how on RGSS2, if don't know, search for RGSS reference manual in help file of RMVX.

Script

Code:
#========================================
# XP Wave Effect
#----------------------------------------
#by:      zecomeia
#date:    01/03/2010
#for:     RGSS
#version: 1.0
#www.colmeia-do-ze.blogspot.com
#----------------------------------------
=begin
Reproduction of the VX's wave effect
(see the help file of the RPGMaker VX
in the RGSS manual reference topic)
=end

#==============#
# Sprite class #
#==============#
class Sprite
  
  include Math
  
  attr_accessor   :wave_amp
  attr_accessor   :wave_length
  attr_accessor   :wave_speed
  attr_accessor   :wave_phase
  attr_accessor   :temp_bitmap
  
  alias initialize default_initialize rescue nil
  alias default_initialize initialize
  def initialize(viewport=nil)
    @wave_amp = 0
    @wave_length = 180
    @wave_speed = 360
    @wave_phase = 0.0
    default_initialize(viewport)
    @temp_bitmap = nil
  end
  
  alias update default_update rescue nil
  alias default_update update  
  def update()
    # the wave effect only works if wave_amp
    # propertie is a number more than zero
    wave_effect if @wave_amp > 0
    default_update()
  end
  
  # Return the width of image, because when use
  # obj.bitmap.width the value will be more than
  # the original value(because effect)
  def width()
    return (self.bitmap.width - @wave_amp * 2)
  end
    
  #---------------
  # Wave Effect
  #---------------
  def wave_effect()
    return if self.bitmap.nil?
    @temp_bitmap = self.bitmap if @temp_bitmap.nil?
    cw = @temp_bitmap.width + (@wave_amp * 2)
    ch = @temp_bitmap.height
    # Follow the VX wave effect, each horizontal line
    # has 8 pixel of height. This device provides less
    # lag in game.
    divisions = @temp_bitmap.height / 8
    divisions += 1 if @temp_bitmap.height % 8 != 0
    self.bitmap = Bitmap.new(cw, ch)
    for i in 0..divisions
      x = @wave_amp * Math.sin(i * 2 * PI / (@wave_length / 8).to_i + Math.deg_to_rad(@wave_phase))
      src_rect = Rect.new(0, i*8, @temp_bitmap.width, 8)
      dest_rect = Rect.new(@wave_amp + x, i * 8, @temp_bitmap.width, 8)
      self.bitmap.stretch_blt(dest_rect, @temp_bitmap, src_rect)
    end
    # frame rate: VX = 60 | XP = 40
    # wave speed compatibility VX to XP: wave_speed * 60/40
    # then: wave_speed * 1.5
    @wave_phase += @wave_speed * 1.5 / @wave_length
    @wave_phase -= 360 if @wave_phase > 360
    @wave_phase += 360 if @wave_phase < 0
  end
  
end

#=============#
# module Math #
#=============#
module Math
  
  #-------------------------------
  # Conversion Degree to Radian
  #-------------------------------
  def Math.deg_to_rad(deg)
    return (deg * PI) / 180.0
  end
  
end

Credits and Thanks
zecomeia

[Image: 88x31.png]

Scripts RGSS, Resources, Tutorials and Translations by zecomeia is licensed under a
Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.
Permissions beyond the scope of this license may be available at Santuário RPG Maker
Reply }


Messages In This Thread
XP Wave Effect - by zecomeia - 04-03-2010, 12:14 AM
XP Wave Effect - by PK8 - 04-03-2010, 12:15 AM
XP Wave Effect - by zecomeia - 04-03-2010, 02:30 PM
XP Wave Effect - by EJlol - 04-04-2010, 12:35 PM
XP Wave Effect - by Ace - 04-04-2010, 02:09 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
   Breath Effect LiTTleDRAgo 0 4,270 05-15-2017, 09:05 AM
Last Post: LiTTleDRAgo
   ATOA Status Effect Pops DerVVulfman 6 12,301 01-29-2016, 06:30 AM
Last Post: Lightness
   Modify Battler Collapse Effect PK8 2 11,100 04-03-2012, 03:04 AM
Last Post: PK8



Users browsing this thread: 1 Guest(s)