135 lines
No EOL
5.1 KiB
Ruby
135 lines
No EOL
5.1 KiB
Ruby
=begin
|
||
RGSS3
|
||
|
||
★ 天候:舞い上がる光 ★
|
||
|
||
正確には天候じゃないけど、そこは気にしない。
|
||
|
||
● 使い方 ●========================================================
|
||
イベントコマンドのスクリプトで以下のどちらかの命令を実行。
|
||
--------------------------------------------------------------------
|
||
soar_photon
|
||
soar_photon(true)
|
||
--------------------------------------------------------------------
|
||
後者のように引数にtrueを渡した場合、光が伸びながら消えるようになります。
|
||
====================================================================
|
||
|
||
ver1.01
|
||
|
||
Last Update : 2011/12/25
|
||
12/25 : プリセットの天候使用時にエラーが発生する不具合を修正
|
||
12/17 : RGSS2からの移植
|
||
|
||
ろかん http://kaisou-ryouiki.sakura.ne.jp/
|
||
=end
|
||
|
||
$rsi ||= {}
|
||
$rsi["天候:舞い上がる光"] = true
|
||
|
||
class Game_Interpreter
|
||
#--------------------------------------------------------------------------
|
||
# ● 天候:舞い上がる光の開始
|
||
#--------------------------------------------------------------------------
|
||
def soar_photon(type = false)
|
||
screen.change_weather(type ? :photon2 : :photon1, 1, 0)
|
||
end
|
||
end
|
||
|
||
class Spriteset_Weather
|
||
WSP_TYPE1 = :photon1
|
||
WSP_TYPE2 = :photon2
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#--------------------------------------------------------------------------
|
||
alias soar_photon_initialize initialize
|
||
def initialize(viewport = nil)
|
||
soar_photon_initialize(viewport)
|
||
create_photon_bitmap
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 光子の色 1
|
||
#--------------------------------------------------------------------------
|
||
def photon_color1
|
||
Color.new(200, 255, 255, 120)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 光子の色 2
|
||
#--------------------------------------------------------------------------
|
||
def photon_color2
|
||
Color.new(170, 255, 255, 255)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 天候[舞い上がる光]のビットマップを作成
|
||
#--------------------------------------------------------------------------
|
||
def create_photon_bitmap
|
||
@photon_bitmap = Bitmap.new(6, 6)
|
||
@photon_bitmap.fill_rect(0, 1, 6, 4, photon_color1)
|
||
@photon_bitmap.fill_rect(1, 0, 4, 6, photon_color1)
|
||
@photon_bitmap.fill_rect(1, 2, 4, 2, photon_color2)
|
||
@photon_bitmap.fill_rect(2, 1, 2, 4, photon_color2)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 解放
|
||
#--------------------------------------------------------------------------
|
||
alias soar_photon_dispose dispose
|
||
def dispose
|
||
soar_photon_dispose
|
||
@photon_bitmap.dispose
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 新しい光子の作成
|
||
#--------------------------------------------------------------------------
|
||
def create_new_photon(sprite)
|
||
sprite.x = rand(640) - 50 + @ox
|
||
sprite.y = rand(480) + 50 + @oy
|
||
sprite.opacity = rand(76) + 180
|
||
sprite.zoom_x = sprite.zoom_y = 1.0
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 天候タイプの設定
|
||
#--------------------------------------------------------------------------
|
||
alias soar_photon_type= type=
|
||
def type=(type)
|
||
if @type != type
|
||
@sprites.each{|sprite| sprite.zoom_x = sprite.zoom_y = 1.0}
|
||
end
|
||
self.soar_photon_type = type
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スプライトの更新
|
||
#--------------------------------------------------------------------------
|
||
alias soar_photon_update_sprite update_sprite
|
||
def update_sprite(sprite)
|
||
if @type == :photon1 || @type == :photon2
|
||
case @type
|
||
when :photon1
|
||
update_sprite_photon1(sprite)
|
||
when :photon2
|
||
update_sprite_photon2(sprite)
|
||
end
|
||
sprite.ox = @ox / sprite.zoom_x
|
||
sprite.oy = @oy / sprite.zoom_y
|
||
create_new_photon(sprite) if sprite.opacity < 16
|
||
else
|
||
soar_photon_update_sprite(sprite)
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スプライトの更新[舞い上がる光]
|
||
#--------------------------------------------------------------------------
|
||
def update_sprite_photon1(sprite)
|
||
sprite.bitmap = @photon_bitmap
|
||
sprite.y -= 1
|
||
sprite.opacity -= 2
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スプライトの更新[舞い上がる光](伸びながら消える)
|
||
#--------------------------------------------------------------------------
|
||
def update_sprite_photon2(sprite)
|
||
sprite.bitmap = @photon_bitmap
|
||
sprite.y -= 1
|
||
sprite.opacity -= 2
|
||
sprite.zoom_x -= 0.006
|
||
sprite.zoom_y += 0.06
|
||
end
|
||
end |