end
class Game_Temp
attr_accessor :battle_equip
#--------------------------------------------------------------------------
# オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_battle_equip initialize
def initialize
#本来の処理を実行。
initialize_battle_equip
#装備変更関連を初期化。
@battle_equip = false
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# 装備変更コマンドの追加可否
#--------------------------------------------------------------------------
def equip_command_usable
#特徴の中に装備変更コマンド追加特徴があればtrueを返す。
feature_objects.each {|f| return true if f.equip_command_usable}
#falseを返す。
false
end
#--------------------------------------------------------------------------
# 装備変更コマンドの追加可否
#--------------------------------------------------------------------------
def equip_command_seal
end
#--------------------------------------------------------------------------
# 装備変更の可能判定
# slot_id : 装備スロット ID
#--------------------------------------------------------------------------
alias equip_change_ok_battle_equip? equip_change_ok?
def equip_change_ok?(slot_id)
#戦闘中の装備変更であり戦闘中の装備変更禁止箇所に含まれている場合はfalseを返す。
return false if battle_equip_seal.include?(equip_slots[slot_id]) if $game_temp.battle_equip
#本来の処理を実行する。
equip_change_ok_battle_equip?(slot_id)
end
#--------------------------------------------------------------------------
# 戦闘中の装備変更禁止箇所
#--------------------------------------------------------------------------
def battle_equip_seal
end
end
class RPG::BaseItem
#--------------------------------------------------------------------------
# 装備変更コマンドの追加可否
#--------------------------------------------------------------------------
def equip_command_usable
#キャッシュが存在する場合はキャッシュを返す。
return @equip_command_usable if @equip_command_usable != nil
end
#--------------------------------------------------------------------------
# 装備変更コマンド封印判定
#--------------------------------------------------------------------------
def equip_command_seal
#キャッシュが存在する場合はキャッシュを返す。
return @equip_command_seal if @equip_command_seal != nil
#空の配列を作成。
@equip_command_seal = []
#メモ欄からデータを取得。
memo = self.note.scan(/<#{BATTLE_EQUIP_CHANGE::WORD3}[::](\S+)>/).flatten
if memo != nil && !memo.empty?
memo = memo[0].split(/\s*,\s*/)
memo.each {|i| @equip_command_seal.push(i.to_i)}
end
#データを返す。
@equip_command_seal
end
end
#タイプ別に処理を分ける。
case BATTLE_EQUIP_CHANGE::TYPE
#パーティコマンドに追加する場合
when 0
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# 戦闘開始
#--------------------------------------------------------------------------
alias battle_start_equip battle_start
def battle_start
if $game_temp.battle_equip
$game_party.make_actions
start_party_command_selection
else
battle_start_equip
end
#戦闘中装備変更フラグを初期化する。
$game_temp.battle_equip = false
end
#--------------------------------------------------------------------------
# パーティコマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_party_command_window_equip create_party_command_window
def create_party_command_window
end
#--------------------------------------------------------------------------
# コマンド[装備変更]
#--------------------------------------------------------------------------
def command_equip_change
#戦闘中装備変更フラグを立てる。
$game_temp.battle_equip = true
#Scene_Equipを呼び出す。
SceneManager.call(Scene_Equip)
end
end
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# コマンドリストの作成
#--------------------------------------------------------------------------
alias make_command_list_equip make_command_list
def make_command_list
when 1..2
class Game_BattlerBase
def equip_command_usable
#戦闘中装備変更特徴の有無をチェックする。
feature_objects.each {|f| return true if f.equip_command_usable}
false
end
end
class Scene_Equip < Scene_MenuBase
#--------------------------------------------------------------------------
# コマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_command_window_equip create_command_window
def create_command_window
#本来の処理を実行。
create_command_window_equip
#戦闘中装備変更の場合、装備コマンドウィンドウから
#アクター切り替えの機能を削除する。
@command_window.battle_command_seal if $game_temp.battle_equip
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# 戦闘開始
#--------------------------------------------------------------------------
alias battle_start_equip battle_start
def battle_start
$game_temp.battle_equip = false
end
#--------------------------------------------------------------------------
# アクターコマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_actor_command_window_equip create_actor_command_window
def create_actor_command_window
#本来の処理を実行。
create_actor_command_window_equip
#装備変更コマンド用と命令を関連付ける。
@actor_command_window.set_handler(:equip_change, method(:command_equip_change))
end
#--------------------------------------------------------------------------
# コマンド[装備変更]
#--------------------------------------------------------------------------
def command_equip_change
#戦闘中装備変更フラグを立てる。
$game_temp.battle_equip = true
#メニューアクターを行動選択中のアクターにする。
$game_party.menu_actor = BattleManager.actor
#装備画面を開く。
SceneManager.call(Scene_Equip)
end
end
class Window_ActorCommand < Window_Command
#--------------------------------------------------------------------------
# コマンドリストの作成
#--------------------------------------------------------------------------
alias make_command_list_equip make_command_list
def make_command_list
#本来の処理を実行。
make_command_list_equip
#アクターが存在しない場合は処理を飛ばす。
return unless @actor
#タイプ1の場合は無条件で追加する。
#タイプ2の場合は戦闘中装備変更特徴がある場合に追加する。
add_command(BATTLE_EQUIP_CHANGE::WORD1,:equip_change) if BATTLE_EQUIP_CHANGE::TYPE == 1 or @actor.equip_command_usable
end
end
class Window_EquipCommand < Window_HorzCommand
def battle_command_seal