Advanced Time System - Near
#1
Advanced Time System
by Dubealex
Nov 26, 2004
Rewriten by Near Fantastica
Nov 29, 2005

This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.


I saw the thread here, and there were many repost requests, and I just stumbled onto a testbed game with this script included... I'll post the script as it is in the game I found...

At first glance, it looks like Ccoas's weather system, but as you scroll down you'll see it's all there.

Code:
#==============================================================================
# ■ AWS - Advanced Weather System
#==============================================================================
# Ccoa
# Version 1
# 29.11.05
#==============================================================================
# Thanks to ScriptKitty and Dr DJ
#
# 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:
#==============================================================================

#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
SDK.log('AWS', 'Ccoa', 1, '29.11.05')

#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.state('AWS') == true

$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

module RPG
class Weather
def initialize(viewport = nil)
@type = 0
@max = 0
@ox = 0
@oy = 0
@count = 0
@current_pose = []
@info = []
@countarray = []

make_bitmaps

# **** ccoa ****
for i in 1..500
sprite = Sprite.new(viewport)
sprite.z = 1000
sprite.visible = false
sprite.opacity = 0
@sprites.push(sprite)
@current_pose.push(0)
@info.push(rand(50))
@countarray.push(rand(15))
end
end

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

def type=(type)
return if @type == type
@type = type
case @type
when 1 # rain
bitmap = @rain_bitmap
when 2 # storm
bitmap = @storm_bitmap
when 3 # snow
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)]
else
bitmap = nil
end
if @type != 5
@thunder = false
end
# **** ccoa ****
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
sprite.bitmap = bitmap
end
end
end

def ox=(ox)
return if @ox == ox;
@ox = ox
for sprite in @sprites
sprite.ox = @ox
end
end

def oy=(oy)
return if @oy == oy;
@oy = oy
for sprite in @sprites
sprite.oy = @oy
end
end

def max=(max)
return if @max == max;
# **** ccoa ****
@max = [[max, 0].max, 500].min
for i in 1..500
sprite = @sprites[i]
if sprite != nil
sprite.visible = (i <= @max)
end
end
end

def update
return if @type == 0
for i in 1..@max
sprite = @sprites[i]
if sprite == nil
break
end
if @type == 1 or @type == 5 or @type == 13 # rain
sprite.x -= 2
sprite.y += 16
sprite.opacity -= 8
if @thunder and (rand(8000 - @max) == 0)
$game_screen.start_flash(Color.new(255, 255, 255, 255), 5)
Audio.se_play("Audio/SE/061-Thunderclap01")
end
end
if @type == 2 # storm
sprite.x -= 8
sprite.y += 16
sprite.opacity -= 12
end
if @type == 3 # snow
sprite.x -= 2
sprite.y += 8
sprite.opacity -= 8
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

x = sprite.x - @ox
y = sprite.y - @oy
if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
sprite.x = rand(800) - 50 + @ox
sprite.y = rand(800) - 200 + @oy
sprite.opacity = 255
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
@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 = []

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

@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)

@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

attr_reader :type
attr_reader :max
attr_reader :ox
attr_reader :oy
end
end

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end

Code:
#==============================================================================
# ■ ATS - Advanced Time System
#==============================================================================
# Rewiten by Near Fantastica
# Version 1
# 29.11.05
#
# Written by Dubealex
# Date: 26.11.04
#
# Thanks to Satana_81 for the test tilesets
#==============================================================================

#--------------------------------------------------------------------------
# * SDK Log Script
#--------------------------------------------------------------------------
SDK.log('ATS', 'Near Fantastica', 1, '29.11.05')

if SDK.state('AWS') != true
p 'AWS not found'
SDK.disable('ATS')
end

#--------------------------------------------------------------------------
# * Begin SDK Enable Test
#--------------------------------------------------------------------------
if SDK.state("ATS") == true

#===================================================
# ▼ CLASS Advanced_Time Begins
#===================================================
class Advanced_Time

attr_reader :define_start_sec
attr_reader :weather_type
attr_reader :weather_strength

def initialize
@weather_pattern = []
@cycle_period=[]
@tint_period=[]
@cycle_season=[]
@name_period=[]
@name_season=[]
@name_month=[]
@name_day=[]
@start_clock=[]
@start_date=[]

=begin -----------------------------------------------------------------------------------------------------
■ Advanced Time System Settings:
---------------------------------------------------------------------------------------------------------
▼ Day Night System Transitioning :

The DNS is built in to the time system and therefore any map you want to have the DNS
active on place a "*" in the name of the map.
---------------------------------------------------------------------------------------------------------
▼ Method of Season Transitioning :

● Titleset Transitioning = The tileset its replaced
When Titleset Transitioning is set the script will pull the tileset and autotiles used
set to the season ID. For exmaple "Plains 1" for tileset or "Water 1" for autotiles.
The script will then automaticly change the 1 to the season ID which will load the
new tileset. Maps that the developer wishes to have the tileset changing place
a "~" in the name.

● Map Transitioning = The Map is replaced
When Map Transitioning is set the script changes the whole map. It will transport the
player to the same x,y on a map with the same name and the matching season ID.
For example "Town [1]". The script will then automaticaly change the 1 to the
season ID which will load the new map. Maps that the developer wishes to have
the map changing place "[Season ID]" in the map name where Season ID is the ID
of the season of that map.
=end #----------------------------------------------------------------------------------------------------

=begin -----------------------------------------------------------------------------------------------------
■ Advanced Weather System Settings:
---------------------------------------------------------------------------------------------------------
▼ Weather Patterns :

With the Advanced Weather System by Ccoa the Advanced Time System and keep track
and change weather depending on season. The flag $aws must be set true if the weather
script is to be used.

1 - rain 5 - rain with thunder and lightning
2 - storm 6 - falling leaves (autumn)
3 - snow 7 - blowing leaves (autumn)
4 - hail 8 - swirling leaves (autumn)

The script randomly picks bettween having weather and no weather.
Then the script randomly picks the weather if there is going to be weather.
If the same weather is added more then once it will add to % chnage that weather
will be picked. If the same weather is picked again its power is inceased. The
range of power is 10 - 40. @weather_cycle is the % of weather for the game.
0 = very little and 10 = a lot of weather. @weather_period is the amount
of time in mintues till the next weather cycle range = 1-59. @bgs_control is
a flag that tells the script to inculde BGS with Dynamic Weather
=end #----------------------------------------------------------------------------------------------------

@aws = true
@bgs_control = true
@active_weather = false
@weather_type = 0
@weather_strength = 0
@weather_cycle = 5
@weather_period = 30
@weather_pattern[1] = [3]
@weather_pattern[2] = [1,1,2,3]
@weather_pattern[3] = [1,1,2,5]
@weather_pattern[4] = [1,2,4,5]
@weather_pattern[5] = [1,1,2,6]
@weather_pattern[5] = [1,1,3,7,8]

=begin -----------------------------------------------------------------------------------------------------
■ ATS Settings Configuration:
---------------------------------------------------------------------------------------------------------
▼ LENGTH AND SPEED OF TIME:

Those variables defines the speed and length of every aspect of the ATS.
@time_speed define how fast a seconds last. Setting it to 0 makes a real time system.
Below 0 is a slower time than normal, and higher than 0 will accelerate the time.
The length value are used to customize the length of every component of the ATS.
Remember that since it is the SPEED setting that defines how fast the time goes,
you don't have to say that a minute last 30 sec to make it faster. You can leave it
as real-time, and just accelerate the length of a second with @time_speed !
=end #----------------------------------------------------------------------------------------------------

@ats_time_speed = 60 # 0 is a Real Time System
@minutes_length = 60 # Seconds
@hour_length = 60 # Minutes
@day_length = 24 # Hours
@week_length = 7 # Days
@month_length = 30 # Days
@year_length = 12 # Months
@decade_length = 10 # Years
@century_length = 100 # Years
@millenium_length = 1000 # Years

=begin ----------------------------------------------------------------------------------------------------
▼ GAME DEFAULT START-UP VALUES:

Here you can define the default start-up values for each components. The data
you enter here will be taken into consideration at each new game started. So if you want
your game to begin at 2:12 pm, you can adjust all that in here. You can also set some
basic default options you have, like trigger the AM/PM time format ON/OFF.
You don't have to set the start-up season and period, since it will be set automatically
with the date and the clock.
=end #-----------------------------------------------------------------------------------------------------

@clock_mode = 1 # 1= 24 hours format / 2= AM/PM flag format
@start_clock = [20,50,10] # [hour, min, sec] -> Write in 24 hours format.
@start_date = [3,29,2004] # [month, day, year]

=begin -----------------------------------------------------------------------------------------------------
▼ ATS PERIODS CYCLE SETTINGS:

An ATS Period works just as my old NDS Period.
Periods defines a 24 hours loop - Example: Morning>Day>Evening>Night
Here you can defines what is the cycle (in hours) for each periods.
You can have as much period as you desire, I created the 4 main one, as shown
in the example above. To add period, simply copy a line and replace the ID of the
period by the next in line. DO NOT skip numbers.
Syntax: @cycle_period[ID] --> Don't use ID0. (You can name them later).
Example: @cycle_period[1] = (5..11) Will make the period ID#1 begins at 5am
and ends at 11am. Use the 24 hours clock format to defines the period length.
=end #-----------------------------------------------------------------------------------------------------

@cycle_period[1] = (5..11) #Defined as (start_hour..end_hour)
@cycle_period[2] = (12..18)
@cycle_period[3] = (19..22)
@cycle_period[4] = (23..24)
@cycle_period[5] = (0..4)

=begin ----------------------------------------------------------------------------------------------------
▼ ATS PERIODS COLOR TONE (TINT) SETTINGS:

Here you can define what will be the color tone used for each periods.
Use the same period ID defined above. Example: @tint_period[1] is the tint used
with the @cycle_period[1] settings.
Syntax: @tint_period[1] = [red, green, blue, gray, transition_time]
To know the number you want for your tint, simply opens a RPG Maker Project, and
create an event, choose "Tint Screen" and test the values you want, then enter them
in here.
=end #-----------------------------------------------------------------------------------------------------

@tint_period[1] = [17, -51, -102, 0, 600]
@tint_period[2] = [0, 0, 0, 0, 600]
@tint_period[3] = [-68, -136, -34, 0, 600]
@tint_period[4] = [-187, -119, -17, 68, 600]
@tint_period[5] = [-187, -119, -17, 68, 600]

=begin -----------------------------------------------------------------------------------------------------
▼ SEASONS CYCLE SETTINGS:

Here you can define how much time last every season. This is an "optional" feature.
You can just leave it alone if you aren't using it. This work as the periods, but seasons
are defined using months instead of hours. To know how it works, read the periods comments.
Example: @cycle_season[1] = (6..8) Will make the season ID#1 begins on the
6th month of the year, and end on the last day of the 8th month of the year.
=end #-----------------------------------------------------------------------------------------------------

@cycle_season[1] = (1..2) #Defined as (start_month..end_month)
@cycle_season[2] = (3..4)
@cycle_season[3] = (5..6)
@cycle_season[4] = (7..8)
@cycle_season[5] = (9..10)
@cycle_season[6] = (11..12)


=begin ----------------------------------------------------------------------------------------------------
▼ ATS COMPONENT'S NAMES SETTINGS:

Here you can choose the name tagged to every relevant component of the ATS.
The words you defined here will be used in window and menus in your game.
It make it easy to configure and customize that way. You can also refer to those variables
names if you need to access any component's names. That way, if you make a mistake or
want to change something in the middle of your development, you can easily do it.
If you added/deleted periods/seasons, just adjust this section too. So if you created a season
ID#6, you can copy a line from here and add the 6 where it belongs. (Between [ ])
This is also were you define all your Months and Days name. It work the same way.
@name_month[1] will refer to the first month of your year. By default, it's January.
=end #----------------------------------------------------------------------------------------------------

@name_period[1] = "Morning"
@name_period[2] = "Day"
@name_period[3] = "Evening"
@name_period[4] = "Night"
@name_period[5] = "Night"

@name_season[1] = "Winter"
@name_season[2] = "Spring"
@name_season[3] = "Summer"
@name_season[4] = "Summer"
@name_season[5] = "Autumn"
@name_season[6] = "Autumn"

@name_month[1] = "January"
@name_month[2] = "February"
@name_month[3] = "March"
@name_month[4] = "April"
@name_month[5] = "May"
@name_month[6] = "June"
@name_month[7] = "July"
@name_month[8] = "August"
@name_month[9] = "September"
@name_month[10]= "October"
@name_month[11]= "November"
@name_month[12]= "December"

@name_day[1] = "Monday"
@name_day[2] = "Tuesday"
@name_day[3] = "Wednesday"
@name_day[4] = "Thursday"
@name_day[5] = "Friday"
@name_day[6] = "Saturday"
@name_day[7] = "Sunday"

#--- ■ END OF SETTINGS (No Need To Edit Further)-------------------------------------------

@speed_restore = 0
if @ats_time_speed >= Graphics.frame_rate
@ats_time_speed=Graphics.frame_rate-1
end
@year_length+=1
@month_length+=1
if @start_clock[0] >= 12 : @am=false else @am=true end
define_start_sec_in_hours= @start_clock[0] * @minutes_length * @hour_length
define_start_sec_in_min= @start_clock[1] * @minutes_length
@define_start_sec= define_start_sec_in_hours+define_start_sec_in_min+@start_clock[2]
end

# ■ WRITE ATTRIBUTE (Modify ATS Data) (No Need To Edit)----------------------------------
def sec(sec=0)
@define_start_sec+=sec
end

#--------------------------------------------------------------------------------------------------------
def min(min=0)
@define_start_sec+=min*@minutes_length
end

#--------------------------------------------------------------------------------------------------------
def hours(hours=0)
@define_start_sec+=hours*@minutes_length*@hour_length
end

#--------------------------------------------------------------------------------------------------------
def days(days=0)
if days<0 : @rewind=true end
@define_start_sec+=days*@minutes_length*@hour_length*@day_length
end

#--------------------------------------------------------------------------------------------------------
def months(months=0)
if months<0 : @rewind=true end
@define_start_sec+=months*@minutes_length*@hour_length*@day_length*@month_length

end

#--------------------------------------------------------------------------------------------------------
def speed(speed=0)
@speed_restore = @ats_time_speed
@ats_time_speed = speed
end

#--------------------------------------------------------------------------------------------------------
def speed_restore
@ats_time_speed = @speed_restore
end

# ■ READ ATTRIBUTE (Fetch ATS Data) (No Need To Edit)-------------------------------------
def full_date
day_name=@name_day[week_day_is]
month_name=@name_month[months_is]
month_day=month_day_is
year= total_years_is
full_date= day_name + ", " + month_name + " " + month_day.to_s + " " + year.to_s
return full_date
end

#--------------------------------------------------------------------------------------------------------
def speed_is
return @ats_time_speed
end

#--------------------------------------------------------------------------------------------------------
def total_sec_is
ats_total_sec = (Graphics.frame_count / (Graphics.frame_rate-@ats_time_speed))+@define_start_sec
return ats_total_sec
end

#--------------------------------------------------------------------------------------------------------
def total_years_is
total_years=(total_months_is / @year_length) + @start_date[2]
return total_years
end

#--------------------------------------------------------------------------------------------------------
def total_months_is
total_months=(total_days_is / @month_length) + @start_date[0]
return total_months
end

#--------------------------------------------------------------------------------------------------------
def total_decades_is
total_decades=total_years_is / @decade_length
return total_decades
end

#--------------------------------------------------------------------------------------------------------
def total_centuries_is
total_centuries=total_years_is / @century_length
return total_centuries
end

#--------------------------------------------------------------------------------------------------------
def total_millenium_is
total_millenium=total_years_is/@millenium_length
return total_millenium
end

#--------------------------------------------------------------------------------------------------------
def total_weeks_is
total_weeks= total_days_is / @week_length
return total_weeks
end

#--------------------------------------------------------------------------------------------------------
def total_hours_is
total_hours= total_sec_is / @minutes_length / @hour_length
return total_hours
end

#--------------------------------------------------------------------------------------------------------
def total_min_is
total_min = total_sec_is / @minutes_length
return total_min
end

#--------------------------------------------------------------------------------------------------------
def date
month=months_is
month_day=month_day_is
year=total_years_is
date=sprintf("%02d/%02d/%04d", month, month_day, year)
return date
end

#--------------------------------------------------------------------------------------------------------
def clock

hour=hours_is
min=min_is
sec=secs_is

if @clock_mode == 1
clock=sprintf("%02d:%02d:%02d", hour, min, sec)
return clock
else
if @am==true : am_pm="AM" else am_pm="PM" end
clock=sprintf("%02d:%02d:%02d %s", hour, min, sec, am_pm)
return clock
end
end

#--------------------------------------------------------------------------------------------------------
def hours_is
hour=real_hour=real_hours
if @clock_mode == 2
if @am==false and real_hour !=12 : hour-=(@day_length/2) end
hour %= (@day_length/2)+1
if real_hour < (@day_length/2) : @am=true else @am=false end
if hour==0 : hour=1 end
if real_hour==0 : hour=12 end
end
return hour
end

#--------------------------------------------------------------------------------------------------------
def real_hours
real_hour = total_sec_is / @minutes_length / @hour_length % @day_length
return real_hour
end

#--------------------------------------------------------------------------------------------------------
def secs_is
sec = total_sec_is % @minutes_length
return sec
end

#--------------------------------------------------------------------------------------------------------
def min_is
mins = total_sec_is / @minutes_length % @hour_length
return mins
end

#--------------------------------------------------------------------------------------------------------
def total_days_is
total_days = (total_sec_is / @minutes_length / @hour_length / @day_length) + @start_date[1]
return total_days
end

#--------------------------------------------------------------------------------------------------------
def week_day_is
week_day= total_days_is % @week_length
if week_day==0 : week_day=@week_length end
return week_day
end

#--------------------------------------------------------------------------------------------------------
def week_name
return @name_day[week_day_is]
end

#--------------------------------------------------------------------------------------------------------
def month_name
return @name_month[months_is]
end

#--------------------------------------------------------------------------------------------------------
def months_is
month=total_months_is % @year_length
if @rewind==true
if month==0 : months(-1) end
@rewind=false
else
if month==0 : months(1) end
end
return month
end

#--------------------------------------------------------------------------------------------------------
def month_day_is
month_day=total_days_is % @month_length
if @rewind==true
if month_day==0 : days(-1) end
@rewind=false
else
if month_day==0 : days(1) end
end
return month_day
end

#--------------------------------------------------------------------------------------------------------
def period_id
for i in 1...@cycle_period.size
if @cycle_period[i] === $ats.real_hours
return i
break
end
end
end

#--------------------------------------------------------------------------------------------------------
def period
for i in 1...@cycle_period.size
if @cycle_period[i] === real_hours
if i==0 : i=1 end
return @name_period[i]
break
end
end
end

#--------------------------------------------------------------------------------------------------------
def period_tint
for i in 1...@cycle_period.size
if @cycle_period[i] === real_hours
return [-50, -50, -50, 50, 100] if i == 2 and $game_screen.weather_type != 0
return @tint_period[i]
break
end
end
end

#--------------------------------------------------------------------------------------------------------
def season
for i in 1...@cycle_season.size
if @cycle_season[i] === months_is
return @name_season[i]
break
end
end
end

#--------------------------------------------------------------------------------------------------------
def season_id
for i in 1...@cycle_season.size
if @cycle_season[i] === months_is
if i==0 : i=1 end
return i
break
end
end
end

#--------------------------------------------------------------------------------------------------------
def start_seconds
return @define_start_sec
end

#--------------------------------------------------------------------------------------------------------
def weather_active(flag)
@aws = flag
end

#--------------------------------------------------------------------------------------------------------
def weather_bgs(flag)
@bgs_control = flag
end

#--------------------------------------------------------------------------------------------------------
def stop_weather
$game_screen.weather(0, 0, 0)
set_weather_bgs(0)
end

#--------------------------------------------------------------------------------------------------------
def weather_is
case $game_screen.weather_type
when 0
return "Clear"
when 1
return "Rain"
when 2
return "Storm"
when 3
return "Snow"
when 4..5
return "Gale"
when 6..8
return "Windy"
end
end

#--------------------------------------------------------------------------------------------------------
def set_weather_bgs(type)
return if @bgs_control == false
bgs = BGS.new
bgs.volume = 80
bgs.pitch = 100
case type
when 0
$game_system.bgs_fade(10)
when 1
bgs.name = "005-Rain01"
$game_system.bgs_play(bgs)
when 2
bgs.name = "006-Rain02"
$game_system.bgs_play(bgs)
when 3
$game_system.bgs_fade(10)
when 4..5
bgs.name = "007-Rain03"
$game_system.bgs_play(bgs)
when 6
bgs.name = "001-Wind01"
$game_system.bgs_play(bgs)
when 7
bgs.name = "002-Wind02"
$game_system.bgs_play(bgs)
when 8
bgs.name = "003-Wind03"
$game_system.bgs_play(bgs)
end
end

#--------------------------------------------------------------------------------------------------------
def weather
return if @aws == false
return if $game_map.weather_active == false
if min_is % @weather_period == 0 and @active_weather == false
@active_weather = true
if rand(10).between?(0, @weather_cycle)
pattern = @weather_pattern[season_id]
size = pattern.size - 1
type = pattern[rand(size).to_i]
if @weather_type == type
if @weather_strength.between?(0, 40)
@weather_strength += 10
else
@weather_strength = 40
end
else
@weather_strength = 10
end
@weather_type = type
$game_screen.weather(@weather_type, @weather_strength, 0)
set_weather_bgs(@weather_type)
else
@active_weather = true
@weather_strength = 0
$game_screen.weather(0, 0, 0)
set_weather_bgs(0)
end
else
@active_weather = false if min_is % @weather_period != 0
end
end
#-------------------------------------------------------------------------------
def setup(dns,weather,transition)
# DNS
if dns == 1
$game_map.setup_dns
else
$game_screen.start_tone_change(Tone.new(0,0,0,0),0)
end
# Dynamic Weather
if weather == 1
$game_map.setup_weather
else
$game_screen.weather(0, 0, 0)
$ats.set_weather_bgs(0)
end
# Transition
if transition == 1
$game_map.setup_transition
end
end

end
#===================================================
# ▲ CLASS Advanced_Time Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Map Additional Code Begins
#===================================================
class Scene_Map

alias alex_ats_scene_map_main main
alias alex_ats_scene_map_update update

def main
if $game_map.dns_active
tone = $ats.period_tint
$game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),0)
end
#@alex_ats_window = ATS_TimeTest_Window.new
alex_ats_scene_map_main
#alex_ats_window.dispose
end

def update
alex_ats_scene_map_update
#@alex_ats_window.update
$ats.weather
if $game_map.dns_active
tone = $ats.period_tint
$game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),ton
e[4])
end
end

end
#===================================================
# ▲ CLASS Scene_Map Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS ATS_TimeTest_Window Begins
#===================================================
class ATS_TimeTest_Window < Window_Base

def initialize
super(0,0,250,480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size =16
self.back_opacity=160
update
end

def update #testing and debugging window
return if Graphics.frame_count % 10 != 0
self.contents.clear
self.contents.font.color = text_color(0)
self.contents.draw_text(0, 0, 400, 32, "Current Full Clock: " +$ats.clock)
self.contents.draw_text(0, 16, 400, 32, "Small Date: " +$ats.date)
self.contents.draw_text(0, 32, 400, 32, "Full Date: " +$ats.full_date)
self.contents.draw_text(0, 60, 400, 32, "Week ID#: " + $ats.week_day_is.to_s)

self.contents.draw_text(0, 80, 400, 32, "Period: " + $ats.period)
self.contents.draw_text(0, 100, 400, 32, "Season: " + $ats.season)
self.contents.draw_text(0, 120, 400, 32, "Month ID#: " + $ats.months_is.to_s)
self.contents.draw_text(0, 140, 400, 32, "Map Name#: " + $game_map.name)
self.contents.draw_text(0, 160, 400, 32, "Weather: " + $ats.weather_is)
#self.contents.draw_text(0, 180, 400, 32, "Total SEC: " + $ats.total_sec_is.to_s)
#self.contents.draw_text(0, 200, 400, 32, "Start SEC: " + $ats.start_seconds.to_s)
end
end
#===================================================
# ▲ CLASS ATS_TimeTest_Window Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Save Additional Code Begins
#===================================================
class Scene_Save

alias alex_ats_write_data write_data

def write_data(file)
alex_ats_write_data(file)
Marshal.dump($ats, file)
end

end
#===================================================
# ▲ CLASS Scene_Save Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Load Additional Code Begins
#===================================================
class Scene_Load

alias alex_ats_read_data read_data

def read_data(file)
alex_ats_read_data(file)
$ats = Marshal.load(file)
end

end
#===================================================
# ▲ CLASS Scene_Load Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Title Additional Code Begins
#===================================================
class Scene_Title
$ats=Advanced_Time.new
end
#===================================================
# ▲ CLASS Scene_Title Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Game_Map Additional Code Begins
#===================================================
class Game_Map

attr_accessor :tileset_refresh
attr_accessor :tileset_transition
attr_accessor :dns_active
attr_accessor :weather_active

alias ats_game_map_update update
alias ats_game_map_setup setup
alias ats_game_map_initialize initialize

def initialize
ats_game_map_initialize
@tileset_refresh = false
@season = $ats.season_id
@tileset_transition = false
@dns_active = false
@weather_active = false
@map_transition_id = 0
end

def setup(map_id)
ats_game_map_setup(map_id)
# Setup
@dns_active = false
@weather_active = false
@tileset_transition = false
@map_transition = false

map_infos = load_data("Data/MapInfos.rxdata")
name = map_infos[map_id].name
# DNS Weather And Transition Setup
SDK.text_box_input(name, 1)
end

def setup_dns
@dns_active = true
tone = $ats.period_tint
$game_screen.start_tone_change(Tone.new(tone[0],tone[1],tone[2],tone[3]),0)
end

def setup_weather
@weather_active = true
$game_screen.weather($ats.weather_type, $ats.weather_strength, 0)
$ats.set_weather_bgs($ats.weather_type)
end

def setup_transition
@tileset_transition = true
map_infos = load_data("Data/MapInfos.rxdata")
@map_name = map_infos[map_id].name
# Tileset Transition
if $game_map.tileset_transition
name = $game_map.tileset_name.split
@tileset_name = name[0] + " " + $ats.season_id.to_s
for i in 0..6
autotile_name = @autotile_names[i].split
next if autotile_name[0] == nil
if autotile_name[1] == nil
@autotile_names[i] = autotile_name[0]
else
@autotile_names[i] = autotile_name[0] + " " + $ats.season_id.to_s
end
end
end
end

def name
return @map_name
end

def update
# Tileset Transition
if @tileset_transition
if @season != $ats.season_id
@tileset_refresh = true
@season = $ats.season_id
tileset_name = $game_map.tileset_name.split
@tileset_name = tileset_name[0] + " " + $ats.season_id.to_s
for i in 0..6
autotile_name = $game_map.autotile_names[i].split
next if autotile_name[0] == nil
if autotile_name[1] == nil
@autotile_names[i] = autotile_name[0]
else
@autotile_names[i] = autotile_name[0] + " " + $ats.season_id.to_s
end
end
end
end
ats_game_map_update
end

end
#===================================================
# ▲ CLASS Game_Map Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Spriteset_Map Additional Code Begins
#===================================================
class Spriteset_Map

alias ats_spriteset_map_update update

def update
if $game_map.tileset_refresh
$game_map.tileset_refresh = false
Graphics.freeze
dispose
initialize
Graphics.transition(20)
end
ats_spriteset_map_update
end

end
#===================================================
# ▲ CLASS Spriteset_Map Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS BGS Additional Code Begins
#===================================================

class BGS
#--------------------------------------------------------------------------
attr_accessor :name
attr_accessor :volume
attr_accessor :pitch
#--------------------------------------------------------------------------
def initialize
@name = ""
@volume = 80
@pitch = 100
end
end
#===================================================
# ▲ CLASS BGS Additional Code Ends
#===================================================

#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
}


Possibly Related Threads…
Thread Author Replies Views Last Post
  Looting System Thieffer 0 2,644 06-18-2009, 01:00 PM
Last Post: Thieffer
  Difficulity Level System Ekhart 0 2,641 03-14-2008, 01:00 PM
Last Post: Ekhart
  Dragon Quest VII Class Changing System Sephirothtds 0 2,762 11-15-2007, 01:00 PM
Last Post: Sephirothtds
  Map Stats and Info System Dubealex 0 2,800 10-19-2007, 01:00 PM
Last Post: Dubealex
  Spell Tablet System GubiD 0 2,895 08-25-2007, 01:00 PM
Last Post: GubiD
  Orb Based Skill System El Conductor 0 2,606 07-29-2007, 01:00 PM
Last Post: El Conductor
  Party Deleting System Ekhart 0 2,642 07-05-2007, 01:00 PM
Last Post: Ekhart
  Class Stat Bonus System Shinami 0 2,549 05-20-2007, 01:00 PM
Last Post: Shinami
  MATERIA SYSTEM with AP illustrationism 0 2,891 05-06-2007, 01:00 PM
Last Post: illustrationism
  MMORPG Leveling System Lettuce 0 2,686 12-23-2006, 01:00 PM
Last Post: Lettuce



Users browsing this thread: 1 Guest(s)