Editing Arcane University:Implementation Scribe Assignment

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 14: Line 14:
 
===Dialogue===
 
===Dialogue===
 
* If you see [orange text between square brackets], these are directions for the voice actors, and you must paste them into the "script notes" field in the [https://ck.uesp.net/wiki/Topic_Info#The_Response_Form Response Form] when implementing the line. You can leave the square brackets out.
 
* If you see [orange text between square brackets], these are directions for the voice actors, and you must paste them into the "script notes" field in the [https://ck.uesp.net/wiki/Topic_Info#The_Response_Form Response Form] when implementing the line. You can leave the square brackets out.
* If you see [purple text between square brackets], these are implementation directions for you. A note like [Go to STORY] means that the dialogue continues normally to the section marked [STORY], and is merely broken up in the document for formatting reasons. [back to options] means that you must link to the same topics that were shown in the previous dialogue. In this particular quest, the writers have sometimes specified an idle animation (such as IdleTableDrinkEnter) for the NPC to perform on a given line, which you can likewise specify in the response form.
+
* If you see [purple text between square brackets], these are implementation directions for you. A note like [Go to STORY] means that the dialogue continues normally to the section marked [STORY], and is merely broken up in the document for formatting reasons. [back to options] means that you must link to the same topics that were shown in the previous dialogue.
* The quest provides several lines for Ruta to mutter to herself. This sounds like it corresponds with a dialogue type called "idle" dialogue, and needs to be implemented in the [https://ck.uesp.net/wiki/Misc_Tab Misc Tab] in a topic with the subtype "Idle". Gavril's combat barks need to be in the [https://ck.uesp.net/wiki/Combat_Tab Combat Tab] in a topic with subtype "Taunt". Note that, since the NPCs are in aliases, you can now use the [https://ck.uesp.net/wiki/GetIsAliasRef GetIsAliasRef] condition on their dialogue as an alternative to GetIsID.
+
* The quest provides several lines for Ruta to mutter to herself. This sounds like it corresponds with a dialogue type called "idle" dialogue, and needs to be implemented in the [https://ck.uesp.net/wiki/Misc_Tab Misc Tab] in a topic with the subtype "Idle". Gavril's combat barks need to be in the [https://ck.uesp.net/wiki/Combat_Tab Combat Tab] in a topic with subtype "Taunt". Note that, even though these NPCs are in aliases, it is still safer and preferred to use the GetIsID condition on the dialogue and not GetIsAliasRef.
 
* When the player first talks to Ruta, they won't have the opportunity to select a dialogue option, and instead, Ruta will speak a line immediately. This will therefore have to be a [https://ck.uesp.net/wiki/Dialogue_Branch#Blocking_Branches Blocking Branch]. A ForceGreet would work too but is worse for gameplay as it would force the player into a conversation for no reason, and the quest document doesn't call for this.
 
* When the player first talks to Ruta, they won't have the opportunity to select a dialogue option, and instead, Ruta will speak a line immediately. This will therefore have to be a [https://ck.uesp.net/wiki/Dialogue_Branch#Blocking_Branches Blocking Branch]. A ForceGreet would work too but is worse for gameplay as it would force the player into a conversation for no reason, and the quest document doesn't call for this.
 
+
* Every dialogue option for the player will need its own [https://ck.uesp.net/wiki/Topic Topic].
 +
* When the NPC has several lines one after the other with no player dialogue or implementation note in-between, then these are almost always implemented as a group of Responses in the same [https://ck.uesp.net/wiki/Topic_Info Topic Info].
 
===Scripting and Conditions===
 
===Scripting and Conditions===
 
* Try to put as much of the scripting as possible through the stage fragment scripts. Try to have only SetStage() commands in dialogue fragments and do the rest in the stages. This makes the quest easier to understand for another implementer, or for yourself if you haven't worked on it for a while. Add properties to the stage fragment script as needed, but if you need to do something to NPCs or items that are contained in aliases, use the alias properties that the Creation Kit automatically added, by doing Alias_''Name''.GetReference().
 
* Try to put as much of the scripting as possible through the stage fragment scripts. Try to have only SetStage() commands in dialogue fragments and do the rest in the stages. This makes the quest easier to understand for another implementer, or for yourself if you haven't worked on it for a while. Add properties to the stage fragment script as needed, but if you need to do something to NPCs or items that are contained in aliases, use the alias properties that the Creation Kit automatically added, by doing Alias_''Name''.GetReference().
 
* Generally avoid using Game.GetPlayer(). It won't matter too much here but it may become a bad habit and when it is used in a piece of code that is executed repeatedly, the peformance overhead may become noticeable. Either use an Actor property (calling it "PlayerRef" will make it auto-fill) or put the player in an alias using the "Player" fill type, and then use the automatic Alias_ property.
 
* Generally avoid using Game.GetPlayer(). It won't matter too much here but it may become a bad habit and when it is used in a piece of code that is executed repeatedly, the peformance overhead may become noticeable. Either use an Actor property (calling it "PlayerRef" will make it auto-fill) or put the player in an alias using the "Player" fill type, and then use the automatic Alias_ property.
 
* Don't know how to check whether the player has talked to Jarl Siddgeir? Check the [https://ck.uesp.net/wiki/Condition_Functions Condition Functions] page on the CK wiki for a list of conditions to use on the dialogue, and search for possible terms that could be in the condition function you need! Hint: try "talk"...
 
* Don't know how to check whether the player has talked to Jarl Siddgeir? Check the [https://ck.uesp.net/wiki/Condition_Functions Condition Functions] page on the CK wiki for a list of conditions to use on the dialogue, and search for possible terms that could be in the condition function you need! Hint: try "talk"...
* How to check if Siddgeir is still the Jarl? This would require digging into vanilla content to see how things are implemented there, and figuring out a simple and foolproof way of doing this check. If you're on a project and need to account for content in that project, your implementation lead might be able to give you pointers. In this case, we'll just tell you: make an alias for Siddgeir in your quest, then on the relevant piece of dialogue, use the condition [https://ck.uesp.net/wiki/GetFactionRank GetFactionRank], use JobJarlFaction as the parameter, check if the result is higher than -1, and instead of running on subject, run it on "Quest Alias" and specify your Siddgeir alias.
+
* How to check if Siddgeir is still the Jarl? This would require digging into vanilla content to see how things are implemented there, and figuring out a simple and foolproof way of doing this check. If you're on a project and need to account for content in that project, your implementation lead might be able to give you pointers. In this case, we'll just tell you: use the condition [https://ck.uesp.net/wiki/GetIsAliasRef GetIsAliasRef] on Siddgeir and the alias "Jarl" from the quest DialogueFalkreath.
* Speaking of factions, isn't it annoying how Ruta will get up and applaud the bard for his performance? That might not be desirable AI behavior for her. In vanilla, the developers sometimes implement factions to disable certain kinds of radiant behaviors on specific NPCs. Search for "bard" in the faction category of the object window; which faction do you think you would put on Ruta to stop her audience behavior?
+
  
 
===Final Words===
 
===Final Words===
 
* For the post-quest reward by courier, here are some pointers: [https://ck.uesp.net/wiki/RegisterForSingleUpdateGameTime_-_Form RegisterForSingleUpdateGameTime], and [https://ck.uesp.net/wiki/Using_the_Vanilla_Courier Using the Vanilla Courier]. You'll need to manually create a script for your quest, alongside the fragment script; see the [https://ck.uesp.net/wiki/Bethesda_Tutorial_Papyrus_Hello_World Bethesda Scripting Tutorial] for guidance on how to manually create a script. This new script will contain the OnUpdateGameTime event and run the code that spawns the courier. If this is too much right now, then just leave this part unimplemented and consider it extra credit.
 
* For the post-quest reward by courier, here are some pointers: [https://ck.uesp.net/wiki/RegisterForSingleUpdateGameTime_-_Form RegisterForSingleUpdateGameTime], and [https://ck.uesp.net/wiki/Using_the_Vanilla_Courier Using the Vanilla Courier]. You'll need to manually create a script for your quest, alongside the fragment script; see the [https://ck.uesp.net/wiki/Bethesda_Tutorial_Papyrus_Hello_World Bethesda Scripting Tutorial] for guidance on how to manually create a script. This new script will contain the OnUpdateGameTime event and run the code that spawns the courier. If this is too much right now, then just leave this part unimplemented and consider it extra credit.
 
* When testing, remember to COC from main menu every time to avoid interference from your previous testing session, as many aspects of the quest are baked into a saved game immediately.
 
* When testing, remember to COC from main menu every time to avoid interference from your previous testing session, as many aspects of the quest are baked into a saved game immediately.
* When you're done and everything works on your end, clean your plugin of any unnecessary or unintentional edits using xEdit. [https://www.youtube.com/watch?v=xtKh6UhK5RQ&t=7865 See this AU lecture for an introduction.] Do not use QuickAutoClean, you will have to get used to cleaning manually.
+
* When you're done and everything works on your end, gather up your .esp and your scripts (both .pex and .psc in the appropriate folder structure), combine everything into a .zip and post it for us to see.
* Gather up your .esp and your scripts (both .pex and .psc in the appropriate folder structure), combine everything into a .zip and post it for us to see. Recording a gameplay video would also be of great help if you are comfortable doing that.
+

Please note that all contributions to Beyond Skyrim are considered to be released under the Creative Commons Attribution-ShareAlike (see Beyond Skyrim Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)

Template used on this page: