Difference between revisions of "Bendu and S M Nodes"

204 bytes added ,  12:44, 13 February 2015
no edit summary
imported>Lmstearn
m (Lmstearn moved page Bendu & S M Nodes to Bendu and S M Nodes: Problem with ampersand)
imported>Lmstearn
Line 3: Line 3:
==Introduction==
==Introduction==


This is a walkthrough of the procedures in starting the BenduQuest through the Script Event node.
This is a walkthrough of the procedures in starting the BenduQuest through the '''Script Event node'''.


Requirements:  
Requirements:  
Line 9: Line 9:


*Completion of the "Intermediate Quest Design" series with particular focus on the [[http://www.creationkit.com/Bethesda_Tutorial_Story_Manager Story Manager]].
*Completion of the "Intermediate Quest Design" series with particular focus on the [[http://www.creationkit.com/Bethesda_Tutorial_Story_Manager Story Manager]].
*Having a working copy of the Bendu Quest that will start by Startquest command through the console or with "Start Game enabled" checked off.
*Having a working copy of the Bendu Quest that will start by Startquest command through the console or with "Start Game enabled" checked off.
*A brief look at the [[http://www.creationkit.com/SM_Event_Node wiki description of the topic]].
*A brief look at the [[http://www.creationkit.com/SM_Event_Node wiki description of the topic]].


{{ProTip|<nowiki>Seasoned stagers can bypass the above and transpose just the methods to their own works)</nowiki>}}
{{ProTip|<nowiki>Seasoned stagers can bypass the above and transpose just the methods to their own works)</nowiki>}}
Line 16: Line 19:
==The Nodes==
==The Nodes==


*Load up the quest and navigate to the Keyword entry under Miscellaneous in the Object Browser. Right click somewhere in the RH pane, New, and type the name of a keyword, in this case: GSQ01Keyword.
*Load up the quest and navigate to the Keyword entry under Miscellaneous in the Object Browser. Right click somewhere in the RH pane, New, and type the name of a keyword, in this case: ''GSQ01Keyword''.


*From the Character entry choose SM Event Node and double click on Script Event. Right click and create a new Branch node. It will be stacked by default. This will appear below all other entries. I gave it a name of GSQ01BranchStart.
*From the Character entry choose SM Event Node and double click on Script Event. Right click and create a new Branch node. It will be stacked by default. This will appear below all other entries. I gave it a name of ''GSQ01BranchStart''.


{{ProTip|<nowiki>We choose to work with the Script event as opposed to the other events on offer as it is much more versatile, and less buggy.</nowiki>}}
{{ProTip|<nowiki>We choose to work with the Script event as opposed to the other events on offer as it is much more versatile, and less buggy.</nowiki>}}




*Right click on GSQ01BranchStart and select New Quest Node. Give this a name of something like GSQ01Start. The GSQ part will at some stage appear as lower case for some reason. I checked Num quests to run and left it at 1. Ensure the Stacked Bullet is checked and locate at the base of the page the Shared checkbox and click. On lower resolutions this requires some sorcery.
*Right click on ''GSQ01BranchStart'' and select '''New Quest Node'''. Give this a name of something like ''GSQ01Start''. The GSQ part will at some stage appear as lower case for some reason. I checked '''Num quests to run''' and left it at 1. Ensure the '''Stacked''' Bullet is checked and locate at the base of the page the '''Shared''' checkbox and click. On lower resolutions this requires some sorcery.


*Right click on the GSQ01Start Node Conditions area and implement a new condition with function GetEventData. The Function Parameters will be from top-down: GetIsId, Keyword, and GSQ01Keyword. Click Ok out.
*Right click on the '''GSQ01Start Node''' Conditions area and implement a new condition with function ''GetEventData''. The Function Parameters will be from top-down: ''GetIsId'', ''Keyword'', and ''GSQ01Keyword''. Click Ok out.


*Right click on the GSQ01Start node and select Add Quests. Choose GSQ01 from the list. Then select the newly created quest node, right click it, and choose Edit Quest.
*Right click on the ''GSQ01Start Node'' and select '''Add Quests'''. Choose ''GSQ01'' from the list. Then select the newly created quest node, right click it, and choose '''Edit Quest'''.


*This will bring up the quest tab, which is quite a useful shortcut, actually. Select the Quest Data tab and from the event drop-down list choose Script event. Notice that the Start Game Enabled box is now greyed out. Now Ok out of all windows back to the main CK window and save.
*This will bring up the quest tab, which is quite a useful shortcut, actually. Select the '''Quest Data''' tab and from the event drop-down list choose Script event. Notice that the '''Start Game Enabled''' box is now greyed out. Now Ok out of all windows back to the main CK window and save.


==The Quest Script==
==The Quest Script==


*Open up the Scripts tab and select QF_GSQ01_01000D62. Click the Properties button to add two new properties:  
*Open up the '''Scripts''' tab and select QF_GSQ01_01000D62. Click the '''Properties''' button to add two new properties:  
     GSQ01KeywordLocal of type Keyword filled with the GSQ01Keyword object.
     GSQ01KeywordLocal of type Keyword filled with the GSQ01Keyword object.
     MixWaterMill of type Location filled with the MixWaterMillLocation object
     MixWaterMill of type Location filled with the MixWaterMillLocation object


* Edit the script source and add this code below all of the existing code:
* Edit the script '''source''' and add this code below all existing code:
     Function GSQ01Story()
     Function GSQ01Story()
     if (!GetStageDone(0))
     if (!GetStageDone(0))
Line 46: Line 49:
{{ProTip|<nowiki>All of the parameters excepting akLoc are unused here and can be removed, so GSQ01KeywordLocal.SendStoryEvent(akLoc = MixWaterMill) would work fine. Leaving them in shows how this function can work in relatively complex scenarios. </nowiki>}}
{{ProTip|<nowiki>All of the parameters excepting akLoc are unused here and can be removed, so GSQ01KeywordLocal.SendStoryEvent(akLoc = MixWaterMill) would work fine. Leaving them in shows how this function can work in relatively complex scenarios. </nowiki>}}


*Save it and exit: let's review we have done so far. See [[Bendu_%26_S_M_Nodes#Notes Notes]] regarding the extra entry in the conditions.
*Save it and exit: let's review we have done so far. See [[Bendu_and_S_M_Nodes#Notes Notes]] regarding the extra entry in the conditions.


[[Image:S_M_Node.jpg|900px]]
[[Image:S_M_Node.jpg|900px]]
Line 52: Line 55:
==The Trigger==
==The Trigger==


Now we turn our attention to selecting the quest trigger or activator in the MixWaterMillLocation. The activating object doesn't have to be there, indeed it could be anywhere in Tamriel, but in the spirit of the previous tutorials lets stay in the Mixwater lumber mill locale.
Now we turn our attention to selecting the quest trigger or activator in the ''MixWaterMillLocation''. The activating object doesn't have to be there, indeed it could be anywhere in Tamriel, but in the spirit of the previous tutorials let's stay in the Mixwater lumber mill locale.


We would also prefer to use something inside the workers house like a chest, barrel, bed, or even Bendu himself. But as Bendu is a base object, and exists outside the quest when the mod is activated, it'll be  Keith Szarabajkas's voice on the infos, making an early visit an immersion breaker. (Not to mention what happens post quest completion)
We would also prefer to use something inside the workers house like a chest, barrel, bed, or even Bendu himself. But as Bendu is a base object, and exists outside the quest when the mod is activated, it'll be  Keith Szarabajkas's voice on the infos, making an early visit an immersion breaker. (Not to mention what happens post quest completion)


So let's look at something outside. Candidates like chopping blocks, the lever on the lumber mill or any object in Gilfre's home are great. A one-off "Bendu sweetroll" found on the crate outside Gifre's home would be ideal, but we'll use something rather obvious, Bendu's door.
So let's look at something in the exterior. Candidates like chopping blocks, the lever on the lumber mill or any object in Gilfre's home are great. A one-off "Bendu sweetroll" found on the crate outside Gifre's home would be ideal, but we'll use something rather obvious here, Bendu's door.




Line 63: Line 66:




*Locate and edit the FarmhouseDoor01 object on the exterior of the MixwaterMill Workers House. Click the scripts tab and Add a new script. Call it StartingGSQ01Quest.
*Locate and edit the FarmhouseDoor01 object on the exterior of the MixwaterMill Workers House. Click the scripts tab and Add a new script. Call it ''StartingGSQ01Quest''.


*Add a new property to it:
*Add a new property to it:
Line 70: Line 73:




*Edit the script source of StartingGSQ01Quest and add this code below the property:
*Edit the script source of ''StartingGSQ01Quest'' and add this code below the property:




Line 82: Line 85:
     EndFunction
     EndFunction


Save the scriptBasically ready to go
Save the script. Our task is down and the modifications are ready for testing.


== Notes ==
== Notes ==




*We could, of course have put all the scripts in the StartingGSQ01Quest script instead of the quest script.
*We could, of course have put all the scripts in the ''StartingGSQ01Quest'' script instead of the quest script.
 
:The upside of our decision not to is that the properties and functions are available for re-use globally.
:The upside of our decision not to is that the properties and functions are available for re-use globally.
:The downside is that for some reason the nice message in the Papyrus Log:
:The downside is that for some reason the nice message in the Papyrus Log:
     [Date - Time] [StartingGSQ01Quest < (0001656B)>]: send_story Called - starting quest [Keyword <GSQ01Keyword (2E00A9D9)>]
     [Date - Time] [StartingGSQ01Quest < (0001656B)>]: send_story Called - starting quest [Keyword <GSQ01Keyword (2E00A9D9)>]
:only appears when the SendStory Event is generated from the trigger object.
:only appears when the SendStory Event is generated from the trigger object.


*Given a [[http://www.creationkit.com/Talk:SM_Event_Node#Conditions problem]] experienced with conditions, the if condition in Function GSQ01Story() can be replaced by adding:
*Given a [[http://www.creationkit.com/Talk:SM_Event_Node#Conditions problem]] experienced with conditions, the if condition in Function ''GSQ01Story''() can be replaced by adding:


     GetStageDone {MyQuest 0} == 0
     GetStageDone {MyQuest 0} == 0


to the Quest Node for GSQ01 in S M Event Nodes for very much the same effect.
to the '''Quest Node''' for GSQ01 in '''S M Event Nodes''' for very much the same effect.
Anonymous user