Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】Neutral Vertibirdsの便利化改造実験

スポンサーリンク


ウォーキングデッド
Feral Ghoulだらけの着陸地点に放り出された図。

引き続きNeutral Vertibirdsの話です。使い勝手に関して、個人的に気になった所を少々テコ入れします。僕の環境では今の所問題無いですが、不具合起こるかも知れないので、自己責任で改造してください
Quest StageSceneの話等は、前回までの内容を踏襲します。今回はThe Prydwen関係無いですけどねw。
f4mod.hatenablog.com
f4mod.hatenablog.com
分割しづらかったので、めっちゃ長い&前回までよりは難しめかも。

ベルチバードからの降機を手動化

着陸前ですが、Feral Ghoulまみれです。でもBOSのベルチ同様、着陸したら強制的に叩き出される為、最初のSSの逃走劇な未来しか見えません。
フェラルグールの群れに強行着陸
そこで自動で降機する機能を止め、アクティベートで降りるよう変更します。スクリプト改変が必要ですが、残念ながらソースファイルがありません。Pex Inspector使って、直接pexファイルを書き換えます。

Quest Scriptの変更

Quest”NTRVFT”に括られたスクリプト、ntrvftquestscript.pexを開きます。Stage 60(移動&着陸完了)で呼び出される関数を改造。
Stage60のスクリプト
DismountPassengersは、プレイヤキャラ及びコンパニオン(複数対応可、Dogmeat含む)を強制降機させます(このスクリプト内で定義)。もう1つ、BlockActivationでキー操作を無効化してます。
この2つの呼び出しを消します。赤枠内、3つのCallmethodを削除。


削除完了。BlockActivationを消し忘れると、キー入力無効になってハマるので注意。
Stage60のスクリプト改造
・・・なのですが、まだ着陸と同時に降ろされます
NTRVFTScene.Stopにより、Stage 60到達と同時にSceneが停止します。過去2回の記事で触れた、SceneがPhase 6で停止してしまう原因がこれです。この影響で、まだ着陸と同時に叩き出されます。
Scene停止を前提に作業してきた以上、これの削除は避けたいです。順を追って見ていきます。

Fragment Scriptの変更


CKでNTRVFTのSceneを見ます。Edit Dataをチェック。
QuestScene


Scene終了時に稼働するFragment Scriptが付いてます。これもソースが無いのでCKからは確認不能。
SceneEnd時の処理

再びPex Inspector。SceneのFragment Script、SF_NTRVFTScene.pexを見ます。
Stage 100(Quest終了)がセットされてますね。後述しますが、Stage 100到達時にもDismountPassengersが呼び出されます
SceneEnd時のフラグメントスクリプト

つまり流れとしては、

  1. Stage 60のスクリプトから強制降機を削除(さっきやったとこ)
  2. Sceneが強制終了
  3. Scene終了時のFragment Scriptが作動
  4. Fragment ScriptがStage 100をセット
  5. Stage 100のスクリプトが作動
  6. DismountPassengersの呼び出し
  7. 全員降ろされる

こんな感じ。まだ結局降ろされちゃう訳です。そこで、このFragment ScriptからStage 100のセットを削除します。Callmethodを1個を消せばOK。

消しました。記述的には全部消しても良いんですが、経験上、改変量が増えると動作が怪しくなることがある為、最小限に留めてます。
SceneEnd時のフラグメントスクリプト改造
これも後述しますが、プレイヤキャラの降機をトリガにStage 100をセットする処理もある為、ここを消してもQuestは正常に終了(stop)します。冗長性は低下しますが、平気でしょう多分。

動作確認

着陸後、勝手に降りなくなりました!ミニガンのおかげで勝ち目もある・・・か?。あまり芳しくないですね。
ベルチから降りずにドアガン掃射
やっぱり逃げたいですぬ。でも一度降機しないと再度Fast Travelができません。やばいです。


※ベルチの移動はいわゆる”Fast Travel”とは違いますけど、まあPip-Boyからの操作でもFTって出ますし、それで統一しときます。

降機せずに再度Fast Travelを開始

そんな訳で、降機せずとも連続してFTできるようにします。
そもそもFTは、バニラのKeywordである00231B50isVertibirdFastTravel”が付いてる状態で実行可能で、FT時(NTRVFT稼働時)のQuest Aliasにより付与されてます。

これなんですが、恐らくプレイヤキャラ専用ベルチなら付けっぱで問題無いと思います。BOSのベルチだと、特定の派閥クエスト中にFTできるとマズいこともあるかもですが。
つまり、いつでも無条件にFT可能な状態にしちゃおう、という話。xx00350DNTRVertibirdBase”に、前述のKeywordを直接追加します。
FastTravel用Keywordを常設

常設化したので、Quest Aliasからは”isVertibirdFastTravel”のKeywordを撤去。
エイリアスからKeywordを削除

CKの方が見やすいかも。Quest AliasからVertibirdを選択して、
CKから見たNTRVFTのQuestAlias

Alias Keywordsから削除。
ベルチのエイリアス

降りずに再度離陸可能になりました!
ベルチから降りずに再度離陸
さっさとトンズラ・・・のつもりだったんですが、このままHunting開始できたら安全に掃討できそうですね!
安全確保できた途端に態度が急変するなんてことは・・・所により良くあるんじゃないでしょうか。


※Stage遷移が変わってしまう為、降りずに再離陸した後は、パイロットが離着陸時のセリフを喋らなくなります。一度プレイヤキャラが降機した後は、再度喋ります。
コンパニオンのGhost化処理は、プレイヤキャラが降りるまで解除されない為、問題無い筈。

Fast Travel中にHunting Modeへ移行

xx003164"NTRVertibirdControlTerminalMain"で設定された、Hunting Modeへの切り替え条件を変更します。
横長過ぎるので途中で切ってますが、元の条件は、

  1. Hunting Modeが停止中
  2. NTRVFTが動作中
  3. NTRVFTがStage 30

の3つ。つまりプレイヤキャラがベルチ搭乗(離陸前)かつ、Hunting Modeがまだ動いてない状態。
ハンティングモードの条件変更
この条件を、

  1. Hunting Modeが停止中
  2. プレイヤキャラが搭乗中

に変更します。FT中(Stage 40or50)だろうと、到着後の降機前(NTRVFT停止中)だろうと、稼働OKにします。


FTでトンズラ中、Hunting Modeに移行して地上掃討開始。まったくもってセコい。
ファストトラベルからハンティングに移行

雨が降ってきたので、本格的にバックレ。Hunting Modeを終了し、着陸前に目的地を再設定すれば、そのままFT再開できます。
雨が降ってきたのでバックレ
QuestのPriorityがHunting Modeの方が高い為、終了してからでないとFTに移行しないです。


※再度Hunting Modeを起動するには、一度着陸&降機する必要があります。連続稼働させるにはHunting Modeのスクリプトも変更しないといけない(と思う)ので、今回は無しで。

Air Supportの条件変更

改造のお釣りで、プレイヤキャラが搭乗中にAir Supportを実行できてしまうことがあるかも。想定外の動作なのでハマってしまいます(降機不可能) 。
安全の為、”プレイヤキャラが搭乗していない時”という条件を追加しておきました。
エアサポートのお釣り修正

改造に伴うコンパニオンの挙動

複数人は試してないですが、コンパニオンの乗り降りも問題無いと思います。プレイヤキャラが乗れば、コンパニオンも搭乗。
コンパニオンも降りずに待機

プレイヤキャラが降機すれば、コンパニオンも降機します。コンパニオンだけ勝手に降りることは無いです。
プレイヤが降りればコンパニオンも降機

FTしないで乗った直後に降りただけでも、Quest Stage 100でコンパニオンの降機&Ghost化解除処理が入る為、問題無いです。
Quest Stage遷移の違い
FTせずに降りると、Stage 40(飛行中)、Stage 50(着陸中)、Stage 60(着陸完了)のフラグがセットされないですが、プレイヤキャラの降機をトリガにStage 100がセットされます。
いずれもQuestは正常にstop状態に。

(おまけ1)Stage 100の処理の流れ

何も改造しないですが、動作についてだけ。ntrvftquestscript.pexのStage 100の処理について。
Stage100の処理
Stage 100がセットされると、

  1. DismountPassengersにより全員強制降機&Ghost解除
  2. Sceneの停止
  3. Quest(NTRVFT)の停止

上記3つが走ります。

この強制降機が結構重要で。プレイヤキャラはアクティベートで降機しますが、コンパニオンはDismountPassengers頼みです。これがコケると、ベルチに乗ったまま降りてきません(Quest停止してAliasから離れても、降りてこないんですよね)。

Scene終了時のFragment Scriptからの呼び出しは消してしまったので、何処から呼び出されるか?という話なのですが。

Quest”NTRVFT”に括られたスクリプトには、これ以外にもう1つ、ntrvertibirdactorscript.pexが有ります。
プレイヤキャラ降機時のスクリプト
プレイヤキャラがベルチのturretをやめた時、つまりベルチから降機する際に呼び出される関数から、StopOnVFTAliasが更に呼び出し。

ntrvertibirdmainscript.pexの中。ここでもStage 100がセットされてます。
プレイヤキャラ降機時に呼び出される関数
つまり、

  1. プレイヤキャラがベルチから降機(FT前、後共に)
  2. StopOnVFTAliasがStage 100をセット
  3. DismountPassengerがコンパニオンを全員降ろす

といった流れ。

このおかげで、改造後もコンパニオンがベルチに取り残される事は無い筈なんですが、本来2回実行されてるDismountPassengerを1回削ってしまった為、何等かの不慮の事態でスクリプトがコケた時、搭乗したまま降りてこないことがあるかも?
その時は、再度乗り降りすれば回復すると思います。

(おまけ2)その他の便利(?)改造

簡単なおまけ改造ネタ。

Workbenchへの引き寄せ可能距離の増加

ヘリパッドやベンチには、うまくFTしてくれないですよね。これは仕様上仕方がないと思います。恐らく家具に座らせる動作を使って移動させる等の手段を使わないと(FT以外の動作指示を出す)、うまく位置合わないのかな、と。
代わりというか、Workbenchをアクティべートすれば近くのベルチを引き寄せられますよね。ただし距離が遠いと見つけてくれないです。
Workbenchに括られたスクリプトのパラメータを変更することで、走査半径を広げられます。SSの値だと、SanctuaryでRedrocketに居るベルチを見つけて引っ張る位に(汗)
ベルチ用Workbenchへの引き寄せ距離変更

入植者との戦闘回避

襲撃後等、入植者とベルチが喧嘩してることが。air supportでフレンドリファイアしちゃったんでしょう、きっと。
Factionを追加してやることで、多分回避できると思います。
ファクション追加

ちょっと確証無いんで話半分程度に。着陸時のベルチはnavmeshを動的に切り取ってるようで、路駐してもNPCがベルチに突っ込むことは無いです。個人的には、これCTDリスクになってないかなー、と思ったりで。ちゃんと検証してないんで、フィーリング程度ですが。

Keyword、001A02DA"CutNavmeshWhenLanded"を外します。個人的には、重い居住地でロード直後にベルチに近づくとCTDしてたのが無くなったような気がしてますが・・・どうでしょうね。副作用として、NPCが地上のベルチを避けてくれなくなります
ナビメッシュとアニメーションの変更

もう1個、こちらもKeyword。000A56D7”FurnitureForce1stPerson”を外すと、強制一人称化が無くなる為、プレイヤキャラの搭乗アニメーションが見られます。
搭乗アニメーションの三人称視点化

ドアガン構えた状態でも、まだプレイヤキャラ基準。一度一人称に戻すと、ベルチ視点に変わります。
三人称視点のドアガン

これはちょっと大きな注意事項がありまして。Power Armor使用時には視点が壊れます。最悪続行不能になるので、使用は計画的に。

以上、おしまいです!

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com