公式AIは、プレイヤーが手動で指示してやらないと、ホムがスキルを使いません。
AI.luaの330行目あたり
OnATTACK_ST () の最後のほう
1 2 3 4 5 6 |
if (MySkill == 0) then Attack (MyID,MyEnemy) else SkillObject (MyID,MySkillLevel,MySkill,MyEnemy) MySkill = 0 end |
これが攻撃処理の部分です。
戦闘時に使わせたいスキルを設定しておくための変数を用意し、
攻撃処理の部分には、
スキルを使う設定になっているか、
何のスキルをどのLvで使うのか、
スキルを使えるだけのSPがあるかを調べ、
あればスキル発動、
なければ通常攻撃
という処理に変更します。
AI.lua の最初、require の下あたりに、
戦闘時に使わせたいスキルを設定しておくための変数を用意します。
1 2 3 4 5 6 7 8 |
-------------------------------------------------- -- 設定用変数 -------------------------------------------------- SkillAtack = 1 -- 戦闘時にスキルを使う (0:OFF/1:ON) -- 使用するスキルのレベル Moon_LightLv = 1 -- ムーンライト CapriceLv = 5 -- カプリス |
フィーリルとバニルミルトだけ敵を攻撃するスキルを持っています。
ムーンライトは低レベルを連打したほうが効率がいいらしいので 1 です。
攻撃処理の部分は次のような感じにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
if (SkillAtack ~= 0) then -- スキルを使う設定がONのとき -- ホムの種類を調べて、スキルを使えるだけのSPがあれば、使うスキルをセットする local type = GetV (V_HOMUNTYPE,MyID) -- ホムの種類を取得 local HomSP = GetV (V_SP,MyID) -- ホムのSPを取得 if (type == LIF or type == LIF_H or type == LIF2 or type == LIF_H2) then -- リーフ系 elseif (type == AMISTR or type == AMISTR_H or type == AMISTR2 or type == AMISTR_H2) then -- アミストル系 elseif (type == FILIR or type == FILIR_H or type == FILIR2 or type == FILIR_H2) then -- フィーリル系 if (4 * Moon_LightLv < HomSP) then -- SPが足りるかチェック MySkill = 8009 -- ムーンライトをセット MySkillLevel = Moon_LightLv end elseif (type == VANILMIRTH or type == VANILMIRTH_H or type == VANILMIRTH2 or type == VANILMIRTH_H2) then -- バニルミルト系 if (20 + 2 * CapriceLv < HomSP) then -- SPが足りるかチェック MySkill = 8013 -- カプリスをセット MySkillLevel = CapriceLv end end end -- 攻撃を実行する if (MySkill ~= 0) then -- スキルがセットされているとき SkillObject (MyID,MySkillLevel,MySkill,MyEnemy) -- スキルを使う MySkill = 0 else -- SPが足りないなどの理由でスキルがセットされてないとき Attack (MyID,MyEnemy) -- 通常攻撃 end |
スキルIDの一覧はコチラ
ホムンクルスのスキルID