Don't put this girl on hold!

Post » Thu Nov 15, 2012 11:22 pm

So I asked Serana to wait for me while I cleared out a cave in Forgotten Vale, and when I got back up to where she was patrolling she no longer has the dialog "come with me." So, am I stuck or what? I wouldn't mind doing that content over again but my last save with her in tow was quite a ways back.
User avatar
Sarah Evason
 
Posts: 3507
Joined: Mon Nov 13, 2006 10:47 pm

Post » Fri Nov 16, 2012 2:58 am

Tried disabling and enabling in the console, didn't reset. Clicked her and typed StopWaiting. Apparently does nothing...

Guess I get to do that whole part again! O.o
User avatar
neen
 
Posts: 3517
Joined: Sun Nov 26, 2006 1:19 pm

Post » Thu Nov 15, 2012 6:27 pm

I did the same thing and I'm now stuck.
User avatar
Dean
 
Posts: 3438
Joined: Fri Jul 27, 2007 4:58 pm

Post » Thu Nov 15, 2012 10:02 pm

It's an issue. The same thing happens with dismissing her, the dialogue option disappears.

I don't know why it happens...I thought that it might be linked to being married to someone, but I have no evidence of that.

Definitely needs fixing though, it has serious impacts on anyone playing a vl character who also wants to be able to have serana on and off, she does take a lot of kills from you and slows your progression down.
User avatar
Charleigh Anderson
 
Posts: 3398
Joined: Fri Feb 02, 2007 5:17 am

Post » Fri Nov 16, 2012 3:58 am

Well, I tried. I decompiled the dialogue fragment responsible for what happens when you have that "come with me" option, thinking I could replicate it through a spell script. I admit, I'm not the best at deciphering this machine code stuff, but here's the fragment decompiled:

dlc1_tif__0101a911.disassemble.pas:
Spoiler
.info	.source "DLC1_TIF__0101A911.psc"	.modifyTime 1335291378 ;Tue Apr 24 11:16:18 2012 Local	.compileTime 1338491800 ;Thu May 31 12:16:40 2012 Local	.user "builds"	.computer "BUILDFARM05".endInfo.userFlagsRef	.flag hidden 0	; 0x00000000	.flag conditional 1	; 0x00000001.endUserFlagsRef.objectTable	.object dlc1_tif__0101a911 TopicInfo		.userFlags 1	; Flags: 0x00000001		.docString ""		.autoState		.variableTable		.endVariableTable		.propertyTable		.endPropertyTable		.stateTable			.state				.function GetState					.userFlags 0	; Flags: 0x00000000					.docString "Function that returns the current state"					.return String					.paramTable					.endParamTable					.localTable					.endLocalTable					.code						Return ::State										   ;@line ??					.endCode				.endFunction				.function GotoState					.userFlags 0	; Flags: 0x00000000					.docString "Function that switches this object to the specified state"					.return None					.paramTable						.param newState String					.endParamTable					.localTable						.local ::NoneVar None					.endLocalTable					.code						CallMethod onEndState self ::NoneVar					 ;@line ??						Assign ::State newState								  ;@line ??						CallMethod onBeginState self ::NoneVar				   ;@line ??					.endCode				.endFunction				.function Fragment_1					.userFlags 0	; Flags: 0x00000000					.docString ""					.return None					.paramTable						.param akSpeakerRef ObjectReference					.endParamTable					.localTable						.local ::temp0 actor						.local ::temp1 quest						.local ::temp2 dlc1_npcmentalmodelscript						.local ::NoneVar None						.local akSpeaker actor					.endLocalTable					.code						Cast ::temp0 akSpeakerRef								;@line 7						Assign akSpeaker ::temp0								 ;@line 7						CallMethod GetOwningQuest self ::temp1				   ;@line 9						Cast ::temp2 ::temp1									 ;@line 9						CallMethod StopWaiting ::temp2 ::NoneVar				 ;@line 9					.endCode				.endFunction			.endState		.endStateTable	.endObject.endObjectTable

From that I was able to glean that, among other things, this calls StopWaiting on the actor in question through a reference cast as the script on the quest that manages her dialogue state, or something. So I came up with this:

Scriptname phiFixSeranaScript extends ActiveMagicEffectActor Property Serana autodlc1_npcmentalmodelscript Property DLC1NPCMentalModel autoEvent OnEffectStart(Actor akTarget, Actor akCaster)	DLC1NPCMentalModel.StopWaiting SeranaEndEvent

But it won't compile. StopWaiting on the wiki actually shows as a deprecated console function with no description, so not sure if that is just what the machine code calls some other function or if I got the syntax wrong.
User avatar
Emmie Cate
 
Posts: 3372
Joined: Sun Mar 11, 2007 12:01 am

Post » Fri Nov 16, 2012 2:44 am

Well, if you manage to make a "fix" for it, I'll download it. As of now I can't continue my vampire at all, and I don't feel like starting all over again.
User avatar
cutiecute
 
Posts: 3432
Joined: Wed Sep 27, 2006 9:51 am

Post » Thu Nov 15, 2012 7:43 pm

Any way one could do that using a console command and targetting her?
User avatar
Vera Maslar
 
Posts: 3468
Joined: Wed Sep 27, 2006 2:32 pm

Post » Thu Nov 15, 2012 7:58 pm

Unfortunately no. I was able to determine by comparing the above decompiled fragment to the equivalent on Aela the Huntress that we do have the source files for, and StopWaiting isn't the console command StopWaiting but a custom function defined in the Dawnguard version of the follower tracking script(DLC1NPCMentalModel).

I've been tweaking around with something like this:
Scriptname phiFixSeranaScript extends ActiveMagicEffectDLC1_NPCMentalModelScript Property DLC1NPCMentalModel autoEvent OnEffectStart(Actor akTarget, Actor akCaster)    DLC1NPCMentalModel.StopWaiting()EndEvent

However it won't compile. I have cast quests as type(name of their script) before without problems, so it must be something like the compiler not finding the source for the dlc1_npcmentalmodelscript script, because it's giving me the errors:

\skyrim\Data\Scripts\Source\phiFixSeranaScript.psc(3,35): unknown type dlc1_npcmentalmodelscript
\skyrim\Data\Scripts\Source\phiFixSeranaScript.psc(6,20): dlc1_npcmentalmodelscript is not a known user-defined type
User avatar
Amy Gibson
 
Posts: 3540
Joined: Wed Oct 04, 2006 2:11 pm

Post » Fri Nov 16, 2012 1:16 am

So normal stuff that works on the Skyrim followers don't work on the Dawnguard followers?

EDIT: So it's not possible to make a generic mod where you can set a follower to wait by pressing a button, and follow again by pressing another?
User avatar
Kristian Perez
 
Posts: 3365
Joined: Thu Aug 23, 2007 3:03 am

Post » Thu Nov 15, 2012 6:46 pm

If we had the source files it would be possible, at least in theory. I thought I was onto something by creating a fake DLC1_NPCMentalModelScript.psc that looks like this:

Scriptname DLC1_NPCMentalModelScript extends QuestFunction StopWaiting()EndFunction

I was able to compile that, and with the source file containing this custom StopWaiting() function in my Scripts\Source folder, I was also successful compiling my above magic effect fix.

So, my theory was correct, and casting a quest name as the type of its script name as a property requires the source file of the script.

I then deleted these fake DLC1_NPCMentalModelScript files, both the source and .PEX, and loaded up the game. I put the custom spell in a quest so it was to be added on game start. However when I try going into my magic to select it to test out, the game crashes to desktop.
User avatar
Joe Bonney
 
Posts: 3466
Joined: Tue Jul 17, 2007 12:00 pm

Post » Fri Nov 16, 2012 4:13 am

Here's the actual script code based on the assembler you posted:

;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment;NEXT FRAGMENT INDEX 5Scriptname dlc1_tif__0101a911 extends TopicInfo hidden;BEGIN FRAGMENT_1function Fragment_1(ObjectReference afSpeakerRef);BEGIN CODE  actor akSpeaker = akSpeakerRef as actor  (GetOwningQuest() as dlc1_npcmentalmodelscript).StopWaiting(akSpeaker);END CODEendFunction;END FRAGMENT;END FRAGMENT CODE - Do not edit anything between this and the begin comment

your crash was probably caused by the fact that you did not include the missing argument in your dummy script.
User avatar
SamanthaLove
 
Posts: 3565
Joined: Mon Dec 11, 2006 3:54 am

Post » Fri Nov 16, 2012 1:55 am

If on PC then it is easy.

Open Console type tilda on keyboard ~

Then type

Prid 2002b74
moveto player

Then she will show up.
User avatar
Etta Hargrave
 
Posts: 3452
Joined: Fri Sep 01, 2006 1:27 am

Post » Fri Nov 16, 2012 4:33 am

The problem is she's stuck on waiting even if you move her to you. I just kept going on the quest and she popped up when she was needed, and later on followed me back to the Castle so ti all endede well.
User avatar
Laura Samson
 
Posts: 3337
Joined: Wed Aug 29, 2007 6:36 pm

Post » Thu Nov 15, 2012 7:50 pm

Its easy to fix, just wait like 60hours or so and she will start following you again and will have the dialog again also. Time spent waiting may be different on different computers dont know : p
User avatar
Krystal Wilson
 
Posts: 3450
Joined: Wed Jan 17, 2007 9:40 am

Post » Fri Nov 16, 2012 4:42 am

Does that work for 'dismiss' as well?

Wait retains them as a follower, while dismiss enables your ability to recruit another follower. I've been monitoring workshop etc, and I haven't seen any fixes for this problem, so I suspect it's a fairly complex problem as the folk have shown here. Why I can't even guess at, unless the storyline for Serana initially was intended for her not to be a permanent follower, but that doesn't make a lot of sense, but, then neither does the bug or the scripting for her.
User avatar
maya papps
 
Posts: 3468
Joined: Mon Aug 07, 2006 3:44 pm


Return to V - Skyrim