Editing Arcane University:World Interactions

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 181: Line 181:
 
##* You can use <code>GetEventData</code> conditions and run normal conditions on Event Data to make responses reactive to the player's specific actions. For instance, you can check for keywords on a crafted item, or check the value of an item the player dropped.  
 
##* You can use <code>GetEventData</code> conditions and run normal conditions on Event Data to make responses reactive to the player's specific actions. For instance, you can check for keywords on a crafted item, or check the value of an item the player dropped.  
 
## (Optional) If your dialogue topic has a very large number of topicinfos and you want to organize it a more nicely, you can split the one phase into multiple, and use phase conditions to make conditioning dialogue lines simpler.
 
## (Optional) If your dialogue topic has a very large number of topicinfos and you want to organize it a more nicely, you can split the one phase into multiple, and use phase conditions to make conditioning dialogue lines simpler.
##* Look at <code>WICraftItem01</code> as an example of this. Rather than have one phase and dialogue action with 72 topicinfos, it uses 8 phases with 9 topicinfos each. Conditions on each phase make it so that only voicetype conditions are needed on the topicinfos.
+
##* Look at <code>WICraftItem01</code> as an example of this. Rather than have one phase and dialogue action with 72 topicinfos, it uses eight phases with 9 topicinfos each. Conditions on each phase make it so that only voicetype conditions are needed on the topicinfos.
 
##* If you go this route, you will want to add a script fragment on phase end to stop the scene, otherwise your NPC may end up saying multiple lines in succession.
 
##* If you go this route, you will want to add a script fragment on phase end to stop the scene, otherwise your NPC may end up saying multiple lines in succession.
 
##* The Creation Kit will not parse phase conditions when filtering dialogue for an Actor or Voice Type, so you should avoid using condition functions that affect dialogue filtering in phase conditions. These are condition functions like <code>GetIsID</code>, <code>GetIsVoiceType</code>, <code>GetInFaction</code>, and so on ([https://www.creationkit.com/index.php?title=VoiceType conditions that affect default dialogue]).
 
##* The Creation Kit will not parse phase conditions when filtering dialogue for an Actor or Voice Type, so you should avoid using condition functions that affect dialogue filtering in phase conditions. These are condition functions like <code>GetIsID</code>, <code>GetIsVoiceType</code>, <code>GetInFaction</code>, and so on ([https://www.creationkit.com/index.php?title=VoiceType conditions that affect default dialogue]).
# '''Start a Conversation''': To make an NPC start a conversation with the player when an event happens (think: player drops a weapon and a guard chastises them), we will want to use a ForceGreet package to start ordinary dialogue.
 
## Navigate to the "Player Dialogue" tab of your quest, and create a new blocking branch and a starting topic.
 
## Implement the dialogue like normal ([https://www.creationkit.com/index.php?title=Bethesda_Tutorial_Dialogue Basic Dialogue Tutorial]). There's nothing special that needs to be done.
 
##* Remember that you can use <code>GetEventData</code> conditions and run normal conditions on Event Data to make dialogue more responsive to the player's specific actions.
 
## Create a quest stage to stop the quest. The stage number is your choice but "10" is common. Include a quest fragment with the command <code>stop()</code>. Set the quest to this stage on any topicinfos that end the world interaction.
 
## Create a new package using the ForceGreet template.
 
##* Set the package's topic to the starting topic you created earlier.
 
##* Set the wait location to near package start.
 
##* Set the Trigger Location and ForceGreet distance to both within some radius of the player. The ForceGreet distance should be smaller than the Trigger Location distance.
 
##* Uncheck all flags on the package (even the Allow World Interactions flag!).
 
## Add this package to the NPC's quest alias. The NPC will automatically start using this package, unless they are occupying another alias with higher priority.
 
# '''Delayed Reactions''': It's possible to use the story manager to set up NPC world interactions to play later (think: NPCs that have special dialogue when you talk to them some time after assaulting them).
 
## Create a new faction named similar to your quest. It does not need any faction relationships, crime/vendor/etc... information.
 
## On the quest, create a startup stage (typically stage 0).
 
## Create a quest fragment, and add your faction as a script property.
 
## In the fragment, add the faction to the NPC alias(es), then stop the quest. For example:
 
##: <code>(BystanderAlias.GetReference() as Actor).AddToFaction(MyFaction)</code>
 
##: <code>Stop()</code>
 
#: This will record that the NPCs took part in this original event. Then, later, we can check if an NPC is in this faction for future world interactions. For instance:
 
#::* Create a new quest (start-game enabled) with a Hello topic for special greetings for NPCs in the faction you created.
 
#::* Give NPCs a unique reaction to having a spell cast on them after they've seen you cast it once before.
 
#::* Make guards ''actually'' respond differently if they catch you dropping a weapon more than once.
 
 
Remember, it is absolutely possible to make world interactions that are more complex that what's above. Look at <code>WIRemoveItem03</code> for instance—two NPCs fight over a dropped object, up to three bystanders arrive to watch, and a guard may intervene. However it's not really possible to write a tutorial for these, as the way to implement them is going to be unique. Still, you should be able to the above steps like building blocks for more complex world interactions.
 
  
 
====Updating the Story Manager====
 
====Updating the Story Manager====
The final step will be to add your quest to the Story Manager with appropriate conditions. The CK Wiki already has a good [https://www.creationkit.com/index.php?title=Bethesda_Tutorial_Story_Manager tutorial on the Story Manager], so this section will only cover the few specifics needed for world interactions.
 
# Navigate to the SM Event Node section of the Object Window, and open the node for your particular event.
 
# Create a new branch node for your world interaction or set of world interactions.
 
#* This should be pretty low in the stack—below any nodes that are for actual quests.
 
# Add any broad world interaction conditions, such as:
 
#* Timer conditions (compare your timer global variable to the <code>GameDaysPassed</code> global variable)
 
#* Check if globals like <code>WIEventsEnabled</code> and/or <code>WIComplexEventsEnabled</code> are set to 1 (true)
 
#* Check that you aren't in a location that prohibits world interactions (e.g. Sovngarde)
 
#* Optionally, apply a random chance that the event doesn't occur
 
# Create a new quest node. Generally you want "Random", "Do all before repeating," and "Shares Event" flagged.
 
# Add your world interaction quest(s) to this node. Add any quest-specific conditions here. For instance:
 
#* For Add/Remove item events, you check item type (weapon, armor, etc...)
 
#* For Cast Magic events, you can check the type of spell being cast (shout, destruction spell, etc... usually using formlists)
 
#* For Change Location events, check new location keywords
 
#* For Craft Item events, check what type of workbench the player is using (keyword check)
 
#* etc...
 
# (Optional) Set a value for "Hours to Reset" on the specific quest(s).
 
  
 
===Examples===
 
===Examples===
These are how several Story Manager events are used for World Interactions in vanilla Skyrim.
+
1. '''Assault Actor Event'''
 +
 
 +
2. '''Cast Magic Event'''
  
====Assault Actor Event====
+
3. '''Change Location Event'''
* A quest is used to add a faction to NPCs when you assault them. Then, a separate quest has unique greetings for NPCs when they are in this faction.
+
  
====Cast Magic Event====
+
4. '''Craft Item Event'''
* If you cast a colorful spell, a child may initiate conversation and ask you to make them invisible.
+
* If you cast a dangerous spell, a crowd will gather to chastise the you.
+
* If a guard hears you shout, they will approach you and tell you to stop.
+
  
====Change Location Event====
+
5. '''Dead Body Event'''
* NPCs will comment on you entering their home, shop, or tavern.
+
** Some quests cover special cases like having a weapon drawn or being naked.
+
* Kids may start a game of tag.
+
  
====Craft Item Event====
+
6. '''Kill Actor Event'''
* NPCs will comment on crafting weapons and armor, brewing potions, and enchanting objects.
+
* Comments cover generic skill lavel (looking at player skills) as well as crafting material, type of enchantment, and so on.
+
  
====Dead Body Event====
+
7. '''Player Add Item Event'''
* Crowds will gather around a found body, and a guard may question you about your involvement.
+
  
====Player Add Item Event====
+
8. '''Player Remove Item Event'''
* NPCs will comment on you picking up an item ("Nice find!", "...Are you digging through the trash?", etc...)
+
* Hired thugs will attack you some time after stealing an item (this is moderately complex so be sure to check it out in the CK).
+
  
====Player Remove Item Event====
 
* A guard will chastise you for dropping a weapon.
 
* NPCs will fight over an item you dropped and attract a crowd.
 
* NPCs will chastise you for littering.
 
* An NPC will pick up the item and tell you you dropped it accidentally.
 
* An NPC will pick up dropped armor and ask if its okay to keep.
 
  
 
[[Category:Arcane University-Implementation]]
 
[[Category:Arcane University-Implementation]]

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: