Glenelg開発メモ/(未実装)SBR44。 のバックアップソース(No.3)

お名前:
マニアックな話:Glenelgの機能についてのメモ。~
自分のための覚書でもあり、利用者のための豆知識でもあり、他AI開発者のための参考情報でもあり。

**前振り [#d8bfc36c]
フィーリルの奥義スキル、SBR44。~
好感度が下がる代わりに、非常に強力な打撃を放つスキル。~
好感度はえさをあげることでしか得られないので、結果的に連発できないようにデザインしたと思われます。
・・・ですが、そのバランス感覚が悪かったようで、おかしな現象が起きています。

-SBR44はディレイや消費SPが極めて低く、好感度の低下にさえ目をつぶれば異常な連打ができる。
-SBR44を使うと、好感度は確かに下がる。だが、その下がる下限値は2。
-好感度がゼロにならないかぎり、ホムの動作にこれといったデメリットはない。
-好感度が下限値になっていても、SBR44はそれなりに高い威力を発揮できる。~
⇒総合的に、「常にSBR44を使用していても、これといったデメリットがないどころか、通常攻撃よりも高い威力を確保できる」

従来から、フィーリル対応のAIはまずまちがいなく「オートスペル的」なムーンライトに対応していました。
そこに上記状況・・・フィーリル対応AIで、「ムーンライトの代わりにSBR44を使用」するような流れは、当然発生するものです。


**ムーンライトの代わりのSBR44を使う際の問題点。 [#ud3d2941]
ムーンライトの代わりにSBR44を使うのは、簡単です。
ムーンライトのスキルIDをセットしている場所を、代わりにSBR44のIDにしてしまえばいいのですから、
おそらくどのAIでも1行編集すればできます。
Glenelgでも、それは例外ではありません。

ただし、SBR44には1つ、ムーンライトとは大きく異なる点があります。
それは「念属性の敵には当たらない」という点。

そこでSBR44対応の範疇にはもう1つの追加仕様
「念属性の敵には、SBR44を使わない。可能ならば代わりにムーンライトを使う」
という仕様が必要になっています。


**なんですが・・・ [#p4516f80]
上記のようにいろいろ情報はもってはいるのですが、
今のところ、Glenelgでは対応するつもりはありません。
理由は以下のとおり。

-デバッグ面。~
以前から何度か言っている、「友瀬がフィーリルを持っていないのでデバッグできない」と同じ話です。~
まあムーンライトと同じ処理でほとんどOKなので想像では対応可能ですが、デバッグをできないので。
「好感度」という非常に大きな代償を要求する以上、ちょっと気乗りしません。
-「らしくない」という感情的な理由。~
もう1つは、これは前の日記か何かで書いたんですが・・・
「ホムが自発的に好感度を落としつつ猛攻」というのがニュアンス的に変なので。
友瀬的には「ホムは実はSBRを使いたくないんだけど、ケミに言われて嫌々」としか
思えないので、常にそれを使うのには抵抗があります。


**それでもどうしてもSBR44連打が欲しい人に。 [#j11a672f]
技術的にできないとか思われると腹立たしいので(笑)
比較的場当たり的に対処する改造方法の示唆をしておきます。

Glenelgには現時点で「敵ごとに使用するスキルレベルを変更する」仕組みがあります。
これを利用して、「レベル4ムーンライトを使うように設定した敵には、SBR44を使う」という改造をすれば、
「敵によってムーンライトとSBR44を使い分ける」動作は実現できます。

改造としては「射撃スキル自動使用の判定内で、MLレベル4を使う状況なら、SBR44を使う」ようにすればOK。
そのためには、skills.lua 内 UseFireSkill() をちょっといじればいけます。

+(前提知識)使うスキルレベルのチェック。~
skills.lua 内 UseFireSkill()に以下のような行があります。~
このtmplvlが「その敵に対して使うスキルレベル」となっています。
 tmplvl = GetLearnValue(VS_SKILL_LEVEL, EnemyType )
+(前提知識)使うスキル種類。~
これは同じくUseFireSkill() 内にあるローカル変数:skill_id[ (mod( GetV(V_HOMUNTYPE,MyID),4))+1]に保存しています。
+上記を省みて、対応方法は・・・~
上述の tmplvl= GetLearnValuse〜の行のすぐ下に、以下の数行を挿入すればOKです。~
 if (tmplvl == 4) then
 	skill_id[ (mod( GetV(V_HOMUNTYPE,MyID),4))+1 ] = SKILL_SBR44
 	tmplvl=3
 end

念のために書きますが、上記対応はあくまで「友瀬の論理的設計」レベルのもので、一切動作テストはしていません。~
たぶん問題は起きないと思いますが、うまく動くかどうかは保証できませんし、これ以上細かいサポートをする気もありません。~
論理的な説明もしているわけなので、デバッグをする材料は足りているはずですので、試す方は自己責任で。