#============================================================================== # ■ RGSS3 天候「桜吹雪」 Ver2.01 by 星潟 #------------------------------------------------------------------------------ # 新天候を追加します。 # 呼び出すにはイベントコマンドのスクリプトで # 下記の何れかのように記入して下さい。 # screen.change_weather("ouka1", n, w) 桜吹雪 左下へ # screen.change_weather("ouka2", n, w) 桜吹雪 右下へ # screen.change_weather("ouka3", n, w) 桜吹雪 上から下へ # 「""」で囲んだ部分は、「""」で囲まず、先頭に「:」をつけても構いません。 # 例. # screen.change_weather(:ouka1, n, w) # なお、各個内のnの部分には強さ(1〜無制限)、 # wの部分には切り替わるまでのウェイト(0〜無制限)を入力してください。 # ただし、強さに関しては強ければ強くするほど # 負荷もそれに準じますのでご注意ください。 # # 切り替わるまでウェイトにしたい場合は、先程、wの部分に入力したウェイトを # 通常のウェイトとしてイベントコマンドとして実行すれば問題ありません。 #------------------------------------------------------------------------------ # Ver2.00 処理の全面的な見直しを行いました。 #============================================================================== module Cache #-------------------------------------------------------------------------- # 桜吹雪のキャッシュ化 #-------------------------------------------------------------------------- def self.star_weather_ouka(number) @cache ||= {} path = "Graphics/StarWeatherOuka/" + number.to_s unless include?(path) @cache[path] = Bitmap.new(3, 3) @cache[path].fill_rect(0, 0, 3, 3, Color.new(255, 120 + 30 * number, 135 + 30 * number, 255)) end @cache[path] end end class Game_Screen #-------------------------------------------------------------------------- # 天候の変更 #-------------------------------------------------------------------------- alias change_weather_ouka change_weather def change_weather(type, power, duration) change_weather_ouka((type.to_s.include?("ouka") ? type.to_sym : type), power, duration) end end class Spriteset_Weather #-------------------------------------------------------------------------- # 暗さの取得 #-------------------------------------------------------------------------- alias ouka_dimness dimness def dimness @star_ouka_flag ? 0 : ouka_dimness end #-------------------------------------------------------------------------- # 画面の更新 #-------------------------------------------------------------------------- alias update_screen_ouka update_screen def update_screen @star_ouka_flag = @type.to_s.include?("ouka") update_screen_ouka end #-------------------------------------------------------------------------- # スプライトの更新 #-------------------------------------------------------------------------- alias update_sprite_ouka update_sprite def update_sprite(sprite) case @type when :ouka1;sprite.ox = @ox;sprite.oy = @oy;sprite.x -= 1 when :ouka2;sprite.ox = @ox;sprite.oy = @oy;sprite.x += 1 when :ouka3 else;return update_sprite_ouka(sprite) end sprite.y += 1 sprite.bitmap = Cache.star_weather_ouka(rand(5)) sprite.opacity -= 12 if sprite.opacity < 64 sprite.zoom_x = 0.5 + rand(50) * 0.01 sprite.zoom_y = 0.5 + rand(50) * 0.01 create_new_particle(sprite) sprite.opacity = 255 end end end