Difference between revisions of "A beginner's guide, lesson 6 - Quest Dialogue"

→‎Locating the Cottage: Editing English, adding some info
imported>Pyrocow2
(→‎Chorrol Phase: Editing English)
imported>Pyrocow2
(→‎Locating the Cottage: Editing English, adding some info)
Line 1,292: Line 1,292:
We want to set the internal scene in readiness for the PC's arrival. I have used a copy of the White Stallion Lodge as a base. We want to customise this. Again we can work on this in more detail when we polish the quest prior to release.
We want to set the internal scene in readiness for the PC's arrival. I have used a copy of the White Stallion Lodge as a base. We want to customise this. Again we can work on this in more detail when we polish the quest prior to release.


We want to remove some of the clutter. We also want to give the impression a fight has taken place. Tips some chairs and tables over (Y=90). Remember this set will be locked at the start and you will only use it for a short time, so don't go overboard. We also want to place some props. We need an amulet to trigger the next phase. Why an amulet. It's small enough that you have to look for It., without being so small that it becomes hard to find. Again use an existing item of jewellery as a base and edit it. I called it BGEmbossedAmulet. Set this as a Quest Item. This means the character can not drop or sell this item once he has picked it up.
We want to remove some of the clutter. We also want to give the impression a fight has taken place. Tips some chairs and tables over (Y=90). Remember this set will be locked at the start and you will only use it for a short time, so don't go overboard. We also want to place some props. We need an amulet to trigger the next phase. Why an amulet? It's small enough that you have to look for it, but not so small that it becomes hard to find. Copy an existing item of jewelry as a base and edit it. Change the ID to ''BGEmbossedAmulet''. Check off the ''Quest Item'' box. The player can not drop or sell quest items.


We also want to create a custom letter with this text called BGPartialLetter. Set the letter as a quest item. We will refer to it in some scripts.
We also want to create a custom letter called ''BGPartialLetter''. Set the letter as a quest item. We will refer to it in some scripts.
<pre><nowiki>
<pre><nowiki>
<br>
<br>
Line 1,301: Line 1,301:
<br>
<br>
<br>
<br>
The client wishes his only living heir in Cyrodiil, to inherit his house, I have enclosed
The client wishes his only living heir in Cyrodiil to inherit his house. I have enclosed the deed and key. The location of the house is registered at the Imperial City Land Offices...<br>
the deed and key. the location is registerd at the Imperial City land offices ..<br>
<br>
<br>
<br>
<br>
Line 1,310: Line 1,309:
<br>
<br>
</nowiki></pre>
</nowiki></pre>
Of course this would look really cool if we could create a custom ‘ripped' scroll. But that is beyond the scope of these tutorials.
Of course it would look really cool if we could create a custom texture for a torn scroll, but that is beyond the scope of this tutorial.


Finally we want the body of the unfortunate courier.
Finally we need to place the body of the unfortunate courier.


Bodies are NPCs who just happen to be dead. You will need to create an NPC, don't bother too much about detail on this one as they are dead. I used the Courier1 npc as abase.
Bodies are NPCs who just happen to be dead. You will need to create another NPC. Use ''Courier1'' as the base.


Place this character in to the render window, Edit her ID, and position in a suitable place. I put her in a side room so you don't see her straight away. . I also left a nice blood trail to lead you to her. Initially she will be standing up.
Place this character in the render window, set its ID to ''BGDeadCourierRef'', and position the corpse in a suitable place. I put her in a side room so you don't see her right away. I also left a nice blood trail to lead you to her. Initially, the NPC will be standing up.


First edit the NPCs health to read zero (0).
Next click ''Edit Base'' to open the NPC window. Change the NPC's ID to ''BGDeadCourier''. Edit the NPC's health to read zero (0). (To access this stat, uncheck the ''PC Level Offset'' and ''Auto calc stats'' boxes.)


To access her ability you will have to ensure that the PC offset flag is unchecked. Setting her health to 0 kills her.
Now, the awkward thing is the fact that she is just standing there. She will stay standing in the game unless we make her fall first. To get her to fall, click on the WORLD menu and select ''Run Havok Sim'' (with the bouncing red ball). Down she goes.
 
Now the awkward thing is the fact that she is just standing there. She will stay standing in the game unless we make her fall first. To get her to fall, click on the WORLD menu and select run havoc sim, now click this.
 
Down she goes.


We can now drag her about to get the position right.
We can now drag her about to get the position right.


We have to now add the letter to the dead courier's inventory.
I also placed a sword which pointed directly at the amulet.


I also placed a sword which pointed directly at the amulet.
Next, we have to add the letter to the dead courier's inventory. Open the NPC window for ''BGDeadCourier'' and click on the ''Inventory'' tab. Then drag ''BGPartialLetter'' from the objects window over into the inventory list. You will be warned that the letter is a quest item. Just click OK.


Another useful technique is to create an NPC called something like BGDummyPlayer. Use any base you like. We will not place this NPC in the render window. Don't bother to edit anything other than the reference ID.
Another useful technique is to create an NPC called something like ''BGDummyPlayer''. We will not place this NPC in the world, so don't bother to edit anything other than the object ID.


We can now set the ownership of the door and cell (lesson 3) to BGDummyPlayer. This means that all items in the cottage will display the red hand, with the exception of the embossed amulet. This is a handy way to set ownership without having to create detailed NPCs. We can use BGDummyPlayer to set the ownership of all the doors and sets we want to prohibit our player from entering.
We can now set the ownership of the door and cell ([[A_beginner's_guide,_lesson_3_-_The_external_world#Matching_Interiors|Lesson 3]]) to ''BGDummyPlayer''. This means that all items in the cottage will display the red hand, with the exception of the embossed amulet. This is a handy way to set ownership without having to create detailed NPCs. We can use ''BGDummyPlayer'' to set the ownership of all the doors and sets we want to prohibit our player from entering.


Create a key called BGCourierKey. Again select an existing key and change the editor id. Edit the cottage door to set its lock status to ‘needs a key' and use this as the key.
Now create a key called ''BGCourierKey''. Select an existing key and change the editor ID. Also check the ''Quest Item'' box. Edit the cottage door to set its lock status to "Needs a key", and use our new object as the key.


We need to add two other items to the cottage.
We need to add two other items to the cottage.


We need to add an [[XMarker]] to the interior and the exterior a [[map marker]].
We need to add an [[XMarker]] to the interior, and a [[map marker]] to the exterior.


We will find these under the Static Objects.
We will find these under the Static Objects.


Drop an xmarker or an [[XMarkerHeading]] object inside the cottage and give it a reference name like BgCourierLodgeXMarker.
Drop an XMarker or an [[XMarkerHeading]] object inside the cottage and give it a reference name like ''BGCourierLodgeXMarker''.


Now select a MapMarker and drop it just outside the cottage door, in the exterior cell.
Now select a MapMarker and drop it just outside the cottage door, in the exterior cell. It looks a bit like a door teleport marker, but it's pink rather than yellow.
It looks a bit like a door teleport marker but is pink rather than yellow.


Edit its details to give it a reference name like BGMCCottageMapMarker
Edit its details to give it a reference name like ''BGCourierLodgeMapMarker''.


Open up the MapMarker Data tab, check the marker data tick box and select settlement.
Open up the MapMarker Data tab, check the marker data tick box and select settlement.
Theses flags control what type of icon appears on the players map.
Theses flags control what type of icon appears on the players map.


Finally in the name box call it Courier Cottage.
Finally in the name box call it Courier Cottage. This is the name that will appear on the map.
Again this is the name that will appear on the map.


We need to add a bit of script to enable it. First we need to add a bit more conversation.
We need to add a bit of script to enable it. First we need to add a bit more conversation.


Add the following multi-line response and set conditions to limit it to Hubart and the current stage. First add stage 30 in the stage tab.
Add stage 30 in the stage tab, and create a topic named ''BGCluesFound'' (which we won't be editing just yet).
 
Then create the following topic.
 


{| class="wikitable" border="1" cellpadding="5"
{| class="wikitable" border="1" cellpadding="5"
!colspan=2| '''BGCourier'''
|-
|-
!  TOPIC
!  TOPIC TEXT
BGCourier (Courier?)
|  Courier
|-
|-
!  RESPONSE
!  RESPONSE
|   
|   
* She is usually very reliable. But she failed to turn up for our usual meeting.
* "She's usually very reliable, but she failed to turn up for our usual meeting."
* She sometimes stays in a small cottage just west of here. I'll mark it on your map.
* "She sometimes stays in a small cottage just west of here. I'll mark it on your map."
* Here is a key to get you in. Let me know what you find out.  
* "Here's a key to get you in. Let me know what you find out."
|-
|-
!  CONDITIONS
!  CONDITIONS
| GetIsId BGCptHubart == 1<br>
|
GetStage BGM001>= 20
*GetIsId 'BGCptHubart' == 1
*GetStage 'BGM001' >= 20
|-
|-
!  ADD TOPICS
!  ADD TOPICS
| BGCluesFound
|
*BGCluesFound
|-
|-
!  RESULT SCRIPT
!  RESULT SCRIPT
|  SetStage BGM001 30
|
  SetStage BGM001 30
|}  
|}  


Now in the stage tab for stage 30, add this to the journal:


''Hubart told me that the courier sometimes stays in a small cottage just west of Chorrol. He marked its location on my map and gave me a key to the door. I should go check it out.''


Now in the stage tab for stage 30
And add this to the stage result script:
 
Remember we will need to add quest targets later in the build process.
 
Add this to the journal
 
''I have been given the location of a cottage where I may find some information concerning the missing courier. I should go to the cottage now I have the key to get in.''
 
And add this to the stage result script


  Player.additem "BGCourierKey" 1
Player.AddItem "BGCourierKey" 1
  ShowMap BGMCCottageMapMarker
ShowMap BGCourierLodgeMapMarker


This activates the map marker and gives the player the key to the cottage.
This gives the player the key to the cottage and activates the map marker.


The Syntax for the [[ShowMap]] Function is
The syntax for the [[ShowMap]] Function is


ShowMap MapMarkerID, enableFastTravel (optional)
ShowMap MapMarkerID, enableFastTravel (optional)


The MapMarker ID is the reference id for the map marker.
The MapMarker ID is the reference id for the map marker.
The enableFastTravel is an optional parameter which takes the value 1 if you want to be able to fast travel immediately.
The enableFastTravel is an optional parameter which takes the value 1 if you want to be able to fast travel immediately to that location.


If omitted then you can not fast travel until you have found the location.
If enableFastTravel is not given (or set to 0) then you can not fast travel to that location until you've found it once.


Remember we have still to add all those quest targets, and will use the xmarkerheading as a reference for this.
We still need to add all the quest targets, and we'll use the XMarkerHeading for that.


Up till now we have been able to use NPCs to control progression, however now we need to begin to script to do the next bit of progression.
Up 'til now we have been using dialogue to control progression, but now we need to begin using scripts more continue.
And that seems like a good place to take a break.


In [[A beginner's guide, lesson 7 - Using Scripts in Quests|Lesson 7]] we will complete the quest and focus on SCRIPTING.
In [[A beginner's guide, lesson 7 - Using Scripts in Quests|Lesson 7]] we will complete the quest and focus on SCRIPTING.


[[Category:A beginner's guide]]
[[Category:A beginner's guide]]
Anonymous user