trench8891 / PolyROM

Mass Effect Poly Romance Mod by elizabethnessie
MIT License
4 stars 0 forks source link

Black screen pre cerberus base w/ multiple active romances #1

Closed trench8891 closed 7 months ago

trench8891 commented 8 months ago

Bug titles on nexus mod page:

I suspect this is also related to going to bed with one romance and waking up with another

To recreate

Notably the mod itself does not need to be installed - all that seems to be required is two active romances. I recreated it by modifying LE3 save 0822 (liara cronos rom) and added active Kaidan romance

Logs

Liara romance active

KismetLog.txt LE3DebugLogger.log

Kaidan romance active

KismetLog.txt LE3DebugLogger.log

Liara and Kaidan romances active

KismetLog.txt LE3DebugLogger.log

trench8891 commented 8 months ago

Digging through the logs, it seems like from time to time a sequence will have a "pause and wait" point to make sure all other sequences are finished before continuing. I'm pretty sure the black screen here is one such "pause and wait" point that never gets finished waiting, implying there's some sequence that is stuck somehow.

So my guess is that it really is the same thing as the juggled romance partner issue, because when Kaidan and Liara are both active we get the first half of the Kaidan sequence but not the second and I suspect that's what's waiting to finish and never does.

I'm going to give it a try with Kaidan active and no one else to get logs from what looks like to see if I can narrow down where exactly it's cutting off with multiple.

trench8891 commented 7 months ago

After a lot of false starts, I finally realized the Asset Database is really an extremely useful tool here, and for good measure I also did another run to grab function logs (which I won't attach here because they are too large). However, I found the sequence where the decision gets made about which is the first video that plays - BioD_Nor_203CIC.TheWorld.PersistentLevel.Main_Sequence.GalaxyMap.NonLanding_Selection.Cat004_Start - unsurprisingly, it checks if Kaidan is romance before it checks Liara.

My guess is that wherever the second check is the order is different, and checks Liara before Kaidan, which somehow leaves a stream orphaned. I'm doing some more digging now to find that second sequence.

EDIT: got it - BioD_Nor_600Cat4Intro.TheWorld.PersistentLevel.Main_Sequence.Setup_Return_Streaming

trench8891 commented 7 months ago

I am very nearly certain that it's the change in order between those two sequences that causes the effect of going to bed with Kaidan and waking up with Liara, but based on the advice of elizabethnessie I gave it a try with the mod enabled and was actually unable to reproduce the issue with Liara and Kaidan. It turns out that the "true love" mechanic that the mod adds effectively prevents the issue I found by making sure both sequences choose the same person, regardless of order. However I was able to reproduce the issue by having Traynor as a second love interest with Liara, but only with Liara set as the true love - when Traynor is the true love the issue does not occur. There also is no juggling of partners, the player both goes to bed and wakes up with Liara, but the black screen issue still does happen.

Here's the kismet log of the same save file adjusted to have Traynor as a second romance with Liara and with the true love (plot integer 12479) set to Liara (integer value 1): KismetLog.txt

trench8891 commented 7 months ago

Using the function log (which is too large to attach here) I was able to determine sequence element BioP_Nor.TheWorld.PersistentLevel.Main_Sequence.Area_transition.Select_Henchmen_TODO_MAKE_DLC_FRIENDLY.SequenceReference_6.REF_SelectAndLoadHenchmen.LoadSelectedHenchmen.SeqEvent_RemoteEvent_4 is executed multiple times and successfully leads to the In input for SeqAct_Gate_0 in the same sequence, but the section of that sequence that would lead to the Open input for the gate (beginning with SeqEvent_SequenceActivated_1) is never executed.

I've rerun the save with Traynor set as the true love (plot integer 12479 set to 6) and captured those logs for comparison.

KismetLog.txt

trench8891 commented 7 months ago

Both function logs have biod_nor_600cat4intro.TheWorld.PersistentLevel.Main_Sequence.SFXSeqAct_StartConversation_64->Engine.SequenceOp.Deactivated(), but only the one with Traynor as the true love then proceeds with biod_nor_600cat4intro.TheWorld.PersistentLevel.Main_Sequence.SeqAct_ActivateRemoteEvent_0->Engine.SequenceOp.Activated(), the one with Liara as the true love goes on to BioP_Nor.TheWorld.PersistentLevel.BioWorldInfo_0->SFXGame.BioWorldInfo.Tick(), which is present in the Trayonor function log a ways down.

It looks like the transition after the wake up scene to the strategy room where EDI tells Shepherd it's important that she come along simply... doesn't happen, for some reason? I have absolutely no idea why that would be the case, but I'm still digging.

trench8891 commented 7 months ago

Tried out a few more multi-romance combos and found out:

My new hypothesis is that for some reason, it only works if no one without a "second" romance scene is not set as true love, meaning if there are two such romanced characters it can never work, and if there's only one than that one must be the true love.

I also noticed that every time I get stuck on the black screen the Streaming Levels HUD indicates that romalone has been loaded, so I'm thinking that for whatever reason if one of those characters is romanced and is not the true love, the game loads romalone but never runs it, which is why we get stuck at the black screen.

trench8891 commented 7 months ago

Oh gosh I think I maybe figured it out - if none of those characters are the true love that weird side conditional that's not attached to anything sets the alone scene!

EDIT: nope, because if that were it it would work as long as any of those characters were the TL, not all of them.

trench8891 commented 7 months ago

Ok this time I feel like I got it for real: the problem is in BioD_Nor_600Cat4Intro.TheWorld.PersistentLevel.Main_Sequence.Dream03.Set_Alone_If_No_Sex - there are conditionals in there to determine if each character has been rejected, and for at least some (Traynor at least for sure) the check is just "are they romanced and we're not showing the scene? if so they have been rejected" and that is what leads to the "wake up alone" scene getting loaded, and then presumably it's never played because there's already some different wake up scene queued.

If that's the case, the solution will be to modify those conditionals to also require the character to be the True Love, and that should sort it out.