"Procedure: Activate"関連でいくつか動作が気になるバニラのAI Templateがあったので、手を入れてみました。ProcedureTreeをちょっとだけ改変します。
デフォルトで存在するAI Templateだけに、このテンプレを使ったAI Packageすべてに影響が出ます。Modでも同じくこのテンプレを使用したAI全てに影響が及びます。
影響が大きいだけに怖いですが、製材所主人らの引きこもりAIが改善します。
気になったAI Package Templateがこちら。
「Activate」「ActivateSpecialFurniture」「CarryAndDropItem」の3つ。「Activate」はNPCがレバーや鎖を操作するAI Package、「CarryAndDropItem」は薪運びなどに使用されています。
「Activate」と「ActivateSpecialFurniture」は全く同じように見えますが、「Activate」は目的のオブジェクトを設定回数アクティベートしたら終了するのに対し、「ActivateSpecialFurniture」はエンドレスにアクティベートし続けます。「CarryAndDropItem」は2つのオブジェクト間を交互に移動して、それぞれアクティベートを繰り返します。
この3つの共通点は、Procedure Treeの一番上が"Procedure: Activate"になっているところです。AIがスタートすると、この"Procedure: Activate"で指定されたオブジェクトをすぐさまアクティベートしに行くようになっています。しかしこのProcedureは、本人とオブジェクトが同一セルか同じワールドにいないとなんらかの問題が生じ、AIが停止してNPCがその場で棒立ちになってしまうようです
(両方がロードされたエリアにいないとだめ?)。
これらのTemplateが使用されているAI持ちのNPCには、製材所の主人や、ウィンドヘルム港の「湿地帯の斥候」と「浅瀬にたたずむ」のアルゴニアン2名がいます。この人達が仕事時間なのに外に出てこないことがしょっちゅうあるのは、多分これのせい。屋内で過ごすAIのすぐ次に問題のAIが実行されるスケジュールになっているため、「アクティベート対象物が異なるセル(屋外)にある」=「棒立ちで家にこもったまま」になっているようです。
ちなみにファエンダルも「CarryAndDropItem」をテンプレとする薪運びAIを持っていますが、この問題は起きません。薪運びAIの直前のスケジュールが、リバーウッド屋外を散策するAIのためです。
ということで、Procedure Treeを改善してみます。"Procedure: Activate"の直前に、目的地へ確実に移動してくれる"Procedure: Travel"を挿入すればいいでしょう。
「CarryAndDropItem」が一番簡単です。Procedure Treeの一番下にある"Procedure: Travel"を、ドラッグしてTreeの一番上に持っていくだけ。持っていく時、右の「Selected Procedure」欄を見て、「Destination」が"Carry Start"になっているのを一応確認しておいてください。
一番上に持ってくると、こんなになります。
- Carry Start(オブジェクト)の所に移動して、
- Carry Startをアクティベート。
- Carry End(オブジェクト)の所に移動して、
- Carry Endをアクティベート。
最上位のSequenceにRepeatのチェックが入っているので、1~4を延々と繰り返します。
ちなみに「CarryAndDropItem」とよく似たAI Template「CarryAndKeepItem」のProcedure Treeはこんなになってます。
修正後の「CarryAndKeepItem」とほとんど同じ構造です。
「CarryAndDropItem」も本当はこうしたかったんじゃ……。
さて、次は「Activate」を改造です。
こちらはProcedure Treeの"Sequence"の上で右クリックして"New Procedure"を選択。
小さなウィンドウが開くので、上のSSのようにTravelが選択されていること、「Use existing data if available」にチェックが入っていることを確認してOKボタンを押します。
"Procedure: Travel"がTreeの一番下に挿入されるので、これを"Procedure: Activate"の上に持っていきます。
"Procedure: Travel"を選択した状態で、Tree欄右の「Selected Procedure」にて、「Destination」の項目に"target"が入っているのを確認。下二つは空白のままにしておきます。これで改造完了です。
まったく同じ手法で「ActivateSpecialFurniture」も改造。
なお、改造したテンプレを使ったAI Packageを編集し直す必要はありません。
以上の変更で、「目的のオブジェクトのすぐ隣までTravelで移動」→「オブジェクトをActivate」
できるようになります。対象物と同じ場所にいなければAIが止まってしまう"Procedure: Activate"の直前で、"Procedure: Travel"が「動作主&対象物の引き合わせ」を確実に行ってくれる構造です。
元のProcedure Treeと比べても、少なくとも改悪にはなっていないと思い……たい。他の"Procedure: Activate"を使用しているAIテンプレでは、目的物までの移動に"Procedure: Travel"を使用している例が多いので、概ね大丈夫でしょう。
ESPファイルを保存して、製材所の主人や、湿地帯の斥候達の様子を見に行きます。引きこもりが治っているかと思います。
ただし一部の製材所では、裁断機と主人の関連付けをデフォでミスっているため、外に出てきても仕事しないことがままあります。いつかこの辺りの修正も含めて、簡単なAI修正Modが作れたらなぁとちまちま作業しつつ妄想中です。
前へ |
次へ