Feral Ghoulだらけの着陸地点に放り出された図。
引き続きNeutral Vertibirdsの話です。使い勝手に関して、個人的に気になった所を少々テコ入れします。僕の環境では今の所問題無いですが、不具合起こるかも知れないので、自己責任で改造してください。
Quest StageやSceneの話等は、前回までの内容を踏襲します。今回はThe Prydwen関係無いですけどねw。
f4mod.hatenablog.com
f4mod.hatenablog.com
分割しづらかったので、めっちゃ長い&前回までよりは難しめかも。
- ベルチバードからの降機を手動化
- 降機せずに再度Fast Travelを開始
- Fast Travel中にHunting Modeへ移行
- Air Supportの条件変更
- 改造に伴うコンパニオンの挙動
- (おまけ1)Stage 100の処理の流れ
- (おまけ2)その他の便利(?)改造
ベルチバードからの降機を手動化
着陸前ですが、Feral Ghoulまみれです。でもBOSのベルチ同様、着陸したら強制的に叩き出される為、最初のSSの逃走劇な未来しか見えません。
そこで自動で降機する機能を止め、アクティベートで降りるよう変更します。スクリプト改変が必要ですが、残念ながらソースファイルがありません。Pex Inspector使って、直接pexファイルを書き換えます。
Quest Scriptの変更
Quest”NTRVFT”に括られたスクリプト、ntrvftquestscript.pexを開きます。Stage 60(移動&着陸完了)で呼び出される関数を改造。
DismountPassengersは、プレイヤキャラ及びコンパニオン(複数対応可、Dogmeat含む)を強制降機させます(このスクリプト内で定義)。もう1つ、BlockActivationでキー操作を無効化してます。
この2つの呼び出しを消します。赤枠内、3つのCallmethodを削除。
削除完了。BlockActivationを消し忘れると、キー入力無効になってハマるので注意。
・・・なのですが、まだ着陸と同時に降ろされます。
NTRVFTScene.Stopにより、Stage 60到達と同時にSceneが停止します。過去2回の記事で触れた、SceneがPhase 6で停止してしまう原因がこれです。この影響で、まだ着陸と同時に叩き出されます。
Scene停止を前提に作業してきた以上、これの削除は避けたいです。順を追って見ていきます。
Fragment Scriptの変更
CKでNTRVFTのSceneを見ます。Edit Dataをチェック。
Scene終了時に稼働するFragment Scriptが付いてます。これもソースが無いのでCKからは確認不能。
再びPex Inspector。SceneのFragment Script、SF_NTRVFTScene.pexを見ます。
Stage 100(Quest終了)がセットされてますね。後述しますが、Stage 100到達時にもDismountPassengersが呼び出されます。
つまり流れとしては、
- Stage 60のスクリプトから強制降機を削除(さっきやったとこ)
- Sceneが強制終了
- Scene終了時のFragment Scriptが作動
- Fragment ScriptがStage 100をセット
- Stage 100のスクリプトが作動
- DismountPassengersの呼び出し
- 全員降ろされる
こんな感じ。まだ結局降ろされちゃう訳です。そこで、このFragment ScriptからStage 100のセットを削除します。Callmethodを1個を消せばOK。
消しました。記述的には全部消しても良いんですが、経験上、改変量が増えると動作が怪しくなることがある為、最小限に留めてます。
これも後述しますが、プレイヤキャラの降機をトリガにStage 100をセットする処理もある為、ここを消してもQuestは正常に終了(stop)します。冗長性は低下しますが、平気でしょう多分。
動作確認
着陸後、勝手に降りなくなりました!ミニガンのおかげで勝ち目もある・・・か?。あまり芳しくないですね。
やっぱり逃げたいですぬ。でも一度降機しないと再度Fast Travelができません。やばいです。
※ベルチの移動はいわゆる”Fast Travel”とは違いますけど、まあPip-Boyからの操作でもFTって出ますし、それで統一しときます。
降機せずに再度Fast Travelを開始
そんな訳で、降機せずとも連続してFTできるようにします。
そもそもFTは、バニラのKeywordである00231B50
”isVertibirdFastTravel”が付いてる状態で実行可能で、FT時(NTRVFT稼働時)のQuest Aliasにより付与されてます。
これなんですが、恐らくプレイヤキャラ専用ベルチなら付けっぱで問題無いと思います。BOSのベルチだと、特定の派閥クエスト中にFTできるとマズいこともあるかもですが。
つまり、いつでも無条件にFT可能な状態にしちゃおう、という話。xx00350D
”NTRVertibirdBase”に、前述のKeywordを直接追加します。
常設化したので、Quest Aliasからは”isVertibirdFastTravel”のKeywordを撤去。
CKの方が見やすいかも。Quest AliasからVertibirdを選択して、
Alias Keywordsから削除。
降りずに再度離陸可能になりました!
さっさとトンズラ・・・のつもりだったんですが、このままHunting開始できたら安全に掃討できそうですね!
安全確保できた途端に態度が急変するなんてことは・・・所により良くあるんじゃないでしょうか。
※Stage遷移が変わってしまう為、降りずに再離陸した後は、パイロットが離着陸時のセリフを喋らなくなります。一度プレイヤキャラが降機した後は、再度喋ります。
コンパニオンのGhost化処理は、プレイヤキャラが降りるまで解除されない為、問題無い筈。
Fast Travel中にHunting Modeへ移行
xx003164
"NTRVertibirdControlTerminalMain"で設定された、Hunting Modeへの切り替え条件を変更します。
横長過ぎるので途中で切ってますが、元の条件は、
- Hunting Modeが停止中
- NTRVFTが動作中
- NTRVFTがStage 30
の3つ。つまりプレイヤキャラがベルチ搭乗(離陸前)かつ、Hunting Modeがまだ動いてない状態。
この条件を、
- Hunting Modeが停止中
- プレイヤキャラが搭乗中
に変更します。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化解除処理が入る為、問題無いです。
FTせずに降りると、Stage 40(飛行中)、Stage 50(着陸中)、Stage 60(着陸完了)のフラグがセットされないですが、プレイヤキャラの降機をトリガにStage 100がセットされます。
いずれもQuestは正常にstop状態に。
(おまけ1)Stage 100の処理の流れ
何も改造しないですが、動作についてだけ。ntrvftquestscript.pexのStage 100の処理について。
Stage 100がセットされると、
- DismountPassengersにより全員強制降機&Ghost解除
- Sceneの停止
- Quest(NTRVFT)の停止
上記3つが走ります。
この強制降機が結構重要で。プレイヤキャラはアクティベートで降機しますが、コンパニオンはDismountPassengers頼みです。これがコケると、ベルチに乗ったまま降りてきません(Quest停止してAliasから離れても、降りてこないんですよね)。
Scene終了時のFragment Scriptからの呼び出しは消してしまったので、何処から呼び出されるか?という話なのですが。
Quest”NTRVFT”に括られたスクリプトには、これ以外にもう1つ、ntrvertibirdactorscript.pexが有ります。
プレイヤキャラがベルチのturretをやめた時、つまりベルチから降機する際に呼び出される関数から、StopOnVFTAliasが更に呼び出し。
ntrvertibirdmainscript.pexの中。ここでもStage 100がセットされてます。
つまり、
- プレイヤキャラがベルチから降機(FT前、後共に)
- StopOnVFTAliasがStage 100をセット
- DismountPassengerがコンパニオンを全員降ろす
といった流れ。
このおかげで、改造後もコンパニオンがベルチに取り残される事は無い筈なんですが、本来2回実行されてるDismountPassengerを1回削ってしまった為、何等かの不慮の事態でスクリプトがコケた時、搭乗したまま降りてこないことがあるかも?
その時は、再度乗り降りすれば回復すると思います。
(おまけ2)その他の便利(?)改造
簡単なおまけ改造ネタ。
Workbenchへの引き寄せ可能距離の増加
ヘリパッドやベンチには、うまくFTしてくれないですよね。これは仕様上仕方がないと思います。恐らく家具に座らせる動作を使って移動させる等の手段を使わないと(FT以外の動作指示を出す)、うまく位置合わないのかな、と。
代わりというか、Workbenchをアクティべートすれば近くのベルチを引き寄せられますよね。ただし距離が遠いと見つけてくれないです。
Workbenchに括られたスクリプトのパラメータを変更することで、走査半径を広げられます。SSの値だと、SanctuaryでRedrocketに居るベルチを見つけて引っ張る位に(汗)
入植者との戦闘回避
襲撃後等、入植者とベルチが喧嘩してることが。air supportでフレンドリファイアしちゃったんでしょう、きっと。
Factionを追加してやることで、多分回避できると思います。
Navmeshと搭乗アニメーション
ちょっと確証無いんで話半分程度に。着陸時のベルチはnavmeshを動的に切り取ってるようで、路駐してもNPCがベルチに突っ込むことは無いです。個人的には、これCTDリスクになってないかなー、と思ったりで。ちゃんと検証してないんで、フィーリング程度ですが。
Keyword、001A02DA
"CutNavmeshWhenLanded"を外します。個人的には、重い居住地でロード直後にベルチに近づくとCTDしてたのが無くなったような気がしてますが・・・どうでしょうね。副作用として、NPCが地上のベルチを避けてくれなくなります。
もう1個、こちらもKeyword。000A56D7
”FurnitureForce1stPerson”を外すと、強制一人称化が無くなる為、プレイヤキャラの搭乗アニメーションが見られます。
ドアガン構えた状態でも、まだプレイヤキャラ基準。一度一人称に戻すと、ベルチ視点に変わります。
これはちょっと大きな注意事項がありまして。Power Armor使用時には視点が壊れます。最悪続行不能になるので、使用は計画的に。
以上、おしまいです!