プレイヤーが倒した山賊の死体を気遣うAjaal。
出所不明の新しい死体を見つけたNPCが、時々こんな仕草をとりますね。
どうやらこの行動は、「
Observe Dead Body Behaver」というもののようです。死体を見つけると現在実行しているAI Packageを中断して行うらしい。
一般の人ならともかく、スカイリムの掃除人ならば、「死体を見たら宝箱だと思え」的な行動をして欲しいもの。脈を見る動作の代わりに、ちゃっちゃと身ぐるみはいでしまう行動に置き換えてみることにしました。
ActorのAI Packagesタブにて、幾つかの「Override Package」を確認できます。
すべて"NONE"となっていますが、この状態だとデフォルトの行動が実行されるようです。
ドロップダウンメニューから選べる項目は、見たところAI Packageが登録されたFormListのみ。
自前の
Interrupt Override Packagesを実行させるには、AI PackageとFormListを作る必要があるみたいです。
まずはAI Packageを作ります。チュートリアルが見つけられなかったので、ほとんど手探り状態での作成。
最初に画面右上のInterrupt Overrideから、"ObserveDead"を選びます。これでこのAI PackageがOverrideとして動くようになります。
他は普通のPackageを設定するのと同じ要領。若干違うところはありますが。
死体を見つけたら近づいていって、アイテムを探して取得させる行動を作ってみました。
Override Packageならではの設定値も存在するようです。
「Interrupt Data」というのは、普通のPackageを作る時には見なかった項目。OvserveDeadではここに見つけた死体のReferenceが入るようです。
「Procedure:Travel」のLocationとして"DeadRef"を選択すると、PublicPackageDataから自動的に"TargetSelector"Typeのデータが選択されました。PublicPackageData内に、"DeadRef"を入れる項目が必要みたいなので、Type:TargetSelectorのデータ項目を新しく追加して、"DeadRef"を設定します。
AI Packageができたら、今度はFormListの作成。
このListはそのままAI Package Stackとして機能します。今回はPackage一つだけですが、複数のPackageを登録してConditionやスケジュールを設定すれば、状況によって異なるPackageを実行させることも可能でしょう。
最後にActorデータ画面のAI Packagesタブにて、自作のFormListを選択。
これで死体を見つけたら即ハイエナをしてくれるはずです。
テストプレイの結果、特に問題なく(CTDもなく)取得行動をとってくれるのを確認。ただ、通常時も取得行動を取るため、それがOvserveDeadによる行動なのかどうか判断しにくいです。
しばらく様子を見るしかないか……。
前へ |
次へ