Jump to content

Need help: Setting up a basic repeating quest?


Guest Messenjah

Recommended Posts

Guest Messenjah

Ok, here is what I'm doing. I need to make a simple and repeatable quest for the player. I was working on a more complex system but decided to narrow it down to a much easier system so that I could run it from a single quest.

 

 

The general idea:

Basically, a quest giver will give the player a bounty hunting quest to kill a random npc. The npc will spawn just before the stage is set. When the player kills this npc, they will need to return to the quest giver to collect the bounty and end the quest. Then rinse and repeat.

 

 

Here is my setup:

 

My quest is set to a priority of 70, is a side quest, and has only "repeat stages" is the only flag that is set. "Start game enabled" and "Run Once" remain unflagged as I do not want them to start until the quest-giver, first gives the player a quest and he/she accepts a job.

 

Stage 0 is flagged as the startup stage.

 

Stage 10 is set when the player interacts with the quest-giver. When the dialogue plays, a fragment end script will enable the actor npc and set the quest stage to 10. I also have "QuestName.Start()" set at the beginning of the script.

 

On the NPC I have an actor script that sets the stage to 20 when the npc dies. I also have an alias linked to the npc and the quest-giver so that they can be used as targets during the quest so that the player can be led to the target easily.

 

On stage 20, the player returns to the quest giver and receives a reward. The quest is set to stage 100.

 

Now, under the objectives, each stage is set up with the proper SetObjectiveDisplayed and SetObjectiveCompleted.

 

Then at stage 100, I have it set to complete the quest, disable the alias npc, set the stage to 0 (so that the quest can be repeated), then I have a 5 second wait time set and finished the script up with a stop(). This stop script is set because that is how the dark brotherhood repeating quest is set up.

 

The problem is, that the quest will not start up at all. No matter what I do. If I flag start game enabled, it will work fine but I don't want start game enabled. Also, it isn't repeating the quest and npc does not vanish after he dies and his alias is disabled...

 

The problem seems to be, getting the quest to first, start without start game enabled. Then I need to have the quest enable the npc, link an alias to that npc, then when the npc is dead, revive and disable the npc for when the quest starts over.

 

But does disabling the npc alias do the job of disabling the actor npc? Could it be that there could be a latency between when the quest alias links to the npc and when the npc is enabled? (It does take a few seconds for him to spawn and I do not see an arrow pointing to him when I'm running the quest via start game enabled). Could this cause the quest not to start?

 

Any ideas?

Link to comment
Share on other sites

Guest Messenjah

That's the problem... I've looked at the stock scripts. I followed them almost exact. I designed my quest based on another repeating quest... and yet it does not initiate at all...

 

So, no one knows how to actually get a quest to initiate?

Link to comment
Share on other sites

One of the toughest parts of Skyrim is Papyrus and aliases and radiant AI. So if I were you, I would design the repeating quest so that it does not use a single alias and does not use the radiant AI system. Your product would likely not come out as nicely as the repeating quests in vanilla Skyrim, and would require more repetitive work, but it would be production work and not research and development work/debugging - headbanging on wall - hating life kind of work.

 

You should check your quest "Start Game Enabled" and redo your conditions accordingly. What you do is make it so nothing ever happens in your quest until you talk to the quest-giver and accept the quest.

 

I am not sure how your aliases are, but if you make one tiny error on one alias, then you have broken your whole quest and none of your dialog will ever display.

 

I would not advise the use of stop() for a repeating quest. It seems to me that the command stops the computer from processing the subject evermore. Not sure how the Dark brotherhood quest you speak of got around this. If you don't know either, then you are not safe using this command.

 

It might be wise to not use quest stages. You could use variables instead. Quest stages go up and never down. This makes them pretty poor for repeated things. It is like a one-way street. But variables can go up and down as much as you want them to.

Link to comment
Share on other sites

Guest Messenjah

From what I've read, the only way, anyone has ever managed to get a repeating quest to actually repeat, was to use stop(). For some reason it is required. *The individual I read this from, posted on the Creation Kit wiki and I don't know how to track him down to ask how he did it.*

 

The problem I am having though, is just getting the stupid quest to start. :P

 

I have two quest alias'. One for the quest-giver and one for the Target that you need to kill. This is so that the player has an arrow leading to the target.

 

The problem with using variables is that I need the quest objectives to display when those stages are completed. I've been a mod designer for about 14 years now and I like banging my head until I get it right. ;)

 

The weird thing here is that the dialogue to start the quest shows up.... but the quest doesn't start and none of the stages will actually set.

Link to comment
Share on other sites

the only way, anyone has ever managed to get a repeating quest to actually repeat, was to use stop().

 

This statement is most certainly false. I have written a number of repeating quests for Oblivion without ever using the equivalent to the stop() command, and I have written one repeating quest for Skyrim which does not use it. It may be that the format or recipe you are using to write your quest does indeed require it, but there are other formats or recipes in existence and which can be created.

 

So if you are getting any custom quest dialog at all, then it is not the bad alias thing.

 

If you can't get your quest to start, then try "Start Game Enabled." If you don't want to do that, then build in some more redundancies like writing one or two quests which run scripts to start your quest. Depending on how things are set up, maybe a trigger box would be a good thing to use to start your quest. You might consider having two quests with dialog. The dialog in one would always be available, and the dialog in the other would only be available after the quest started. The first quest would have result scripts on dialog or on stages to start the second.

 

Triple check your conditions on your dialog infos. Make sure the first dialog entry is in the top level of a branch. Make sure your quest stages are right. make sure your scripts are attached. Check the properties on your scripts. Perform some experiments which drastically simplify your scripts. For example, if you have a script that has conditions, try disabling all the conditions so that there is nothing to stop the script from running. If it still won't run, then this tells you that something major is wrong with your code, triggers, host, design parameters, or something else.

Link to comment
Share on other sites

Guest Messenjah

Ok, what I did was remove all alias entries. Removed any scripts related to the alias and set it simply to run once with nothing else checked. Works fine. Might still be an alias issue.

 

How everything in my ESP runs, is I have everything related to dialogue in one single quest. Each quest will get it's own dialogue view to keep things organized. The quests themselves, run only the stages, scripts, and alias entries that are involved with those specific quests. So, basically, the dialogue and fragments that trigger the quest are in the dialogue quest, and all of the actual quest mechanics are tied to the quest by itself.

 

The issue itself may be with the Target alias. It is tied to an npc that is supposed to be initially disabled. When the startup dialogue happens, it re-enables the npc and then changes the quest to stage 10. When it switches to stage 10, the alias is set with the condition that the quest stage is 10. Perhaps, there is a delay between my npc enabling and the alias being attached to the reference of that npc? Also, maybe I need to set my quest alias to optional and perhaps some other alias flags?

 

The other problem is getting the npc to respawn. Do I just need to disable the alias and re-enable the actor.... or do I need to revive the npc, disable them, then reset them?

Link to comment
Share on other sites

Guest Messenjah
The problem with using variables is that I can not show the player where to go. The target will always be a random NPC. Basically, I want to add multiple npcs in. When the player speaks to the quest-giver, the quest-giver will spill out a quest at random and will enable the npc that is associated with that quest. When that is complete, the stage should update, making that npc an alias so that the stage will point the player to the target that they need to kill. Once the target is dead, they return to the quest-giver to receive their reward and the alias should be disabled. Then the quest needs to reset itself to a stage to restart itself.
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...