Difference between revisions of "Bethesda Tutorial Scenes"

2,339 bytes added ,  14:26, 11 February 2021
→‎Additional Functionality: Mention IsSceneActionComplete
imported>SLiesegang
imported>Thingy Person
(→‎Additional Functionality: Mention IsSceneActionComplete)
(20 intermediate revisions by 4 users not shown)
Line 2: Line 2:
{{Tutorial Index
{{Tutorial Index
|series=Intermediate Quest Design
|series=Intermediate Quest Design
|chapter=3
|chapter=4
|Prev=Bethesda_Tutorial_Advanced_Dialogue
|Prev=Bethesda_Tutorial_Advanced_Dialogue
|Next=Bethesda_Tutorial_Radiant_Quests
|Next=Bethesda_Tutorial_Radiant_Quests
Line 57: Line 57:
Right-click on Gilfre to add a package action to her as well. This time, though, instead of right-clicking and selecting "New" to make a new package, we'll re-use the package we just made by choosing "Add" from the context menu. This brings up a list of every package in the game. Use the filter at the top to quickly find "GSQ01BenduGilfreHitMarks" and double-click to add it to the scene.  
Right-click on Gilfre to add a package action to her as well. This time, though, instead of right-clicking and selecting "New" to make a new package, we'll re-use the package we just made by choosing "Add" from the context menu. This brings up a list of every package in the game. Use the filter at the top to quickly find "GSQ01BenduGilfreHitMarks" and double-click to add it to the scene.  


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{WarningBox|Note that we did not put any conditions on this package. Because it's only used during this scene and will not be part of a normal package stack evaluation, this is safe. However, the game makes no precautions and relies on designers to do the right thing, so be careful with your package conditions!}}
|-
|style="border-style: solid; border-width: 0"|[[Image:achtung.png]]
|style="border-style: solid; border-width: 0"|Note that we did not put any conditions on this package. Because it's only used during this scene and will not be part of a normal package stack evaluation, this is safe. However, the game makes no precautions and relies on designers to do the right thing, so be careful with your package conditions!
|}


When the scene begins, it will start at this first phase, place these packages atop the alias's stacks, and force them to re-evaluate their package (in this case, choosing the package we just made). The phase will consider itself complete when all its actions are done, which in the case of travel packages mean when the actor has reached the target.  
When the scene begins, it will start at this first phase, place these packages atop the alias's stacks, and force them to re-evaluate their package (in this case, choosing the package we just made). The phase will consider itself complete when all its actions are done, which in the case of travel packages mean when the actor has reached the target.  
Line 103: Line 99:
[[File:HeadtrackingSettings.png]]
[[File:HeadtrackingSettings.png]]


::{|style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0"
{{InDepth|We could have also gotten them to face each other by setting their travel packages to specific XMarkerHeading objects.}}
|-
|style="border-style: solid; border-width: 0"|[[Image:InDepth.jpg|48px]]
|style="border-style: solid; border-width: 0"|We could have also gotten them to face each other by setting their travel packages to specific XMarkerHeading objects.
|}


=Timer Actions=
=Timer Actions=
Line 119: Line 111:


=Playing the Scene=
=Playing the Scene=
We can either play a scene through script (by setting it as a property and calling [[Start_-_Scene|Start()]] on it), or by checking the "Begin on quest start" box on the scene tab.  
We can either play a scene through script (by setting it as a property and calling [[Start_-_Scene|Start()]] on it), or by checking the "Begin on quest start" box on the scene tab.
 
''Addition by --[[User:Layam|Layam]] ([[User talk:Layam|talk]]) 14:27, 1 January 2013 (EST)''
 
One nice way to get this scene going would be to create a new dialogue topic to encourage Bendu to admit his true feelings.
 
Go back to the Dialogue Views tab in GSQ01, select the view we've got there, then add a new branch called 'GSQ01BenduAdmitFeelings'.  Open up the topic, add a response (maybe 'I've seen the way you look at her, you should admit how you feel to her.').  To get the scene to start we first need to create a property on the response info script.  The topic info will already have a script attached, so in the bottom right panel, click on that script, then properties, then add a property of type 'Scene' called MSQ01BenduGilfreScene.  That should auto-fill so no need to do that.  Then in the end script fragment, add the following line:
 
<code>MSQ01BenduGilfreScene.Start()</code>
 
Now you're good to test.
 
'''Note: ''' If the quest has already been started in the save game you are testing with, You may find that the scene simply refuses to run.  I believe that this is because the aliases are only filled when the quest starts and one of the actor aliases the scene uses is blank.  A workaround for this is to stop and start the quest with the console:
 
<code>
StopQuest MSQ01
StartQuest MSQ01
</code>
 
''Addition end''
 
''Alternative Addition by ----[[User:Lmstearn|Lmstearn]] ([[User talk:Lmstearn|talk]]) 2015-01-22T12:50:33 (EST)
More in the spirit of the quest:
 
On acceptance of the amulet quest, Bendu says in a new phase added at the beginning after a 4 second timer for the Quest Objective message to clear: "Excuse me for now, as I have a meeting with my dear friend Gilfre."
 
As player exits the workers house, witness Bendu saying "Gilfre, Fling me into the ash pits of Malacath, but I did not take the amulet. I was robbed, but I vow by the Nine to retrieve it for you." She responds "You would? But I would be waiting for the dawning of the fifth era, Bendu!"
 
"As you wish, Gilfre, it would look rather becoming on a draugr!"
 
On returning the amulet to Bendu, a similar scene is triggered (it cannot be duplicated in the CK so TES5edit was used- see note below) where Gilfre is more conciliatory.
 
''Alternative Addition end''


=Additional Functionality=
=Additional Functionality=
New Phases can be added at the beginning or at any point during a scene as well as at end.
It's possible to add scripts to a scene's beginning or end by clicking "Edit Data" at the top of the tab. You can even double-click on a phase title and put scripts at the beginning and end of individual phases. As you might imagine, this opens up a lot of pretty complicated behavior and functionality. In fact, there are quests in Skyrim that are little more than scenes with scripts firing at appropriate phases.  
It's possible to add scripts to a scene's beginning or end by clicking "Edit Data" at the top of the tab. You can even double-click on a phase title and put scripts at the beginning and end of individual phases. As you might imagine, this opens up a lot of pretty complicated behavior and functionality. In fact, there are quests in Skyrim that are little more than scenes with scripts firing at appropriate phases.  


Finally, the rule about "all actions must complete before a phase finishes" can even be broken. That is the default, but if you look in the scene window, you can see that it's also possible to set conditions which will end the particular phase.  
Finally, the rule about "all actions must complete before a phase finishes" can even be broken. That is the default, but if you look in the scene window, you can see that it's also possible to set conditions which will end the particular phase. The [[IsSceneActionComplete]] condition function can be especially useful if some actions in a phase can complete and others can't.


=Caveats=
=Caveats=
Line 132: Line 158:
Can you make Bendu greet Gilfre with "Good morning," "Good afternoon," or "Good evening," depending on the time of day?  
Can you make Bendu greet Gilfre with "Good morning," "Good afternoon," or "Good evening," depending on the time of day?  


=Notes=
* If TESedit is used to duplicate scene records, take care ''not'' to delete any existing dialogues of phases in the copy as they refer to the original infos. Best practice is to remove phases without removing the linked forms and creating new phases with new action dialogue infos (unless the old dialogues are to be repeated)


{{Template:Tutorial_Bottom_Bar
{{Tutorial_Bottom_Bar
|Prev=Bethesda_Tutorial_Advanced_Dialogue
|Prev=Bethesda_Tutorial_Advanced_Dialogue
|Next=Bethesda_Tutorial_Radiant_Quests
|Next=Bethesda_Tutorial_Radiant_Quests
}}
}}