DB quest making problems

Post » Sun Nov 18, 2012 9:17 am

So I'm trying to make a new Dark Brotherhood quest, Fall of the Brotherhood, where you can destroy the Brotherhood after you join them. I want it so that after reading a journal from an old assassin, the player gains the option of destroying them. The problem is that the quest is not starting when the journal is read. By looking at some other quests that begin by reading books, I wrote this code:

Scriptname OldRuinedJournalcdy extends ObjectReference auto State waitingEvent OnRead()	  Destroythebrotherhoodcdy.SetStage(10)	  debug.trace("The book is read")	  GoToState("alldonesy")endEventendstateState alldonesy;do nothingendStatefaction property DarkBrotherhoodFaction autoquest property Destroythebrotherhoodcdy autobook property AssassinofOldJournal auto

The "debug.trace" is working, so I know that the game is registering that it is read, but why isn't the quest starting? Any help would be much appreciated.
User avatar
Mistress trades Melissa
 
Posts: 3464
Joined: Mon Jun 19, 2006 9:28 pm

Post » Sun Nov 18, 2012 6:07 am

1. Remove all of the State Stuff ... I'm not sure that's quite the right way to do it??

If that does nothing then ... Try

if (Destroythebrotherhoodcdy.SetCurrentStageID(10))  Debug.Trace("DB Quest successfully set to stage 10!")else  Debug.Trace("DB Quest NOT started")endIf

(that uses the longer version of setstage, which I never have issues with)

It will add a line in your logfile, one way or the other.

If it is failing to start ... then my best guess is that one of your Aliases, in that quest, is not filling. We are supposed to be able to log when that happens, but the function to do so appears bugged. So just make sure everything is filling correctly as that is the most likely explanation (unless I am going blind and there is an issue in your code)
User avatar
Rinceoir
 
Posts: 3407
Joined: Thu Jun 29, 2006 1:54 am

Post » Sun Nov 18, 2012 10:54 am

1. Remove all of the State Stuff ... I'm not sure that's quite the right way to do it??

If that does nothing then ... Try

if (Destroythebrotherhoodcdy.SetCurrentStageID(10))  Debug.Trace("DB Quest successfully set to stage 10!")else  Debug.Trace("DB Quest NOT started")endIf

(that uses the longer version of setstage, which I never have issues with)

It will add a line in your logfile, one way or the other.

If it is failing to start ... then my best guess is that one of your Aliases, in that quest, is not filling. We are supposed to be able to log when that happens, but the function to do so appears bugged. So just make sure everything is filling correctly as that is the most likely explanation (unless I am going blind and there is an issue in your code)

I'll give that a try. I didn't have all of the state stuff there at first, but some of the other quests that are started with books do, so I figured I'd add it. Didn't really help. Ill try your suggestion and see how it works. If, by chance, it is on of my Aliases, how would I go about determining which one(s) and how would I fix it?
User avatar
Taylah Illies
 
Posts: 3369
Joined: Fri Feb 09, 2007 7:13 am

Post » Sun Nov 18, 2012 7:32 am

With quite a bit of difficulty, sadly.

There is a tick-box that is supposed to log - when an alias fails to fill - what alias has failed. But, last I heard/read, it was not working.

So you basically have to step back through your code and alias assignment and triple-check that each one is being fed correctly. And it could be any alias. Basically if any required alias in your quest fails to fill the quest does not start.


What you MAY be able to do is set all aliases to OPTIONAL. And see if it starts then, If it does start with optionals, eventually it will bug out (when the alias is actually needed, by the code) and that then may well be logged. Try that first ... but if not you are back to the stuff above.
User avatar
Steph
 
Posts: 3469
Joined: Sun Nov 19, 2006 7:44 am

Post » Sun Nov 18, 2012 12:42 am

I fixed it. Now the quest is starting, but whenever I complete the objective, it's not moving on to the next stage. Any suggestions?
User avatar
Oyuki Manson Lavey
 
Posts: 3438
Joined: Mon Aug 28, 2006 2:47 am

Post » Sun Nov 18, 2012 2:18 pm

Glad you got over that first hurdle :)

I'm going to assume you just missed a step and this issue is not related to the last one.

You need to advance the quest yourself. So you need to have a myQuest.SetCurrentStageID(40) - or whatever - to move the quest on after the object has been completed.

I usually do this in the same script that sets the previous objective as complete. On a dialogue fragment, or whatever I am using to complete that step.

So:
myQuest.SetObjectiveCompleted(30)myQuest.SetCurrentStageID(40)

The player gets the "Completed Stage" message and then the log entry/message for the next stage.


Is that what you mean?
User avatar
April D. F
 
Posts: 3346
Joined: Wed Mar 21, 2007 8:41 pm

Post » Sun Nov 18, 2012 12:15 pm

leaving the states in the code is a good way of having a "do once" book read event without extra properties. without any kind of safeguard (either by states or properties), the player could potentially read the book multiple times and re-start your quest each time.
User avatar
LittleMiss
 
Posts: 3412
Joined: Wed Nov 29, 2006 6:22 am

Post » Sun Nov 18, 2012 4:31 am

leaving the states in the code is a good way of having a "do once" book read event without extra properties. without any kind of safeguard (either by states or properties), the player could potentially read the book multiple times and re-start your quest each time.
Thanks for the clarification, AD. I didn't mean to remove them permanently, just to remove them while trying to get it to work (one less thing to worry about)

They should go back in once the Quest plays as expected

(maybe it's just the way I work ... I leave states until I have tested everything else is OK, then add in the state stuff - Sorry if I confused the OP)
User avatar
Adam Kriner
 
Posts: 3448
Joined: Mon Aug 06, 2007 2:30 am


Return to V - Skyrim