There's a similar auto complete if you do not go to riverwood right away after helgen and meet with ralof/hadvar for a good like 24 game hours, where the game then skips the whole interaction and acts as if they asked you to talk to the jarl of whiterun about sending guards.
Is this a similar error? I don't necessarily have a problem with this one but I figured I'd mention it
There is another stupid check like that between the main quests bleak falls barrow and dragon rising. After you return the dragonstone to Farengar, Irileth is supposed to come running about a dragon's been sighted nearby. Now, for some bizarre reason, if Balgruuf's children are not present, Irileth will simply stand around and not start the dragon rising quest.
It is in fact a failsafe to prevent the player from going to the watchtower before it's safe to do so. This fix is not much of a fix at all, in fact in its current state, it makes things worse.
This mod in causes the main quest to completely break if you leave the city before talking to Balgruf and then proceeding to the watchtower. Doing this causes stage 30 on MQ104 to never get set, which in turn causes MQ103 to never shut down, the objective to talk to Balgruf to not get completed and everyone in his court to get stuck in a state where you can't talk to them unless you manually use setstage 30 on MQ104 with the console and then stopquest MQ104 after the quest is completed which will finally bring things back to normal (or at least so it seems, there's a lot going on in the background especially with the main quest). You can complete both quests, without the console, but anything else you need to do with Balgruf afterwards won't work as he will keep telling you "Not now!".
I'm not able to replicate any of the behavior you mentioned. After giving the Dragonstone to Farengar, if I go outside Whiterun and come back I can talk to Jarl Balgruuf and progress the main quest as normal. If I go outside Whiterun and straight to the watchtower, I can fight Mirmulnir, go back to Whiterun, talk to Balgruuf, and start The Way of the Voice just fine as well.
What I described happens when you do the following: 1. You start the Dragon Rising quest and leave the city without talking to anyone (without this mod this causes the failsafe to trigger and the quest to proceed). 2. You make a beeline to the watchtower and kill the dragon. 3. You return to complete the quest.
What happens next is that The Way of The Voice will start, and Dragon Rising will complete the next time you talk to Balgruuf, but if you then try to talk to him again, he will keep repeating "Not now.", Farengar will keep repeating "I want to hear about this dragon." and Irileth will keep repeating "Jarl Balgruuf is waiting.", all of them stuck in their scenes from the beginning of the quest which will then solftlock you for the rest of the main quest when you have to capture the dragon in the palace and any other quests that have you talk to any of these 3 NPCs.
Ah I see, I guess an appropriate workaround would be to call SetStage(30) before SetStage(80) in the OnDeath event for MQ104DragonScript? I'll test that and see if it works
EDIT: I just sanity-checked and I'm able to talk to everyone after The Way of the Voice starts. Did you actually playtest this in game? Weird that I can't replicate any of that
Yes, I playtested it 3 times and that's exactly how it goes on my end each time using the VSmO version. Haven't tried the regular version yet, will do now and let you know.
Edit: It looks like the regular version is just the vanilla pex with your modified source, as it doesn't behave any differently than without this mod. Decompiling the pex confirms that the stage 40 check is still there, just like the vanilla script. If you recompile the source you provided and then do the steps I described, the same will happen as with the VSmO version - softlock. I think the safest thing you can do is to just move the setstage 30 to when stage 50 is set in the same script if stage 40 has not been set yet, which is when you get near the watchtower. If you move it to when the dragon dies, the objective to investigate the watchtower will never get completed.
Just uploaded fixed^2 scripts with a call to SetStage(30) before the call to SetStage(50), hopefully it'll prevent any main quest fuckery from occurring
Nice, but uh, you've accidentally uploaded the VSmO pex file as the regular version.
I'd also suggest adding the stage 40 check again before setting stage 30 to 100% retain the vanilla behaviour, just in case something else depends on it too. This for the regular version:
Spoiler:
Show
if GetOwningQuest().getStageDone(12) == 1 && GetOwningQuest().getStageDone(50) == 0 if akNewLoc == (GetOwningQuest() as MQ104Script).FortLocation if GetOwningQuest().getStageDone(40) == 0 GetOwningQuest().SetStage(30) endif GetOwningQuest().SetStage(50) endif endif
and this for the VSmO version:
Spoiler:
Show
if !stage50set && myQuest.IsStageDone(12) && !myQuest.IsStageDone(50) && (akNewLoc == (myQuest as MQ104Script).FortLocation) if !myQuest.IsStageDone(40) myQuest.SetCurrentStageID(30) stage30set = true endif myQuest.SetCurrentStageID(50) stage50set = true endIf
Vanilla Script (micro)Optimizations has the same script. When I turn it off, the CTD's disappears. Then the question arises, how is your script better than in that mod?
Micro optims doesn't fix this bug. It only fixes one (1) bug, as stated in its description. Unless this mod uses micro optims as a base however, it will be less optimized
42 comments
Is this a similar error? I don't necessarily have a problem with this one but I figured I'd mention it
This mod in causes the main quest to completely break if you leave the city before talking to Balgruf and then proceeding to the watchtower. Doing this causes stage 30 on MQ104 to never get set, which in turn causes MQ103 to never shut down, the objective to talk to Balgruf to not get completed and everyone in his court to get stuck in a state where you can't talk to them unless you manually use setstage 30 on MQ104 with the console and then stopquest MQ104 after the quest is completed which will finally bring things back to normal (or at least so it seems, there's a lot going on in the background especially with the main quest). You can complete both quests, without the console, but anything else you need to do with Balgruf afterwards won't work as he will keep telling you "Not now!".
1. You start the Dragon Rising quest and leave the city without talking to anyone (without this mod this causes the failsafe to trigger and the quest to proceed).
2. You make a beeline to the watchtower and kill the dragon.
3. You return to complete the quest.
What happens next is that The Way of The Voice will start, and Dragon Rising will complete the next time you talk to Balgruuf, but if you then try to talk to him again, he will keep repeating "Not now.", Farengar will keep repeating "I want to hear about this dragon." and Irileth will keep repeating "Jarl Balgruuf is waiting.", all of them stuck in their scenes from the beginning of the quest which will then solftlock you for the rest of the main quest when you have to capture the dragon in the palace and any other quests that have you talk to any of these 3 NPCs.
MQ104DragonScript? I'll test that and see if it works
EDIT: I just sanity-checked and I'm able to talk to everyone after The Way of the Voice starts. Did you actually playtest this in game? Weird that I can't replicate any of that
Edit: It looks like the regular version is just the vanilla pex with your modified source, as it doesn't behave any differently than without this mod. Decompiling the pex confirms that the stage 40 check is still there, just like the vanilla script. If you recompile the source you provided and then do the steps I described, the same will happen as with the VSmO version - softlock. I think the safest thing you can do is to just move the setstage 30 to when stage 50 is set in the same script if stage 40 has not been set yet, which is when you get near the watchtower. If you move it to when the dragon dies, the objective to investigate the watchtower will never get completed.
I'd also suggest adding the stage 40 check again before setting stage 30 to 100% retain the vanilla behaviour, just in case something else depends on it too.
This for the regular version:
if akNewLoc == (GetOwningQuest() as MQ104Script).FortLocation
if GetOwningQuest().getStageDone(40) == 0
GetOwningQuest().SetStage(30)
endif
GetOwningQuest().SetStage(50)
endif
endif
and this for the VSmO version:
if !myQuest.IsStageDone(40)
myQuest.SetCurrentStageID(30)
stage30set = true
endif
myQuest.SetCurrentStageID(50)
stage50set = true
endIf
Added the stage 40 checks and recompiled, .pex files should be correct for each version now. Thanks!
Unless they do the same thing can I suggest for this mod to use that as a base?
CrashLoggerSSE v1-8-0-0 Feb 1 2023 00:20:05
Unhandled exception "EXCEPTION_ACCESS_VIOLATION" at 0x7FF7C5AFE187 SkyrimSE.exe+110E187lock inc dword ptr [rax+0x08]
SYSTEM SPECS:
OS: Майкрософт Windows 11 Pro v10.0.22621
CPU: AuthenticAMD AMD Ryzen 7 5800X3D 8-Core Processor
GPU #1: Nvidia GA102 [GeForce RTX 3080 Ti]
GPU #2: Microsoft Basic Render Driver
PHYSICAL MEMORY: 15.87 GB/31.93 GB
PROBABLE CALL STACK:
[ 0] 0x7FF7C5AFE187 SkyrimSE.exe+110E187 -> 90352+0x27lock inc dword ptr [rax+0x08]
[ 1] 0x7FF7C5B4A9B0 SkyrimSE.exe+115A9B0 -> 91672+0x40mov eax, [rdi+0x04]
[ 2] 0x7FF7C5B4C275 SkyrimSE.exe+115C275 -> 91717+0x305inc edi
[ 3] 0x7FF7C5B4BADC SkyrimSE.exe+115BADC -> 91713+0x24Cmov rcx, rsi
[ 4] 0x7FF7C4EA27A6 SkyrimSE.exe+04B27A6 -> 31483+0xA6movzx esi, al
[ 5] 0x7FF7C5B007E8 SkyrimSE.exe+11107E8 -> 90396+0x128movzx esi, al
[ 6] 0x7FF7C5B3B858 SkyrimSE.exe+114B858 -> 91414+0x148cmp byte ptr [rdi+0x88], 0x00
[ 7] 0x7FF7C566594B SkyrimSE.exe+0C7594B -> 69617+0xCBcmp [rbx+0x08], r14b
[ 8] 0x7FF7C5665A76 SkyrimSE.exe+0C75A76 -> 69620+0x16mov rcx, rbx
[ 9] 0x7FFBFF4C269D KERNEL32.DLL+001269D
[10] 0x7FFC0094A9F8 ntdll.dll+005A9F8
REGISTERS:
RAX 0x55500020000004A (size_t) [384213351799980106]
RCX 0x0 (size_t) [0]
RDX 0x28EE57B7470 (TESTopicInfo*)
File: "SkyrimsGotTalent-Bards_3dnpc.esp"
Flags: 0x00000008 kInitialized
FormID: 0xFE32685A
FormType: Info (76)
RBX 0x28F12FB17F8 (void*)
RSP 0xA5652FF7F0 (void*)
RBP 0xA5652FF960 (void*)
RSI 0x28F12FB10C0 (void*)
RDI 0x28EE57B7470 (TESTopicInfo*)
File: "SkyrimsGotTalent-Bards_3dnpc.esp"
Flags: 0x00000008 kInitialized
FormID: 0xFE32685A
FormType: Info (76)
R8 0x21 (size_t) [33]
R9 0x38 (size_t) [56]
R10 0x40 (size_t) [64]
R11 0x7FFBE4FB1599 (void* -> VCRUNTIME140.dll+0001599)
R12 0x701 (size_t) [1793]
R13 0x7FF7C600A2B8 (void* -> SkyrimSE.exe+161A2B8mov eax, 0xF7C5E65F)
R14 0xA5652FFAB8 (BSPathBuilder*)
R15 0x28EE57B7470 (TESTopicInfo*)
File: "SkyrimsGotTalent-Bards_3dnpc.esp"
Flags: 0x00000008 kInitialized
FormID: 0xFE32685A
FormType: Info (76)
STACK:
[RSP+0 ] 0x0 (size_t) [0]
[RSP+8 ] 0x28F00000038 (void*)
[RSP+10 ] 0x47D1066C00000070 (size_t) [5174924507751645296]
[RSP+18 ] 0x4796B4CD47D8F819 (size_t) [5158509216966178841]
[RSP+20 ] 0x28F12FB17F8 (void*)
[RSP+28 ] 0x7FF7C5B4A9B0 (void* -> SkyrimSE.exe+115A9B0mov eax, [rdi+0x04])
[RSP+30 ] 0x0 (size_t) [0]
[RSP+38 ] 0x28F22115520 (PathingCell*)
[RSP+40 ] 0x28D0001FFFF (size_t) [2804613775359]
[RSP+48 ] 0xA5652FFAB8 (BSPathBuilder*)
[RSP+50 ] 0xFFFFFFFFFFFFFFFE (size_t) [uint: 18446744073709551614 int: -2]
[RSP+58 ] 0x28E00000038 (void*)
[RSP+60 ] 0x21 (size_t) [33]
[RSP+68 ] 0x7FF7C5B4C275 (void* -> SkyrimSE.exe+115C275inc edi)
[RSP+70 ] 0x28F12FB17F8 (void*)
[RSP+78 ] 0x7FF7C6106E30 (void* -> SkyrimSE.exe+1716E30rol ch, 0xE9)
[RSP+80 ] 0xA5652FF808 (void*)
[RSP+88 ] 0x28EE574B970 (void*)
[RSP+90 ] 0x28F2833A158 (void*)
[RSP+98 ] 0x28EE574B970 (void*)
[RSP+A0 ] 0xA5652FF8A0 (void*)
[RSP+A8 ] 0x0 (size_t) [0]
[RSP+B0 ] 0x28DA478DB80 (ScrapHeap*)
[RSP+B8 ] 0x2912F2DBC00 (void*)
[RSP+C0 ] 0x28F00000040 (void*)
[RSP+C8 ] 0x7FF700000039 (size_t) [140698833649721]
[RSP+D0 ] 0x28DA478DB80 (ScrapHeap*)
[RSP+D8 ] 0x2912F2DBA00 (void*)
[RSP+E0 ] 0xA500000040 (size_t) [708669603904]
[RSP+E8 ] 0x28F00000038 (void*)
[RSP+F0 ] 0x28EF36CF830 (PathingLockData*)
[RSP+F8 ] 0x7FF7C600A2B8 (void* -> SkyrimSE.exe+161A2B8mov eax, 0xF7C5E65F)
[RSP+100] 0x2912F1A3288 (char*) "@"
[RSP+108] 0xFFFFFFFFFFFFFFFE (size_t) [uint: 18446744073709551614 int: -2]
[RSP+110] 0xA5C659F2FA (size_t) [711997387514]
[RSP+118] 0xF3B900 (size_t) [15972608]
[RSP+120] 0xFFFFFFFFFFFFFFFE (size_t) [uint: 18446744073709551614 int: -2]
[RSP+128] 0x28ED6D63900 (TESWorldSpace*)