忍者ブログ

方向音痴のSkyrim

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

変身魔法を作る02【NPCに独自行動をとらせる】


戦闘が終われば裸。
最初から最後まで、おじいちゃんのふんどし姿が欠かせない作業になりそうです。
変身魔法の実験中もとの種族に戻れなくなったときは、コンソール "SetRace 種族名" で応急処置しています。


前回は制限時間つきの変身魔法を作りました。
今回は変身したら変身しっぱなし。戦闘が終わった時点で元に戻る魔法を使わせる方法をとってみたいと思います。



その前に、ウェアウルフ形態では魔法が使えるのかどうかを確認します。
Object Windowより、Character > Raceの項目にWerewolfBeastRaceがあります。
Combat Dataタブ内を見ると、ウェアウルフが装備できるSlotと獲物のTypeの一覧がずらり。
Spellは装備できないらしいので、AI PackageのUseMagicで魔法を使わせることはできないかもしれない……ということがなんとなく想像できます。
実際に試してみたところ、やはり魔法は使ってくれないようでした。

シャウトやパワーはどうかというと、これもどうも難しいです。シャウトは使えるタイプが限られているらしく、特にTargetがSelfのものはシャウトできても効果が一切有効になってくれません。
この辺は理解が及ばなかったのでいったんあきらめ、Scriptの力技を使うことにしました。



ということで、まずは自分の元の種族に戻るための新しい変身魔法を作ります。
Magic Effectの「WerewolfChangeFX」をDuplicateして新しくデータを作成。
IDを「ElderRaceChangeFX」などの分かりやすいものに変えます。
Scriptは、「WerewolfTransformVisual」のProperty"WerewolfRace"の値を、「ElderRace」に変更します。
これで老人種族に変身するMagic Effectができました。バニラのScriptをそのまま使っているので、とても手軽です。



新しくSpellを作成し、先ほど作ったMagic Effectを登録。

ウェアウルフに変身する魔法も、同じ要領で作ります。ウェアウルフSpellだけ、Effectにオークフレッシュの効果を追加するのを忘れずに。これがないと、自分からウェアウルフ変身魔法を使ってくれません。
ウェアウルフ変身魔法のみ、おじいちゃんのActorDataに追加して魔法を覚えさせておきます。

次に、老人種族に戻る魔法をScriptの"Cast"で強制的に使用させるため、AI Packageを作成します。


 
Templeteは「DoNothing」を選択。
5秒間その場で待機して終了する、とても簡単なAI Packageです。
戦闘が終わってすぐに元に戻るようにすると逆に不便なので、5秒だけは次の戦闘が起こるかどうか待たせることにしました。この間に新手の敵が近づいてくれば、AI Packageが中断されて再び戦闘AIに切り替わる寸法。
もしかすると5秒は長すぎるかもしれないので(Ai Packageが速やかに切り替わるとも限らないので)、様子を見ながら時間調整します。



AI Packageの実行条件はこんな感じ。
後々ウェアウルフ以外の種族に変身させて遊びたいので、「老人種族じゃない時」を条件にしています。



Scriptタブにて。
On Endのテキストボックスに「; (セミコロン)」を入力してCompileボタンを押します。
Scriptが生成されるので、この状態で一度OKしてAI Packageを確定。
再度AI Packageを開き、Scriptを選択してPropertyボタンを押します。Propertyに「ElderRaceChangeFX(Spell)」を設定……。このあたりの操作は、こちらでやった操作と同じです。
最後、On Endのテキストボックスに、魔法をCastする処理を書いてCompile。
AI Packageの終了時に老人種族に戻る魔法が適用されます。Script側から魔法をかけるので、おじいちゃんに「ElderRaceChangeFX」の魔法を覚えさせておく必要はありません。
テストプレイのみで使うためかなり荒い設定ですが、まずはこれで様子を見ていきます。

Packageができたら、これをおじいちゃんが使えるようにしていくのですが……。
どんなフォロワー拡張Modを使っていても変身できるようにしたいです。
バニラのフォロワークエストもそうですが、一般的なフォロワー拡張Modは、「Priority」50~81程度のクエストAliasにNPCを入れることによって、追従用AI PackageをNPCのActorデータに登録されたAI Packageリストに上乗せしています。AI Packageは上にあるものほど優先して実行されるため、NPCはAliasによって上乗せされた追従AI Packageにしたがって動くようになります。
戦闘中の行動を決めるCombatOverrideも、これと同じく上書きされていることが多いです。

そのためNPCに特別な行動をとらせたいときは、フォロワー拡張Modよりさらに優先度の高いクエストを作り、AliasにAI Packageを登録する作業が必要になります。


Questを新規作成。
IDは分かりやすいものに。「Start Game Enabled」と「Run Once」のチェックをはずし、Priorityは「99」に設定します。ほぼ最強の優先度を誇るQuestです。
これで一度OKボタンを押して、Questを確定します。再度Questを開くと、さまざまな項目が設定可能になります。



Quest Aliasボタンを押して、新しいAliasを作成します。Aliasのフラグは、必要そうなものを全部チェックしておきました。
Fill Typeには「Unique Actor」でおじいちゃん(ElderMale01)を選択。
Alias Package Dataには、先ほど作ったAI PackageをAddします。
優先度99のクエストAliasなので、おじいちゃんをフォロワーとして雇っていても、ウェアウルフに変身していれば老人種族に戻る行動が最優先して行われます。老人に戻ればこのAI PackageはOFFになります。
AI Packageは実行条件を設定し、必要でないときは必ずOFFになるようにしなければなりません。でないと下位にあるフォロワークエストAliasで設定された追従AIが有効にならず、フォロワーとして機能しなくなってしまいます。

またAliasのCombat Override Package Listも設定しています。両手武器持ちのNPCは魔法を使いにくい傾向があるので、Combat Overrideで強制的に魔法を使わせる処理を追加しています(後述)。このCombat Ocerrideに登録したAI Packageも、条件設定によって必要でないときはすべてOFFにならないといけません。しかし、こちらは戦闘中にしか有効にならないものなので、独自の戦闘行動をとらせたければOFFにしなくてもまあ大丈夫です。フォロワー拡張Modで指定された戦闘行動をガン無視して好き勝手暴れるフォロワーNPCにしたければ……。



Quest Dataボタンを押して、「Start Game Enabled」にチェックを入れます。
これでゲーム導入と同時にQuestがはじまります。



ついでと言ってはなんですが、ウェアウルフになっているときだけ、レベルに応じて素手の攻撃力をあげるAbilityを作ってみました。
上から10レベル刻みで50レベルまで、攻撃力が加算されるようにしています。50レベル以上で、計100ポイントUPです。

ゲームを起動して、おじいちゃんが魔法を使って変身するところ、戦闘が終わって5秒~10秒程度待機した後人間に戻るところを確認します。今回の変身はScript「WerewolfTransformVisual」を使用しているので、変身後に裸になることはありません。
前回作った自作Scriptに手を入れて汎用性の高いものにしたら、そちらのScriptに置き換えていこうかと思います。

前へ | 次へ


ウェアウルフ変身魔法を強制的に使わせるCombat Override Packageです。変身後の戦闘もこのPackageで管理できるようになっています。

Procedure Treeの「Procedure:UseMagic」にはSuccess Completes Packageのチェックを入れ、最上位のStackedにRepeat When Completeにチェックを入れています。
「UseMagic」は "自分がウェアウルフでないとき" が実行条件になっています。魔法を使って変身したら「Procedure:HoldPosition」が実行されるようになり、プレイヤーの近くで戦います。
Packageには、Combat Styleを設定できる項目がIDの下にあります。通常は"Default"で設定なしの状態になっています。ここを設定してやることで、このPackageが動いている間は、ActorDataで設定したCombatStyleを上書きすることができます。上の例だと、素手攻撃に特化したCombatStyleが適用されます。
ウェアウルフ専用戦闘Packageですね。条件設定を工夫して、人里離れた場所、草木も眠る丑三つ時だけこのPackageが有効になるようにすると面白いかもしれません。

Combat Override Packageは通常のAI Packageと同じように、FormListにいくつでも登録して使うことができます。上にあるものほど優先して実行されるのも同じです。しかし戦闘中に複数のCombat Override Packageを自動切換えするのは、難しいようです(Scriptによる切り替えが必要らしい)。Packageの実行条件設定しだいですが、一回の戦闘で動かすのはCombat Overrideひとつだけ、と考えて作るのがいいように思います。(修正:CombatOverridePackageの切り替えに最大10秒前後かかることもありますが、ちゃんと切り替わるようです。ただ状況に即応させるにはやはりScriptなどで強制的に切り替えたり、すべえの行動をひとつのPackageにおさめたほうがいいのかもしれません)
Combat Overrideの使い分けの例としては、バニラのフォロワーAlias。屋内セル用と屋外用のふたつのCombat Override Packageを持っています。どちらもプレイヤーの近くで戦うような設定がなされています。屋外と屋内でプレイヤーから離れてもいい距離が違うだけのシンプルなものですが、戦闘中にはぐれるのを防止してくれるPackageになっています。
PR

Author

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

ブログ内検索

最新コメント

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