# ▼▲▼ XRXS27. 特殊効果 SuperEX「変身」 ver.1.01 ▼▲▼ built 091221 # # Re-upload 2010/ 3/25 # #============================================================================== # □ カスタマイズポイント #============================================================================== class Scene_Battle # 変身時「色調」もコピーする ENABLE_HUE = true end #============================================================================== # □ 「変身」スキル #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :metamor_target # 変身対象 attr_accessor :battler_name # バトラーグラフィック attr_accessor :battler_hue # バトラー色調 attr_reader :battler_name_original # バトラーグラフィック初期値 attr_reader :battler_hue_original # バトラー色調初期値 #-------------------------------------------------------------------------- # ○ 「変身ターゲット」初期化 #-------------------------------------------------------------------------- def initialize_metamor @metamor_target = nil @battler_name_original = @battler_name @battler_hue_original = @battler_hue end #-------------------------------------------------------------------------- # ○ 「変身ターゲット」解放 #-------------------------------------------------------------------------- def dispose_metamor @metamor_target = nil @battler_name_original = nil @battler_hue_original = nil end #-------------------------------------------------------------------------- # ● スキルの効果適用 #-------------------------------------------------------------------------- alias xrxs27_metamor_skill_effect skill_effect # alias したものは effect_it 内で使用 def skill_effect(user, skill) bool = xrxs27_metamor_skill_effect(user, skill) # 特殊効果:対象に変身 if skill != nil and XRXS.element_include?(skill.element_set, "変身") if user.metamor_target == nil if self.metamor_target == nil # 変身状態で無い場合、変身 user.metamor_target = self else # 対象が変身状態の場合、対象の変身対象に変身する。 user.metamor_target = self.metamor_target end else # 変身状態の場合、変身を解除する user.metamor_target = user end # 自分への変身を禁止 user.metamor_target = nil if user.metamor_target == user # 対象のダメージ表示を消す self.damage = nil if self.damage == "Miss" # HP/SP最大値変更への対応 @hp0_ban = false user.hp = user.hp user.sp = user.sp # 有効フラグをセット bool = true end return bool end #-------------------------------------------------------------------------- # ● MaxHP の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_maxhp maxhp def maxhp if !@metamor_target.nil? return @metamor_target.maxhp end xrxs27_metamor_maxhp end #-------------------------------------------------------------------------- # ● MaxSP の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_maxsp maxsp def maxsp if !@metamor_target.nil? return @metamor_target.maxsp end xrxs27_metamor_maxsp end #-------------------------------------------------------------------------- # ● 腕力の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_str str def str if !@metamor_target.nil? return @metamor_target.str end xrxs27_metamor_str end #-------------------------------------------------------------------------- # ● 器用さの取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_dex dex def dex if !@metamor_target.nil? return @metamor_target.dex end xrxs27_metamor_dex end #-------------------------------------------------------------------------- # ● 素早さの取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_agi agi def agi if !@metamor_target.nil? return @metamor_target.agi end xrxs27_metamor_agi end #-------------------------------------------------------------------------- # ● 魔力の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_int int def int if !@metamor_target.nil? return @metamor_target.int end xrxs27_metamor_int end #-------------------------------------------------------------------------- # ● 攻撃力の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_atk atk def atk if !@metamor_target.nil? return @metamor_target.atk end xrxs27_metamor_atk end #-------------------------------------------------------------------------- # ● 物理防御の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_pdef pdef def pdef if !@metamor_target.nil? return @metamor_target.pdef end xrxs27_metamor_pdef end #-------------------------------------------------------------------------- # ● 魔法防御の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_mdef mdef def mdef if !@metamor_target.nil? return @metamor_target.mdef end xrxs27_metamor_mdef end #-------------------------------------------------------------------------- # ● 回避修正の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_eva eva def eva if !@metamor_target.nil? return @metamor_target.eva end xrxs27_metamor_eva end end #============================================================================== # ■ Game_Actor < Game_Battler #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● MaxHP の取得 #-------------------------------------------------------------------------- alias xrxs27_metamor_maxhp maxhp def maxhp if !@metamor_target.nil? return @metamor_target.maxhp end xrxs27_metamor_maxhp end #-------------------------------------------------------------------------- # ● グラフィックの変更 #-------------------------------------------------------------------------- alias xrxs27_metamor_set_graphic set_graphic def set_graphic(character_name, character_hue, battler_name, battler_hue) xrxs27_metamor_set_graphic(character_name, character_hue, battler_name, battler_hue) @battler_name_original = @battler_name @battler_hue_original = @battler_hue end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● プレバトルフェーズ開始 #-------------------------------------------------------------------------- alias xrxs27_metamor_start_phase1 start_phase1 def start_phase1 # 呼び戻す xrxs27_metamor_start_phase1 # 全バトラーの「変身ターゲット」初期化 for battler in $game_party.actors + $game_troop.enemies battler.initialize_metamor end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション) #-------------------------------------------------------------------------- alias xrxs27_metamor_update_phase4_step4 update_phase4_step4 def update_phase4_step4 if @skill != nil and XRXS.element_include?(@skill.element_set, "変身") tb_array = @target_battlers @target_battlers = [@active_battler] xrxs27_metamor_update_phase4_step4 @target_battlers = tb_array else xrxs27_metamor_update_phase4_step4 end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示) #-------------------------------------------------------------------------- alias xrxs27_metamor_update_phase4_step5 update_phase4_step5 def update_phase4_step5 # 生存確認 for target in @target_battlers # 戦闘不能時で、変身を解除 if target.dead? and target.metamor_target != nil target.animation_id = 17 # 戦闘不能変身解除時のアニメーションID target.animation_hit = true target.battler_name = target.battler_name_original target.battler_hue = target.battler_hue_original if ENABLE_HUE target.metamor_target = nil end end # 変身対象のバトラーグラフィックをコピー if @skill != nil and XRXS.element_include?(@skill.element_set, "変身") if @active_battler.metamor_target != nil @active_battler.battler_name = @active_battler.metamor_target.battler_name @active_battler.battler_hue = @active_battler.metamor_target.battler_hue if ENABLE_HUE else @active_battler.battler_name = @active_battler.battler_name_original @active_battler.battler_hue = @active_battler.battler_hue_original if ENABLE_HUE end end xrxs27_metamor_update_phase4_step5 end #-------------------------------------------------------------------------- # ● アフターバトルフェーズ開始 #-------------------------------------------------------------------------- alias xrxs27_metamor_update_phase5 update_phase5 def update_phase5 next_phase_ok = false # 次のアクターへ @phase5_i = -1 if @phase5_i == nil @phase5_i += 1 if @phase5_i < $game_party.actors.size actor = $game_party.actors[@phase5_i] # 変身状態の味方がいるか判別し、それを解除する if actor.metamor_target != nil actor.animation_id = 17 # 戦闘終了変身解除時のアニメーションID actor.animation_hit = true actor.battler_name = actor.battler_name_original actor.battler_hue = actor.battler_hue_original if ENABLE_HUE actor.metamor_target = nil # ステータスウィンドウをリフレッシュ @status_window.refresh # アニメーションの長さにかかわらず、最低 4 フレーム待つ @wait_count = 4 end else next_phase_ok = true end if next_phase_ok xrxs27_metamor_update_phase5 end end #-------------------------------------------------------------------------- # ● バトル終了 #-------------------------------------------------------------------------- alias xrxs27_metamor_battle_end battle_end def battle_end(result) # 変身状態の味方がいるか判別し、それを解除する for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.metamor_target != nil actor.battler_name = actor.battler_name_original actor.battler_hue = actor.battler_hue_original if ENABLE_HUE end end # 全バトラーの「変身ターゲット」解放 for battler in $game_party.actors + $game_troop.enemies battler.dispose_metamor end # 呼び戻す xrxs27_metamor_battle_end(result) end end