Bendu and S M Nodes

Revision as of 08:57, 13 February 2015 by imported>Lmstearn

Some ThiefLocation Aliases not Filling

Tutorial for starting the Bendu Quest via the Story Manager.

This is a walkthrough of the procedures in starting the BenduQuest through the Script Event node. Choosing the Script event as opposed to the other events on offer is preferred as it is much more versatile, and less buggy.

  • Load up a working copy of the Bendu quest esp.
  • 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.
  • 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 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 us 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.

Ok out of all windows back to the main CK window and save.


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.

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.


One drawback of opting for "well used" objects like doors as activators, is that papyrus will log those events more often. Also, the quest is being started unnecessarily every time we use the door during the quest. See bugs. For the sake of Papyrus logging, we can attempt to add conditions like GetStage GSQ01 == 0 on the nodes, but in practice they fail.

  • 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.
   MixWaterMill of type Location filled with the MixWaterMillLocation object
  • Edit the script source and add this code below all of the existing code:
   Function GSQ01Story()
   if (!GetStageDone(0))
   GSQ01KeywordLocal.SendStoryEvent(akLoc = MixWaterMill, akRef1 =None, akRef2 = None, aiValue1 = 0, aiValue2 = 0);
   endif
   endFunction


  • 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:
   GetGSQ01of type Quest filled with the GSQ01 object.


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


   EVENT onActivate (objectReference akActionRef)	
   Send_Story()
   EndEvent
   Function Send_Story()
   QF_GSQ01_01000D62 tempGSQ01 = GetGSQ01 as QF_GSQ01_01000D62
   tempGSQ01.GSQ01Story()
   EndFunction



Notes

We could, of course have put all the scripts in the StartingGSQ01Quest. The upside: For some reason

   [02/12/2015 - 09:12:39PM] [StartingGSQ01Quest < (0001656B)>]: send_story Called - starting quest [Keyword <GSQ01Keyword (2E00A9D9)>]

The downside:

Given a [problem] experienced with conditions, the if condition in Function GSQ01Story() can be replaced by adding

   GetStageDone {MyQuest 0} == 0

to the Quest Node for GSQ01 in S M Event Nodes.