=================================
module MINTO
# 鏡床スクリプトを有効化 ( true で有効 / false で無効 )
#RGSS["Mirror_Tile"] = true
RGSS_SZ_A = true
end
#if MINTO::RGSS["Mirror_Tile"] == true then
if MINTO::RGSS_SZ_A == true then
#==============================================================================
# ☆ カスタマイズ
#------------------------------------------------------------------------------
# 機能のカスタマイズを行うモジュールです。
#==============================================================================
module MINTO
# 鏡床のタイルとして扱う地形タグのID
Mirror_Tile_ID = 1
end
#==============================================================================
# ■ Sprite
#------------------------------------------------------------------------------
# スプライト表示を扱う組み込みクラスです。
#==============================================================================
class Sprite
#--------------------------------------------------------------------------
# ● 複製の作成
#--------------------------------------------------------------------------
def dup
# 各データをコピー
sprite = Sprite.new(self.viewport)
sprite.bitmap = self.bitmap
sprite.x = self.x
sprite.y = self.y
sprite.z = self.z
sprite.visible = self.visible
sprite.ox = self.ox
sprite.oy = self.oy + 10 #- 5
sprite.angle = self.angle
sprite.mirror = self.mirror
sprite.opacity = self.opacity
sprite.blend_type = self.blend_type
sprite.color = self.color
rect = self.src_rect
sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
sprite.zoom_x = 1#1#self.zoom_x
sprite.zoom_y = 1.1#self.zoom_y
#rate = 0.8#1#.2
#self.zoom_x = 0.8
#self.zoom_y = 0.8#rate
return sprite
end
end
#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
# キャラクター表示用のスプライトです。
# Game_Character クラスのインスタンスを監視し、
# スプライトの状態を自動的に変化させます。
#==============================================================================
class Sprite_Character < RPG::Sprite
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
# 影が存在する場合
if @shadow_sprite != nil then
# 影を解放
@shadow_sprite.bitmap.dispose
@shadow_sprite.dispose
end
# スーパークラスを実行
super
end
#--------------------------------------------------------------------------
# ● 地形タグの取得
#--------------------------------------------------------------------------
def terrain_tag(x, y)
# 地形タグの情報を返す
return $game_map.terrain_tag(x, y)
end
#--------------------------------------------------------------------------
# ● 影の作成
#--------------------------------------------------------------------------
def shadow_set
# 影用のスプライトを生成
@shadow_sprite = self.dup
# 座標を調節する
@shadow_sprite.y = self.y - (self.oy / 6)
@shadow_sprite.z = self.z
# 色を白っぽくする
@shadow_sprite.tone.red = 64
@shadow_sprite.tone.green = 64
@shadow_sprite.tone.blue = 64
# 半透明にする
@shadow_sprite.opacity = 160
# 180度回転させる
@shadow_sprite.angle = 180
# 左右を反転させる
@shadow_sprite.mirror = (not self.mirror == true)
end
#--------------------------------------------------------------------------
# ● 影の更新
#--------------------------------------------------------------------------
def update_shadow
# キャラクターの現在位置を取得
x = @character.x
y = @character.y
# 元々影が存在しない場合
if @shadow_sprite == nil then
# 処理を終了
return
end
# 下のタイルの地形タグのIDが Mirror_Tile_ID 以外の場合
if ( terrain_tag(x, y+1) != MINTO::Mirror_Tile_ID or terrain_tag(x, y+1) == 2 ) then
# 影を不可視状態にする
@shadow_sprite.visible = false
# 処理を終了
return
# 下のタイルの地形タグのIDが Mirror_Tile_ID の場合
else
# Y座標補正値を初期化する
@y_plus = 0
if @character.name.include?("NotShadow")
@shadow_sprite.visible = false
return
end
end
# 各情報を更新する
rect = self.src_rect
@shadow_sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
@shadow_sprite.x = self.x
@shadow_sprite.y = self.y - (self.oy / 6) + @y_plus + 10
@shadow_sprite.opacity = self.opacity - 95
@shadow_sprite.z = self.z - 1
@shadow_sprite.visible = self.visible
end
#--------------------------------------------------------------------------
# ● フレーム更新
# alias : update_MINTO_Mirror_Tile
#--------------------------------------------------------------------------
alias update_MINTO_Mirror_Tile update
def update
# 元の処理を実行
update_MINTO_Mirror_Tile
# まだ影を作成していない場合
if @shadow == nil then
# キャラクターがイベントの場合
if @character.is_a?(Game_Event) == true then
# 有効なイベントの場合
if @character.list != nil then
# 最初の内容が注釈の場合
# if @character.list[0].code == 108 then
# 注釈の内容が「影描写」だった場合
# if @character.list[0].parameters == ["影描画"] then
# 影を作成
shadow_set
# 作成済みフラグをオン
@shadow = true
# end
# end
end
# キャラクターがプレイヤーの場合
else
# 影を作成
shadow_set
# 作成済みフラグをオン
@shadow = true
end
end
# 影を更新
update_shadow
end
end
end