10-27-2009, 11:55 PM
(This post was last modified: 09-02-2024, 05:26 PM by DerVVulfman.)
Script
Weather Types:
# 1 - rain
# 2 - storm
# 3 - snow
# 4 - hail
# 5 - rain with thunder and lightning
# 6 - falling leaves (autumn)
# 7 - blowing leaves (autumn)
# 8 - swirling leaves (autumn)
# 9 - falling leaves (green)
# 10 - cherry blossom (sakura) petals
# 11 - rose petals
# 12 - feathers
# 13 - blood rain
# 14 - sparkles
# 15 - user defined
# 16 - blowing snow
# 17 - meteor shower
# 18 - falling ash
# 19 - bubbles
# 20 - bubbles 2
# 21 - sparkles up
Instructions:
You can start and stop weather using the original event commands, however, you can start stronger and more varied weather using:
Where type is the type of weather (see above), strength is how strong it should be (a number between 1 and 50), and duration is how many frames it should take to transition in.
User-defined weather user images imported to the pictures folder. The controls are:
$WEATHER_UPDATE = false - change this one any time you're about to use user-defined weather
$WEATHER_IMAGES = [name, name, ...] - a list of the names of the images, separated by commas.
$WEATHER_X = 0 - the number of pixels the image should move horizontally (positive = right, negative = left)
$WEATHER_Y = 0 - the number of pizels the image should move vertically (positive = down, negative = up)
$WEATHER_FADE = 0 - how much the image should fade each update (0 = no fade, 255 = fade instantly)
$WEATHER_ANIMATED = true (or false) - whether or not each sprite in the weather should cycle between all the available images.
Commercial License:
To use this in a commercial game, I only charge $10 for a single game license for this script. Just enough to make it legal, really. Whenever you're ready, contact me and I'll send you a copy of the license agreement for you to peruse.
Subject to change.
VX Weather Script
Code:
#===========================
# VX Weather Script
# by Ccoa / Jan 15 2008
#===========================
# Weather Types:
# 1 - rain
# 2 - storm
# 3 - snow
# 4 - hail
# 5 - rain with thunder and lightning
# 6 - falling leaves (autumn)
# 7 - blowing leaves (autumn)
# 8 - swirling leaves (autumn)
# 9 - falling leaves (green)
# 10 - cherry blossom (sakura) petals
# 11 - rose petals
# 12 - feathers
# 13 - blood rain
# 14 - sparkles
# 15 - user defined
#
# Weather Power:
# An integer from 0-40. 0 = no weather, 40 = 400 sprites
#
# Usage:
# Create a call script with the following:
# $game_screen.weather(type, power, hue)
#
# Usage of user-defined weather:
# Look at the following globals:
$WEATHER_UPDATE = false # the $WEATHER_IMAGES array has changed, please update
$WEATHER_IMAGES = [] # the array of picture names to use
$WEATHER_X = 0 # the number of pixels the image should move horizontally (positive = right, negative = left)
$WEATHER_Y = 0 # the number of pizels the image should move vertically (positive = down, negative = up)
$WEATHER_FADE = 0 # how much the image should fade each update (0 = no fade, 255 = fade instantly)
$WEATHER_ANIMATED = false # whether or not the image should cycle through all the images
# take these out if you are using my screen resolution script!
HEIGHT = 416
WIDTH = 544
#==============================================================================
# ** Spriteset_Weather
#------------------------------------------------------------------------------
# Weather effect (rain, storm, snow) class. This class is used within the
# Spriteset_Map class.
#==============================================================================
class Spriteset_Weather
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :type
attr_reader :max
attr_reader :ox
attr_reader :oy
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(viewport = nil)
@type = 0
@max = 0
@ox = 0
@oy = 0
@count = 0
@current_pose = []
@info = []
@countarray = []
make_bitmaps
@sprites = []
for i in 1..500
sprite = Sprite.new(viewport)
sprite.visible = false
sprite.opacity = 0
@sprites.push(sprite)
@current_pose.push(0)
@info.push(rand(50))
@countarray.push(rand(15))
end
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
for sprite in @sprites
sprite.dispose
end
@rain_bitmap.dispose
@storm_bitmap.dispose
@snow_bitmap.dispose
@hail_bitmap.dispose
@petal_bitmap.dispose
@blood_rain_bitmap.dispose
for image in @autumn_leaf_bitmaps
image.dispose
end
for image in @green_leaf_bitmaps
image.dispose
end
for image in @rose_bitmaps
image.dispose
end
for image in @feather_bitmaps
image.dispose
end
for image in @sparkle_bitmaps
image.dispose
end
for image in @user_bitmaps
image.dispose
end
$WEATHER_UPDATE = true
end
#--------------------------------------------------------------------------
# * Set weather type
# type : new weather type
#--------------------------------------------------------------------------
def type=(type)
return if @type == type
@type = type
case @type
when 1
bitmap = @rain_bitmap
when 2
bitmap = @storm_bitmap
when 3
bitmap = @snow_bitmap
when 4 # hail
bitmap = @hail_bitmap
when 5 # rain w/ thunder and lightning
bitmap = @rain_bitmap
@thunder = true
when 6 # falling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 7 # blowing autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 8 # swirling autumn leaves
bitmap = @autumn_leaf_bitmaps[0]
when 9 # falling green leaves
bitmap = @green_leaf_bitmaps[0]
when 10 # sakura petals
bitmap = @petal_bitmap
when 11 # rose petals
bitmap = @rose_bitmaps[0]
when 12 # feathers
bitmap = @feather_bitmaps[0]
when 13 # blood rain
bitmap = @blood_rain_bitmap
when 14 # sparkles
bitmap = @sparkle_bitmaps[0]
when 15 # user-defined
bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
when 16 # blowing snow
bitmap = @snow_bitmap
when 17 # meteors
bitmap = @meteor_bitmap
when 18 # falling ash
bitmap = @ash_bitmaps[rand(@ash_bitmaps.size)]
when 19 # bubbles
bitmap = @bubble_bitmaps[rand(@bubble_bitmaps.size)]
when 21 # sparkles up
bitmap = @sparkle_bitmaps[0]
else
bitmap = nil
end
if @type != 5
@thunder = false
end
for i in 0...@sprites.size
sprite = @sprites[i]
sprite.visible = (i <= @max)
if @type == 19
sprite.bitmap = @bubble_bitmaps[rand(@bubble_bitmaps.size)]
elsif @type == 20
sprite.bitmap = @bubble2_bitmaps[rand(@bubble2_bitmaps.size)]
elsif @type == 3
r = rand(@snow_bitmaps.size)
@info[i] = r
sprite.bitmap = @snow_bitmaps[r]
else
sprite.bitmap = bitmap
end
end
end
#--------------------------------------------------------------------------
# * Set starting point X coordinate
# ox : starting point X coordinate
#--------------------------------------------------------------------------
def ox=(ox)
return if @ox == ox;
@ox = ox
for sprite in @sprites
sprite.ox = @ox
end
end
#--------------------------------------------------------------------------
# * Set starting point Y coordinate
# oy : starting point Y coordinate
#--------------------------------------------------------------------------
def oy=(oy)
return if @oy == oy;
@oy = oy
for sprite in @sprites
sprite.oy = @oy
end
end
#--------------------------------------------------------------------------
# * Set maximum number of sprites
# max : maximum number of sprites
#--------------------------------------------------------------------------
def max=(max)
return if @max == max;
@max = [[max, 0].max, 40].min
for i in 1..40
sprite = @sprites[i]
sprite.visible = (i <= @max) if sprite != nil
if @type == 19
sprite.bitmap = @bubble_bitmaps[rand(@bubble_bitmaps.size)]
elsif @type == 20
sprite.bitmap = @bubble2_bitmaps[rand(@bubble2_bitmaps.size)]
elsif @type == 3
r = rand(@snow_bitmaps.size)
@info[i] = r
sprite.bitmap = @snow_bitmaps[r]
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
return if @type == 0
for i in 1..@max
sprite = @sprites[i]
if @type == 1 or @type == 5 or @type == 13 # rain
if sprite.opacity <= 150
if @current_pose[i] == 0
sprite.y += @rain_bitmap.height
sprite.x -= @rain_bitmap.width
if @type == 1 or @type == 5
sprite.bitmap = @rain_splash
else
sprite.bitmap = @blood_rain_splash
end
@current_pose[i] = 1
end
else
if @current_pose[i] == 1
if @type == 1 or @type == 5
sprite.bitmap = @rain_bitmap
else
sprite.bitmap = @blood_rain_bitmap
end
@current_pose[i] = 0
end
sprite.x -= 2
sprite.y += 16
if @thunder and (rand(8000 - @max) == 0)
$game_map.screen.start_flash(Color.new(255, 255, 255, 255), 5)
Audio.se_play("Audio/SE/Thunder1")
end
end
sprite.opacity -= 8
end
if @type == 2 # storm
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if @type == 3 # snow
case @info[i]
when 0 # smallest flake, fall the slowest
sprite.y += 1
when 1
sprite.y += 3
when 2
sprite.y += 5
when 3
sprite.y += 7
end
sprite.opacity -= 3
end
if @type == 4 # hail
sprite.x -= 1
sprite.y += 18
sprite.opacity -= 15
end
if @type == 6 # falling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 1
sprite.y += 1
end
if @type == 7 # blowing autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
sprite.x -= 10
sprite.y += (rand(4) - 2)
end
if @type == 8 # swirling autumn leaves
@count = rand(20)
if @count == 0
sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
end
if @info[i] != 0
if @info[i] >= 1 and @info[i] <= 10
sprite.x -= 3
sprite.y -= 1
elsif @info[i] >= 11 and @info[i] <= 16
sprite.x -= 1
sprite.y -= 2
elsif @info[i] >= 17 and @info[i] <= 20
sprite.y -= 3
elsif @info[i] >= 21 and @info[i] <= 30
sprite.y -= 2
sprite.x += 1
elsif @info[i] >= 31 and @info[i] <= 36
sprite.y -= 1
sprite.x += 3
elsif @info[i] >= 37 and @info[i] <= 40
sprite.x += 5
elsif @info[i] >= 41 and @info[i] <= 46
sprite.y += 1
sprite.x += 3
elsif @info[i] >= 47 and @info[i] <= 58
sprite.y += 2
sprite.x += 1
elsif @info[i] >= 59 and @info[i] <= 64
sprite.y += 3
elsif @info[i] >= 65 and @info[i] <= 70
sprite.x -= 1
sprite.y += 2
elsif @info[i] >= 71 and @info[i] <= 81
sprite.x -= 3
sprite.y += 1
elsif @info[i] >= 82 and @info[i] <= 87
sprite.x -= 5
end
@info[i] = (@info[i] + 1) % 88
else
if rand(200) == 0
@info[i] = 1
end
sprite.x -= 5
sprite.y += 1
end
end
if @type == 9 # falling green leaves
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @green_leaf_bitmaps.size
sprite.bitmap = @green_leaf_bitmaps[@current_pose[i]]
@countarray[i] = rand(15)
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
end
if @type == 10 # sakura petals
if @info[i] < 25
sprite.x -= 1
else
sprite.x += 1
end
@info[i] = (@info[i] + 1) % 50
sprite.y += 1
end
if @type == 11 # rose petals
@count = rand(20)
if @count == 0
sprite.bitmap = @rose_bitmaps[@current_pose[i]]
@current_pose[i] = (@current_pose[i] + 1) % @rose_bitmaps.size
end
if @info[i] % 2 == 0
if @info[i] < 10
sprite.x -= 1
elsif
sprite.x += 1
end
end
sprite.y += 1
end
if @type == 12 # feathers
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @feather_bitmaps.size
sprite.bitmap = @feather_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
if rand(100) == 0
sprite.x -= 1
end
if rand(100) == 0
sprite.y -= 1
end
if @info[i] < 50
if rand(2) == 0
sprite.x -= 1
else
sprite.y -= 1
end
else
if rand(2) == 0
sprite.x += 1
else
sprite.y += 1
end
end
@info[i] = (@info[i] + 1) % 100
end
if @type == 14 # sparkles
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @sparkle_bitmaps.size
sprite.bitmap = @sparkle_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y += 1
sprite.opacity -= 1
end
if @type == 15 # user-defined
if $WEATHER_UPDATE
update_user_defined
$WEATHER_UPDATE = false
end
if $WEATHER_ANIMATED and @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @user_bitmaps.size
sprite.bitmap = @user_bitmaps[@current_pose[i]]
end
sprite.x += $WEATHER_X
sprite.y += $WEATHER_Y
sprite.opacity -= $WEATHER_FADE
end
if @type == 16 # blowing snow
sprite.x -= 10
sprite.y += 6
sprite.opacity -= 4
end
if @type == 17 # meteors
if @countarray[i] > 0
if rand(20) == 0
sprite.bitmap = @impact_bitmap
@countarray[i] = -5
else
sprite.x -= 6
sprite.y += 10
end
else
@countarray[i] += 1
if @countarray[i] == 0
sprite.bitmap = @meteor_bitmap
sprite.opacity = 0
@count_array = 1
end
end
end
if @type == 18 # ash
sprite.y += 2
case @countarray[i] % 3
when 0
sprite.x -= 1
when 1
sprite.x += 1
end
end
if @type == 19 or @type == 20 # bubbles
switch = rand(75) + rand(75) + 1
if @info[i] < switch / 2
sprite.x -= 1
else
sprite.x += 1
end
@info[i] = (@info[i] + 1) % switch
sprite.y -= 1
if switch % 2 == 0
sprite.opacity -= 1
end
end
if @type == 21 # sparkles up
if @countarray[i] == 0
@current_pose[i] = (@current_pose[i] + 1) % @sparkle_bitmaps.size
sprite.bitmap = @sparkle_bitmaps[@current_pose[i]]
end
@countarray[i] = (@countarray[i] + 1) % 15
sprite.y -= 1
sprite.opacity -= 1
end
x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 64 or sprite.x > WIDTH or sprite.x < 0 or sprite.y > HEIGHT or sprite.y < 0
sprite.x = rand(800) - 100 + @ox
sprite.y = rand(600) - 200 + @oy
if [13, 14, 16, 5, 2, 1].include?(@type)
sprite.opacity = rand(100) + 155
else
sprite.opacity = 255
end
end
end
end
def make_bitmaps
color1 = Color.new(255, 255, 255, 255)
color2 = Color.new(255, 255, 255, 128)
@rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
end
@rain_splash = Bitmap.new(8, 5)
@rain_splash.fill_rect(1, 0, 6, 1, color2)
@rain_splash.fill_rect(1, 4, 6, 1, color2)
@rain_splash.fill_rect(0, 1, 1, 3, color2)
@rain_splash.fill_rect(7, 1, 1, 3, color2)
@rain_splash.set_pixel(1, 0, color1)
@rain_splash.set_pixel(0, 1, color1)
@storm_bitmap = Bitmap.new(34, 64)
for i in 0..31
@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
end
@snow_bitmap = Bitmap.new(6, 6)
@snow_bitmap.fill_rect(0, 1, 6, 4, color2)
@snow_bitmap.fill_rect(1, 0, 4, 6, color2)
@snow_bitmap.fill_rect(1, 2, 4, 2, color1)
@snow_bitmap.fill_rect(2, 1, 2, 4, color1)
@sprites = []
@snow_bitmaps = []
color3 = Color.new(255, 255, 255, 204)
@snow_bitmaps[0] = Bitmap.new(3, 3)
@snow_bitmaps[0].fill_rect(0, 0, 3, 3, color2)
@snow_bitmaps[0].fill_rect(0, 1, 3, 1, color3)
@snow_bitmaps[0].fill_rect(1, 0, 1, 3, color3)
@snow_bitmaps[0].set_pixel(1, 1, color1)
@snow_bitmaps[1] = Bitmap.new(4, 4)
@snow_bitmaps[1].fill_rect(0, 1, 4, 2, color2)
@snow_bitmaps[1].fill_rect(1, 0, 2, 4, color2)
@snow_bitmaps[1].fill_rect(1, 1, 2, 2, color1)
@snow_bitmaps[2] = Bitmap.new(5, 5)
@snow_bitmaps[1].fill_rect(0, 1, 5, 3, color3)
@snow_bitmaps[1].fill_rect(1, 0, 3, 5, color3)
@snow_bitmaps[1].fill_rect(1, 1, 3, 3, color2)
@snow_bitmaps[1].fill_rect(2, 1, 3, 1, color1)
@snow_bitmaps[1].fill_rect(1, 2, 1, 3, color1)
@snow_bitmaps[3] = Bitmap.new(7, 7)
@snow_bitmaps[1].fill_rect(1, 1, 5, 5, color3)
@snow_bitmaps[1].fill_rect(2, 0, 7, 3, color3)
@snow_bitmaps[1].fill_rect(0, 2, 3, 7, color3)
@snow_bitmaps[1].fill_rect(2, 1, 5, 3, color2)
@snow_bitmaps[1].fill_rect(1, 2, 3, 5, color2)
@snow_bitmaps[1].fill_rect(2, 2, 3, 3, color1)
@snow_bitmaps[1].fill_rect(3, 1, 5, 1, color1)
@snow_bitmaps[1].fill_rect(1, 3, 1, 5, color1)
blueGrey = Color.new(215, 227, 227, 150)
grey = Color.new(214, 217, 217, 150)
lightGrey = Color.new(233, 233, 233, 250)
lightBlue = Color.new(222, 239, 243, 250)
@hail_bitmap = Bitmap.new(4, 4)
@hail_bitmap.fill_rect(1, 0, 2, 1, blueGrey)
@hail_bitmap.fill_rect(0, 1, 1, 2, blueGrey)
@hail_bitmap.fill_rect(3, 1, 1, 2, grey)
@hail_bitmap.fill_rect(1, 3, 2, 1, grey)
@hail_bitmap.fill_rect(1, 1, 2, 2, lightGrey)
@hail_bitmap.set_pixel(1, 1, lightBlue)
color3 = Color.new(255, 167, 192, 255) # light pink
color4 = Color.new(213, 106, 136, 255) # dark pink
@petal_bitmap = Bitmap.new(4, 4) #This creates a new bitmap that is 4 x 4 pixels
@petal_bitmap.fill_rect(0, 3, 1, 1, color3) # this makes a 1x1 pixel "rectangle" at the 0, 3 pixel of the image (upper left corner is 0, 0)
@petal_bitmap.fill_rect(1, 2, 1, 1, color3)
@petal_bitmap.fill_rect(2, 1, 1, 1, color3)
@petal_bitmap.fill_rect(3, 0, 1, 1, color3)
@petal_bitmap.fill_rect(1, 3, 1, 1, color4)
@petal_bitmap.fill_rect(2, 2, 1, 1, color4)
@petal_bitmap.fill_rect(3, 1, 1, 1, color4)
brightOrange = Color.new(248, 88, 0, 255)
orangeBrown = Color.new(144, 80, 56, 255)
burntRed = Color.new(152, 0, 0, 255)
paleOrange = Color.new(232, 160, 128, 255)
darkBrown = Color.new(72, 40, 0, 255)
@autumn_leaf_bitmaps = []
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
# draw the first of the leaf1 bitmaps
@autumn_leaf_bitmaps[0].set_pixel(5, 1, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 2, orangeBrown)
@autumn_leaf_bitmaps[0].fill_rect(4, 2, 2, 1, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 3, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(3, 3, brightOrange)
@autumn_leaf_bitmaps[0].fill_rect(4, 3, 2, 1, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 4, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(2, 4, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(3, 4, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(1, 5, brightOrange)
@autumn_leaf_bitmaps[0].set_pixel(2, 5, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 6, orangeBrown)
@autumn_leaf_bitmaps[0].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[0].set_pixel(0, 7, paleOrange)
# draw the 2nd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[1].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[1].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[1].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[1].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[1].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[1].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[1].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[1].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[1].set_pixel(5, 7, darkBrown)
# draw the 3rd of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[2].set_pixel(7, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 2, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(7, 2, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(5, 3, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 3, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 4, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 4, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(6, 4, orangeBrown)
@autumn_leaf_bitmaps[2].fill_rect(2, 5, 2, 1, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 5, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(5, 5, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(1, 6, paleOrange)
@autumn_leaf_bitmaps[2].fill_rect(2, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(4, 6, orangeBrown)
@autumn_leaf_bitmaps[2].set_pixel(0, 7, paleOrange)
@autumn_leaf_bitmaps[2].set_pixel(1, 7, brightOrange)
@autumn_leaf_bitmaps[2].set_pixel(2, 7, orangeBrown)
# draw the 4th of the leaf1 bitmaps
@autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
@autumn_leaf_bitmaps[3].set_pixel(3, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(7, 0, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(4, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(6, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(0, 2, paleOrange)
@autumn_leaf_bitmaps[3].set_pixel(1, 2, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(2, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(3, 2, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(4, 2, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 2, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(1, 3, 3, 1, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(4, 3, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 3, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(2, 4, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(3, 4, 3, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(6, 4, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(7, 4, darkBrown)
@autumn_leaf_bitmaps[3].set_pixel(1, 5, orangeBrown)
@autumn_leaf_bitmaps[3].fill_rect(2, 5, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(4, 5, orangeBrown)
@autumn_leaf_bitmaps[3].set_pixel(5, 5, burntRed)
@autumn_leaf_bitmaps[3].fill_rect(1, 6, 2, 1, brightOrange)
@autumn_leaf_bitmaps[3].fill_rect(4, 6, 2, 1, burntRed)
@autumn_leaf_bitmaps[3].set_pixel(0, 7, brightOrange)
@autumn_leaf_bitmaps[3].set_pixel(5, 7, darkBrown)
@green_leaf_bitmaps = []
darkGreen = Color.new(62, 76, 31, 255)
midGreen = Color.new(76, 91, 43, 255)
khaki = Color.new(105, 114, 66, 255)
lightGreen = Color.new(128, 136, 88, 255)
mint = Color.new(146, 154, 106, 255)
# 1st leaf bitmap
@green_leaf_bitmaps[0] = Bitmap.new(8, 8)
@green_leaf_bitmaps[0].set_pixel(1, 0, darkGreen)
@green_leaf_bitmaps[0].set_pixel(1, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(2, 1, darkGreen)
@green_leaf_bitmaps[0].set_pixel(2, 2, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 2, darkGreen)
@green_leaf_bitmaps[0].set_pixel(4, 2, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 3, 3, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[0].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[0].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[0].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[0].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[0].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[0].set_pixel(4, 6, midGreen)
@green_leaf_bitmaps[0].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[0].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[0].set_pixel(6, 7, khaki)
# 2nd leaf bitmap
@green_leaf_bitmaps[1] = Bitmap.new(8, 8)
@green_leaf_bitmaps[1].fill_rect(1, 1, 1, 2, midGreen)
@green_leaf_bitmaps[1].fill_rect(2, 2, 2, 1, khaki)
@green_leaf_bitmaps[1].set_pixel(4, 2, lightGreen)
@green_leaf_bitmaps[1].fill_rect(2, 3, 2, 1, darkGreen)
@green_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[1].set_pixel(3, 4, darkGreen)
@green_leaf_bitmaps[1].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[1].fill_rect(5, 4, 2, 1, lightGreen)
@green_leaf_bitmaps[1].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[1].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[1].set_pixel(5, 5, khaki)
@green_leaf_bitmaps[1].set_pixel(6, 5, lightGreen)
@green_leaf_bitmaps[1].set_pixel(5, 6, darkGreen)
@green_leaf_bitmaps[1].fill_rect(6, 6, 2, 1, khaki)
# 3rd leaf bitmap
@green_leaf_bitmaps[2] = Bitmap.new(8, 8)
@green_leaf_bitmaps[2].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[2].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[2].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[2].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[2].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[2].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[2].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[2].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[2].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[2].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[2].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[2].set_pixel(6, 7, khaki)
# 4th leaf bitmap
@green_leaf_bitmaps[3] = Bitmap.new(8, 8)
@green_leaf_bitmaps[3].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[3].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[3].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[3].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[3].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[3].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[3].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(4, 5, mint)
@green_leaf_bitmaps[3].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[3].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[3].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[3].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[3].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[3].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[3].set_pixel(6, 6, midGreen)
# 5th leaf bitmap
@green_leaf_bitmaps[4] = Bitmap.new(8, 8)
@green_leaf_bitmaps[4].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[4].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[4].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[4].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[4].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[4].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[4].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[4].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[4].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[4].set_pixel(4, 5, mint)
@green_leaf_bitmaps[4].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[4].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[4].fill_rect(3, 6, 2, 1, midGreen)
# 6th leaf bitmap
@green_leaf_bitmaps[5] = Bitmap.new(8, 8)
@green_leaf_bitmaps[5].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[5].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[5].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[5].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[5].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[5].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[5].set_pixel(6, 4, mint)
@green_leaf_bitmaps[5].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[5].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[5].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[5].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[5].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[5].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[5].set_pixel(4, 6, lightGreen)
# 7th leaf bitmap
@green_leaf_bitmaps[6] = Bitmap.new(8, 8)
@green_leaf_bitmaps[6].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[6].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[6].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[6].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[6].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[6].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[6].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[6].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[6].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[6].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[6].set_pixel(2, 6, midGreen)
# 8th leaf bitmap
@green_leaf_bitmaps[7] = Bitmap.new(8, 8)
@green_leaf_bitmaps[7].set_pixel(6, 1, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 2, 3, 2, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[7].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[7].fill_rect(4, 4, 2, 1, khaki)
@green_leaf_bitmaps[7].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[7].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[7].fill_rect(3, 5, 2, 1, lightGreen)
@green_leaf_bitmaps[7].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[7].set_pixel(3, 6, lightGreen)
# 9th leaf bitmap
@green_leaf_bitmaps[8] = Bitmap.new(8, 8)
@green_leaf_bitmaps[8].fill_rect(6, 1, 1, 2, midGreen)
@green_leaf_bitmaps[8].fill_rect(4, 2, 2, 1, midGreen)
@green_leaf_bitmaps[8].fill_rect(6, 2, 1, 2, darkGreen)
@green_leaf_bitmaps[8].fill_rect(3, 3, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(5, 3, khaki)
@green_leaf_bitmaps[8].set_pixel(2, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(3, 4, khaki)
@green_leaf_bitmaps[8].set_pixel(4, 4, lightGreen)
@green_leaf_bitmaps[8].set_pixel(5, 4, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[8].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[8].fill_rect(3, 5, 2, 1, midGreen)
@green_leaf_bitmaps[8].set_pixel(1, 6, darkGreen)
@green_leaf_bitmaps[8].set_pixel(2, 6, midGreen)
# 10th leaf bitmap
@green_leaf_bitmaps[9] = Bitmap.new(8, 8)
@green_leaf_bitmaps[9].fill_rect(6, 2, 2, 1, midGreen)
@green_leaf_bitmaps[9].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[9].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[9].set_pixel(3, 4, midGreen)
@green_leaf_bitmaps[9].set_pixel(4, 4, khaki)
@green_leaf_bitmaps[9].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[9].set_pixel(6, 4, mint)
@green_leaf_bitmaps[9].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[9].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[9].fill_rect(3, 5, 2, 1, mint)
@green_leaf_bitmaps[9].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[9].set_pixel(2, 6, midGreen)
@green_leaf_bitmaps[9].set_pixel(3, 6, khaki)
@green_leaf_bitmaps[9].set_pixel(4, 6, lightGreen)
# 11th leaf bitmap
@green_leaf_bitmaps[10] = Bitmap.new(8, 8)
@green_leaf_bitmaps[10].set_pixel(6, 2, midGreen)
@green_leaf_bitmaps[10].set_pixel(7, 2, darkGreen)
@green_leaf_bitmaps[10].fill_rect(4, 3, 2, 1, midGreen)
@green_leaf_bitmaps[10].set_pixel(6, 3, khaki)
@green_leaf_bitmaps[10].set_pixel(2, 4, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 4, 2, 1, khaki)
@green_leaf_bitmaps[10].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[10].set_pixel(6, 4, khaki)
@green_leaf_bitmaps[10].set_pixel(1, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 5, khaki)
@green_leaf_bitmaps[10].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[10].set_pixel(4, 5, mint)
@green_leaf_bitmaps[10].set_pixel(5, 5, midGreen)
@green_leaf_bitmaps[10].set_pixel(2, 6, darkGreen)
@green_leaf_bitmaps[10].fill_rect(3, 6, 2, 1, midGreen)
# 12th leaf bitmap
@green_leaf_bitmaps[11] = Bitmap.new(8, 8)
@green_leaf_bitmaps[11].fill_rect(0, 3, 1, 2, darkGreen)
@green_leaf_bitmaps[11].set_pixel(1, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(2, 4, khaki)
@green_leaf_bitmaps[11].set_pixel(3, 4, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[11].set_pixel(7, 4, midGreen)
@green_leaf_bitmaps[11].set_pixel(1, 5, darkGreen)
@green_leaf_bitmaps[11].set_pixel(2, 5, midGreen)
@green_leaf_bitmaps[11].set_pixel(3, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(4, 5, mint)
@green_leaf_bitmaps[11].set_pixel(5, 5, lightGreen)
@green_leaf_bitmaps[11].set_pixel(6, 5, khaki)
@green_leaf_bitmaps[11].set_pixel(7, 5, midGreen)
@green_leaf_bitmaps[11].fill_rect(2, 6, 2, 1, midGreen)
@green_leaf_bitmaps[11].set_pixel(4, 6, lightGreen)
@green_leaf_bitmaps[11].set_pixel(5, 6, khaki)
@green_leaf_bitmaps[11].set_pixel(6, 6, midGreen)
# 13th leaf bitmap
@green_leaf_bitmaps[12] = Bitmap.new(8, 8)
@green_leaf_bitmaps[12].set_pixel(1, 1, darkGreen)
@green_leaf_bitmaps[12].fill_rect(1, 2, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(2, 3, midGreen)
@green_leaf_bitmaps[12].set_pixel(3, 3, darkGreen)
@green_leaf_bitmaps[12].set_pixel(4, 3, midGreen)
@green_leaf_bitmaps[12].fill_rect(2, 4, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 4, darkGreen)
@green_leaf_bitmaps[12].set_pixel(5, 4, lightGreen)
@green_leaf_bitmaps[12].set_pixel(3, 5, midGreen)
@green_leaf_bitmaps[12].set_pixel(4, 5, darkGreen)
@green_leaf_bitmaps[12].fill_rect(5, 5, 2, 1, khaki)
@green_leaf_bitmaps[12].fill_rect(4, 6, 2, 1, midGreen)
@green_leaf_bitmaps[12].set_pixel(6, 6, lightGreen)
@green_leaf_bitmaps[12].set_pixel(6, 7, khaki)
@rose_bitmaps = []
brightRed = Color.new(255, 0, 0, 255)
midRed = Color.new(179, 17, 17, 255)
darkRed = Color.new(141, 9, 9, 255)
# 1st rose petal bitmap
@rose_bitmaps[0] = Bitmap.new(3, 3)
@rose_bitmaps[0].fill_rect(1, 0, 2, 1, brightRed)
@rose_bitmaps[0].fill_rect(0, 1, 1, 2, brightRed)
@rose_bitmaps[0].fill_rect(1, 1, 2, 2, midRed)
@rose_bitmaps[0].set_pixel(2, 2, darkRed)
# 2nd rose petal bitmap
@rose_bitmaps[1] = Bitmap.new(3, 3)
@rose_bitmaps[1].set_pixel(0, 1, midRed)
@rose_bitmaps[1].set_pixel(1, 1, brightRed)
@rose_bitmaps[1].fill_rect(1, 2, 1, 2, midRed)
@feather_bitmaps = []
white = Color.new(255, 255, 255, 255)
# 1st feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 2, white)
@feather_bitmaps[0].set_pixel(1, 2, grey)
@feather_bitmaps[0].set_pixel(2, 1, grey)
# 2nd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(0, 0, white)
@feather_bitmaps[0].set_pixel(0, 1, grey)
@feather_bitmaps[0].set_pixel(1, 2, grey)
# 3rd feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 0, white)
@feather_bitmaps[0].set_pixel(1, 0, grey)
@feather_bitmaps[0].set_pixel(0, 1, grey)
# 4th feather bitmap
@feather_bitmaps[0] = Bitmap.new(3, 3)
@feather_bitmaps[0].set_pixel(2, 2, white)
@feather_bitmaps[0].set_pixel(2, 1, grey)
@feather_bitmaps[0].set_pixel(1, 0, grey)
@blood_rain_bitmap = Bitmap.new(7, 56)
for i in 0..6
@blood_rain_bitmap.fill_rect(6-i, i*8, 1, 8, darkRed)
end
@blood_rain_splash = Bitmap.new(8, 5)
@blood_rain_splash.fill_rect(1, 0, 6, 1, darkRed)
@blood_rain_splash.fill_rect(1, 4, 6, 1, darkRed)
@blood_rain_splash.fill_rect(0, 1, 1, 3, darkRed)
@blood_rain_splash.fill_rect(7, 1, 1, 3, darkRed)
@sparkle_bitmaps = []
lightBlue = Color.new(181, 244, 255, 255)
midBlue = Color.new(126, 197, 235, 255)
darkBlue = Color.new(77, 136, 225, 255)
# 1st sparkle bitmap
@sparkle_bitmaps[0] = Bitmap.new(7, 7)
@sparkle_bitmaps[0].set_pixel(3, 3, darkBlue)
# 2nd sparkle bitmap
@sparkle_bitmaps[1] = Bitmap.new(7, 7)
@sparkle_bitmaps[1].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[1].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[1].set_pixel(3, 3, midBlue)
# 3rd sparkle bitmap
@sparkle_bitmaps[2] = Bitmap.new(7, 7)
@sparkle_bitmaps[2].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[2].set_pixel(2, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 2, midBlue)
@sparkle_bitmaps[2].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[2].set_pixel(2, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(4, 4, midBlue)
@sparkle_bitmaps[2].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[2].set_pixel(5, 5, darkBlue)
# 4th sparkle bitmap
@sparkle_bitmaps[3] = Bitmap.new(7, 7)
@sparkle_bitmaps[3].fill_rect(3, 1, 1, 5, darkBlue)
@sparkle_bitmaps[3].fill_rect(1, 3, 5, 1, darkBlue)
@sparkle_bitmaps[3].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[3].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[3].set_pixel(3, 3, lightBlue)
# 5th sparkle bitmap
@sparkle_bitmaps[4] = Bitmap.new(7, 7)
@sparkle_bitmaps[4].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[4].fill_rect(3, 2, 1, 3, darkBlue)
@sparkle_bitmaps[4].fill_rect(2, 3, 3, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(3, 3, lightBlue)
@sparkle_bitmaps[4].set_pixel(1, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)
@sparkle_bitmaps[4].set_pixel(1, 5, darkBlue)
@sparkle_bitmaps[4].set_pixel(5, 1, darkBlue)
# 6th sparkle bitmap
@sparkle_bitmaps[5] = Bitmap.new(7, 7)
@sparkle_bitmaps[5].fill_rect(2, 1, 3, 5, darkBlue)
@sparkle_bitmaps[5].fill_rect(1, 2, 5, 3, darkBlue)
@sparkle_bitmaps[5].fill_rect(2, 2, 3, 3, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 1, 1, 5, midBlue)
@sparkle_bitmaps[5].fill_rect(1, 3, 5, 1, midBlue)
@sparkle_bitmaps[5].fill_rect(3, 2, 1, 3, lightBlue)
@sparkle_bitmaps[5].fill_rect(2, 3, 3, 1, lightBlue)
@sparkle_bitmaps[5].set_pixel(3, 3, white)
# 7th sparkle bitmap
@sparkle_bitmaps[6] = Bitmap.new(7, 7)
@sparkle_bitmaps[6].fill_rect(2, 1, 3, 5, midBlue)
@sparkle_bitmaps[6].fill_rect(1, 2, 5, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(3, 0, 1, 7, darkBlue)
@sparkle_bitmaps[6].fill_rect(0, 3, 7, 1, darkBlue)
@sparkle_bitmaps[6].fill_rect(2, 2, 3, 3, lightBlue)
@sparkle_bitmaps[6].fill_rect(3, 2, 1, 3, midBlue)
@sparkle_bitmaps[6].fill_rect(2, 3, 3, 1, midBlue)
@sparkle_bitmaps[6].set_pixel(3, 3, white)
# Meteor bitmap
@meteor_bitmap = Bitmap.new(14, 12)
@meteor_bitmap.fill_rect(0, 8, 5, 4, paleOrange)
@meteor_bitmap.fill_rect(1, 7, 6, 4, paleOrange)
@meteor_bitmap.set_pixel(7, 8, paleOrange)
@meteor_bitmap.fill_rect(1, 8, 2, 2, brightOrange)
@meteor_bitmap.set_pixel(2, 7, brightOrange)
@meteor_bitmap.fill_rect(3, 6, 2, 1, brightOrange)
@meteor_bitmap.set_pixel(3, 8, brightOrange)
@meteor_bitmap.set_pixel(3, 10, brightOrange)
@meteor_bitmap.set_pixel(4, 9, brightOrange)
@meteor_bitmap.fill_rect(5, 5, 1, 5, brightOrange)
@meteor_bitmap.fill_rect(6, 4, 1, 5, brightOrange)
@meteor_bitmap.fill_rect(7, 3, 1, 5, brightOrange)
@meteor_bitmap.fill_rect(8, 6, 1, 2, brightOrange)
@meteor_bitmap.set_pixel(9, 5, brightOrange)
@meteor_bitmap.set_pixel(3, 8, midRed)
@meteor_bitmap.fill_rect(4, 7, 1, 2, midRed)
@meteor_bitmap.set_pixel(4, 5, midRed)
@meteor_bitmap.set_pixel(5, 4, midRed)
@meteor_bitmap.set_pixel(5, 6, midRed)
@meteor_bitmap.set_pixel(6, 5, midRed)
@meteor_bitmap.set_pixel(6, 7, midRed)
@meteor_bitmap.fill_rect(7, 4, 1, 3, midRed)
@meteor_bitmap.fill_rect(8, 3, 1, 3, midRed)
@meteor_bitmap.fill_rect(9, 2, 1, 3, midRed)
@meteor_bitmap.fill_rect(10, 1, 1, 3, midRed)
@meteor_bitmap.fill_rect(11, 0, 1, 3, midRed)
@meteor_bitmap.fill_rect(12, 0, 1, 2, midRed)
@meteor_bitmap.set_pixel(13, 0, midRed)
# impact bitmap
@impact_bitmap = Bitmap.new(22, 11)
@impact_bitmap.fill_rect(0, 5, 1, 2, brightOrange)
@impact_bitmap.set_pixel(1, 4, brightOrange)
@impact_bitmap.set_pixel(1, 6, brightOrange)
@impact_bitmap.set_pixel(2, 3, brightOrange)
@impact_bitmap.set_pixel(2, 7, brightOrange)
@impact_bitmap.set_pixel(3, 2, midRed)
@impact_bitmap.set_pixel(3, 7, midRed)
@impact_bitmap.set_pixel(4, 2, brightOrange)
@impact_bitmap.set_pixel(4, 8, brightOrange)
@impact_bitmap.set_pixel(5, 2, midRed)
@impact_bitmap.fill_rect(5, 8, 3, 1, brightOrange)
@impact_bitmap.set_pixel(6, 1, midRed)
@impact_bitmap.fill_rect(7, 1, 8, 1, brightOrange)
@impact_bitmap.fill_rect(7, 9, 8, 1, midRed)
# Ash bitmaps
@ash_bitmaps = []
@ash_bitmaps[0] = Bitmap.new(3, 3)
@ash_bitmaps[0].fill_rect(0, 1, 1, 3, lightGrey)
@ash_bitmaps[0].fill_rect(1, 0, 3, 1, lightGrey)
@ash_bitmaps[0].set_pixel(1, 1, white)
@ash_bitmaps[1] = Bitmap.new(3, 3)
@ash_bitmaps[1].fill_rect(0, 1, 1, 3, grey)
@ash_bitmaps[1].fill_rect(1, 0, 3, 1, grey)
@ash_bitmaps[1].set_pixel(1, 1, lightGrey)
# Bubble bitmaps
@bubble_bitmaps = []
darkBlue = Color.new(77, 136, 225, 160)
aqua = Color.new(197, 253, 254, 160)
lavender = Color.new(225, 190, 244, 160)
# first bubble bitmap
@bubble_bitmaps[0] = Bitmap.new(24, 24)
@bubble_bitmaps[0].fill_rect(0, 9, 24, 5, darkBlue)
@bubble_bitmaps[0].fill_rect(1, 6, 22, 11, darkBlue)
@bubble_bitmaps[0].fill_rect(2, 5, 20, 13, darkBlue)
@bubble_bitmaps[0].fill_rect(3, 4, 18, 15, darkBlue)
@bubble_bitmaps[0].fill_rect(4, 3, 16, 17, darkBlue)
@bubble_bitmaps[0].fill_rect(5, 2, 14, 19, darkBlue)
@bubble_bitmaps[0].fill_rect(6, 1, 12, 21, darkBlue)
@bubble_bitmaps[0].fill_rect(9, 0, 5, 24, darkBlue)
@bubble_bitmaps[0].fill_rect(2, 11, 20, 4, aqua)
@bubble_bitmaps[0].fill_rect(3, 7, 18, 10, aqua)
@bubble_bitmaps[0].fill_rect(4, 6, 16, 12, aqua)
@bubble_bitmaps[0].fill_rect(5, 5, 14, 14, aqua)
@bubble_bitmaps[0].fill_rect(6, 4, 12, 16, aqua)
@bubble_bitmaps[0].fill_rect(9, 2, 4, 20, aqua)
@bubble_bitmaps[0].fill_rect(5, 10, 1, 7, lavender)
@bubble_bitmaps[0].fill_rect(6, 14, 1, 5, lavender)
@bubble_bitmaps[0].fill_rect(7, 15, 1, 4, lavender)
@bubble_bitmaps[0].fill_rect(8, 16, 1, 4, lavender)
@bubble_bitmaps[0].fill_rect(9, 17, 1, 3, lavender)
@bubble_bitmaps[0].fill_rect(10, 18, 4, 3, lavender)
@bubble_bitmaps[0].fill_rect(14, 18, 1, 2, lavender)
@bubble_bitmaps[0].fill_rect(13, 5, 4, 4, white)
@bubble_bitmaps[0].fill_rect(14, 4, 2, 1, white)
@bubble_bitmaps[0].set_pixel(17, 6, white)
# second bubble bitmap
@bubble_bitmaps[1] = Bitmap.new(14, 15)
@bubble_bitmaps[1].fill_rect(0, 4, 14, 7, darkBlue)
@bubble_bitmaps[1].fill_rect(1, 3, 12, 9, darkBlue)
@bubble_bitmaps[1].fill_rect(2, 2, 10, 11, darkBlue)
@bubble_bitmaps[1].fill_rect(3, 1, 8, 13, darkBlue)
@bubble_bitmaps[1].fill_rect(5, 0, 4, 15, darkBlue)
@bubble_bitmaps[1].fill_rect(1, 5, 12, 4, aqua)
@bubble_bitmaps[1].fill_rect(2, 4, 10, 6, aqua)
@bubble_bitmaps[1].fill_rect(3, 3, 8, 8, aqua)
@bubble_bitmaps[1].fill_rect(4, 2, 6, 10, aqua)
@bubble_bitmaps[1].fill_rect(1, 5, 12, 4, aqua)
@bubble_bitmaps[1].fill_rect(3, 9, 1, 2, lavender)
@bubble_bitmaps[1].fill_rect(4, 10, 1, 2, lavender)
@bubble_bitmaps[1].fill_rect(5, 11, 4, 1, lavender)
@bubble_bitmaps[1].fill_rect(6, 12, 2, 1, white)
@bubble_bitmaps[1].fill_rect(8, 3, 2, 2, white)
@bubble_bitmaps[1].set_pixel(7, 4, white)
@bubble_bitmaps[1].set_pixel(8, 5, white)
# Other option for bubbles
@bubble2_bitmaps = Array.new
darkSteelGray = Color.new(145, 150, 155, 160)
midSteelGray = Color.new(180, 180, 185, 160)
lightSteelGray = Color.new(225, 225, 235, 160)
steelBlue = Color.new(145, 145, 165, 160)
lightSteelBlue = Color.new(165, 170, 180, 160)
transparentWhite = Color.new(255, 255, 255, 160)
# first bubble 2 bitmap
@bubble2_bitmaps[0] = Bitmap.new(6, 6)
@bubble2_bitmaps[0].fill_rect(0, 0, 6, 6, darkSteelGray)
@bubble2_bitmaps[0].fill_rect(0, 2, 6, 2, midSteelGray)
@bubble2_bitmaps[0].fill_rect(2, 0, 2, 6, midSteelGray)
@bubble2_bitmaps[0].fill_rect(2, 2, 2, 2, lightSteelGray)
# second bubble 2 bitmap
@bubble2_bitmaps[1] = Bitmap.new(8, 8)
@bubble2_bitmaps[1].fill_rect(0, 2, 2, 4, steelBlue)
@bubble2_bitmaps[1].fill_rect(2, 0, 4, 2, darkSteelGray)
@bubble2_bitmaps[1].fill_rect(6, 2, 2, 2, darkSteelGray)
@bubble2_bitmaps[1].fill_rect(2, 6, 2, 2, darkSteelGray)
@bubble2_bitmaps[1].fill_rect(6, 4, 2, 2, midSteelGray)
@bubble2_bitmaps[1].fill_rect(4, 6, 2, 2, midSteelGray)
@bubble2_bitmaps[1].fill_rect(4, 4, 2, 2, lightSteelBlue)
@bubble2_bitmaps[1].fill_rect(2, 4, 2, 2, lightSteelGray)
@bubble2_bitmaps[1].fill_rect(4, 2, 2, 2, lightSteelGray)
@bubble2_bitmaps[1].fill_rect(2, 2, 2, 2, transparentWhite)
# third bubble 2 bitmap
@bubble2_bitmaps[2] = Bitmap.new(8, 10)
@bubble2_bitmaps[2].fill_rect(8, 2, 2, 4, steelBlue)
@bubble2_bitmaps[2].fill_rect(2, 0, 8, 2, darkSteelGray)
@bubble2_bitmaps[2].fill_rect(2, 6, 8, 2, darkSteelGray)
@bubble2_bitmaps[2].fill_rect(4, 0, 2, 2, midSteelGray)
@bubble2_bitmaps[2].fill_rect(4, 6, 2, 2, midSteelGray)
@bubble2_bitmaps[2].fill_rect(0, 2, 2, 2, midSteelGray)
@bubble2_bitmaps[2].fill_rect(0, 4, 2, 2, lightSteelBlue)
@bubble2_bitmaps[2].fill_rect(2, 2, 6, 4, lightSteelGray)
@bubble2_bitmaps[2].fill_rect(2, 2, 4, 2, transparentWhite)
@bubble2_bitmaps[2].fill_rect(4, 4, 2, 2, transparentWhite)
# fourth bubble 2 bitmap
@bubble2_bitmaps[3] = Bitmap.new(14, 14)
@bubble2_bitmaps[3].fill_rect(4, 0, 4, 2, steelBlue)
@bubble2_bitmaps[3].fill_rect(0, 4, 2, 4, steelBlue)
@bubble2_bitmaps[3].fill_rect(12, 4, 2, 4, steelBlue)
@bubble2_bitmaps[3].fill_rect(8, 0, 2, 2, darkSteelGray)
@bubble2_bitmaps[3].fill_rect(0, 6, 2, 2, darkSteelGray)
@bubble2_bitmaps[3].fill_rect(12, 6, 2, 2, darkSteelGray)
@bubble2_bitmaps[3].fill_rect(4, 12, 6, 2, darkSteelGray)
@bubble2_bitmaps[3].fill_rect(8, 0, 2, 2, darkSteelGray)
@bubble2_bitmaps[3].fill_rect(2, 2, 10, 10, midSteelGray)
@bubble2_bitmaps[3].fill_rect(6, 12, 2, 2, midSteelGray)
@bubble2_bitmaps[3].fill_rect(2, 4, 10, 6, lightSteelGray)
@bubble2_bitmaps[3].fill_rect(4, 2, 2, 2, lightSteelGray)
@bubble2_bitmaps[3].fill_rect(6, 10, 4, 2, lightSteelGray)
@bubble2_bitmaps[3].fill_rect(6, 4, 2, 2, transparentWhite)
@bubble2_bitmaps[3].fill_rect(4, 6, 2, 2, transparentWhite)
@user_bitmaps = []
update_user_defined
end
def update_user_defined
for image in @user_bitmaps
image.dispose
end
#user-defined bitmaps
for name in $WEATHER_IMAGES
@user_bitmaps.push(RPG::Cache.picture(name))
end
for sprite in @sprites
sprite.bitmap = @user_bitmaps[rand(@user_bitmaps.size)]
end
end
end
Weather Types:
# 1 - rain
# 2 - storm
# 3 - snow
# 4 - hail
# 5 - rain with thunder and lightning
# 6 - falling leaves (autumn)
# 7 - blowing leaves (autumn)
# 8 - swirling leaves (autumn)
# 9 - falling leaves (green)
# 10 - cherry blossom (sakura) petals
# 11 - rose petals
# 12 - feathers
# 13 - blood rain
# 14 - sparkles
# 15 - user defined
# 16 - blowing snow
# 17 - meteor shower
# 18 - falling ash
# 19 - bubbles
# 20 - bubbles 2
# 21 - sparkles up
Instructions:
You can start and stop weather using the original event commands, however, you can start stronger and more varied weather using:
Code:
$game_screen.weather(type, strength, duration)
User-defined weather user images imported to the pictures folder. The controls are:
$WEATHER_UPDATE = false - change this one any time you're about to use user-defined weather
$WEATHER_IMAGES = [name, name, ...] - a list of the names of the images, separated by commas.
$WEATHER_X = 0 - the number of pixels the image should move horizontally (positive = right, negative = left)
$WEATHER_Y = 0 - the number of pizels the image should move vertically (positive = down, negative = up)
$WEATHER_FADE = 0 - how much the image should fade each update (0 = no fade, 255 = fade instantly)
$WEATHER_ANIMATED = true (or false) - whether or not each sprite in the weather should cycle between all the available images.
Editing speed if too fast
Anyway, if you look in the script, you'll see a section that looks like this:
That controls how the rain falls. These two lines determin how fast it falls and how much it moves to the left as it falls.
To slow it down, reduce the amount that is added to the y value each frame update by making the 16 a smaller number. If it's moving to fast to the left after that, try reducing the 2 to 1.
For the hail, this is the section of code you want (note that each is commented as the weather type):
Again, reduce the amount added to the y value to make it fall slower.
You might also want to reduce the amount that the opacity is lowered each frame by reducing the amount subtracted from the opacity (15 for the hail, 8 for the rain).
Same goes for any of the weather types, if you want to fiddle with the default settings for their movement, just make a backup copy of the script and play away.
Code:
if @type == 1 or @type == 5 or @type == 13 # rain
if sprite.opacity <= 150
if @current_pose[i] == 0
sprite.y += @rain_bitmap.height
sprite.x -= @rain_bitmap.width
if @type == 1 or @type == 5
sprite.bitmap = @rain_splash
else
sprite.bitmap = @blood_rain_splash
end
@current_pose[i] = 1
end
else
if @current_pose[i] == 1
if @type == 1 or @type == 5
sprite.bitmap = @rain_bitmap
else
sprite.bitmap = @blood_rain_bitmap
end
@current_pose[i] = 0
end
sprite.x -= 2
sprite.y += 16
if @thunder and (rand(8000 - @max) == 0)
$game_map.screen.start_flash(Color.new(255, 255, 255, 255), 5)
Audio.se_play("Audio/SE/Thunder1")
end
end
sprite.opacity -= 8
end
That controls how the rain falls. These two lines determin how fast it falls and how much it moves to the left as it falls.
Code:
sprite.x -= 2
sprite.y += 16
To slow it down, reduce the amount that is added to the y value each frame update by making the 16 a smaller number. If it's moving to fast to the left after that, try reducing the 2 to 1.
For the hail, this is the section of code you want (note that each is commented as the weather type):
Code:
if @type == 4 # hail
sprite.x -= 1
sprite.y += 18
sprite.opacity -= 15
end
Again, reduce the amount added to the y value to make it fall slower.
You might also want to reduce the amount that the opacity is lowered each frame by reducing the amount subtracted from the opacity (15 for the hail, 8 for the rain).
Same goes for any of the weather types, if you want to fiddle with the default settings for their movement, just make a backup copy of the script and play away.
Commercial License:
To use this in a commercial game, I only charge $10 for a single game license for this script. Just enough to make it legal, really. Whenever you're ready, contact me and I'll send you a copy of the license agreement for you to peruse.
Subject to change.