#============================================================================== # # ■ エネミー行動パターン改良 拡張スクリプト # 行動条件追加:対象のステート □Ver2.10 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト # # ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #------------------------------------------------------------------------------ # 更新履歴 # Ver2.10 ○「機能追加:二重行動」スクリプトの為の変更と仕様の見直し。 # Ver2.00 ○仕様の見直し。 # Ver1.52 ○記述の見直し(仕様変更無し) # Ver1.51 ○Ver1.50の簡略化に修正漏れあった為、再修正。 # Ver1.50 ○スクリプトの簡略化。 #------------------------------------------------------------------------------ =begin ※このスクリプトは月紳士の「エネミー行動パターン改良」に  新たな行動条件を追加する拡張スクリプトです。   「エネミー行動パターン改良」(Ver8.00以降)が必要となります。  このスクリプトは「エネミー行動パターン改良」より下に挿入してください。 ○ 新たな行動条件の追加。   エネミーの行動パターンに、さらなる行動条件を追加します。   追加できるのは ・特定のステートになっている者のみを対象とする行動条件 ・特定のステートになっていない者のみを対象とする行動条件 の二種類です。 追加する行動条件の数は任意で、カスタマイズ項目にて 行動条件にするステートを登録した後、 登録した行動条件に合わせたスイッチを用意することで 設定します。 詳しくはカスタマイズ項目をご覧ください。 =end #============================================================================== # ■ エネミー行動パターン行動条件追加:対象のステート・モジュール #============================================================================== module EacAdd_State_Condition # カスタマイズ項目------------------------------------------------------------ TOP_SWITCH = 11 #↑# 「行動条件追加:対象のステート」に使用するスイッチ郡の、 # 最初の番号をここで指定します。 # 「エネミー行動パターン改良」の元もとのスイッチ郡と # つなげる必要はありません。 # ゲーム中の判定に差し支えない番号にしてください。 SETTING = [2, -2] #↑# 行動条件追加にしたいステートをここで設定します。 # 数字は行動条件にあげたいステートのIDです。 # そのステートになっている者を対象とする行動条件を設定します。 # “, ”(半角カンマと半角スペース)で区切ってください。 # 数字に“-”(半角マイナス)をつけますと、 # そのステートになっていない者を対象とする行動条件となります。 =begin  ここで設定した順番、種類に対応させて、上記TOP_SWITCHから順番に  スイッチを用意してください。例をあげて説明しますと…  毒ステート(ID:2)を行動条件にしたい場合で  TOP_SWITCH = 11  SETTING = [2, -2]  と設定したのであれば、  スイッチ11が「毒に犯された者を対象とする」行動条件、  スイッチ12が「毒に犯されていない者を対象とする」行動条件となります。  スイッチの名前は任意でかまいません。製作中にわかりやすい名前にしてください。 =end # ------------------------------------------------(カスタマイズ項目ここまで)-- SWITCHES_RANGE = TOP_SWITCH...(TOP_SWITCH + SETTING.size) # ---------------------------------------------------------------------------- end #============================================================================== # ■ Game_Temp #------------------------------------------------------------------------------ #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン # スタンスは $game_temp で参照されます。 #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ◎ 拡張行動条件に使用するスイッチデータの作成 #-------------------------------------------------------------------------- alias tig_eac_sc_make_ex_conditions_switches make_ex_conditions_switches def make_ex_conditions_switches switches = Array.new(EacAdd_State_Condition::SETTING.size){|i|i+EacAdd_State_Condition::TOP_SWITCH} return tig_eac_sc_make_ex_conditions_switches + switches end end #============================================================================== # ■ Game_BattleAction #------------------------------------------------------------------------------ #  戦闘行動を扱うクラスです。このクラスは Game_Battler クラスの内部で使用され # ます。 #============================================================================== class Game_BattleAction #-------------------------------------------------------------------------- # ◎ 条件にあうターゲットグループの取得 #-------------------------------------------------------------------------- alias tig_eac_sc_conditions_targets conditions_targets def conditions_targets(arrays, skill) targets = tig_eac_sc_conditions_targets(arrays, skill) for array in arrays ; next if array[0] != 6 if EacAdd_State_Condition::SWITCHES_RANGE.include?(array[1]) new_targets = [] index = array[1] - EacAdd_State_Condition::TOP_SWITCH state_id = EacAdd_State_Condition::SETTING[index] if state_id > 0 for target in targets next unless target.state?(state_id) new_targets.push(target) end elsif state_id < 0 state_id = state_id.abs for target in targets next if target.state?(state_id) new_targets.push(target) end end targets = new_targets end end return targets end end