#============================================================================== # ■ XP-RGSS-21 装備交換スキル [Ver.1.1.1] by Claimh #------------------------------------------------------------------------------ # スキルを使用した者の装備を変更するスキルです。 # 戦闘後には、元の装備へ戻ります。 #============================================================================== module Change_Equip SET_EQIUP = [] #============================================================================== # □ カスタマイズSTART #============================================================================== # 使用者にステートを付与するスキルの情報を記述 # SET_EQIUP[スキルID] = [装備種類, 武器IDor防具ID] # 装備種類: #  0:武器 1:盾 2:頭 3:身体 4:装飾品 SET_EQIUP[85] = [0,35] # 炎の舞で炎の剣を装備 SET_EQIUP[86] = [0,36] # アイスブレードでフリーズランスを装備 SET_EQIUP[87] = [1,35] # 光の盾で光の盾を装備 SET_EQIUP[88] = [0,37] # 魔銃開放で魔銃「炎」を装備 #============================================================================== # □ カスタマイズEND #============================================================================== module_function # 装備交換の判定 def is_data_nil?(skill_id) return SET_EQIUP[skill_id].nil? end # 装備タイプ取得 def equip_type(skill_id) return SET_EQIUP[skill_id][0] end # 装備アイテム取得 def equip_item(skill_id) if equip_type(skill_id) == 0 return $data_weapons[SET_EQIUP[skill_id][1]] else return $data_armors[SET_EQIUP[skill_id][1]] end end end class Scene_Battle #-------------------------------------------------------------------------- # ● プレバトルフェーズ開始 #-------------------------------------------------------------------------- alias start_phase1_change_equip start_phase1 def start_phase1 # 装備武器を記憶 for actor in $game_party.actors actor.remember_equip_set end start_phase1_change_equip end #-------------------------------------------------------------------------- # ● バトル終了 # result : 結果 (0:勝利 1:敗北 2:逃走) #-------------------------------------------------------------------------- alias battle_end_change_equip battle_end def battle_end(result) # 装備を元に戻す for actor in $game_party.actors actor.restore_equip_set end battle_end_change_equip(result) end #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- alias make_skill_action_result_change_equip make_skill_action_result def make_skill_action_result make_skill_action_result_change_equip if @active_battler.is_a?(Game_Actor) and @phase4_step != 1 # 装備交換 @active_battler.skill_ch_equip(@active_battler.current_action.skill_id) end end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● クラス ID の変更 # class_id : 新しいクラス ID #-------------------------------------------------------------------------- alias class_id_equip_ch class_id= def class_id=(class_id) if $game_temp.in_battle c_e_set=[@weapon_id,@armor1_id,@armor2_id,@armor3_id,@armor4_id] c_e_flag = @ch_flag.dup restore_equip_set # 装備を元に戻す class_id_equip_ch(class_id) # クラス変更(原型) remember_equip_set # 初期装備を再記憶 for type in 0..4 next unless c_e_flag[type] item = type == 0 ? $data_weapons[c_e_set[0]] : $data_armors[c_e_set[type]] next unless equippable?(item) change_equip_by_id(type, c_e_set[type]) set_ch_flag(type) end else class_id_equip_ch(class_id) # クラス変更(原型) end end #-------------------------------------------------------------------------- # ● 戦闘開始時の装備を記憶 #-------------------------------------------------------------------------- def remember_equip_set @equip_set = { 0 => @weapon_id, 1 => @armor1_id, 2 => @armor2_id, 3 => @armor3_id, 4 => @armor4_id } @ch_flag = [false, false, false, false, false] end #-------------------------------------------------------------------------- # ● 戦闘開始時の装備を復元 #-------------------------------------------------------------------------- def restore_equip_set for type in 0..4 # 装備交換されていた場合は元に戻す change_equip_by_id(type, @equip_set[type]) if @ch_flag[type] end remember_equip_set end #-------------------------------------------------------------------------- # ● 戦闘中の装備変更 # equip_type : 装備部位 (0..4) # item_id : 武器 ID or 防具 ID #-------------------------------------------------------------------------- def change_equip_in_battle(type, item_id) # 装備交換されていた場合は元に戻す change_equip_by_id(type, @equip_set[type]) if @ch_flag[type] equip(type, item_id) # 装備変更 @equip_set[type] = item_id @ch_flag[type] = false end #-------------------------------------------------------------------------- # ● 戦闘中の装備変更を記憶 #-------------------------------------------------------------------------- def set_ch_flag(equip_type) @ch_flag[equip_type] = true end #-------------------------------------------------------------------------- # ● 装備の変更 #-------------------------------------------------------------------------- def change_equip_by_id(equip_type, id) case equip_type when 0 # 武器 @weapon_id = id when 1 # 盾 update_auto_state($data_armors[@armor1_id], $data_armors[id]) @armor1_id = id when 2 # 頭 update_auto_state($data_armors[@armor2_id], $data_armors[id]) @armor2_id = id when 3 # 身体 update_auto_state($data_armors[@armor3_id], $data_armors[id]) @armor3_id = id when 4 # 装飾品 update_auto_state($data_armors[@armor4_id], $data_armors[id]) @armor4_id = id end end #-------------------------------------------------------------------------- # ● 装備交換スキル処理実行 #-------------------------------------------------------------------------- def skill_ch_equip(skill_id) # 装備交換スキルではない return if Change_Equip.is_data_nil?(skill_id) type = Change_Equip.equip_type(skill_id) # 装備固定の場合 return if equip_fix?(type) item = Change_Equip.equip_item(skill_id) # 装備できない return unless equippable?(item) # 装備交換 change_equip_by_id(type, item.id) # 装備変更履歴を残す set_ch_flag(type) end end class Game_Party #-------------------------------------------------------------------------- # ● アクターを加える # actor_id : アクター ID #-------------------------------------------------------------------------- alias add_actor_equip_ch add_actor def add_actor(actor_id) add_actor_equip_ch(actor_id) # 戦闘中? if $scene.is_a?(Scene_Battle) # アクター加入時の装備を記憶(戦闘中のみ) $game_actors[actor_id].remember_equip_set end end #-------------------------------------------------------------------------- # ● アクターを外す # actor_id : アクター ID #-------------------------------------------------------------------------- alias remove_actor_equip_ch remove_actor def remove_actor(actor_id) # 戦闘中? if $scene.is_a?(Scene_Battle) # 装備元を削除 $game_actors[actor_id].restore_equip_set end remove_actor_equip_ch(actor_id) end end class Interpreter #-------------------------------------------------------------------------- # ● 装備の変更 #-------------------------------------------------------------------------- alias command_319_equip_ch command_319 def command_319 if $game_temp.in_battle # 戦闘中は装備交換を意識する actor = $game_actors[@parameters[0]] if actor != nil actor.change_equip_in_battle(@parameters[1], @parameters[2]) end return true else return command_319_equip_ch end end end