Difference between revisions of "Bethesda Tutorial Quest Objectives"

→‎Trying it out: Added a note to make sure to start from a new game after adding aliases to a start-enabled quest.
imported>Henning
 
(→‎Trying it out: Added a note to make sure to start from a new game after adding aliases to a start-enabled quest.)
 
(10 intermediate revisions by 9 users not shown)
Line 14: Line 14:
* How to turn objectives on and off
* How to turn objectives on and off
* How to handle completing and shutting down a quest
* How to handle completing and shutting down a quest
* How to inserting additional quest stages
* How to insert additional quest stages


=Objectives=
=Objectives=
Line 30: Line 30:


[[Image:FilledFirstAliasWindow.png|600px]]
[[Image:FilledFirstAliasWindow.png|600px]]
{{WarningBox|If you cannot find "GSQBenduOlo" on the list, then go back to his base object properties and check if he has the Unique flag on. The list of Unique Actors will show only actors with "Unique" flag.}}
{{WarningBox|On some computers, the "Reference Alias" window is so tall that you won't be able to reach the bottom of it to click the "OK" button.  To get around this, you can click back in the text box for "Alias Name" when you are all done editing and press the ENTER key on your keyboard.  This will save the work done in the window.}}


Hit OK to close this window. Right-click and select "New Reference Alias" again to open up a fresh new alias window. Put "Thief" for the Alias Name. Because the thief is not a unique actor (since it's created from a template), we have to use the Specific Reference fill type this time. Click the "Specific Reference" radio button, and click the large "Select Forced Reference" button to its right. We now have two ways of choosing the reference:
Hit OK to close this window. Right-click and select "New Reference Alias" again to open up a fresh new alias window. Put "Thief" for the Alias Name. Because the thief is not a unique actor (since it's created from a template), we have to use the Specific Reference fill type this time. Click the "Specific Reference" radio button, and click the large "Select Forced Reference" button to its right. We now have two ways of choosing the reference:
Line 37: Line 41:
Either way, click OK in that window and then the alias window to finish making our second alias.  
Either way, click OK in that window and then the alias window to finish making our second alias.  


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|We could, of course, also use a specific reference to point to Bendu instead of choosing him from the Unique Actor list. For some rather complicated reasons, it's more memory efficient to use the Unique Actor type than the specific reference, when possible.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|We could, of course, also use a specific reference to point to Bendu instead of choosing him from the Unique Actor list. For some rather complicated reasons, it's more memory efficient to use the Unique Actor type than the specific reference, when possible.  
|}


Now it comes time to make our third alias (for the amulet), but this one is tricky. Only actors can be unique, so the Unique Actor type won't work. And we can't point to it as a specific reference because it only exists in the inventory of our thief. So what we'll do is have the alias itself create its own reference.  
Now it comes time to make our third alias (for the amulet), but this one is tricky. Only actors can be unique, so the Unique Actor type won't work. And we can't point to it as a specific reference because it only exists in the inventory of our thief. So what we'll do is have the alias itself create its own reference.  
Line 62: Line 62:
To make a new objective, right-click in the table at the top of the window and select "New" from the menu. In the "Objective Data" area below there, change the Index value to "10" and make the Display Text say "Kill the thief."
To make a new objective, right-click in the table at the top of the window and select "New" from the menu. In the "Objective Data" area below there, change the Index value to "10" and make the Display Text say "Kill the thief."


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|Generally, we try to match up the objective index number with stages where you would want to see that objective. For more complicated quests, things can get kind of wooly, but for straightforward ones, as we'll see, this makes things a lot easier to follow.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|Generally, we try to match up the objective index number with stages where you would want to see that objective. For more complicated quests, things can get kind of wooly, but for straightforward ones, as we'll see, this makes things a lot easier to follow.
|}


Finally, in the table below the Index and Display Text fields, right-click and select "New" to create a new quest target. This creates a big scary "NO TARGET" until you select something from the "Target Alias" pulldown below. In this list, you'll see all the aliases we defined earlier. Choose "Thief," and we can move on. (The "NO TARGET" will remain until we click away on something else.)
Finally, in the table below the Index and Display Text fields, right-click and select "New" to create a new quest target. This creates a big scary "NO TARGET" until you select something from the "Target Alias" pulldown below. In this list, you'll see all the aliases we defined earlier. Choose "Thief," and we can move on. (The "NO TARGET" will remain until we click away on something else.)
Line 87: Line 83:


=Setting Objectives=
=Setting Objectives=
Remember all of those <code>SetObjectiveDisplayed()</code>'s I told you to ignore? This is where they come into play. Should the following NOT work for some odd reason, those are a safety net. They will do what this is supposed to do. I suggest doing both to have all the bases covered.
Go back to the Quest Stages tab. We're going to add some logic in here as the quest advances.  
Go back to the Quest Stages tab. We're going to add some logic in here as the quest advances.  


Line 101: Line 100:
[[Image:SettingObjective10.png|600px]]
[[Image:SettingObjective10.png|600px]]


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|You might wonder why the extra step of creating the "stage item" is necessary - in more complicated quests, you can have multiple stage items, some or all of which use conditions to control whether or not they happen (for example, to allow variant log entries depending on a choice the player had made earlier in the quest). In this case, our quest is simple enough to only need one stage item in each stage.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|You might wonder why the extra step of creating the "stage item" is necessary - in more complicated quests, you can have multiple stage items, some or all of which use conditions to control whether or not they happen (for example, to allow variant log entries depending on a choice the player had made earlier in the quest). In this case, our quest is simple enough to only need one stage item in each stage.  
|}


Now select stage 20 from the list on the left, and create a new stage item for it. Remember, stage 20 is after we've killed the thief but before we've gotten the amulet. We have two things to do here -- tell the player that the previous objective (to kill the thief) has been accomplished, and set their next goal. We do that with two lines of script:  
Now select stage 20 from the list on the left, and create a new stage item for it. Remember, stage 20 is after we've killed the thief but before we've gotten the amulet. We have two things to do here -- tell the player that the previous objective (to kill the thief) has been accomplished, and set their next goal. We do that with two lines of script:  
Line 114: Line 109:
</source>
</source>


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{Template:InDepth|Note that "Completed" and "Displayed" are two different flags -- you can complete an objective that the player has never seen.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|Note that "Completed" and "Displayed" are two different flags -- you can complete an objective that the player has never seen.  
|}


We can leave the journal entry here blank, because the overall story of the quest hasn't changed.
We can leave the journal entry here blank, because the overall story of the quest hasn't changed.
Line 131: Line 122:


=Trying it out=
=Trying it out=
{{WarningBox|Make sure that you start from a fresh game. Aliases that you add to a quest that is already running won't work properly, so if you load a game that you created with your mod active from before you added the new aliases, the new additions will not work. You can test from a fresh game without running through the Helgen escape by using the command <code>COC MixwaterMillWorkersHouse</code> from the game's main menu.}}
Now when you progress through the quest, your progress will be visible in your journal and you will have quest targets to the various plot points.  
Now when you progress through the quest, your progress will be visible in your journal and you will have quest targets to the various plot points.  


Line 139: Line 131:
|Next=Bethesda_Tutorial_Quest_Loose_Ends
|Next=Bethesda_Tutorial_Quest_Loose_Ends
}}
}}
{{Languages}}
56

edits