忍者ブログ

方向音痴のSkyrim

PCゲーム「Skyrim」の雑多なCKいじり日記

バニラTemplateの改造【Eat】

前回、ファエンダルのお食事AIを、実際に食べ物アイテムを消費できるAIに改造しました。
これをスカイリム全土のNPCに対して行えば、スカイリムの食卓が少しリアルになるかもしれません。

しかしEatテンプレートを使用したAI Packageは300個以上あり、前回の方法で一つずつ変更するのは一仕事。実際にはこの方法が最適なのですが、AIの修正だけでは不十分な点もあり、他の作業に割り当てる労力と時間の確保の点でいきなり取り組みたくはありません。
ということで今回はバニラのAI Package Template側を編集し、「Eat」を使用したAI全てで、強制的に食べ物アイテムを実消費できるようにしてみたいと思います。割と簡単です。
【Eat テンプレートの改造】


Packageから「Eat」のテンプレートを探して開きます。
次に「Procedure Tree」から、"Procedure: UnlockDoor"の下にある「Simultanious」をクリックして選択。
すると一番下の「Item Conditions」の所に"GetNumericPackageData CreatFakeFood == 0.00"という条件が一行だけでてきます。これを選択して「右クリック>Delete」で消します。
同じことを下にある"Procedure: Acquire"でも行います。


最後に、Treeの下から2番目にある"Procedure: Eat"をクリックして選択。
右の「Selected Procedure」の欄にある「CreateFakeFood」の行をクリックして選択。欄の下の「Input Data」から"False"を選択します。
できたらOKボタンを押してPackageを閉じ、セーブ。

これで「Eat」をテンプレにしたAI Package全てで、食品アイテムを拾って実際に食べるようになります。Modで追加されたAIにも反映されます。
拾う時はプレイヤーがアイテムを拾った時と同じ音がします。食べたら、プレイヤーが食べた時と同じ音がします。ちょっと紛らわしいけど、仕様っぽいです。

前回ファエンダルの例でも少し触れましたが、「Eat Location」がアイテムを探す範囲にもなります。NPCによっては「Eat Location」のRadiusが「特定の椅子周辺ゼロ距離」などという設定もあります。その場合は自分が持っているアイテムしか見つけられません。スカイリムは元々NPCに実際に食事をさせることを想定してないのか、食事場所に食品アイテムが配置されていないこともあります。ドラゴンズリーチとか。
食品アイテムが見つからなかったり、見つけても何らかの理由で取得できなかった場合、挙動がおかしくなります(立ったり座ったりを延々繰り返す等)。おかしくなるといってもProcedure Tree通りにAIが動いているだけですし、食事時間が過ぎれば別のAIに行動が移るので害はないです。傍目には落ち着きませんが。

またちらっと確認したところ、拾えるアイテムには「盗みにならない」という条件に加え、以下の制約があるようです。

屋内セル:
セルに初期配置されているアイテムか、コンテナ内のものだけしか拾わない。プレイヤーが捨てたアイテムは拾えない(?)。NPCのインベントリにスリ入れたアイテムならOK。
屋外セル:
プレイヤーが捨てたアイテムも見つけて拾える(アイテムを落とした後掴んで移動させても、最初にドロップした場所で取っている)。他は特に制約はなさそう。

屋内で食事をするNPCに毒りんごを食べさせたければ、スリ入れるかコンテナに入れておくかのどちらかでしょう。「Eat Location」の設定が範囲ゼロの人もいるので、スリ入れが確実ですね。
制約が多いものの、NPCにイタズラする機会が増えたということで、新たな楽しみ方ができるのではないでしょうか。主に闇の一党関係で。
もう少しテストして様子を見てから、サンプルファイルを上げてみようかと思います(→作りました)。

・補足
Procedure Treeをさらにいじることで、食べ物アイテムが拾えなかった時の不自然な挙動も改善できます。


一例としてこうするとだいぶ不自然さはなくなります。
Treeの一番下に"Simultanious"ブランチを追加して、"Procedure: Sit"と"Procedure: Wait"を下位に並べています。設定は上の通り。"Procedure: Sit"はすぐ上にある"Procedure: Sit"と全く同じ設定です。
食べ物が取得できなければ、椅子にじっと座っているだけになります。
この変更も、バニラだけでなくModで追加されたAIにも問題なく反映されます。

前へ | 次へ
PR

コメント

1. おぉおおお!

早速の記事助かります!
自分は新しい仕事が始まってしまってゲームをいじることが難しくなってきてしまったのですが、こうやって記事を作って頂けると大変に有り難いですm(__)m

屋内だとお皿に盛ってあるものとかを食べてくれないんですね、外のものは落ちてても食べるのに…真のノルドは土なんか気にしないんでしょうか(笑)
しかもプレイヤーが落としたアイテムは拾ってくれないんですね。部屋の中で乱闘騒ぎにならないようにする為でしょうかね。

ちょっと面倒ですが、CKでコンテナにあらかじめリスポンする食べ物を入れておけば解決しますかね。おなかが減ったのに食べるものがなくてじたばたしてるNPCも面白そうですが

人任せになっちゃって申し訳ありませんが、更新楽しみにしております~

Re:おぉおおお!

鮫島さん、ありがとうございます~!

スカイリムでは食卓に飾ってあるリンゴを毒リンゴにすり替える遊びができないのが、ちょっと残念ですね。NPCがテーブルに近づいて皿の上のリンゴを取るまでのドキドキワクワク感は、かなり楽しかっただけに。
NPCの食事場所近くに食べ物が全く配置されてないことも多いので、ある程度生活感を出させようとしたらAIの改変だけでは足りないみたいです。
ドラゴンズリーチも中央の食卓に食べ物がほとんど置いてないので、プロヴェンタスらが数度の食事するともう食べるものがなくなってしまうんですよね…。リスポンする食品コンテナが本当にあちこちで必須になりそうです。

オブリビオンの食事AIとの違いもありますが、それなりに近いものが着々と仕上がりつつあります。
テストプレイでファエンダルさんが完全にモルモットになってますが(^-^;

Author

UNI
Skyrimで遊ぶのも、CKで改造するのも好きなファンタジー好きです。
戦闘苦手で難易度は基本EASY、慣れてもNORMAL程度。 アンデッド恐怖症なので、ノルド遺跡探索が辛い……。

ブログ内検索

最新コメント

[09/24 ひばりのスヴェン]
[09/21 ブレトン魔術師]
[09/19 ふぇりす]
[09/15 こんばんは!]
[09/09 NONAME]