#◆◇◆◇◆ ☆ コラプス改造α ver 1.21 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver 1.21 メンバーの入れ替えでエラー落ちするミスを修正 ver 1.20 スキル別のアニメコラプスの設定を追加 ver 1.11 ターゲット決定時にエラー落ちするミスを修正 一部の仕様を変更 ver 1.10 演出タイプを増加 セクション指定上下関係 コラプス改造 ↓ A・C・A・システム ↓ このスクリプト 導入場所の注意 システム下部推奨 説明 スキル攻撃でエネミーを倒した際に、 スキル別にコラプス演出を設定できます タイプは8タイプあり、設定によって変わってきます タイプ1 敵が縦に細く伸びて消えます タイプ2 敵が横に伸びて消えます タイプ3 敵が一旦縦に縮んだ後、縦に細く伸びて消えます タイプ4 敵が縦に細く伸びながら回転して消えます(処理重い) タイプ5 敵が垂直方向に真っ二つになり、上下にスライドします タイプ6 敵が水平方向に真っ二つになり、左右にスライドします タイプ7 敵が垂直方向に真っ二つになり、左右にスライドします タイプ8 敵が水平方向に真っ二つになり、上下にスライドします なお、設定していない場合は、通常の演出です また、コラプス改造を導入している場合、そちらが実行されます コラプス改造と重なった場合は、 スキル別の演出が優先されます アニメコラプスを設定している場合は、 そのアニメを表示してからコラプスが実行されます =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # コラプス改造αを有効化 ( true で有効 / false で無効 ) RGSS["Collapse_α"] = true end #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズを行うモジュールです。 #============================================================================== module MINTO # ここは変更しない @skill_collapse = [] # スキル別コラプスタイプ # @skill_collapse[スキルID] = [演出タイプ, 表示するアニメのID] # アニメコラプスは、設定しない場合は nil を代入 @skill_collapse[1] = [7, nil] @skill_collapse[2] = [8, 2] #-------------------------------------------------------------------------- # ● スキルコラプス(参照) #-------------------------------------------------------------------------- def self.skill_collapse return @skill_collapse end end if MINTO::RGSS["Collapse_α"] == true then #============================================================================== # ■ Sprite #------------------------------------------------------------------------------ #  スプライト表示を扱う組み込みクラスです。 #============================================================================== class Sprite #-------------------------------------------------------------------------- # ● 複製の作成 #-------------------------------------------------------------------------- def dup_battler # 各データをコピー sprite = Sprite.new(self.viewport) battler_name = @battler.battler_name battler_hue = @battler.battler_hue sprite.bitmap = RPG::Cache.battler(battler_name, battler_hue) sprite.x = self.x sprite.y = self.y sprite.z = self.z sprite.visible = self.visible sprite.ox = self.ox sprite.oy = self.oy 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 = self.zoom_x sprite.zoom_y = self.zoom_y return sprite end end #============================================================================== # ■ Game_Battler (分割定義 1) #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :collapse_type # コラプスタイプ attr_accessor :collapse_anima # コラプスアニメ end #============================================================================== # ■ Game_Battler (分割定義 3) #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 (バトラー) # skill : スキル #-------------------------------------------------------------------------- alias skill_effect_Skill_Collapse skill_effect def skill_effect(user, skill) # 元の処理を実行 bool = skill_effect_Skill_Collapse(user, skill) # 対象がエネミーで、且つ戦闘不能な場合 if self.is_a?(Game_Enemy) and self.dead? then # スキルのコラプスタイプが0以外の場合 if MINTO.skill_collapse[skill.id].to_a[0].to_i != 0 then # コラプスタイプを代入 self.collapse_type = MINTO.skill_collapse[skill.id][0] else # コラプス改造が有効な場合 if MINTO::RGSS["collapse_customize"] then # コラプスタイプを代入 self.collapse_type = self.fade end end # スキルのアニメコラプスが有効な場合 if MINTO.skill_collapse[skill.id].to_a[1].to_i != 0 then # アニメコラプスのIDを代入 self.collapse_anima = MINTO.skill_collapse[skill.id][1] else # アニメコラプスが有効な場合 if MINTO::RGSS["anime_collapse"] == true then # アニメコラプスのIDを代入 self.collapse_anima = self.cop end end end # メソッドを返す return bool end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● フレーム更新 # alias : update_MINTO_Collapse_α #-------------------------------------------------------------------------- alias update_MINTO_Collapse_α update def update # バトラーが存在し、且つ可視状態の場合 if @battler != nil and @battler_visible == true then # バトラーのダメージ表示フラグがオンの場合 if @battler.damage_pop == true then # ダメージを表示 damage(@battler.damage, @battler.critical) # ダメージを初期化 @battler.damage = nil # クリティカルフラグを初期化 @battler.critical = false # ダメージ表示フラグをオフ @battler.damage_pop = false end # ダメージが存在せず、且つバトラーが戦闘不能な場合 if @battler.damage == nil and @battler.dead? == true then # バトラーがエネミーで、且つコラプスアニメIDが有効な場合 if @battler.is_a?(Game_Enemy) and @battler.collapse_anima != nil then # まだアニメを表示していない場合 if @anime_on == nil then # アニメを取得 anima = Data_Animations.data[@battler.collapse_anima] # コラプスアニメを表示 animation(anima, true) # アニメ表示フラグをオン @anime_on = true # ダメージに空文字を代入 @battler.damage = "" end end end end # コラプスアニメを表示しており、且つアニメ更新カウントが0の場合 if @anime_on == true and @_animation_duration == 0 then # ダメージを初期化 @battler.damage = nil end # 元の処理を実行 update_MINTO_Collapse_α end #-------------------------------------------------------------------------- # ● コラプスの処理 #-------------------------------------------------------------------------- def collapse # スーパークラスを実行 super # 対象がアクタ−の場合 if battler.is_a?(Game_Actor) then # メソッドを返す return end # コラプスタイプの初期代入 battler.collapse_type ||= 0 # コラプス改造が有効でコラプスタイプが0の場合 if MINTO::RGSS["collapse_customize"] and battler.collapse_type == 0 then # バトラーフェードを代入 battler.collapse_type = battler.fade end # バトラーのコラプスタイプに応じて分岐 case battler.collapse_type # 縦二分割 when 5 then # バトラーの複製を作成 @sprite = self.dup_battler @sprite.src_rect.width = @sprite.ox self.src_rect.x = self.ox self.x += self.ox # 横二分割 when 6 then # バトラーの複製を作成 @sprite = self.dup_battler @sprite.src_rect.height = @sprite.oy / 2 self.src_rect.y = self.oy / 2 self.y += self.oy / 2 # 縦二分割2 when 7 then # バトラーの複製を作成 @sprite = self.dup_battler @sprite.src_rect.width = @sprite.ox self.src_rect.x = self.ox self.x += self.ox # 横二分割2 when 8 then # バトラーの複製を作成 @sprite = self.dup_battler @sprite.src_rect.height = @sprite.oy / 2 self.src_rect.y = self.oy / 2 self.y += self.oy / 2 end end #-------------------------------------------------------------------------- # ● フェード処理 # battler : 対象バトラー #-------------------------------------------------------------------------- def battler_fade(battler) # コラプスカウントが0で、且つ複製スプライトが存在しない場合 if @_collapse_duration == 0 and @sprite == nil then # メソッドを返す return end # 対象がエネミーの場合 if battler.is_a?(Game_Enemy) # バトラーのコラプスタイプに応じて分岐 case battler.collapse_type when 0 then # 垂直伸び when 1 then self.zoom_x -= 0.05 self.zoom_y += 0.175 # 水平伸び when 2 then self.zoom_x += 0.05 # 縮小伸び when 3 then if not @_motion2 then self.zoom_y -= 0.5 self.zoom_y = [self.zoom_y, 0.25].max self.zoom_x += 0.1 self.zoom_x = [self.zoom_x, 1.4].min if self.zoom_y == 0.25 && self.zoom_x == 1.4 then @_motion2 = true end else self.zoom_x -= 0.115 self.zoom_y += 0.15 end # 回転伸び when 4 then self.zoom_x -= 0.03 self.zoom_y += 0.05 self.angle += 7.5 # 縦二分割 when 5 then self.y += self.oy / 96 @sprite.y -= @sprite.oy / 96 # 横二分割 when 6 then self.x += self.ox / 48 @sprite.x -= @sprite.ox / 48 # 縦二分割2 when 7 then self.x += self.ox / 48 @sprite.x -= @sprite.ox / 48 # 横二分割2 when 8 then self.y += self.oy / 96 @sprite.y -= @sprite.oy / 96 end end # コラプスカウントが1の場合で、 # 且つ複製スプライトが存在する場合 if @_collapse_duration == 1 and @sprite != nil then # 複製スプライトを解放 @sprite.dispose @sprite = nil # メソッドを返す return end end #-------------------------------------------------------------------------- # ● 透明度の変更 #-------------------------------------------------------------------------- def opacity=(n) # コラプス実行中で、且つコラプス改造が有効でない場合 if @_collapse_duration >= 1 and not MINTO::RGSS["collapse_customize"] # フェード処理を更新 battler_fade(@battler) end # 複製スプライトが存在する場合 if @sprite != nil then # 透明度をコピー @sprite.opacity = self.opacity end # スーパークラスを実行 super(n) end #-------------------------------------------------------------------------- # ● X座標の変更 #-------------------------------------------------------------------------- def x=(n) # アニメ表示中の場合で、且つ位置に変化がない場合 # 又はコラプス実行中で位置に変化がない場合 if @_animation_duration >= 1 and n == @battler.screen_x or @_collapse_duration >= 1 and n == @battler.screen_x # メソッドを返す return else # スーパークラスを実行 super(n) end end #-------------------------------------------------------------------------- # ● Y座標の変更 #-------------------------------------------------------------------------- def y=(n) # アニメ表示中の場合で、且つ位置に変化がない場合 # 又はコラプス実行中で位置に変化がない場合 if @_animation_duration >= 1 and n == @battler.screen_y or @_collapse_duration >= 1 and n == @battler.screen_y # メソッドを返す return else # スーパークラスを実行 super(n) end end end end