#============================================================================== # 「エネミー戦闘行動のAI化」(ACE) Ver.1.2 # 製作者:奈々(なな) # へぷたなすくろーる http://heptanas.mamagoto.com/ # # ◇利用規約 # この素材はフリーゲームにのみご利用頂けます。 # シェアウェア、販売作品への利用は原則として禁止します。(詳細はブログ参照) # 利用される場合はスクリプト作成者として「奈々」とURLを明記し # 配布時にブログで利用規約の確認と、利用報告を行って下さい。 # #------------------------------------------------------------------------------ # # エネミーの戦闘行動を、従来の「行動リストからランダム選択する」方式から # 行動リストを習得スキルとして「状況に応じたスキルを使う」方式に変更します。 # # AIの仕組みはアクターの自動戦闘とほぼ同一です。 # また行動リストの優先度は無効ですが、それ以外の条件はそのまま適用されます。 # # 導入するだけでAI化しますが、以下のタグを付けることで従来方式に戻せます。 # # <戦闘行動をAI化しない> # #============================================================================== #============================================================================== # ■ Game_Enemy #------------------------------------------------------------------------------ #  敵キャラを扱うクラスです。このクラスは Game_Troop クラス($game_troop)の # 内部で使用されます。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● 戦闘行動の作成 #-------------------------------------------------------------------------- alias n7eai_make_actions make_actions def make_actions if enemy.note.include?("<戦闘行動をAI化しない>") n7eai_make_actions else super make_auto_battle_actions end end #-------------------------------------------------------------------------- # ● 自動戦闘時の戦闘行動を作成 # 追加メソッド、AIスクリプトはこちらを上書きする #-------------------------------------------------------------------------- def make_auto_battle_actions @actions.size.times do |i| @actions[i] = make_action_list.max_by {|action| action.value } end end #-------------------------------------------------------------------------- # ● 自動戦闘用の行動候補リストを作成 # 追加メソッド、Lvスクリプトはこちらを上書きする #-------------------------------------------------------------------------- def make_action_list list = [] action_list = enemy.actions.select {|a| action_valid?(a) } action_list.each do |act| list.push(Game_Action.new(self).set_skill(act.skill_id).evaluate) end list end end