#◆◇◆◇◆ コラプス改造VX ver 1.02 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver 1.02(2008/03/02) 演出タイプを4つ増加。 ver 1.01(2008/01/27) 崩壊前に敵ごとのアニメを再生できるように機能を追加 演出タイプにシェイクを追加 説明 敵を倒した際の崩壊の演出を、 敵ごとに設定できるようになります タイプは9タイプあり、設定によって変わってきます タイプ 1 敵が縦に細く伸びて消えます タイプ 2 敵が横に伸びて消えます(煙やゴーストタイプ向き?) タイプ 3 敵が一旦縦に縮んだ後、縦に細く伸びて消えます タイプ 4 敵が縦に細く伸びながら回転して消えます(処理に負荷がかかります) タイプ 5 敵が左右に揺れながら崩れます(ボス向きです) タイプ6 敵が垂直方向に真っ二つになり、上下にスライドします タイプ7 敵が水平方向に真っ二つになり、左右にスライドします タイプ8 敵が垂直方向に真っ二つになり、左右にスライドします タイプ9 敵が水平方向に真っ二つになり、上下にスライドします なお、設定していない場合は、通常の演出です。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # コラプス改造を有効化 ( true で有効 / false で無効 ) RGSS["collapse_customize"] = true end if MINTO::RGSS["collapse_customize"] == true then #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズを行います。 #============================================================================== module RPG #============================================================================ # ■ Enemy #---------------------------------------------------------------------------- # エネミーのデータを管理するクラスです。 #============================================================================ class Enemy #----------------------------------------------------------------------- # ● アニメコラプスIDの取得(サンプルデータを下に設定してください) #----------------------------------------------------------------------- def anime_collapse # 敵のIDに応じて分岐 case @id # スライム when 1 then # アニメコラプスIDを返す #(行いたくない場合は 0 をセットしてください) return 0 # ID 2〜3 when 2..3 then # アニメコラプスIDを返す return 1 # それ以外の敵の場合 else # アニメコラプスIDを返す return 79 end end #----------------------------------------------------------------------- # ● コラプスタイプの取得(サンプルデータを下に設定してください) #----------------------------------------------------------------------- def collapse_type # 敵のIDに応じて分岐 case @id # スライム when 1 then # フラグを返す(演出タイプ 1 ) return 1 # ID 2〜3 when 2..3 then # フラグを返す(演出タイプ 2 ) return 2 # それ以外の敵の場合 else # フラグを返す(演出なし) return 0 end end end end #============================================================================== # ☆ MINTO_Sprite_Battler_02 #------------------------------------------------------------------------------ # Sprite_Battlerクラスの強化システムモジュールです。 #============================================================================== module MINTO_Sprite_Battler_02 #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # スーパークラスを実行 (継承先の処理に移行する) super # アニメ再生中の場合 if self.animation? == true then # メソッドを返す(本来の処理をスキップ) return end # コラプス実行中の場合 if @effect_type == Sprite_Battler::COLLAPSE then # コラプスの処理を更新(バトラーを渡す) update_collapse_effect(@battler) end end #-------------------------------------------------------------------------- # ● フレーム更新(シェイク) #-------------------------------------------------------------------------- def update_shake # エフェクト更新カウントに応じて分岐 case @effect_duration # カウントに応じてスプライトを左右にスライドさせる when 44..48 then self.ox -= 1 when 40..44 then self.ox += 2 when 36..40 then self.ox -= 2 when 32..36 then self.ox += 2 when 28..32 then self.ox -= 2 when 24..28 then self.ox += 2 when 20..24 then self.ox -= 2 when 16..20 then self.ox += 2 when 12..16 then self.ox -= 2 when 8..12 then self.ox += 2 when 4..8 then self.ox -= 2 when 4..8 then self.ox += 2 when 0..4 then self.ox -= 2 end # バトラーを崩す(画像の大きさを 48 で割ってその値分崩す) self.src_rect.y -= self.bitmap.rect.height / 48 end #-------------------------------------------------------------------------- # ● フレーム更新(コラプス演出) # battler : 対象バトラー(Game_Battler) #-------------------------------------------------------------------------- def update_collapse_effect(battler) # バトラーがエネミー以外の場合 if battler.class != Game_Enemy then # メソッドを返す return end # アニメコラプスを実行していない場合 if @anime_collapse == nil then # 対象のアニメコラプスが有効な場合 if @battler.anime_collapse >= 1 then # アニメコラプスをセット @battler.animation_id = @battler.anime_collapse # アニメコラプス実行済みフラグをセット @anime_collapse = true # メソッドを返す return end end # 対象のアニメコラプスが有効な場合 if @battler.anime_collapse >= 1 then # エフェクト更新カウントが 47 の場合 if @effect_duration == 47 then # 崩壊時のSEを演奏 Sound.play_enemy_collapse end end # エフェクト更新カウントが 0 の場合 if @effect_duration == 0 then # 縦横のズームを初期化 self.zoom_x = 1 self.zoom_y = 1 # 複製スプライトが存在する場合 if @dup_sprite != nil then # 複製スプライトを解放 @dup_sprite.bitmap.dispose @dup_sprite.bitmap = nil @dup_sprite.dispose @dup_sprite = nil end # メソッドを返す return end # 複製スプライトが存在する場合 if @dup_sprite != nil then # 不透明度を同期 @dup_sprite.opacity = self.opacity end # コラプス演出タイプに応じて分岐 case battler.collapse_type # 処理なし when 0 then # 演出 1 when 1 then # ズーム補正(縦に伸ばす) self.zoom_x -= 0.05 self.zoom_y += 0.03 # 演出 2 when 2 then # ズーム補正(横に伸ばす) self.zoom_x += 0.05 # 演出 3 when 3 then # エフェクト更新カウントが 24 以上の場合 if @effect_duration >= 24 then # ズーム補正(縮める) self.zoom_y -= 0.02 self.zoom_x += 0.01 # 横のズーム補正値が 0 以下にならないようにする self.zoom_y = [self.zoom_y, 0].max # 横のズーム補正値が 1.24 以上にならないようにする self.zoom_x = [self.zoom_x, 1.24].min # エフェクト更新カウントが 24 未満の場合 else # ズーム補正(縦に伸ばす) self.zoom_x -= 0.115 self.zoom_y += 0.6 end # 演出 4(処理に負荷がかかります) when 4 then # ズーム補正(回転させる) self.zoom_x -= 0.03 self.zoom_y += 0.05 # 回転度を修正 self.angle += 7.5 # 演出 5 when 5 then # シェイクを更新 update_shake # 縦二分割 when 6 then # エフェクト更新カウントが 47 の場合 if @effect_duration == 47 then # バトラーの複製を作成 @dup_sprite = self.dup # 座標を調節 @dup_sprite.src_rect.width = @dup_sprite.ox self.src_rect.x = self.ox self.x += self.ox # エフェクト更新カウントが 47 でない場合 else # 座標を調節 self.y += self.oy / 96 @dup_sprite.y -= @dup_sprite.oy / 96 end # 横二分割 when 7 then # エフェクト更新カウントが 47 の場合 if @effect_duration == 47 then # バトラーの複製を作成 @dup_sprite = self.dup # 座標を調節 @dup_sprite.src_rect.height = @dup_sprite.oy / 2 self.src_rect.y = self.oy / 2 self.y += self.oy / 2 # エフェクト更新カウントが 47 でない場合 else # 座標を調節 self.x += self.ox / 48 @dup_sprite.x -= @dup_sprite.ox / 48 end # 縦二分割2 when 8 then # エフェクト更新カウントが 47 の場合 if @effect_duration == 47 then # バトラーの複製を作成 @dup_sprite = self.dup # 座標を調節 @dup_sprite.src_rect.width = @dup_sprite.ox self.src_rect.x = self.ox self.x += self.ox # エフェクト更新カウントが 47 でない場合 else # 座標を調節 self.x += self.ox / 48 @dup_sprite.x -= @dup_sprite.ox / 48 end # 横二分割2 when 9 then # エフェクト更新カウントが 47 の場合 if @effect_duration == 47 then # バトラーの複製を作成 @dup_sprite = self.dup # 座標を調節 @dup_sprite.src_rect.height = @dup_sprite.oy / 2 self.src_rect.y = self.oy / 2 self.y += self.oy / 2 # エフェクト更新カウントが 47 でない場合 else # 座標を調節 self.y += self.oy / 96 @dup_sprite.y -= @dup_sprite.oy / 96 end end end #-------------------------------------------------------------------------- # ● X座標の変更 # n : 新しいX座標 #-------------------------------------------------------------------------- def x=(n) # コラプス実行中の場合 if @effect_type == Sprite_Battler::COLLAPSE then # 位置に変化がない場合 if n == @battler.screen_x then # メソッドを返す return end end # スーパークラスを実行 super(n) end #-------------------------------------------------------------------------- # ● Y座標の変更 # n : 新しいY座標 #-------------------------------------------------------------------------- def y=(n) # コラプス実行中の場合 if @effect_type == Sprite_Battler::COLLAPSE then # 位置に変化がない場合 if n == @battler.screen_y then # メソッドを返す return end end # スーパークラスを実行 super(n) end end #============================================================================== # ■ Game_Enemy #------------------------------------------------------------------------------ #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス ($game_troop) の # 内部で使用されます。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● コラプスの実行 # 使用エイリアス : perform_collapse_Mint_collapse #-------------------------------------------------------------------------- alias :perform_collapse_Mint_collapse :perform_collapse def perform_collapse # アニメコラプスが設定されている場合 if self.anime_collapse >= 1 # 現在戦闘中で且つ、戦闘不能な場合 if $game_temp.in_battle == true and self.dead? == true then # コラプスフラグをセット @collapse = true end # メソッドを返す(本来の処理をスキップ) return end # 元の処理を実行 perform_collapse_Mint_collapse end #-------------------------------------------------------------------------- # ● アニメコラプスIDの取得 #-------------------------------------------------------------------------- def anime_collapse # データベースからフラグを取得して返す return $data_enemies[@enemy_id].anime_collapse end #-------------------------------------------------------------------------- # ● コラプスタイプの取得 #-------------------------------------------------------------------------- def collapse_type # データベースからフラグを取得して返す return $data_enemies[@enemy_id].collapse_type end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # ● システムインクルード宣言 #-------------------------------------------------------------------------- include MINTO_Sprite_Battler_02 # みんとスプライトバトラー #-------------------------------------------------------------------------- # ● エフェクトの更新 # 使用エイリアス : update_effect_Mint_collapse #-------------------------------------------------------------------------- alias :update_effect_Mint_collapse :update_effect def update_effect # コラプス実行中の場合 if @effect_type == Sprite_Battler::COLLAPSE then # アニメ再生中の場合 if self.animation? == true then # メソッドを返す(本来の処理をスキップ) return end end # 元の処理を実行 update_effect_Mint_collapse end end end