Difference between revisions of "Advanced Quest Tutorial"

17,831 bytes added ,  14:36, 6 August 2007
m
applying template
imported>ShadowDancer
(1st part of Advance Quest Tutorial)
 
imported>Qazaaq
m (applying template)
 
(21 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Unfinished}}
This tutorial is designed to pick up and add onto where the [[Quest Tutorial]] left off.  It will also provide some alternative ideas and values compared to those used in the first '''Quest Tutorial'''.  It should also be noted that this tutorial will assume that the individual already has the skills needed to duplicate items, create worldspaces, and exteriors without causing unnecessary changes to existing objects already in Oblivion.
This tutorial is designed to pick up and add onto where the [[Quest Tutorial]] left off.  It will also provide some alternative ideas and values compared to those used in the first '''Quest Tutorial'''.  It should also be noted that this tutorial will assume that the individual already has the skills needed to duplicate items, create worldspaces, and exteriors without causing unnecessary changes to existing objects already in Oblivion.


Line 12: Line 14:
I chose a random key and edited the ''ID''.  When you close the box for the key it will ask "Create a new form?" at which point I clicked "Yes" to create a new instance of a key that I can alter however I wish without altering some other object in the game.  Next, I edited the new form of the key that I just made and checked the ''Quest Item'' box, gave it a new ''Name'', and then closed the box again.  We now have a key to use in the quest.
I chose a random key and edited the ''ID''.  When you close the box for the key it will ask "Create a new form?" at which point I clicked "Yes" to create a new instance of a key that I can alter however I wish without altering some other object in the game.  Next, I edited the new form of the key that I just made and checked the ''Quest Item'' box, gave it a new ''Name'', and then closed the box again.  We now have a key to use in the quest.


I did the same things for the NPC, with the exception that when I opened up the new form of the NPC, I also changed the facial characteristics of the NPC to create an NPC that didn't look like a clone of the original one.  Additionally, since the NPC is not going to be a quest item, I did not check the ''Quest Item'' box on the NPC.
Rather than creating a new NPC like was done in the '''Quest Tutorial''', I chose to take an existing MGMageScholar NPC and duplicate her since I am going to be dropping her into The Arcane University in the Imperial City.  I did the same things for the NPC that I did with the key, with the exception that when I opened up the new form of the NPC, I also changed the facial characteristics of the NPC to create an NPC that didn't look like a clone of the original one.  Additionally, since the NPC is not going to be a quest item, I did not check the ''Quest Item'' box on the NPC.


==Creating your Quest==
==Creating your Quest==
Next on our list is creating a new quest.  Open up the ''Quest'' window and right-click in the ''EditorID'' section of the window, then click ''New''.  A box will pop up with the title ''New Form Editor ID''.  This is where you are going to create a new instance of a quest, which in my case was '''ShadowMages'''.  When you hit ''Enter'', it takes you right to your new quest and shows you the ''Quest Data'' tab.
Next on our list is creating a new quest.  Open up the ''Quest'' window and right-click in the ''EditorID'' section of the window, then click ''New''.  A box will pop up with the title ''New Form Editor ID''.  This is where you are going to create a new instance of a quest, which in my case was '''ShadowMages'''.  When you hit ''Enter'', it takes you right to your new quest and shows you the ''Quest Data'' tab.


The ''Quest Data'' tab has items that we need to make some changes to.  The first change I made was putting '''The Shadow Mages''' in the ''Quest Name'' box.  However, my next change is a departure from the original '''Quest Tutorial'''.  Instead of setting the ''Priority'' to 100, I chose to stick to Bethesda's Dialogue Priorities that can be found on the [[Quest Data Tab]] page and set ''Priority'' to 50.  The other changes I made were checking the ''Start Game Enabled'' box and setting conditions that will remain constant throughout the quest.  This is where the real differences between this tutorial and the '''Quest Tutorial''' begin.
The ''Quest Data'' tab has items that we need to make some changes to.  The first change I made was putting '''The Shadow Mages''' in the ''Quest Name'' box.  However, my next change is a departure from the original '''Quest Tutorial'''.  Instead of setting the ''Priority'' to 100, I chose to stick to Bethesda's Dialogue Priorities that can be found on the [[Quest Data Tab]] page and set ''Priority'' to 50.  The other changes I made were checking the ''Start Game Enabled'' box and setting conditions that will remain constant (and be evaluated) throughout the quest.  This is where the real differences between this tutorial and the '''Quest Tutorial''' begin.
 
 
'''Note:'''
*The first thing to be aware of is that ''Quest Conditions'' are 2nd party to the Player in almost every instance and first party to the Actors involved in the quest.  What this means is that most of the time when you are running conditions dealing with the Player or objects the Player possesses (which we will be doing with the key), the ''Run On Target'' box needs to be checked.  Anything that runs on an Actor involved in the quest (such as ''Topics'' for that Actor) '''does not''' have the ''Run on Target'' box checked.  ''Quest Targets'' are an exception to this since the Player is considered the Actor seeking the ''Quest Target''.
 
For the ''Quest Conditions'' on the ''Quest Data'' tab I chose the following two conditions:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|yes
|GetItemCount
|Key: 'ShadowfallManorKey'
|==
|1.00
|AND
|-
|yes
|GetIsID
|NPC: 'Player'
|==
|1.00
|AND
|-
|}
 
 
 
When setting up these conditions, I clicked on the ''Function Parameter'' button that said ''INVALID'' for each of these conditions and then chose the appropriate item (ShadowfallManorKey or Player) and set the appropriate ''Value'' (in this case 1.00) for my conditions.  These conditions must always be met in order for anything set up in the quest to actually happen.
 
Lastly, I wrote a startup script for the quest which consisted of:
<pre>
Scriptname ShadowMagesSCRIPT
 
short Key
 
 
Begin GameMode
 
  If Key == 0 && GetStage ShadowMages == 0 && Player.GetItemCount ShadowfallManorKey == 1
      SetStage ShadowMages 10
      Set Key to 1
  EndIf
 
End
</pre>
 
As you can see from the script above, the key that is going to be the kickoff point that activates this Quest.  That leaves the only other thing that needs to be done on this page for this quest is to choose an icon for the quest by clicking on the ''Add Icon Image'' button (doing it this way requires the quest icons to be pulled out of the BSA file or the creation of a new icon).
 
==Quest Stages==
Again, I am going to go with Bethesda's standard for the ''Index'' on the ''Quest Stages'' tab which is to use units of 10 for each stage.  Right-click in the ''Index'' box and then click ''New'' to add the stages.  For now all we need are 10 and 20.  Once you create the particular stage, you want to then right-click in the ''Quest Stage Items'' section in the top box and again click on ''New'' to create a new log entry.  Then click on the ''Log Entry'' window and type in what you want to appear for the log entry for that stage in your quest windows in the game.  For the 10 stage, add '''AddTopic SCKey''' in the ''Result Script'' box so that when we have the key and the quest starts, we can immediately go and talk to the NPC about the quest.
 
==Topics==
Now it is time to set up some topics for the NPC we created earlier.  Since I duplicated an NPC rather than creating a new one, my NPC already has a ''GREETING'' and a ''Rumors'' incorporated into it.  Due to this, on the ''Topics'' tab, we are only going to create 5 topics consisting of:
*SCJagarTharn
*SCKey
*SCNo
*SCShadowMages
*SCYes
 
We will start by right-clicking on the ''EditorID'' portion of the ''Topics'' tab and then clicking on ''Add Topic'' to open the ''Select Topic'' window.  Then right-click in the ''Select Topic'' window and click ''New'' to create a new topic.  Once the topic is made, click ''OK'' to add it to the ''EditorID'' box.  At this point, we can change the ''Topic Text'' for each of these items to what we want to appear as a choice in the dialogue that is displayed to the player.  Then in the ''Info'' window right-click and click on ''New'' to open the ''New Response'' window, type in the response text, choose an ''Emotion'' and its ''Emotion Value'', and then click the ''OK'' button.
 
My items consist of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | EditorID
! style="background:#efefef;" | Topic Text
! style="background:#efefef;" | Info/Response Details
! style="background:#efefef;" | Emotion
! style="background:#efefef;" | Result Scripts
! style="background:#efefef;" | Add Topics
! style="background:#efefef;" | Choices
! style="background:#efefef;" | Checkboxes
|-
|SCJagarTharn
|Jagar Tharn
|Jagar Tharn was the Imperial Battlemage that imprisoned Uriel Septim VII in an attempt to usurp the Imperial Throne of Tamriel for himself.
He lost the key when battling the Shadow Mages.
|Anger (90)
|None
|SCShadowMages
|None
|None
|-
|SCKey
|I found this key...
|Oh! You found the key that Jagar Tharn lost!
|Surprise (50)
|None
|None
|SCYes, SCNo
|None
|-
|SCNo
|I lied, I didnt find any key.
|Suit yourself.  Although it won't do you any good to have it and know not what it is.
|Disgust (80)
|None
|None
|None
|Goodbye
|-
|SCShadowMages
|The Shadow Mages
|There is little that I can tell you of the Shadow Mages, other than that they all disappeared when Jagar Tharn usurped the Imperial Throne.
|Neutral (60)
|None
|None
|None
|Info Refusal
|-
|SCShadowMages
|The Shadow Mages
|The only thing I can say for sure is that the last openly known Shadow Mage, Fasriel, headed north towards Skyrim.
|Sad (50)
|SetStage ShadowMages 20
|None
|None
|None
|-
|SCYes
|Yes, I found this key in a well.
|It is widely believed that his desire to obtain that key was one of the reasons that Jagar Tharn killed his apprentice in the first place.
|Anger (90)
|None
|SCJagarTharn
|None
|None
|-
|}
 
Each of the above items also has a condition consisting of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetIsID
|NPC: 'SCMageScholar'
|==
|1.00
|AND
|-
|}
 
This condition means that only this particular NPC (the SCMageScholar) will have these topics.  Some additional items that should be noted are the check boxes on the ''Topics'' tab.  In the '''SCNo''' topic, I checked the ''Goodbye'' choice so that choosing that topic automatically ends the conversation with the NPC.  The other thing to note is that there are two '''SCShadowMages''' topics because there are two seperate Info/Responses that appear under that topic.  The top one has a check in the ''Info Refusal'' choice and has an additional condition of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetDisposition
|[ TARGET ]
|<
|75.00
|AND
|-
|}
The other '''SCShadowMages''' topic has an additional condition of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetDisposition
|[ TARGET ]
|>=
|75.00
|AND
|-
|}
 
These additional conditions are there so that the NPC will only give the Player the direction that the last known Shadow Mage went if she likes the Player.  The ''Info Refusal'' being checked results in the '''SCShadowMages''' topic staying gold until the NPC likes the Player enough to tell the rest of the information about the last known Shadow Mage.
 
==Quest Targets==
My quest starts out with the player not knowing anything about the key that was found.  Since the player doesn't have a clue about the key, there was no target set up for stage 10 on the ''Quest Target'' tab.  Now that the player can get a direction to travel from the NPC, its time to set up a ''Quest Target'' so that the player knows where to head in order to continue on the quest.
 
For this part of the quest I chose to create a new ''DeadSkeleton'' the same way that I created a new key.  I decided to drop the skeleton behind a rock at the end of the road by ''DragonClawRockExterior'' since it is the only major road heading towards Skyrim (like the player is told by the NPC), put ''FasrielsSkeleton'' in the ''Reference Editor ID'' box, and check the ''Initially Disabled'' checkbox so it isn't found too early.  When you initially place the skeleton, it is upright even though the skeleton is dead.  Running the ''Havok Sim'' for a couple of seconds takes care of this nicely by letting the skeleton fall down.  Any adjustments can be made at this point if the skeleton parts do something you don't want like sliding down the terrain and into the open.  I also placed an ''XMarkerHeading'' at the end of the road with an added ''Reference Editor ID'' of ''FasrielGhostMarker'' where it disappears into the terrain.  Once the skeleton and XMarkerHeading are placed, its time to go to the ''Quest Target'' tab of your quest.
 
Since I am going to use the ''FasrielGhostMarker'' as the quest target, the easiest way to select it is to click the ''Select in Render Window'' button and then double-click on the ''FasrielGhostMarker''.  Now its time to add some conditions so that this target only shows up when the quest is in stage 20 and the Player is at a distance greater than 150.  For this to occur I added the conditions:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetStage
|Quest: 'ShadowMages'
|==
|20
|AND
|-
|no
|GetDistance
|Reference: 'FasrielGhostMarker'
|>
|150
|AND
|-
|}
 
 
'''Note:'''
*As stated above, the Player is considered to be the Actor for conditions on the ''Quest Targets'' tab.
 
 
==Expanding the Quest==
Now it is time to add another NPC, some creatures, and some more scripting to the quest.  I decided that this would make a good location for a small battle with some undead creatures.  First I duplicated Hannibal Traven the same way that I duplicated the other NPC to create a ghost of Fasriel.  Since I don't want anything to happen before the Player shows up, I also check the ''Initially Disabled'' checkbox and place the ghost in front of the stone that his body is hidden behind.  Then I duplicated the ''LL1UndeadLvl100'' LeveledCreature list by changing the ''ID'' to ''SC1UndeadLvl100'', checking the ''Initially Disable'' checkbox, and removed the skeletons and zombies.  I placed five of these to each side of Fasriel's ghost with the the ''Reference Editor ID'' being ''UndeadX'' where X is a number from 1 through 10.  With Fasriel's ghost and the ''SC1UndeadLvl100'' markers placed, its time to move on to the scripting part of this expansion of the quest.
 
Going back into the main script for the quest, I add three ''Short'' variables named ''Counter'', ''DoOnce'' and ''EnableRef'' as well as the additional scripting just before the ''End'' of the ''GameMode'' block:
<pre>
  If Player.GetDistance FasrielGhostMarker > 500 && GetStage ShadowMages == 20 && EnableRef == 0
      Return
  ElseIf Player.GetDistance FasrielGhostMarker < 500 && GetStage ShadowMages == 20 && EnableRef == 0
      Messagebox "An eerie chill runs up your spine as if some unseen force is watching you."
      Set EnableRef to 1
      SetEssential SCGhostFasriel 1
      SCGhostFasrielRef.Enable
      SCGhostFasrielRef.SetActorAlpha 0.5
      Undead1.Enable
      Undead2.Enable
  EndIf
 
  If SCGhostFasrielRef.GetDisabled == 0
      If SCGhostFasrielRef.IsInCombat == 1 && DoOnce == 0
        Set DoOnce to 1
        If Counter == 0
            Undead1.Disable
            Undead2.Disable
        ElseIf Counter == 1
            Undead3.Disable
            Undead4.Disable
        ElseIf Counter == 2
            Undead5.Disable
            Undead6.Disable
        ElseIf Counter == 3
            Undead7.Disable
            Undead8.Disable
        ElseIf Counter == 4
            Undead9.Disable
            Undead10.Disable
        EndIf
        Set Counter to Counter + 1
      EndIf
 
      If SCGhostFasrielRef.IsInCombat == 0 && DoOnce == 1 && Counter < 5
        If Counter == 1
            Undead3.Enable
            Undead4.Enable
        ElseIf Counter == 2
            Undead5.Enable
            Undead6.Enable
        ElseIf Counter == 3
            Undead7.Enable
            Undead8.Enable
        ElseIf Counter == 4
            Undead9.Enable
            Undead10.Enable
        EndIf
        Set DoOnce to 0
      EndIf
  EndIf
 
  If SCGhostFasrielRef.IsInCombat == 0 && Counter == 5
      SCGhostFasrielRef.SetGhost 1
      Set Counter to 6
      SCGhostFasrielRef.StartConversation Player
  EndIf
</pre>
 
This additional script initiates and runs the battle as soon as the Player shows up at the ''FasrielGhostMarker'' activating and deactivating two of the ''SC1UndeadLvl100'' leveled lists at a time until all ten have been activated and deactivated.  It also makes Fasriel's Ghost come up to the Player afterwards and initiate a conversation.  Fasriel's Ghost is set to ghost state so that the Player can't pickpocket the ghost (who ever heard of pickpocketing a ghost?).  Now its time to add some more ''Topics'' for Fasriel's Ghost so that we can find out more about the quest.
 
==Fasriel's Topics==
Since the ''Topics'' of '''SCShadowMages''' and '''SCJagarTharn''' have already been added to the Player from talking to the first NPC, I decided to reuse them for the conversation with Fasriel's Ghost.  The five new ''Topics'' I added are as follows:
*SCBody
*SCGhostNo
*SCGhostYes
*SCLocation
*SCShadowfall
 
My ''Topics'' items look like this:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | EditorID
! style="background:#efefef;" | Topic Text
! style="background:#efefef;" | Info/Response Details
! style="background:#efefef;" | Emotion
! style="background:#efefef;" | Result Scripts
! style="background:#efefef;" | Add Topics
! style="background:#efefef;" | Choices
! style="background:#efefef;" | Checkboxes
|-
|SCBody
|Where is your body?
|Before I can tell you where my body lies, you must swear to use the knowledge within Shadowfall to further the ends of the Empire.
Do you so swear?
|Neutral (50)
|None
|None
|SCGhostYes
SCGhostNo
|None
|-
|SCGhostNo
|No, not at this time.
|Then I can not tell you where my body lies.
|Sad (70)
|None
|None
|None
|Goodbye
|-
|SCGhostYes
|Yes, I swear.
|My body lies to the north of the boulder at the end of the road you followed here.
|Happy (70)
|SetStage ShadowMages 30
Player.SetFactionRank ShadowMageFaction 0
FasrielsSkeleton.Enable
|None
|None
|None
|-
|SCJagarTharn
|Jagar Tharn
|Jagar Tharn sought the key to Shadowfall in order to gain access to it.
|Neutral (50)
|None
|SCShadowfall
|None
|None
|-
|SCLocation
|Where is Shadowfall?
|Shadowfall Manor is located on an island to the south of the Imperial City.
|Neutral (50)
|None
|None
|None
|Info Refusal
|-
|SCLocation
|Where is Shadowfall?
|You will need the amulet that is on my physical body.  When you wear the amulet, the location of Shadowfall shall become known to you.
|Neutral (50)
|None
|SCBody
|None
|None
|-
|SCShadowfall
|Shadowfall
|Shadowfall is the manor that we used for the studies and research that was not to be known by the Mages Guild.
It was hidden with spells and enchantments so that only the Shadow Mages could find it.
|Neutral (50)
|None
|SCLocation
|None
|None
|-
|SCShadowMages
|The Shadow Mages
|The Shadow Mages were a secret group of mages who only answered to the Emperor himself.
|Neutral (50)
|None
|None
|None
|None
|-
|}
Each of the above items also has a condition consisting of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetIsID
|NPC: 'SCGhostFasriel'
|==
|1.00
|AND
|-
|}
This is so only Fasriel's Ghost can give this information to the Player.  The two '''SCLocation''' topics also have additional conditions like the '''SCShadowMages''' topics earlier.  The '''SCLocation''' topic with the ''Info Refusal'' checkbox checked has:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetDisposition
|[ TARGET ]
|<
|75.00
|AND
|-
|}
The other '''SCLocation''' topic has an additional condition of:
{|border="1" cellpadding="5" cellspacing="0"
|-
! style="background:#efefef;" colspan=1 | Target
! style="background:#efefef;" | Function Name
! style="background:#efefef;" | Function Info
! style="background:#efefef;" | Comp
! style="background:#efefef;" | Value
! style="background:#efefef;" |
|-
|no
|GetDisposition
|[ TARGET ]
|>=
|75.00
|AND
|-
|}
 
 
                              (*to be continued*)
Anonymous user