#◆◇◆◇◆ ☆ 暗転ターゲット ver 1.00 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin セクション指定上下関係 動くリザルトエクセル ↓ このスクリプト 戦闘時のターゲッティングの演出を、 従来のアローグラフィックから、 ターゲット以外の暗転方式に変更します。 カスタマイズでアローも表示するかどうかを設定できます。 =end #============================================================================== # ☆ カスタマイズ #============================================================================== module MINTO # 暗転ターゲットを有効化 ( true で有効 / false で無効 ) RGSS["Targeting"] = true # アローもついでに表示するかどうか( true / false ) Arrow_Visible = false end if MINTO::RGSS["Targeting"] #============================================================================== # ■ RPG::Sprite # ゲームのスプライトを管理するスーパークラスです。 #============================================================================== module RPG class Sprite < ::Sprite attr_accessor :black end end #============================================================================== # ■ Game_Battler (分割定義 1) #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。 # このクラスは Game_Actor クラスと # Game_Enemy クラスのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :black # 暗転フラグ end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● バトラー暗転 #-------------------------------------------------------------------------- def blackout(battler) case battler.black when true if battler.tone.red != -100 battler.tone.red = [battler.tone.red - 35, -100].max battler.tone.green = [battler.tone.green - 35, -100].max battler.tone.blue = [battler.tone.blue - 35, -100].max end when false if battler.tone.red != 0 battler.tone.red = [battler.tone.red + 35, 0].min battler.tone.green = [battler.tone.green + 35, 0].min battler.tone.blue = [battler.tone.blue + 35, 0].min end end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_MINTO_Targeting update def update # 元の処理を実行 update_MINTO_Targeting if @battler # バトラー暗転処理 self.black = @battler.black blackout(self) end end end #============================================================================== # ■ Spriteset_Battle #------------------------------------------------------------------------------ #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ # スの内部で使用されます。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :tone_type # 暗転モード attr_accessor :tone_rate # 暗転進行度 attr_accessor :tone_power # 暗転速度 attr_accessor :tone_max # 暗転の上限 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_MINTO_Targeting initialize def initialize # 元の処理を実行 initialize_MINTO_Targeting @tone_type = 1 @tone_rate = 0 @tone_power = 0 @tone_max = 0 end #-------------------------------------------------------------------------- # ● 暗転モード処理 #-------------------------------------------------------------------------- def blackout(type = 0, power = 10, max = 150) @tone_power = power @tone_type = type @tone_max = max end #-------------------------------------------------------------------------- # ● フレーム更新 (暗転処理) #-------------------------------------------------------------------------- def update_blackout case @tone_type when 0 if @tone_rate != -@tone_max @tone_rate = [@tone_rate - @tone_power, -@tone_max].max @battleback_sprite.tone.red = @tone_rate @battleback_sprite.tone.green = @tone_rate @battleback_sprite.tone.blue = @tone_rate end when 1 if @tone_rate != 0 @tone_rate = [@tone_rate + @tone_power, 0].min @battleback_sprite.tone.red = @tone_rate @battleback_sprite.tone.green = @tone_rate @battleback_sprite.tone.blue = @tone_rate end end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_MINTO_Targeting update def update # 画面の暗転処理を更新 if !MINTO::RGSS["リザルトエクセル"] update_blackout end # 元の処理を実行 update_MINTO_Targeting end end #============================================================================== # ■ Arrow_Base #------------------------------------------------------------------------------ #  バトル画面で使用するアローカーソル表示用のスプライトです。このクラスは # Arrow_Enemy クラスと Arrow_Actor クラスのスーパークラスとして使用されます。 #============================================================================== class Arrow_Base < Sprite #-------------------------------------------------------------------------- # ● オブジェクト初期化 # viewport : ビューポート #-------------------------------------------------------------------------- alias initialize_MINTO_Targeting initialize def initialize(viewport) # 元の処理を実行 initialize_MINTO_Targeting(viewport) @update = false if !MINTO::Arrow_Visible self.bitmap = nil end end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose for battler in $game_party.actors + $game_troop.enemies battler.black = false end $scene.blackout(1, 25) super end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if MINTO::Arrow_Visible # 点滅カウントを更新 @blink_count = (@blink_count + 1) % 8 # 転送元の矩形を設定 if @blink_count < 4 self.src_rect.set(128, 96, 32, 32) else self.src_rect.set(160, 96, 32, 32) end end # ヘルプテキストを更新 (update_help は継承先で定義される) if @help_window != nil update_help end end end #============================================================================== # ■ Arrow_Enemy #------------------------------------------------------------------------------ #  エネミーを選択させるためのアローカーソルです。 # このクラスは Arrow_Base クラスを継承します。 #============================================================================== class Arrow_Enemy < Arrow_Base #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super # 存在しないエネミーを指していたら飛ばす $game_troop.enemies.size.times do break if self.enemy.exist? @index += 1 @index %= $game_troop.enemies.size end # カーソル右 if Input.repeat?(Input::RIGHT) $game_system.se_play(Data_System.data.cursor_se) $game_troop.enemies.size.times do @index += 1 @index %= $game_troop.enemies.size break if self.enemy.exist? end end # カーソル左 if Input.repeat?(Input::LEFT) $game_system.se_play(Data_System.data.cursor_se) $game_troop.enemies.size.times do @index += $game_troop.enemies.size - 1 @index %= $game_troop.enemies.size break if self.enemy.exist? end end # スプライトの座標を設定 if self.enemy != nil $scene.blackout(0, 25, 64) if !@update @update = true if MINTO::Arrow_Visible self.x = self.enemy.screen_x self.y = self.enemy.screen_y end for battler in $game_party.actors + $game_troop.enemies if self.enemy != battler battler.black = true if !battler.black else battler.black = false if battler.black end end end end end #============================================================================== # ■ Arrow_Actor #------------------------------------------------------------------------------ #  アクターを選択させるためのアローカーソルです。 # このクラスは Arrow_Base クラスを継承します。 #============================================================================== class Arrow_Actor < Arrow_Base #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super # カーソル右 if Input.repeat?(Input::RIGHT) $game_system.se_play(Data_System.data.cursor_se) @index += 1 @index %= $game_party.actors.size end # カーソル左 if Input.repeat?(Input::LEFT) $game_system.se_play(Data_System.data.cursor_se) @index += $game_party.actors.size - 1 @index %= $game_party.actors.size end # スプライトの座標を設定 if self.actor != nil $scene.blackout(0, 25, 64) if !@update @update = true if MINTO::Arrow_Visible self.x = self.actor.screen_x self.y = self.actor.screen_y end for battler in $game_party.actors + $game_troop.enemies if self.actor != battler battler.black = true if !battler.black else battler.black = false if battler.black end end end end end #============================================================================== # ■ Scene_Battle (分割定義 4) #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 暗転処理 #-------------------------------------------------------------------------- def blackout(type = 0, power = 10, max = 150) @spriteset.blackout(type, power, max) end end end