2010-02-27 01:38:24南瓜超人

魔戰系寵物AI

作者:deepmelody (深)


功能簡介:泛用型AI.寵物活動相當人性化,結合冰反及雷反模式,便且可活用近戰技能支援魔戰

寵物限定技能:冰矛 + 雷矢  (掃把ˋ魔毯ˋ貓頭鷹...)

作者親攝測試影片:掃把魔毯類AI實戰應用 (完成度98%)

作者言:(引述)

簡介-
掃把與魔毯 平時可以載著主人高速移動, 然而當自己面對敵人時, 卻會表現出老人一種深沉的 以靜制動的作戰方式. 睿智的攻擊模式, 將導致敵人的智能下降 (魔反進行時).對敵人的動作有著更靈敏的判斷, 而魔法巡迴禮的進行, 則將是敵人惡夢的開始!!

AI特性:
特性:

非主動鎖敵 人性化應對敵人              人性化支援
a-怪物防禦時                                       a-主人被!!時
b-怪物重擊時                                       b-主人被攻擊時
c-怪物反擊時                                       c-主人被弓箭瞄準時
d-弓箭手瞄準時                                   d-主人被怪物鎖定集魔法時
e-被怪物鎖定集魔法時                        e-主人使用弓箭時 (尚未測試 有修改)
f-寵物被!!時
g-寵物被攻擊時
h-寵物單獨對敵型態-3連魔反
(有修正 原本為雷-冰反-雷反 的2連魔反 但是雷-冰中間太慢, 容易有破綻 於是就改成雷反-冰反-雷反的3連模式, 然後效果意外的不錯? )

限制:
1.適用場所-全地形 全場所!!
2.對有魔PD怪需注意
3.魔反失敗率低!! 魔力消耗需注意 (基本上不要讓牠一直單挑怪是不用擔心的)
4.寵物耐久低 長時間攻擊的話注意耐力
5.被重擊機率低!! AI表現方式的關係!!
6.反擊後離怪物太近的問題 尚未完全處理成功
(如:在牆角時 影片中可見, 目前AI已修正 但效果未明)
7.弓箭手支援方面 採取舊AI再做一些修正
   a.火推 變 雷矢
   b.無雷時 改採反擊護
   c.嘗試讓寵物一直跟隨在主人身邊

AI:

<rules>
 <rule name="弓箭瞄準寵物的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="1" timeout="500"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="chase" chase_target="enemy" timeout="500" run="false"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="500"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="aimed"/>
 </rule>
 <rule name="主人被弓箭瞄準的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="500"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="chase" chase_target="enemy" timeout="500" run="false"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="500"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="master_aimed"/>
 </rule>
 <rule name="魔法瞄準寵物的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="1000"/>
    <cmd name="chase" chase_target="enemy" timeout="500" run="true"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="firebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="firebolt" charge="1" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
   </sequence>
  </pattern>
  <event name="target_magic_prepare"/>
 </rule>
 <rule name="主人被魔法瞄準的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="1000"/>
    <cmd name="chase" chase_target="enemy" timeout="500" run="true"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="firebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="firebolt" charge="1" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
   </sequence>
  </pattern>
  <event name="master_target_magic_prepare"/>
 </rule>
 <rule name="寵物被警告的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="500"/>
    <cmd name="melee_attack" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="icebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="targeted" targeting_type="attack"/>
 </rule>
 <rule name="寵物被打的反應1">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="move_against" distance="300" run="true" timeout="1000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="1" timeout="1000"/>
    <cmd name="wait" min="2000" max="3000"/>
    <cmd name="melee_attack" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="1" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="4000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attacked" master_skill="all" down="false"/>
 </rule>
 <rule name="寵物被打的反應2">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="move_against" distance="300" run="true" timeout="1000"/>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="1000"/>
    <cmd name="chase" chase_target="enemy" timeout="1000" run="true"/>
    <cmd name="melee_attack" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="4000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attacked" master_skill="all" down="true"/>
 </rule>
 <rule name="寵物被盯危險-怪物防禦">
  <conditions>
   <condition name="target_state" state="walk"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="1" timeout="500"/>
    <cmd name="melee_attack" timeout="6000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="4000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="target_skill_prepare"/>
 </rule>
 <rule name="寵物被盯危險-怪物重擊">
  <conditions>
   <condition name="target_state" state="run"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="icebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="target_skill_prepare"/>
 </rule>
 <rule name="寵物被盯危險-怪物反擊">
  <conditions>
   <condition name="target_state" state="stop"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="move_against" distance="1000" run="true" timeout="1000"/>
    <cmd name="move_around" clockwise="false" radius="1000" run="true" timeout="500"/>
    <cmd name="move_around" clockwise="true" radius="1000" run="true" timeout="500"/>
    <cmd name="prepare_skill" pet_skill="firebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="firebolt" charge="1" timeout="10000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="icebolt" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="target_skill_prepare"/>
 </rule>
 <rule name="寵物普攻後的反應-冰反預備">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="lightningbolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="icebolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attack" pet_attackable_skill="basic" down="true"/>
 </rule>
 <rule name="寵物冰矛後雷反-怪物僵直">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="lightningbolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="6000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attack" pet_attackable_skill="icebolt" down="false"/>
 </rule>
 <rule name="寵物冰矛後雷反-怪物擊倒">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="lightningbolt" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="0" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="6000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attack" pet_attackable_skill="icebolt" down="true"/>
 </rule>
 <rule name="寵物防禦後的反應">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="melee_attack" timeout="3000"/>
   </sequence>
  </pattern>
  <event name="defence" defence_enable_skill="all"/>
 </rule>
 <rule name="寵物反擊後的反應-怪物太近">
  <conditions>
   <condition name="target_distance" min_distance="100" max_distance="800"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="move_against" distance="1000" run="true" timeout="1000"/>
    <cmd name="move_against" distance="1000" run="true" timeout="500"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="3000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="attack" pet_attackable_skill="counter" down="true"/>
 </rule>
 <rule name="主人被盯危險">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="0" timeout="1000"/>
    <cmd name="melee_attack" timeout="6000"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="0"/>
    <cmd name="prepare_skill" pet_skill="defence" try_cnt="0" timeout="500"/>
    <cmd name="move_against" distance="1000" run="true" timeout="6000"/>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="master_targeted" targeting_type="attack"/>
 </rule>
 <rule name="主人正在被打 寵物快解圍">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="master_attacked" master_skill="all" down="false"/>
 </rule>
 <rule name="主人被打倒了 寵物去報仇">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="1" timeout="1000"/>
    <cmd name="chase" chase_target="enemy" timeout="1000" run="true"/>
    <cmd name="melee_attack" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="master_attacked" master_skill="all" down="true"/>
 </rule>
 <rule name="主人防禦 寵物重擊">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="prepare_skill" pet_skill="smash" try_cnt="1" timeout="1000"/>
    <cmd name="chase" chase_target="enemy" timeout="1000" run="true"/>
    <cmd name="melee_attack" timeout="5000"/>
    <cmd name="prepare_skill" pet_skill="icebolt" try_cnt="1" timeout="500"/>
    <cmd name="stackmagic_attack" stack_magic="icebolt" charge="1" timeout="5000"/>
   </sequence>
  </pattern>
  <event name="master_defence" defence_enable_skill="all"/>
 </rule>
 <rule name="主人穿心 寵物支援">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="cancel_skill"/>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
   </sequence>
  </pattern>
  <event name="master_attack" master_skill="magnum_shot"/>
 </rule>
 <rule name="主人毒雲 寵物支援">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="prepare_skill" pet_skill="firebolt" try_cnt="0" timeout="1000"/>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="wait" min="1000" max="2000"/>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
   </sequence>
  </pattern>
  <event name="master_attack" master_skill="mirage_missile"/>
 </rule>
 <rule name="主人射箭 寵物追隨">
  <conditions/>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
   </sequence>
  </pattern>
  <event name="master_attack" master_skill="ranged_attack"/>
 </rule>
 <rule name="主人射箭 寵物支援-雷矢護駕">
  <conditions>
   <condition name="skill_preparable" pet_skill="lightningbolt"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="prepare_skill" pet_skill="lightningbolt" try_cnt="0" timeout="1000"/>
    <cmd name="chase" chase_target="master" timeout="2000" run="true"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="1000"/>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="prepare_skill" pet_skill="lightningbolt" try_cnt="1" timeout="500"/>
    <cmd name="chase" chase_target="master" timeout="2000" run="true"/>
    <cmd name="stackmagic_attack" stack_magic="lightningbolt" charge="1" timeout="1000"/>
   </sequence>
  </pattern>
  <event name="master_attack" master_skill="ranged_attack"/>
 </rule>
 <rule name="主人射箭 寵物支援-無雷護駕">
  <conditions>
   <condition name="skill_preparable" pet_skill="counter"/>
  </conditions>
  <pattern>
   <param_decl/>
   <sequence>
    <cmd name="chase" chase_target="master" timeout="0" run="true"/>
    <cmd name="prepare_skill" pet_skill="counter" try_cnt="1" timeout="500"/>
   </sequence>
  </pattern>
  <event name="master_attack" master_skill="ranged_attack"/>
 </rule>
</rules>

 

 

原始文章 ::【其他】燃燒阿!!沸騰吧!!燃えろ!!!!! 掃把魔毯類AI實戰應用 AI公佈