module KS_Extend class ConditionsExtend #-------------------------------------------------------------------------- # ● 設定項目・コンディションタイプごとに、戦闘行動条件値1と対応する計算式を記述。 # コンディションタイプ(6がスイッチ)=>{ # 対応する条件値1=>判定に使う計算式文字列。 # } # で記述。 # =>左の条件値1は、範囲式で複数の条件値1を指定することが可能。 # 計算式中の、sidは条件値1、sifは条件値2、batはエネミー本人、objはその行動のスキルを参照できる。 #-------------------------------------------------------------------------- SWITCH_FOR_CONDITIONS = { 4=>{# コンディションタイプ4・ステート # 例・ステート1(戦闘不能)であることが条件の行動は、敵グループに戦闘不能者がいる場合に条件を満たす。 #1 =>'!$game_troop.dead_members.empty?', # 例・$data_states[3]が毒、$data_states[4]が猛毒として、猛毒になっている場合“毒である”の条件を満たす。 #3 =>'bat.state?(3) || bat.state?(4)', }, 6=>{# コンディションタイプ6・スイッチ # 例・スイッチ1が条件の行動は、MPが強化されてる場合に条件を満たす。 #1 =>'bat.buff?(1)', # 例・スイッチ2〜5が条件の行動は、HPが最大HPの(1/スイッチID)以下の場合に条件を満たす。 #2..5=>'bat.hp < bat.mhp / sid', # 例・スイッチ6が条件の行動は、行動の消費MPが現在MPの1/2以下の場合に条件を満たす。 #6 =>'obj.mp_cost <= bat.mp / 2', }, }.inject({}){|hac, (type, procs)| hac[type] = procs.inject({}){|has, (key, proc)| key = key..key if Numeric === key key.each{|id| has[id] = proc} has } hac } SWITCH_FOR_CONDITIONS.default = {} #p *SWITCH_FOR_CONDITIONS end end =begin ★ks_行動条件拡張・強化版(VX・Ace共用) 最終更新日2012/02/01 20時 2012/02/01 20時。本公開。 2012/02/01 12時。VX版の記述ミスを修正。 スイッチID以外の条件判定でも同じ処理ができるように変更。 2012/02/01 11時。公開。 □===制作・著作===□ MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 □===配置場所===□ エリアスのみで構成されているので、 可能な限り"main"の上、近くに配置してください。 □使用法・機能 設定項目参照のこと。 無印版より飛躍的に複雑になってる気がするので注意してください。 スイッチ番号による条件式だけ使えればいい人は無印版をどうぞ。 =end #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ # ■ RPG::Enemy::Action #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ class RPG::Enemy::Action unless method_defined?(:obj) #-------------------------------------------------------------------------- # ● 敵行動の該当スキル #-------------------------------------------------------------------------- def obj# RPG::Enemy::Action 存在しなければ定義 @kind == 0 ? nil : $data_skills[@skill_id] end end end #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ # ■ Game_Enemy #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ class Game_Enemy #-------------------------------------------------------------------------- # ● 行動条件合致判定 #-------------------------------------------------------------------------- alias conditions_met_condition_extend conditions_met? def conditions_met?(action) list = KS_Extend::ConditionsExtend::SWITCH_FOR_CONDITIONS[action.condition_type] if list[action.condition_param1] return condition_met_extend?(action.condition_type, self, action.condition_param1, action.condition_param2, action.obj) end conditions_met_condition_extend(action) end #-------------------------------------------------------------------------- # ● 行動条件合致判定[拡張条件式による判定] #-------------------------------------------------------------------------- def condition_met_extend?(type, bat, sid, sif, obj) eval(KS_Extend::ConditionsExtend::SWITCH_FOR_CONDITIONS[type][sid]) end end