USSEP導入環境で結婚式の最後に失敗するので修正しました。Rabi Marrigage Fixという名前ですが、Rabiがなくても動作します。
以下の解説では、修正パッチのESPFEファイルをRabiMarriageFix.espとしています。
USSEPと互換性を確保
クエストRelationshipMarriageWeddingのステージに40を追加します。
SSEEditで見るとこうなります。
見たらわかるように、RabiはUSSEPに対応できていないので、USSEPの変更をバニラに戻してしまっています。それをESPFEで再度変更するわけです。
クエストをまるごとUSSEP仕様に戻せばいいだけじゃないの、と最初はそうしたのですが、失敗することにかわりはなく、よくわからなかったので、スクリプトで強引に修正することにしました。ネットを検索すると出てくる「コンソールでStageを〇〇にするといい」を自動でやっているだけです。
もう忘れましたが、ステージ40がないと進行に不具合があるのだったと思います。
回答が早すぎるのを修正
シーンRelationshipMarriageWeddingSceneViewのPhase 8にFragmentを追加します。
単純に1秒のwaitを入れているだけです。何度もテストを繰り返した結果、1秒がしっくりきました。
RelationshipMarriageWedding Fragment_3 (papyrus)
;debug.trace("phase 8 end")
utility.wait(1.0)
私の場合はFragment_3になりました。
式の最後に失敗扱いになるのを修正
Fragment_0を修正します。
元々はこうなっています。
RelationshipMarriageWedding Fragment_0 修正前 (papyrus)
;If the scene ends before the player is married, trigger the fail state
If (GetOwningQuest().GetStage() < 100)
GetOwningQuest().SetStage(150)
EndIf
以下のように書き換えます。
RelationshipMarriageWedding Fragment_0 修正後 (papyrus)
;If the scene ends before the player is married, trigger the fail state
Int iStage = GetOwningQuest().GetStage()
if iStage < 100
if 30 <= iStage
GetOwningQuest().SetStage(100)
else
GetOwningQuest().SetStage(150)
endif
endif