#============================================================================== # ■ VXAce-RGSS3-9-bt 戦闘中パーティー編集 [Ver.1.1.0] by Claimh #------------------------------------------------------------------------------ # 戦闘中にパーティー編集をできるようにします。(非ターン消費) #------------------------------------------------------------------------------ # ・入れ替え不可のメンバーは背景を変更 # (ロックアイコンは表示しない) #============================================================================== module PartyEdit # 行動不能メンバーの入れ替えを禁止する ONLY_MOVEABLE = true # 戦闘不能メンバーの入れ替えを禁止する # ONLY_MOVEABLE = falseのときのみ有効 ONLY_ALIVE = true end #============================================================================== # ■ Window_PartyCommand #============================================================================== class Window_PartyCommand < Window_Command #-------------------------------------------------------------------------- # ● コマンドリストの作成 #-------------------------------------------------------------------------- alias make_command_list_partyedit make_command_list def make_command_list make_command_list_partyedit add_command("入れ替え", :party_edit, formation_enabled) end #-------------------------------------------------------------------------- # ● 入替の有効状態を取得 #-------------------------------------------------------------------------- def formation_enabled $game_party.sub_members.size > 0 && !$game_system.formation_disabled end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 全ウィンドウの作成 #-------------------------------------------------------------------------- alias create_all_windows_partyedit create_all_windows def create_all_windows create_all_windows_partyedit create_party_edit_window end #-------------------------------------------------------------------------- # ● パーティコマンドウィンドウの作成 #-------------------------------------------------------------------------- alias create_party_command_window_partyedit create_party_command_window def create_party_command_window create_party_command_window_partyedit @party_command_window.set_handler(:party_edit, method(:command_party_edit)) end #-------------------------------------------------------------------------- # ● パーティー選択Window #-------------------------------------------------------------------------- def create_party_edit_window @pte_main_window = Window_BtExchangeActor.new(@info_viewport) @pte_main_window.set_handler(:ok, method(:command_pte_main_ok)) @pte_main_window.set_handler(:cancel, method(:command_pte_main_cancel)) @pte_sub_window = Window_BtExchangeSubActor.new(@info_viewport) @pte_sub_window.set_handler(:ok, method(:command_pte_sub_ok)) @pte_sub_window.set_handler(:cancel, method(:command_pte_sub_cancel)) end #-------------------------------------------------------------------------- # ● パーティー選択画面へ #-------------------------------------------------------------------------- def command_party_edit @pte_main_window.show.activate.refresh end #-------------------------------------------------------------------------- # ● パーティーMain画面選択 #-------------------------------------------------------------------------- def command_pte_main_ok @pte_main_window.hide @pte_sub_window.show.activate.refresh end #-------------------------------------------------------------------------- # ● パーティーMain画面キャンセル #-------------------------------------------------------------------------- def command_pte_main_cancel @pte_main_window.hide @party_command_window.activate end #-------------------------------------------------------------------------- # ● パーティーSub画面選択 #-------------------------------------------------------------------------- def command_pte_sub_ok @pte_sub_window.actor.make_actions sub_index = $game_party.max_battle_members + @pte_sub_window.index $game_party.swap_order(@pte_main_window.index, sub_index) @pte_main_window.hide @pte_sub_window.hide refresh_status @party_command_window.activate end #-------------------------------------------------------------------------- # ● パーティーSub画面キャンセル #-------------------------------------------------------------------------- def command_pte_sub_cancel @pte_sub_window.hide @pte_main_window.show.activate end end class Window_BtExchangeActor < Window_BattleActor #-------------------------------------------------------------------------- # ● 参照アクター #-------------------------------------------------------------------------- def actor actor_i(@index) end def actor_i(index) $game_party.members[index] end #-------------------------------------------------------------------------- # ● 選択項目の有効状態を取得 #-------------------------------------------------------------------------- def current_item_enabled? enabled?(@index) end def enabled?(index) a = actor_i(index) return false if a.lock_change return false if PartyEdit::ONLY_MOVEABLE and !a.movable? return false if PartyEdit::ONLY_ALIVE and a.dead? true end #-------------------------------------------------------------------------- # ● 項目の描画 #-------------------------------------------------------------------------- def draw_item(index) back_fill(index) unless enabled?(index) actor = actor_i(index) draw_basic_area(basic_area_rect(index), actor) draw_gauge_area(gauge_area_rect(index), actor) end #-------------------------------------------------------------------------- # ● 入れ替え不可メンバーの背景色 #-------------------------------------------------------------------------- def back_fill(index) color = normal_color color.alpha = translucent_alpha contents.fill_rect(item_rect(index), color) end end class Window_BtExchangeSubActor < Window_BtExchangeActor #-------------------------------------------------------------------------- # ● 項目数の取得 #-------------------------------------------------------------------------- def item_max $game_party.sub_members.size end #-------------------------------------------------------------------------- # ● 参照アクター #-------------------------------------------------------------------------- def actor_i(index) $game_party.sub_members[index] end end