#============================================================================== # ■ RGSS2 天候「五色紙吹雪・プリズムレイン」 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 新天候を追加します。 # 呼び出すにはイベントコマンドのスクリプトで # screen.weather("cpr1", n, w)もしくはscreen.weather("cpr2", n, w)としてください。 # なお、各個内のnの部分には強さ(1〜9)、 # wの部分には切り替わるまでのウェイト(0〜無制限)を入力してください。 # 切り替わるまでウェイトにしたい場合は、先程、wの部分に入力したウェイトを # 通常のウェイトとしてイベントコマンドとして実行すれば問題ありません。 #============================================================================== class Spriteset_Weather #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_cpr initialize def initialize(viewport = nil) initialize_cpr(viewport) colorcpr1 = Color.new(255, 0, 0, 255) colorcpr2 = Color.new(0, 0, 255, 255) colorcpr3 = Color.new(255, 255, 0, 255) colorcpr4 = Color.new(0, 255, 0, 255) colorcpr5 = Color.new(255, 255, 255, 255) @cpr_bitmap1 = Bitmap.new(4, 4) @cpr_bitmap2 = Bitmap.new(4, 4) @cpr_bitmap3 = Bitmap.new(4, 4) @cpr_bitmap4 = Bitmap.new(4, 4) @cpr_bitmap5 = Bitmap.new(4, 4) @cpr_bitmap1.fill_rect(0, 0, 4, 4, colorcpr1) @cpr_bitmap2.fill_rect(0, 0, 4, 4, colorcpr2) @cpr_bitmap3.fill_rect(0, 0, 4, 4, colorcpr3) @cpr_bitmap4.fill_rect(0, 0, 4, 4, colorcpr4) @cpr_bitmap5.fill_rect(0, 0, 4, 4, colorcpr5) end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias dispose_cpr dispose def dispose dispose_cpr @cpr_bitmap1.dispose @cpr_bitmap2.dispose @cpr_bitmap3.dispose @cpr_bitmap4.dispose @cpr_bitmap5.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_cpr update def update return update_cpr if @type != "cpr1" && @type != "cpr2" for i in 1..@max sprite = @sprites[i] if sprite == nil break end @ex_w_count = 0 if @ex_w_count == nil or @ex_w_count > 4 if @type == "cpr2" case rand(5) when 0 sprite.bitmap = @cpr_bitmap1 when 1 sprite.bitmap = @cpr_bitmap2 when 2 sprite.bitmap = @cpr_bitmap3 when 3 sprite.bitmap = @cpr_bitmap4 when 4 sprite.bitmap = @cpr_bitmap5 end elsif @type == "cpr1" && sprite.bitmap != @cpr_bitmap1 && sprite.bitmap != @cpr_bitmap2 && sprite.bitmap != @cpr_bitmap3 && sprite.bitmap != @cpr_bitmap4 && sprite.bitmap != @cpr_bitmap5 case @ex_w_count when 0 sprite.bitmap = @cpr_bitmap1 when 1 sprite.bitmap = @cpr_bitmap2 when 2 sprite.bitmap = @cpr_bitmap3 when 3 sprite.bitmap = @cpr_bitmap4 when 4 sprite.bitmap = @cpr_bitmap5 end @ex_w_count += 1 end sprite.x -= 0.5 sprite.y += 1 sprite.opacity -= 8 x = sprite.x - @ox y = sprite.y - @oy if sprite.opacity < 64 sprite.x = rand(800) - 100 + @ox sprite.y = rand(600) - 200 + @oy sprite.opacity = 255 data = rand(50) * 0.01 sprite.zoom_x = 0.5 + data sprite.zoom_y = 0.5 + data end end end end