#============================================================================== # ■ RGSS3 天候「五色紙吹雪・プリズムレイン」 Ver2.01 by 星潟 #------------------------------------------------------------------------------ # 新天候を追加します。 # 呼び出すにはイベントコマンドのスクリプトで # 下記の何れかのように記入して下さい。 # screen.change_weather("cpr1", n, w) 五色紙吹雪 左下へ # screen.change_weather("cpr2", n, w) プリズムレイン 左下へ # screen.change_weather("cpr3", n, w) 五色紙吹雪 右下へ # screen.change_weather("cpr4", n, w) プリズムレイン 右下へ # screen.change_weather("cpr5", n, w) 五色紙吹雪 上から下へ # screen.change_weather("cpr6", n, w) プリズムレイン 上から下へ # 「""」で囲んだ部分は、「""」で囲まず、先頭に「:」をつけても構いません。 # 例. # screen.change_weather(:cpr1, n, w) # なお、各個内のnの部分には強さ(1〜無制限)、 # wの部分には切り替わるまでのウェイト(0〜無制限)を入力してください。 # 切り替わるまでウェイトにしたい場合は、先程、wの部分に入力したウェイトを # 通常のウェイトとしてイベントコマンドとして実行すれば問題ありません。 #------------------------------------------------------------------------------ # Ver1.01 パターンを増加させました。 # また、プリセットスクリプトに倣い # 内部的には文字列でなくシンボルで天候を指定するように変更しました。 # 以前のバージョンのプリズムレイン/五色紙吹雪天候の状態で # セーブを行ったセーブデータでは # 正常に天候が発生しないかもしれませんのでご注意ください。 # Ver1.02 暗さが設定される不具合を修正。 # Ver2.00 処理の全面的な見直しを行いました。 #============================================================================== module Cache #-------------------------------------------------------------------------- # 五色紙吹雪/プリズムレインのキャッシュ化 #-------------------------------------------------------------------------- def self.star_weather_cpr(number) @cache ||= {} path = "Graphics/StarWeatherCpr/" + number.to_s unless include?(path) @cache[path] = Bitmap.new(4, 4) case number when 0;r = 255;g = 0 ;b = 0 when 1;r = 0 ;g = 0 ;b = 255 when 2;r = 255;g = 255;b = 0 when 3;r = 0 ;g = 255;b = 0 when 4;r = 255;g = 255;b = 255 end @cache[path].fill_rect(0, 0, 4, 4, Color.new(r,g,b, 255)) end @cache[path] end end class Game_Screen #-------------------------------------------------------------------------- # 天候の変更 #-------------------------------------------------------------------------- alias change_weather_cpr change_weather def change_weather(type, power, duration) change_weather_cpr((type.to_s.include?("cpr") ? type.to_sym : type), power, duration) end end class Spriteset_Weather #-------------------------------------------------------------------------- # 暗さの取得 #-------------------------------------------------------------------------- alias cpr_dimness dimness def dimness @type.to_s.include?("cpr") ? 0 : cpr_dimness end #-------------------------------------------------------------------------- # 画面の更新 #-------------------------------------------------------------------------- alias update_screen_cpr update_screen def update_screen @star_cpr_flag = @type.to_s.include?("cpr") update_screen_cpr end #-------------------------------------------------------------------------- # スプライトの更新 #-------------------------------------------------------------------------- alias update_sprite_cpr update_sprite def update_sprite(sprite) return update_sprite_cpr(sprite) unless @star_cpr_flag @ex_w_count = 0 if @ex_w_count == nil or @ex_w_count > 4 sprite.ox = @ox sprite.oy = @oy case @type when :cpr1;sprite.bitmap = Cache.star_weather_cpr(@ex_w_count);sprite.x -= 1 when :cpr2;sprite.bitmap = Cache.star_weather_cpr(rand(5));sprite.x -= 1 when :cpr3;sprite.bitmap = Cache.star_weather_cpr(@ex_w_count);sprite.x += 1 when :cpr4;sprite.bitmap = Cache.star_weather_cpr(rand(5));sprite.x += 1 when :cpr5;sprite.bitmap = Cache.star_weather_cpr(@ex_w_count) when :cpr6;sprite.bitmap = Cache.star_weather_cpr(rand(5)) end sprite.y += 1 @ex_w_count += 1 sprite.opacity -= 12 if sprite.opacity < 64 data = rand(50) * 0.01 sprite.zoom_x = 0.5 + data sprite.zoom_y = 0.5 + data create_new_particle(sprite) sprite.opacity = 255 end end end