#============================================================================== # # ■ エネミー行動パターン改良 拡張スクリプト # 行動条件追加:対象への有効度 □Ver1.00 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト # # ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #------------------------------------------------------------------------------ =begin ※このスクリプトは月紳士の「エネミー行動パターン改良」に  新たな行動条件を追加する拡張スクリプトです。   「エネミー行動パターン改良」(Ver8.00以降)が必要となります。  このスクリプトは「エネミー行動パターン改良」より下に挿入してください。 ○ 新たな行動条件の追加。   エネミーの行動パターンに、さらなる行動条件を追加します。   追加できるのはスキル専用の行動条件で、   ・スキルの属性および付加ステートがターゲットにとって有効か?   ということを条件とするものです。 詳しくはカスタマイズ項目をご覧ください。 =end #============================================================================== # ■ エネミー行動パターン行動条件追加:対象のポジション・モジュール #============================================================================== module EacAdd_Effective_Rank # カスタマイズ項目------------------------------------------------------------ TOP_SWITCH = 16 #↑# 「行動条件追加:対象への有効度」に使用するスイッチ郡の、 # 最初の番号をここで指定します。 # 「エネミー行動パターン改良」の元もとのスイッチ郡と # つなげる必要はありません。 # ゲーム中の判定に差し支えない番号にしてください。 SETTING = [2, 3] #↑# 有効度を元にした行動条件をここで設定してください。 # 行動条件の設定数は任意です。 , (半角カンマ)で区切ってください。 # # ここで指定するのは属性有効度およびステート有効度に対応した数字です。 # 1 = 有効度A / 2 = 有効度B / 3 = 有効度C # 4 = 有効度D / 5 = 有効度E / 6 = 有効度F # と、対応しています。 # # ここで指定した有効度より対象の設定有効度が大きい場合、 # 狙う対象から外します。(つまり有効な対象のみが残ります) # 例えば 2 と設定すれば、有効度C〜Fの者は対象から外され、 # 有効度A、有効度Bの者のみを狙う対象とします。 # # 属性有効度やステート有効度が複数設定されている場合、 # それら個別に判定し、相応しくない対象を外していきます。 # つまり、より有効である対象のみが残ります。 # # 条件を満たす対象がいれば行動条件を満たし、それを狙います。 # 対象がいなければ行動条件を満たさず、その行動も選ばれません。 # # この行動条件はスキル専用です。 # スキル以外の行動の条件とすると、一律、条件を満たす扱いになります。 =begin  SETTINGで設定した順番に対応させ、 TOP_SWITCHから順番に設定数と同じ数のスイッチを用意してください。 例をあげて説明しますと…  TOP_SWITCH = 16  SETTING = [1, 3]  と設定したのであれば、  スイッチ16が「有効度A」を対象とする行動条件、  スイッチ17が「有効度A〜C」を対象とする行動条件  となります。  スイッチの名前は任意でかまいません。製作中にわかりやすい名前にしてください。 =end # ------------------------------------------------(カスタマイズ項目ここまで)-- SWITCHES_RANGE = TOP_SWITCH...(TOP_SWITCH + SETTING.size) # ---------------------------------------------------------------------------- end #============================================================================== # ■ Game_Temp #------------------------------------------------------------------------------ #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン # スタンスは $game_temp で参照されます。 #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ◎ 拡張行動条件に使用するスイッチデータの作成 #-------------------------------------------------------------------------- alias tig_eac_er_make_ex_conditions_switches make_ex_conditions_switches def make_ex_conditions_switches switches = Array.new(EacAdd_Effective_Rank::SETTING.size){|i|i+EacAdd_Effective_Rank::TOP_SWITCH} return tig_eac_er_make_ex_conditions_switches + switches end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ○ 属性有効度の取得 # ※ デフォルトシステムに準じたの有効度取得方法です。 # 取得方法に変更がある場合、ここを改変します。 #-------------------------------------------------------------------------- def element_ranks(element_id) if actor? rank = self.class.element_ranks[element_id] else rank = enemy.element_ranks[element_id] end return rank end #-------------------------------------------------------------------------- # ○ ステート有効度の取得 # ※ デフォルトシステムに準じたの有効度取得方法です。 # 取得方法に変更がある場合、ここを改変します。 #-------------------------------------------------------------------------- def state_ranks(state_id) if actor? rank = self.class.state_ranks[state_id] else rank = enemy.state_ranks[state_id] end return rank end end #============================================================================== # ■ Game_BattleAction #------------------------------------------------------------------------------ #  戦闘行動を扱うクラスです。このクラスは Game_Battler クラスの内部で使用され # ます。 #============================================================================== class Game_BattleAction #-------------------------------------------------------------------------- # ◎ 条件にあうターゲットグループの取得 #-------------------------------------------------------------------------- alias tig_eac_er_conditions_targets conditions_targets def conditions_targets(arrays, skill) targets = tig_eac_er_conditions_targets(arrays, skill) return targets if skill == nil for array in arrays ; next if array[0] != 6 if EacAdd_Effective_Rank::SWITCHES_RANGE.include?(array[1]) new_targets = [] index = array[1] - EacAdd_Effective_Rank::TOP_SWITCH if EacAdd_Effective_Rank::SETTING[index].is_a?(Array) element_e_rank = EacAdd_Effective_Rank::SETTING[index][0] state_e_rank = EacAdd_Effective_Rank::SETTING[index][1] else element_e_rank = EacAdd_Effective_Rank::SETTING[index] state_e_rank = EacAdd_Effective_Rank::SETTING[index] end for target in targets next if skill.element_set.any?{|id|target.element_ranks(id) > element_e_rank} next if skill.plus_state_set.any?{|id| target.state_ranks(id) > state_e_rank } new_targets.push(target) end targets = new_targets end end return targets end end