Take me to...
- How To: Add New Quests (Missions)
- Quest Tutorial 1 - Basics
- Quest Tutorial 2 - Validation
- Quest Tutorial 3 - Localization
- Quest Tutorial 4 - Dialogue
- Quest Tutorial 5 - Branching
- Quest Tutorial 6 - Holodecks
- Quest Blueprint Catalog
- Quest Editor Task Catalog
- Common Task Options
- Task Catalog
- Activate Quest
- Add Beacon
- Add Ambient Callout
- Auto Save
- Blueprint Evaluates Success
- Branch Stall
- Check Stat
- Complete Quest, Player-facing
- Conversation Result
- Do Nothing
- Enter World
- External Mission Activated
- External Mission Completed
- (Un)Load Quest Sublevel
- Read Mail
- Player Inventory
- Proximity Check
- Send Mail
- Set Conditional Reward
- Set Schedule
- Set Stat
- Talk To
- Wait Until Next Day
- Wait Until Time Range
- Tips and Tricks
- Creating Achievements for Quests
- Merlin Trials
- Spell trap with trigger
- How To: Add or Modify Quest Dialogue
How To: Add New Quests (Missions)
Quests (a.k.a. missions) are the core method for moving both the main story and character relationships forward in Hogwarts Legacy. There are an expansive number of options for creating long, branching, and detailed quest chains using the Quest Editor, but we are going to start here by creating a single simple quest.
Quest Structure
A quest is made up of one or more steps. Each step must be completed successfully in order to complete the quest. Each step contains one or more tasks that must be completed in order to complete the step.
Quests themselves can be sub-quests of a larger quest, and together make up an overall quest line:
Tutorials
- Quest Tutorial 1 - Basics
- Quest Tutorial 2 - Validation
- Quest Tutorial 3 - Localization
- Quest Tutorial 4 - Dialogue
- Quest Tutorial 5 - Branching
- Quest Tutorial 6 - Holodecks
Catalogs
Quest Tutorial 1 - Basics
In this tutorial, we are going to build and test a simple gathering sidequest that players can take on during the early parts of the game.
Building
- Open the Quest Editor window.
The editor window can be opened by clicking the “Window” button on the toolbar, scrolling down, and clicking “Quest Editor”. - Click “New Quest” in the upper-left of the new window.
- Enter a mission name/ID for the quest and click OK:
- Traditionally, mission names have the following format:
- The first three letters are the initial letters of the first three words in the quest title
- The index of the quest in its quest chain
- Additional info about the quest (if needed) - Your new quest should now appear on the left-side pane with its first step pre-created
- If it is not already pre-selected, click on the quest ID to open the main quest page.
- Add temporary text for your “Quest Title” on the main quest page so that the quest name will show up in-game:
NOTE: We will cover full quest localization in a later tutorial. - Click “***SAVE***” at the bottom of the window to save your changes.
NOTE: Even though the Quest Editor will warn you about unsaved changes, it is recommended to save each time you make a change. - Use the first step of the quest to define prerequisites before the quest is made available to the player.
- In this example, we are going to use an “External Mission Completed” task to require the player to complete the first trip to Hogsmeade.
- This prerequisite ensures that the player knows how to forage for materials before starting our quest.
- Add a second step to the quest by right-clicking on the first step and clicking “New Step Below”.
- Use the second step to add a short 15-second delay to the start of the quest using a “Delay Once” task.
- This is standard practice, and is done so that any UI pop-ups from previous quests have time to clear before the new quest’s UI is shown.
- Next, add a third step with a “Send Mail” task.
- Set the “Character ID” to
MirabelGarlick
, and the “Mail Temporary Text” toFor your next assignment, I would like you to bring me some leaping toadstools.
. - This will send the mail to the player immediately upon their completion of the quest.
- Add a fourth step with a “Read Mail” task.
- Set the “Mail Temporary Text” to the same as the previous step.
- This will cause the quest to wait until the player reads our mail from Professor Garlick before continuing with the quest.
- Add a fifth step with an “Activate Quest” task.
- Activating the quest causes the quest to be displayed in the player’s quest UIs.
- Since it follows the read step, the quest will be activated immediately upon the player reading Garlick’s letter.
- Add a sixth step with a “Player Inventory” task.
- Set the following settings on the task:
“Inventory Check” -Has at least
“Integer” -2
“Object ID” -LeapingToadstool_Byproduct
“Show Progress OST” -Yes
These task settings will require the player to have two Leaping Toadstool Caps in their inventory before they may proceed with the quest; additionally, their progress will be displayed in the quest task UI for easier tracking. - Now that our quest is active, we also need to set text for the journal and task tracking:
- Next to “Step Journal”, set “Temporary Text” to
Professor Garlick has requested I bring her some toadstools for my next assignment.
. - Next to “Task Objective”, set “Temporary Text” to
Gathered {0}/{1} leaping toadstool caps
. - These changes will allow the player to see the text in their quest journal.
- Add a seventh step with a “Proximity Check” task.
- Give the task the following settings:
“Character ID” -Player0
“Integer” -6
“Character ID2” -MirabelGarlick
This will require the player to be within 6 meters of Professor Garlick before the quest continues. - Add the following temporary text settings to this step and task:
Next to “Step Journal”, set “Temporary Text” toNow that I have the toadstools, I should bring them to the professor.
.
Next to “Task Objective”, set “Temporary Text” toReturn to Professor Garlick with the toadstools
. - Add an additional “Add Beacon” task to the seventh step.
For the “Character ID”, setMirabelGarlick
. - This will show a beacon with the location and distance to Professor Garlick when the quest is being tracked, making it easier to find the character to finish the quest.
- Add an eighth “Remove item from inventory” step.
- Give the task the following settings:
“Integer” - 2
“Object ID” -LeapingToadstool_Byproduct
“Character ID” -Player0
“Suppress UI” -Yes
- This will cause the two Leaping Toadstool Caps the player has gathered to be taken from their inventory.
- Finally, add a “Play Dialogue” task.
- Give the task the following settings:
“Character ID” -MirabelGarlick
“Wait for Finish” -Yes
"Dialogue Temporary Text" -Ah, you brought me the toadstools. Hold onto them, as you will need them for your next assignment.
- To play audio and use localized text, you can assign an asset created using How To: Add or Modify Quest Dialogue to the “Mod Dialogue Data Path”.
- This will cause Professor Garlick to say this dialogue when the player approaches them to finish the quest.
- Note that there is no explicit step to complete the quest.Quests automatically complete when they reach the end of their step list.
Testing
Now that we have built our quest, we need to test it to verify that it is working properly.
- Open the map “Holo_Class_Herbology”.
- Holodeck maps, often abbreviated to “Holo” for short, are maps that developers use for testing specific quests.
NOTE: This map may take some time to load. - Once the map has loaded, we need to make a slight modification to it for our quest.
- Find the asset “BP_LeapingToadstool” in the Content Browser.
- Place two of them into the level by dragging and dropping them into the window.
- Set the positions of the toadstools to the following:
Toadstool 1: (356130.0, -470550.0, -86480.0)
Toadstool 2: (355650.0, -470840.0, -86480.0) - Press “Play” in the toolbar at the top to begin playing the level for the first time.
- The level will take some time to fully load.
- Open the console with the tilde (~) key, enter the cheat
Mission.ProcessHolodecks 1
, and press Enter. - Press “Stop” on the toolbar to stop the game.
- This will enable quest processing in the holodeck level so that we can test our quest.
- Press “Play” in the toolbar at the top to begin playing the level for the second time.
- Wait for the level to fully load again.
- Bring up the Quest Editor window.
- In the bottom-left corner, click “Connect to Game”.
- This will enable the Quest Editor for tracking and modifying quest state in the game.
- Double-check that our gathering quest is currently selected.
- Click the “PreActive, PreReq (step 1)” button at the bottom-left corner of the Quest Editor.
- This will cause the quest to advance past the pre-requisite step.
- There will now be a brief pause while the initial quest delay passes.
- Press Start on a controller when the Owl Post dialog box appears.
Pressing Escape will exit PIE unless you rebind the PIE exit key! - This dialog box occurs because of the mail from Professor Fig we receive due to our prerequisite quest, not our quest.
- Open the mail from our quest and Professor Fig’s letter, then exit the menu.
- You should see the letter text we created in the “Send Mail” task.
- Open the quest log and select our quest.
- Check that the quest text and task text are correct.
- Exit the menu and go back to the game.
- Turn around from the level start point.
- The leaping toadstools we placed in step 2 should be just behind the start point.
- Forage from the leaping toadstools to progress the quest to the final step.
- Observe that the number in the task UI updates when each toadstool cap is added to your inventory.
- Walk to Professor Garlick to complete the quest.
- The beacon we added should show you the path to the professor as well as the distance to her.
- Once you approach Professor Garlick, the quest should complete.
- The caps in your inventory should also be gone once the quest has completed.
Troubleshooting
Quest doesn’t show up in the quest menu
- Make sure the quest has an Activate step, and that the Activate step has been run.
- Make sure the quest has a localization key or temporary text for its title
Quest progress isn’t showing in HUD or quest menu
- Make sure the quest step has a localization key or temporary text for its “Task Objective” field.
- Make sure “Show Progress OST” is set to “Yes”.
Quest Tutorial 2 - Validation
In the previous tutorial, we set up a basic quest and tested that it worked properly. In addition to manual testing, the Quest Editor can also validate the settings of your quest before you play it. The Quest Editor’s validation can also help diagnose issues with your quest if you are having issues.
Validating Quests
- Start by selecting our quest from the first tutorial.
- Then, click on the “Validate” button in the lower-right corner of the Quest Editor
- After a few moments, a text editor will be opened that shows a few issues with our quest:
Fixing Quest Issues
Architect
The “Architects” field was typically used internally to know who to contact about issues with a quest. Even though it’s less useful when modding, silencing the warning will make it easier to read the overall issue list.
- The “Architects” field is found in the main quest settings:
- Set the “Architects” field to
Modder
.
Player Inventory
For now, we will ignore the warning about localization. We will cover that in a later tutorial.
Let’s take a look instead at the ‘Locks to true once task completes the first time'
warning. This warning is requesting we lock the inventory check once the player has acquired the correct number of Leaping Toadstool Caps.
In our case, we actually do not want to do this, as we need to ensure the player doesn’t use up the caps before they hand in the quest. If we were using the gains/loses at least
“Inventory Check”, this would be a good box to check since they wouldn’t be turning in that inventory.
However, just to show how to silence the warning, here is how to fix it:
- Select step 6 containing the player inventory step.
- Check the ‘
Locks to true once task completes the first time'
checkbox.
Results
Now that we have made our changes, the validation warning list should be much smaller.
In the next tutorial, we will tackle localization, which will fix most of the remaining warnings.
Quest Tutorial 3 - Localization
When testing the quest, you may have noticed all the temporary text shown by the quest has been [in brackets]:
The brackets notify you that this temporary text will not be displayed in the retail game! (Any bracketed text will be empty in the retail game.)
In order for the text of your quest to be displayed in the retail game, that text must be set up with the localization system. The text does not need to be translated to every language, but the text must exist within the localization system in order to be displayed by the game. As we saw in tutorial 2, the validator will warn you about unlocalized text for this reason.
Creating Localized Text
Localized text for quest data can be created directly from the Quest Editor using the “Create Text Key” buttons provided next to each localizable text field. Examples of adding each kind of text are shown in each of the following subsections:
Quest Title
- Open your quest in the Quest Editor if it is not already and remain on the initial page.
- Click the “Create Text Key” button on the far right of the “Quest Title” row.
- In the pop-up that appears, the quest title’s localization key is pre-generated, and its temporary text is automatically added.
- You may edit the text if desired, but DO NOT edit the key!
- Press “OK” to save the new key.
- The new localization key will be automatically applied to your quest’s title field.
Owl Mail
- Open the “Send Mail” step of your quest in the Quest Editor (if needed).
- Click the “Create Text Key” button on the far right of the “Mail Temporary Text” row.
- In the pop-up that appears, the owl mail’s localization key is pre-generated, and its temporary text is automatically added.
- You may edit the text if desired, but DO NOT edit the key!
- Press “OK” to save the new key.
- The new localization key will be automatically applied to the step’s “Mail Text Key” field.
- Update your accompanying “Read Mail” step’s “Mail Text Key” field with the new localization key.
NOTE: If your “Send Mail” and “Read Mail” steps do not match, the “Read Mail” step will fail!
Step Journal Text
- Open the journaled step of your quest in the Quest Editor (if needed).
- Click the “Create Text Key” button on the far right of the “Step Journal” row.
- In the pop-up that appears, the step journal’s localization key is pre-generated, and its temporary text is automatically added.
- You may edit the text if desired, but DO NOT edit the key!
- Press “OK” to save the new key.
- The new localization key will be automatically applied to the step’s “Step Journal Text Key” field.
Task Objectives
- Open the tracked step of your quest in the Quest Editor (if needed).
- Click the “Create Text Key” button on the far right of the “Task Objective Text Key” row.
- In the pop-up that appears, the task objective’s localization key is pre-generated, and its temporary text is automatically added.
- You may edit the text if desired, but DO NOT edit the key!
- Press “OK” to save the new key.
- The new localization key will be automatically applied to the step’s “Task Objective Text Key” field.
- Double-check that “Show Progress OST” is set to “Yes”.
- If this is set to “No”, the progress values in the localized text will stay at 0/0!
Testing the Localization
- Restart PIE after saving the quest.
- Verify that the various text field(s) no longer show [brackets] around the text.
Using Other Localizations in Quests
Once your localization keys have been created with a name matching the quest, the keys should appear in the drop-down boxes for each quest, step, or task:
Once the localization key has been set, the “Temporary Text” field will disappear and the localized text for that key should appear instead:
Troubleshooting
I don’t see my localization key in a drop-down menu
- Double-check that your key exists via the Localization Text Editor.
Double-check that the localization key matches your quest name.
For example: if your quest name is “QUE_01”, make sure your localization key contains “QUE_01”. - Double-check that the localization key contains the correct key values (e.g. “OWL_” for owl mail text).
Any localization keys created by the Quest Editor should use the correct values for you. - Worst case, you can add an “Extra Filter” to your quest that matches your localization key.
See the Tips and Tricks page for more details.
My quest isn’t showing up in the Quest Menu
- Make sure the quest has an Activate step, and that the Activate step has been run.
- Make sure the quest has a localization key for its title.
Quests without a title will not appear in the quest UIs, even when activated.
My task objective’s progress doesn’t update in the HUD and/or Quest Menu
- Double-check that “Show Progress OST” is set to “Yes”.
This setting tracks and updates the progress numbers for the localized string.
Quest Tutorial 4 - Dialogue
- Create Initial Mod Dialogue Data
- Apply Mod Dialogue Data to Quest
- Testing the Dialogue
- Localizing the Dialogue Subtitle
In the very first tutorial, you may recall that we added a “Play Dialogue” step at the very end of the quest as a placeholder. In this tutorial, we will finally fill in that placeholder step with dialogue data that can play both text and audio (if desired).
For this tutorial, we will create modded dialogue that is text-only; please read the “How To: Add or Modify Quest Dialogue” page for details on adding audio to the dialogue.
Create Initial Mod Dialogue Data
First, we must create a Mod Dialogue Data object to contain the quest’s dialogue.
- Right-click on the context menu while within your mod’s content folder.
- Hover over the “Sounds” category
- Click “Mod Dialogue Data”.
- Give your new Mod Dialogue Data blueprint a name and press Enter.
- The typical naming convention is to use the prefix “MDD_”, but this is not required.
- Double-click the new blueprint to open it.
- Check “No Audio”.
- Set “Display Duration Override” to 10 seconds.
- Set “Unlocalized Subtitle” to the text from the original quest step, “Ah, you brought me the toadstools. Hold onto them, as you will need them for your next assignment.“.
- Save the blueprint.
Apply Mod Dialogue Data to Quest
- If the Quest Editor was already open while creating the Mod Dialogue Data, close it.
The drop-down menus in the Quest Editor need a restart to find your new data. - Open the Quest Editor.
- Open your quest.
- Navigate to the “Play Dialogue” step.
- Click on the “Mod Dialogue Data Path” drop-down on the far right (not the “Dialogue Event” drop-down on the left).
- Select the path to your newly-created mod.
- If you do not see it, make sure you have saved the data and restarted the Quest Editor.
- Save the quest.
Testing the Dialogue
- If it is not open already, open the level “Holo_Class_Herbology”.
- Start a PIE session and proceed through the quest as in the first tutorial.
- At the end, observe that the dialogue subtitle now appears for 10 seconds, as we have set.
- Note that the text is in brackets, however.
- That means that the text is unlocalized and will not show up in the retail game.
- We will fix that by localizing our text in the next section.
- Stop the PIE session.
Localizing the Dialogue Subtitle
- Open the “Localization Text Editor” tool.
- Enter a memorable ID for the subtitle’s localization key.
- The naming convention is to use the same name as the Mod Dialogue Data, but this is not required.
- Enter the unlocalized dialogue text as the localization text.
- Click “Apply Changes”.
- To confirm that your changes were applied, you can use the search field to find your new ID in the loc data.
- Open your Mod Dialogue Data blueprint.
- Enter the localization key you set in step 2 in the “Loc Direct Key” field.
- Save the blueprint.
- Re-test the dialogue as described in the previous section.
- The dialogue should no longer appear in brackets, and the character names should appear as they would in the retail game.
Quest Tutorial 5 - Branching
Recap/Intro
In the previous tutorials, we finished creating a simple gathering quest wherein the player must bring two Leaping Toadstool Caps to Professor Garlick.
In this tutorial, we are going to use branching to make the quest timed. If the player does not gather the toadstool caps in time, the mission will fail.
Making a Branch Point
First, we need to create a branch point (stall) within the quest to which we can add branches.
- Right-click step 6 (GatherToadstools) and click “New Step Below”, to create a new step 7.
- Name the new step 7 “BranchStall” and set its task to a “Branch Stall” task.
- Click on step 6 again and check the “Branch evaluation step” checkbox at the top.
- The step’s name on the left and its background on the right should turn blue.
- In the new “Step nickname to jump to” drop-down that appears, select “GarlickProximity”.
- (Optional, but recommended) Add colors to the steps on the left by right-clicking each step, hovering “SetColor”, then selecting a color.
- This helps differentiate branches visually when viewing the quest’s steps.
- For this tutorial, it is recommended to use the following colors:
Green for step 6
Yellow for step 7
Green for steps 8-10 - You should now re-test the quest within the editor.
It should behave exactly the same as before the addition of the branch stall.
Adding a Second Branch
Now that we have a branching point (stall), we can add our second failure branch.
- Right-click step 6 (GatherToadstools) and click “New Step Below”, to create another new step 7.
- This time, add a “Wait Until Time Range” task:
Name the step “WaitForDaybreak”.
“Begin Time” should be 600 (sunrise).
“End Time” should be 601. - Right-click on the overall quest (AQG_01) and click “New Step”.
- This will create a new step 12.
Name the step “FailQuest”.
Set step 12’s task to be “Kill Mission”.
“Mission ID” should be AQG_01.
“Integer” should be 1 (make the quest invalid) - Click on step 7 again and check the “Branch evaluation step” checkbox at the top.
- The step’s name on the left and its background on the right should turn blue.
- In the new “Step nickname to jump to” drop-down that appears, select “FailQuest”.
- (Optional, but recommended) Add a Red color to the fail branch’s steps:
Join the Branch Ends
We now have two branches, but the branches will cause issues with each other unless we create an end point where both of them can join back up. Specifically, the success branch will run into the failure branch unless we have it go to another step.
- Right-click on the overall quest (AQG_01) and click “New Step” a second time.
- This will create a new step 13.
Name the step “QuestComplete”.
Leave the task as “Do Nothing”. - Right-click on step 11 (GarlickSuccessDialog) and click “New Step Below”.
- This will create a new step 12.
Name the step “GoToQuestComplete”.
Set the task to “Goto Step”.
Set “Step Name” to “QuestComplete”.
(Optional) Set the color of the step to Green to match the rest of the success branch. - Now the success branch will skip the fail branch and go to the final step when it is done.
The failure branch does not need a go to step, as it will naturally do the following quest complete step when it is done.
Testing
- Open the level “Holo_Class_Herbology” in the editor and click “Play”.
- Once the level has loaded, progress the quest normally or use the Quest Editor until you have read Garlick’s mail.
- Open the debug menu by pressing Ctrl+middle mouse click.
- Click the “System” button in the top bar, then click “Schedule Manager”.
- The schedule manager will appear, allowing you to see the current in-game time.
- Click the “Close” button in the top bar to close the debug menu.
- The schedule manager will stay docked, allowing us to see it as we move.
- Open the console with tilde (~).
- Enter the command “scheduler.SetDateTime 05:55” and press enter.
- The in-game time should then be set to 5:55 a.m.
- A few seconds later, the quest’s fail branch should be executed, removing the quest from your quest log.
- You can then use the Quest Editor to reset the quest and verify the success branch works properly.
Results
We now have a quest with two possible outcomes:
- The player successfully delivers the toadstool caps
- The player fails to get the caps in time and the quest fails.
From here, there are still some more things we could add to polish and improve the quest:
- Update the quest text and dialogue to mention the failure conditions
- Send mail to the player if they fail so that they know what happened to the quest
- Add additional branches (if desired) from the branch point we created
Quest Tutorial 6 - Holodecks
In previous chapters of this tutorial, we have been using the level “Holo_Class_Herbology” to test our quest. The “Holo_” prefix indicates levels that are what the developers call “holodeck” levels, which test specific quests or functionality and are otherwise not used in the game.
In this tutorial, we will create our own custom Holodeck for our quest that will load much more quickly than “Holo_Class_Herbology”, making iteration of the quest much faster.
Level Setup
First, we need to set up a level with all of the NPCs and objectives we need for the quest.
- Create a new level using the “Default” preset
- Click on the floor plane and expand its scale in X, Y, and Z to 4.0.
- This will give us more room to place objects and move around during testing.
- Save the level.
- Typically, the name should be prefixed with “Holo_”, but that is not required.
- Remember this name, as it will be needed when setting the level’s schedule.
Navigation
- Click on “Modes” in the top row, then click “Navigation Editor.”
- In the tab that shows up on the left side, click on the head to go to “Place Navigation Actors”.
- Click and drag a “Navmesh Island Marker”, dropping it onto the floor in the level window.
- Click “Add Navmesh”.
- This builds a navigation mesh for NPCs to use, starting at our placed marker.
- If done correctly, the entire floor should now be glowing gold. (This glow only shows up in the editor.)
Stations
- In the Content Browser, search for the blueprint “BP_StationBed”.
- Click and drag the blueprint, dropping it onto the floor in the level window.
- In the new “BP_StationBed” object’s details, scroll down to the StationComponent.
- Set the “Character” in the StationComponent to “MirabelGarlick”.
- The bed station gives an initial point at which the NPC will spawn when we provide it a schedule later.
Objectives
- In the Content Browser, search for the blueprint “BP_LeapingToadstool”.
- Click, drag, and drop two of them onto the floor in the level window.
At the end of this step, you should have a level resembling the following:
Schedule Setup
Next, we need to add a schedule to our map so that NPCs will spawn into it.
- Go to “Window” → “DB Text Entry”, and click on “Static” to open the Static DB Text Entry tool.
- Search and/or find the table “SchedulesForLevels”.
- Double-click on the table to open it for editing.
- Scroll to the bottom and add the following settings to the bottom row of the table:
LevelName: Holo_QuickGather
ScheduleName: Schedule_SpawnOnly
WorldKeys: Hogwarts,Hogsmeade,Overland - This applies to our level the most simple premade schedule available and gives it the same behavior as the overland.
- Click the plus icon in the bottom-left of the window to add the new row to the table.
- Your level should then be shown in the numbered rows of the table. (You can search for it, if needed).
Testing
You should now be able to test your quest in this new holodeck in exactly the same way as “Holo_Class_Herbology”. However, this level will load significantly more quickly!
Quest Blueprint Catalog
There are a number of nodes available to allow blueprint to interface with the quest system. The most commonly used nodes are listed here, along with how they can be used.
Accessor Blueprints
Get Mission Name
Returns a Name
identifying the given mission.
A drop-down menu with all mission names is provided to ensure an existing mission name is returned.
Get Mission Status
Returns a MissionStatus
enum representing the current status of the mission (e.g. pre-activation, completed).
Arguments
- Mission ID -
Name
containing the ID of the mission for which to get the status.
This node is often used in conjunction with a switch node to take action across multiple mission states:
Get Mission Step Nickname
Returns a String
containing the nickname for the current step of the given mission.
Arguments
- Mission ID -
Name
containing the ID of the mission for which to get the current step nickname.
Get Mission Step Completed
Returns true
if the mission has completed the step with the given nickname.
Arguments
- Mission ID -
Name
containing the ID of the mission for which to check completion. - Step Nickname - The nickname for the step for which to check completion.
This is useful when wanting to trigger a blueprint action during a specific step of a mission.
Event Blueprints
Complete Blueprint Mission Task
Sends an event to the Mission Manager that the current blueprint has successfully evaluated for the given mission and step nickname.
Arguments
- Mission ID -
Name
containing the ID of the mission for which to send a completion event. - Mission Step Nickname - The nickname for the step for which to send a completion event.
This node is always paired with a “Blueprint Evaluates Success” task that will evaluate to true when the event is sent:
Request Mission Updates
Registers the current blueprint with the Mission Manager so that it receives notifications when a mission is updated.
Arguments
- Mission ID -
Name
containing the ID of the mission for which to request mission updates.
This is typically used in conjunction with a “Bind” node to listen for update events. For example:
Setter Blueprints
Set Stat
Sets a given game stat to a given value.
Arguments
- Key -
Name
containing key of the stat to set. - Value -
Integer
value to which to set the stat.
In general, this node should be used in conjunction with a “Get Stat Name” node to ensure that the stat key is valid:
This node is often called to use a stat a “variable” for a quest. (See the Stats section of Tips and Tricks.) The stat can then be checked using the “Check Stat” task in a quest:
Quest Editor Task Catalog
- Common Task Options
- Task Catalog
- Activate Quest
- Add Beacon
- Add Ambient Callout
- Auto Save
- Blueprint Evaluates Success
- Branch Stall
- Check Stat
- Complete Quest, Player-facing
- Conversation Result
- Do Nothing
- Enter World
- External Mission Activated
- External Mission Completed
- (Un)Load Quest Sublevel
- Read Mail
- Player Inventory
- Proximity Check
- Send Mail
- Set Conditional Reward
- Set Schedule
- Set Stat
- Talk To
- Wait Until Next Day
- Wait Until Time Range
The quest editor has a large number of tasks available for use. This document lists all of the major tasks (both action and evaluation), as well as a brief summary of what the task does and its available options. There are many more niche tasks available; their usage may be gleaned from the task’s tooltips.
NOTE: This list is organized alphabetically, mixing both types of tasks, to match the organization in the editor.
Common Task Options
There are a number of task options that are commonly available across many tasks. If you see an option in another task that isn’t shown in that task’s option list, it is likely in this section.
Gates beacon
When this is checked on an evaluation task in the same step as an “Add Beacon” task, the beacon will only be shown if the task evaluates to true.
NOTE: This option does not work for “Deliver To”, Proximity”, or “Talk To” tasks, as those have special beacon rules.
Gates interact
When this is checked on an evaluation task in the same step as a “Deliver To”, “Interacted With Object”, or “Talk To” task, the interaction or talk option will not be visible if the task evaluates to false.
Locks to true once task completes the first time
If checked, once this evaluation task has evaluated to true, it will always be true thereafter (even if it evaluates to false later).
Some tasks (e.g. deliveries) have this forced to checked, as it only makes sense to deliver something one time.
Reds convo
When this is checked on an evaluation task in the same step as a “Talk To/Deliver To” task, the option to talk or deliver will be red if the task evaluates to false. If the player hovers over the red conversation option, it will use the evaluation task to display the reason.
Show Progress OST
If ‘Yes’, the progress of the player towards this task will be shown in the UI.
Task Comments
Editor-only comments to display for this task.
This is often used to mention who on the team is responsible for this task, but is also useful for giving more context about the task for future designers.
Task Objective
Allows specific objective text to be displayed in the UI for this task.
- Task Objective Text Key
- The localization key for the text to display for this task objective.
- Temporary Text
- The non-localized text to display for this task objective when no localization key is available.
This gating task does NOT affect step completion
Marks an evaluation task as used to gate other tasks, but not one that affects overall step completion.
This is useful when using an evaluation task to hide beacons and/or interacts but don’t want it to appear in the task UI.
NOTE: This setting only appears when the “Gates beacon” and/or “Gates interact” options are checked.
Task Catalog
Activate Quest
Action Task
Tells the quest systems (e.g. the quest log) that the quest is now active. The task’s title, description, tasks objectives, etc. will then become visible.
After this task runs, the quest will remain active until the all steps in the quest have run or the Complete Quest, Player-facing action is run (see below for details).
Options
- Auto-Track
- If
Yes
, the player's quest tracker will automatically be set to track this quest. - If
OnlyIfNotTrackingAnotherMission
, the player’s quest tracker will automatically be set to track the quest if they are not already tracking another quest.
- If
- Suppress UI
- If
Yes
, the player will not receive the usual quest pop-ups telling them that this quest was activated.
- If
Add Beacon
Evaluation Task
Adds a beacon to a character, location, or dungeon entrance.
NOTE: This is generally paired with another evaluation task that the beacon will be highlighting in the UI for a player
Options
- Beacon Type
- The type of beacon to display.
- A standard list is provided, from the standard beacon to larger-area beacons.
- Auto Detect
- If
Yes
, the character/location/dungeon targeted by the beacon will be automatically detected from other tasks in the step instead of using the fields in this task.
- If
- Character ID
- The identifier of the character (as defined in the
CharacterDefinition
table) who should receive the beacon.
- The identifier of the character (as defined in the
- Location ID
- The identifier of the location (as defined in the
Locations
table) that should receive the beacon.
- The identifier of the location (as defined in the
- Dungeon Entrance
- The dungeon identifier (as defined in the
DungeonEntrances
table) that should receive the beacon.
- The dungeon identifier (as defined in the
- Authored Path
- Name of a BP_AuthoredPath object in the world to show as the in-game path to the beacon.
- If not specified, the path will be automatically generated from the navigation mesh.
- Area Height
- The height at which the beacon area should be displayed (relative to the target).
- Area Respect Height
- If
Yes
, the area will only be shown when the player’s height is relatively close (~3 meters) to the area’s height. - This can be very useful in areas that have large height variations (e.g. Hogwarts).
- If
- Beaconable Object ID
- If this string matches the Beaconable Object ID (defined in the object’s interface), the beacon will seamlessly transition into the object’s interaction when the player approaches.
- Beacon Priority
- Defines this beacon’s priority versus other beacons in the area.
- If there are multiple beacons with the same priority in the area, the first one found wins.
- Fallback Meters
- The maximum distance a character can be from the beacon location before the beacon will be shown.
- Attach to Task Above
- If checked, this beacon will not be shown until the above evaluation task is true.
- No Nav Help
- If checked, this beacon will not show the blue navigation help line in the minimap.
- If checked, this beacon will not show the blue navigation help line in the minimap.
Add Ambient Callout
Action Task
Adds a callout (gossip, acknowledgements, etc.) to ambient characters.
Options
- Ambient Callout ID
- Identifier for a callout (as defined in the
MissionEditorAcknowledgmentCalloutList
) that should be added.
- Identifier for a callout (as defined in the
- Ambient Callout Temporary Text
- Temporary text to display for this task when there is not an existing callout available.
- Persist After Quest
- If
Yes
, this callout will persist after the quest completes. - NOTE: The callout will eventually be phased out, but over a longer period of time.
- If
Auto Save
Action Task
Causes the game to automatically save.
Blueprint Evaluates Success
Evaluation Task
Pauses a given quest until a blueprint node sends an event that this task has been completed.
This task works only in conjunction with the “Complete Blueprint Mission Task” blueprint node.
Branch Stall
Evaluation Task
Pauses a given quest until a previous branch evaluation step returns true.
This is used only in quests that branch. (See How To: Set Up a Branching Quest).
Check Stat
Evaluation Task
Pauses a given quest until one of a player’s stats meets a certain criteria.
Statistics like this are generally used to track mission progress as a sort of variable. (See the Stats section of Tips and Tricks.)
Options
- Stat ID
- The identifier for a statistic (as defined in the
StatsDynamic
table) to check
- The identifier for a statistic (as defined in the
- Stat Check
- The criteria the player must meet for the statistic
- One of 'Is at least', 'Is at most', 'Is exactly', 'Gains at least', 'Loses at least', 'Bit is set', 'Bit is not set', ‘Number of bits set is’, or ‘has changed’.
- Integer
- The value of the criteria that the player must meet
- The value of the criteria that the player must meet
Complete Quest, Player-facing
Action Task
Tells the quest systems (e.g. the quest log) that the quest has been completed. The task’s title, description, tasks objectives, etc. will then be hidden.
Options
- Suppress UI
- If
Yes
, the player will not receive the usual quest pop-ups telling them that this quest was completed.
- If
Conversation Result
Evaluation Task
Causes the quest to wait for a specific conversation result to occur.
Typically, this is used for conversations with multiple options (e.g. place a bet, or not place a bet). In that case, you would have two of this task looking for both results. If you want to check for a single result, the “Talk To” task is better suited.
Options
- Conversation ID
- The conversation identifier (as defined by Articy) of the conversation the player must have.
- Conversation Temporary Text
- The temporary text that should be displayed for this conversation if the Conversation ID is invalid.
- Conversation Result
- (Optional) The name of the conversation result (e.g. ‘BribeAccepted.true’) that must come out of the conversation for this task to evaluate to true.
- These results are defined in the Articy tool and are conversation-specific.
Do Nothing
Action Task
Performs no action, continuing onto the next task and/or step.
This can be useful when a mission needs a step nickname to point to for branching or goto.
Enter World
Evaluation Task
Causes the quest to wait until the player has loaded into the given world or biome.
Options
- World ID
- The name of the level (as defined in the editor) that the player must enter.
- Text
- If the world doesn’t appear in the ‘World ID’ drop-down, the world name can also be typed here.
- Biome ID
- The biome that the player must enter.
- Must be one of: ‘Study’, ‘Biome_COAST’, ‘Biome_FRST’, T'Biome_GLND', ‘Biome_BOG’, or ‘Biome_TUND’.
- Wait for Curtain
- If
CurtainRaised
, this will not be true until the loading screen “curtain” has disappeared.
- If
External Mission Activated
Evaluation Task
Causes the quest to wait until the player has activated one or more other quests before proceeding.
Options
- Mission ID<2/3/4>
- Identifiers for quests (as defined in the
MissionDefinition
table) to check.
- Identifiers for quests (as defined in the
External Mission Completed
Evaluation Task
Causes the quest to wait until the player has completed one or more other quests before proceeding.
Options
- Mission ID<2/3/4>
- Identifiers for quests (as defined in the
MissionDefinition
table) to check.
- Identifiers for quests (as defined in the
- Completion Type
- CompleteOrPostActive - Is true whether the player completes the quest, or if it becomes non-active via other means (e.g. failure).
- CompleteOnly - Is true only if the player completes the mission.
(Un)Load Quest Sublevel
Loads (or unloads) a quest sublevel into the given world.
Quest sublevels are set up specifically for one or more quests within a one or more specific worlds. They will often contain special volumes, blueprints, and objects to allow the player to fulfill quest objectives.
When a quest completes, the quest sublevel will be unloaded automatically (if a task does not unload it beforehand).
Options
- Sublevel
- The name of the sublevel to (un)load.
- World ID
- The name of the level (as defined in the editor) within which the level should be loaded.
- Use Top Parent Name
- If
Yes
, the level will be loaded with the parent quest’s name instead of the sublevel name.
- If
Read Mail
Evaluation Task
Causes the quest to wait until the player has read a given piece of mail.
Options
- Mail Text Key
- The localization key of the mail that the player must read.
- Mail Temporary Text
- The temporary text of the mail that the player must read.
- The temporary text of the mail that the player must read.
Player Inventory
Evaluation Task
Causes the quest to wait until the player has the correct amount of an item in their inventory before proceeding.
- Inventory Check
- The type of check to perform during the inventory evaluation.
- Has at <least/most>
- Includes inventory the player has entering the task.
- Gains at <least/most>
- Player must gain/lose this amount after the task was started.
- Has at <least/most>
- The type of check to perform during the inventory evaluation.
- Integer
- The amount of the given inventory that the player must have
- Object ID
- The identifier of the item (as defined in the
ItemDefinition
table) that the player must have
- The identifier of the item (as defined in the
- Inventory Reason
- The means by which the player must gain/lose the item.
- Must be one of: Sold, Purchased, Stolen, Planted, 'Potion brewed', or Used
- Character ID
- The identifier of a character (as defined in the
CharacterDefinition
table) to/from whom the player must gain/lose the item
- The identifier of a character (as defined in the
Proximity Check
Evaluation Task
Checks that a character (such as the player) is within a certain distance of a character, location, named volume, or dungeon entrance.
Options
- Character ID
- The identifier of the character being checked for proximity.
- If the player should be checked, use the character identifier
Player0
.
- Integer
- The distance (in meters) the player should be within to pass the proximity check.
- Character ID 2
- The character identifier (as defined in the
CharacterDefinition
table) to which the character must be in proximity.
- The character identifier (as defined in the
- Location ID
- The location identifier (as defined in the
Locations
table) to which the character must be in proximity.
- The location identifier (as defined in the
- Named Volume
- The volume identifier (as defined in the
LocationNamedVolumes
table) to which the character must be in proximity.
- The volume identifier (as defined in the
- Dungeon Entrance
- The dungeon identifier (as defined in the
DungeonEntrances
table) to which the character must be in proximity.
- The dungeon identifier (as defined in the
- Proximity Check
- The type of proximity check that should be used to evaluate proximity.
- Must be one of ‘Radius’, ‘OutsideRadius’, ‘InVolume’, ‘NotInVolume’, ‘InStationSite’, or ‘NotInStationSite’.
- Grace Seconds
- The seconds that the player is allowed to not fulfill the proximity condition before the step fails.
- Only applies when used in failure steps.
- Mount Allowed
- If
Yes
, the proximity check will be allowed to be true even if the player is on a mount.
- If
Send Mail
Action Task
Sends a piece of mail to the player from the given NPC character.
Options
- Character ID
- The identifier for the character (as defined in the
CharacterDefinition
table) who will be sending the mail.
- The identifier for the character (as defined in the
- Mail Text Key
- The localization key for the text shown when the player opens the mail.
- Priority
- The priority of the mail
- Container Size
- Size of the container containing any items attached to the mail.
- Container
- The
VContainerID
(in theVirtualContainerList
table) of a container to add to the player's inventory when the mail is opened. - NOTE: This is not used the the main game, but it should still work if used.
- The
- Mission Critical
- If
Yes
, this piece of mail can’t be deleted until the quest has been completed.
- If
- Force Open
- If
Yes
, the player will be forced to open the mail when it is received.
- If
Set Conditional Reward
Action Task
In a quest, it is possible to add a “Conditional Reward Nickname to each reward entry.
For reward entries with a nickname, this task enables the nicknamed reward to be rewarded to the player when the quest completes.
Options
- Text
- The “Conditional Reward Nickname” of the reward that should be added to the reward list upon quest completion.
- The “Conditional Reward Nickname” of the reward that should be added to the reward list upon quest completion.
Set Schedule
Action Task
Forces an NPC to change to a different schedule.
WARNING: If the NPC does not have a schedule matching the given key in the given world, they will not appear!
WARNING 2: This task overrides all activity overrides from other tasks! As such, it should only be used when adding overrides is insufficient (e.g. retiring a character to a location permanently).
Options
- Character ID
- The character identifier (as defined in the
CharacterDefinition
table) to whom to apply the schedule.
- The character identifier (as defined in the
- Schedule Key
- The key in the schedule database the NPC should use.
- World ID
- The world name (as found in the editor) in which this schedule change should be applied.
- Location ID
- (Optional) The location identifier (as defined in the
Locations
table) at which the NPC should start their new schedule.
- (Optional) The location identifier (as defined in the
- Apply Schedule Now
- If
Yes
, the schedule change will occur immediately, instead of when the NPCs next schedule change would occur.
- If
- Apparate
- If set, the character will use the given apparate effect to transition to the new schedule and location.
- If set, the character will use the given apparate effect to transition to the new schedule and location.
Set Stat
Action Task
Modifies a stat with the given value.
Statistics like this are generally used to track mission progress.
Options
- Set Stat Type
- The method by which the stat should be set.
- Must be one of: Set, Add, Remove, ‘Set Bit’, or ‘Clear bit’.
- Integer
- The value to which to set the stat.
- Stat ID
- The identifier for a statistic (as defined in the
StatsDynamic
table) to set.
- The identifier for a statistic (as defined in the
Talk To
Evaluation Task
Checks that the player has completed a certain conversation with a certain character before the quest can continue running.
Options
- Character ID
- The character identifier (as defined in the
CharacterDefinition
table) with whom the player must talk.
- The character identifier (as defined in the
- Conversation ID
- The conversation identifier (as defined by Articy) of the conversation the player must have.
- Conversation Temporary Text
- The temporary text that should be displayed for this conversation if the Conversation ID is invalid.
- Conversation Result
- (Optional) The name of result (e.g. ‘BribeAccepted.true’) that must come out of the conversation for this task to evaluate to true.
- These results are defined in the Articy tool and are conversation-specific.
- Step Name
- (Optional) The nickname of a step to execute just before the conversation begins.
- NPCStart
- (Optional) The location identifier (as defined in the
Locations
table) at which the conversation NPC should be placed before the conversation begins. - This is useful when the NPC may be sitting at a bench, and you want them to be standing for the conversation.
- (Optional) The location identifier (as defined in the
- Conversation Preset
- The conversation preset (as defined in “DA_ConversationPresets”) that should be used to affect the posing of the characters during the conversation.
- WARNING: This should only be used if you know exactly where the conversation is taking place, as it modifies the positioning of the characters!
- Player Finish
- (Optional) The location identifier (as defined in the
Locations
table) at which the player will be placed when the conversation finishes.
- (Optional) The location identifier (as defined in the
- Disable Game Features When Done
- (Optional) Game features that should be disabled when the conversation has completed.
- Must be one of ‘FastTravelAndWaiting', ‘MountsAndFastTravel’, or 'AutoSave’.
Wait Until Next Day
Evaluation Task
Causes the quest to wait until the following day to continue running.
Options
- Time
- The time on the next day at which the quest should continue running.
- Integer
- If nonzero, the number of additional days to wait (0 is the default, and means the next day).
- If nonzero, the number of additional days to wait (0 is the default, and means the next day).
Wait Until Time Range
Evaluation Task
Causes the quest to wait until the time is within the given time range before continuing to run.
NOTE: This task may evaluate to true on the same day or even immediately if the player is before or already within the given time range. If a delay is needed, use the Wait Until Next Day task.
Options
- Begin Time
- The start of the time range at which this step may continue to run.
- End Time
- The end of the time range at which this step may continue to run.
Tips and Tricks
Copy/Paste
Quests
Quests can be duplicated by right-clicking a quest and selecting “Copy Quest” in the dropdown menu.
The copied quest can then be pasted by clicking the “Paste Quest” button in the upper-right of the left pane and entering a new name for the pasted quest.
Steps
Steps can be copied from other quests by right-clicking on the step and selecting “Copy Step”.
The copied step can then be pasted by right-clicking on a different step and clicking “Paste Step(s) Below”.
Tasks
Tasks can be copied from other steps by right-clicking on a task and selecting “Copy Task”.
The copied task can then be pasted by right-clicking on the target step and clicking “Paste Task”.
Extra Filters
In some cases, your quest may need to use data from another quest (such as localization keys, conversation IDs, locks, etc.). By default, quest drop-downs are filtered by the quest name, which means you cannot see data from other quest in the drop-downs.
However, by adding a quest name (or other string) to the “Extra Filters” field of the quest data, the drop-down filters are updated to include that string.
This allows your quest to make use of that data from the newly-allowed quest.
Favorites
Clicking the star next to the search bar shows only quests that you have marked as a favorite.
To add a quest to your favorites, right-click it and select “Add to Favorites”.
Organization
To aid readability of the quest structure, quests can be indented and colored by right-clicking them and selecting the relevant option(s) under the Organization heading.
Saving
In general, values set and evaluated by the Quest Editor are automatically saved after evaluation and do not need to be worried about. However, values set and evaluated by blueprint are not automatically saved. It is recommended to use game stats if you need blueprint to remember quest state (see below).
Additionally, the “Auto Save” task can be used to force the game to save if needed.
Stats
Since quests do not have any way of holding state internally, game stats are often used as a sort of variable in their place. This can be accomplished by using the “Set Stat” node in blueprint in conjunction with the “Set Stat” task.
For example, if we wanted a specific part of the quest to wait until a training dummy was defeated, we could add a stat to track that. Then, when the dummy dies, we set that stat to 1:
The quest can then wait for that value to be set to 1:
Tooltips
The majority of the fields in the Quest Editor have tooltips. When in doubt about what an option does, hover over it with your mouse and check for a tooltip!
Validation
Using the “Validate” button at the bottom of the quest editor, you can have the game double-check that all of your quest settings are valid.
If any issues are found with the quest, a text editor window will be opened showing any issues that need to be fixed.
Creating Achievements for Quests
In this guide, we will learn how to create Achievements and use them in a Quest.
But first, let’s look into what an Achievement is and what uses they have.
So what are Achievements and what can they be used for?
To clarify, Achievements here don’t necessarily mean Steam or Epic Achievements. They are used in game to track certain actions the Player takes and can be used for Quest purposes, tutorials or Challenges. For example, an Achievement will be useful to know if the Player has used a spell x amount of times, or used a specific spell on a specific target, or have used a certain potion in combination with another item.
Instructions
Creating an achievement
These steps will cover the creation of a custom Achievement. We will use a specific example, but to see the full potential of Achievements, it is advised to take a look at some other pre-made Achievements and their Evaluation Rules in the Achievement Criteria database (Windows>DB Text Entry>AchievementCriteria).
1. To create our first Achievement, let’s open the AchievementDefinition table in Windows>DB Text Entry> AchievementDefinition).
2. On the last row at the bottom, name your Achievement in the 'AchievementID' column. In this example we will name it ACH_Test_01.
3. For this example, in the 'AchievementType' column, select Accumulate.
- This step by step guide won’t cover all the Achievement types, but examining how other Achievements are set up could be useful for more advanced set ups.
- Click the + symbol on the left.
4. Go back to the Static tables window to search and open the ‘AchievementCriteria’ table.
5. On the last row at the bottom, find your Achievement in the drop down menu of the ‘AchievementID’ column.
6. Scroll right to the ‘Occurances’ column to determine how many times we want the Player to do the action we will specify in the next step. For this example, writing 2 will suffice.
7. Scroll right to the 'EvaluationRule' column. What we will write here will determine what the player needs to do to trigger the Achievement.
8. For this example, let’s use a common spell usage rule and modify it a little bit. So, in this column, type [Event: ActorHitBySpell; Spell: Depulso; InstigatorName: BP_Biped_Player; VictimIsA: Enemy].
This will make it so the Achievement will trigger when BP_Biped_Player (the player) hits any enemy with the spell Depulso. And since we put 1 in Occurances column, it needs to be done twice.
9. Press the + symbol on the the left.
Using this achievement in a quest
Now that our custom Achievement has been created, let’s see if it works by creating a Quest that needs the Player to complete the Achievement in order to progress.
1. Open Windows> Quest Editor.
2. In the window that opens, click ‘New Quest’ and let’s name it ‘TES_01’.
3. Change the first Task to an Activate Quest Task. Selecting ‘Auto Track’ ‘Yes’ will make sure this Quest appears in the HUD when playing.
4. Right click on the first step on the left and select ‘New Step Below’.
5. For this task, search for ‘Check Achievement (Quest)’ and select it.
6. In the ‘AchievementID’ field, search and select your custom Achievement (Ach_Test_01).
7. In the ‘Show Progress OST’, select Yes.
8. In the Temporary Text box of the Task objective, we can write 'Use Depulso on an enemy {0}/{1} times. This will make it so we can see the progress in the bottom left corner of the HUD.
9. Press ‘Save’ at the bottom of the Quest Editor window.
10. Now, place some enemies in a level so we can use Depulso on them.
11. Press the ‘Play’ button on top of the viewer.
12. Use Depulso twice on an enemy (use debug command ‘Spells.EnableAllSpells 1’ to enable Depulso).
13. That’s it, the Achievement should have worked and the Quest should now be completed.
Locking and unlocking achievements
It’s important to note that for a Quest Achievement, we want to lock that Achievement until the Quest has been activated, so that the Player doesn’t complete the Achievement before being actively doing the Quest we just set up. This can be done by creating a custom Lock, and setting up our Quest to unlock the chievement.
1. In the Static Tables window (Window> DB Text Entry), search and open the LockDefinition Table.
2. On the bottom row, in the ‘LockID’ column, name your Lock. For this example, let’s name it 'Lock_Test_01'.
3. In the ‘LockTypeID' column, select 'Simple_Locked’.
4. Close and re-open the 'AchievementCriteria' Table.
5. In this Table, search for your Achievement (Ach_Test_01).
6. Scroll to the right to the 'PrerequisiteLockID' column, search for your custom Lock and select it.
7. Click somewhere else in the Table to save your work (the selected row should turn green to indicate it has been saved).
8. Close and re-open the Quest Editor window.
9. Search for our custom Quest (TES_01).
10. Right click on the ‘Activate’ step on the left and select ‘New Step Below’.
11. Select ‘Set Lock (Status)’ in the Task field.
12. Search and select your new Lock (Lock_Test_01).
13. Set the ‘Lock State’ field to 'Unlocked.
14. Press ‘Save’ at the bottom of the Quest Editor window.
15. Playtest your Quest again to see if it works.
If you wish to dig deeper into Achievements, take an extended look at the Evaluation Rules of other Achievements in the AchievementCriteria table.
For example, the '' Achievement needs the player to spawn a Chomping Cabbage, a Mandrake and a Venomous Tentacula while in combat (Condition: InCombat; Event: ItemConsumed; Item: ChompingCabbage_byproduct; Item: Mandrake_byproduct; Item: VenomousTentacula_byproduct).
Another example, 'HOMEWORK_Broom_Purchase' needs the player to purchase a broom with this rule: Event: PlayerInventoryChanged; ItemType: Broom; InventoryReason: Purchase.
Another quick example, 'HOMEWORK_Combat_UseIncedioOnSpiderCritical' needs the player to kill a Spider using fire damage with this rule: Event: CharacterDied; InstigatorName: BP_Biped_Player; VictimIsA: Spider; VictimImpactTag: IA.ImpactType.Incendio|IA.ImpactType.Fire;.
Explore these additional criterias to see all the possibilities this feature allows.
Merlin Trials
Follow this small guide about how to setup Merlin Trials (reffered to as “Sphinx Puzzles” within the Creator Kit).
Necessities
All Merlin Trial types in can be found in different folders under Content > Gameplay > SphinxPuzzles > Blueprints. In each folder these should follow the “BP_Sphinx_Puzzle_X_PuzzleName” naming convention.
For testing purposes, before launching in Play in Editor, make sure to enter the following debug commands:
Spells.EnableAllSpells 1
, to have the appropriate spell to complete the trial.InventoryAdd Mallowsweet_ByProduct 99
, to be able to start the trial.Mission.Complete MRT_01
, to be able to access the trial.
InventoryAdd
and Mission.Complete
must be re-entered every time you restart Play In Editor. At the bottom of this page presents a solution to activate these commands as soon as the level starts.
Instructions
For the purposes of this guide, we will be working with the fire pillars Merlin Trials, which is associated with the B-Braziers folder.
1. Within your map, place down one copy of BP_Sphinx_Puzzle_B_Brazier.
2. In the Details tab of BP_Sphinx_Puzzle_B_Brazier, scroll down to the Puzzle tab. Everything you need to complete the trial should be here.
3. To place the fire pillars, click on the + icon in the Column Placements parameter.
4. You can move around the pillars with their respective locator (purple diamond)
5. You can adjust the pillars' height to Large, Medium and Small.
6. Test your Merlin Trial by Play in Editor, and enter the 3 debug commands listed in Necessities above.
You now have a Merlin Trial to be place within your own mod!
Extras
To simplify testing, open the level blueprint and connect 3 Console Commands nodes into Event BeginPlay.
Enter in the 3 debug commands listed above into the String inputs.
Spell trap with trigger
Use this guide to create triggered Spell Traps.
Here is a step-by-step guide on how to set up a functional spell trap blueprint in the Creator Kit. The basic setup will allow you to create a trap which will fire a specific spell at the location of the player when they step inside the trigger. The advanced setup will add an audio effect, change the material of the trap to make it look inert and have the trap rearm after 5 seconds.
Basic Trap Instructions
1. Assemble all necessary blueprint assets:
- a spell that will be fired at the player.
- In this case we will use DA_ConfringoSpellRecord. (Confringo)
- a static mesh for the physical appearance of the trap. (optional)
- In this case we are using SM_HW_QEH_RuneC.
- a material for the texture of the trap. (optional)
- In this case we are using a variant of MI_HW_QEH_Runes with custom emissive settings.
Parts of the trap setup can most likely be reverse engineered to make other interesting traps and puzzles within the Creator Kit. Experiment and be creative!
Though not much is required for the basic setup to function, some visual markers for the trap can make your traps unique to your design.
2. Build the blueprint for the trap:
- Place down an empty actor.
- This will be the point from which the trap fires a spell
Make sure that the empty actor is not colliding with anything other objects or environment as this will cause the trap to fire before it is intended to.
- Turn the empty actor into an Actor Blueprint and open this Blueprint.
Make sure to add any new components inside the blueprint and not as a seperate actor. - Add a box collision component to the trap blueprint.
- Resize and move the box collision component to your liking.
- Rename the box collision to something akin to PlayerTrigger (optional)
- Add the static mesh to the trap blueprint. (optional)
- Add the material to the static mesh. (optional)
1. Click Edit Blueprint and select Apply Instance Changes to Blueprint.
2. Click Edit Blueprint and select Open Blueprint Editor.
3. Select the PlayerTrigger (upper left) and select ‘On Component Begin Overlap’ (Bottom right, scroll down)
4. Build the event graph for the trap as follows:
5. Compile and Save the blueprint.
6. Test your trap within the editor to ensure its functionality.
Advanced Trap Instructions
Using Unreal Engine’s blueprint coding system, you can create advanced traps
These advanced spell trap have the potential to do the following:
- Fire a selected spell at the player’s location.
- Play a selected sound effect for emphasis.
- Disarm the trap temporarily.
- Mute the color of the static mesh of the blueprint.
- Rearm the trap after a specified amount of time.
- Restore the previous color of the static mesh of the blueprint.
1. To get started, make a basic spell trap minus the destroy component node in the event graph.
2. Add the following elements:
- Post event at location is used to play audio kinetic sound files.
- Set box extent resizes the player trigger to effectively disarm and rearm the trap.
- Set material changes the texture of the magical rune make it look inactive/active.
- Delay is used to wait a few seconds before rearming the trap.
3. Compile and Save the blueprint.
4. Test your trap within the editor to ensure its functionality.
How To: Add or Modify Quest Dialogue
During quests, NPCs regularly deliver dialogue to the player in addition to the quest text shown in the log.
While the developers' dialogue tools are not available in the Creator Kit, a similar set of tools is provided so that modders can add their own dialogue to the game.
Both Unreal and Wwise audio are supported in modded dialogue, and subtitles can also be added for improved accessibility.
Take me to...
How To…
Import Dialogue Audio
The modded dialogue system supports all types of audio that Unreal supports. See Unreal’s Audio System Overview for more information.
When creating new audio, it is recommended to create a 16-bit PCM WAV file. Tools such as Audacity can be used to record, edit, and export these types of audio files.
Once you have dialogue ready, you can import it into Unreal via the following steps:
- Drag and drop the dialogue audio into a Content Browser window:
- If you prefer, you may also use the “Add/Import” button in that same window.
- A SoundWave asset will be created for the audio.
- You can test that your audio imported correctly by clicking the play button that appears when you hover over the asset.
- Create a Sound Cue for the new dialogue audio via the “Add/Import” button.
- Open the newly-created Sound Cue.
- Add a “Wave Player” node to the Sound Cue, and link that node to the output node.
- Set the “Sound Wave” in the “Wave Player” node to your imported audio.
- Your audio is now ready for dialogue!
You can test that the cue is working by clicking the play button that appears when you hover over the asset.
Create Mod Dialogue Data
- Right-click on the context menu while within your mod’s content folder.
- Hover over the “Sounds” category
- Click “Mod Dialogue Data”.
- Give your new Mod Dialogue Data blueprint a name and press Enter.
The typical naming convention is to use the prefix “MDD_”, but this is not required. - Double-click the new Mod Dialogue Data blueprint to open it.
Create Text-Only Dialogue
- Create a new mod dialogue data blueprint.
- Check “No Audio”.
- Set “Display Duration Override” to 10 seconds.
- Set “Unlocalized Subtitle” to the desired subtitle text.
- Save the blueprint.
Create and Use Localized Text in Dialogue
- Complete all steps in the https://wbg-avalanche.atlassian.net/wiki/spaces/PT/pages/edit-v2/219185661#Create-Text-Only-Dialogue section above.
- Open the “Localization Text Editor” tool.
- Enter a memorable ID for the subtitle’s localization key.
The naming convention is to use the same name as the Mod Dialogue Data, but this is not required. - Enter the unlocalized dialogue text as the localization text.
- Click “Apply Changes”.
To confirm that your changes were applied, you can use the search field to find your new ID in the loc data. - Reopen your Mod Dialogue Data blueprint.
- Enter the localization key you set in step 2 in the “Loc Direct Key” field.
- Save the blueprint.
Create Audio-Only Dialogue
- Create a new mod dialogue data blueprint.
- Depending on whether you are using Unreal (modded) or Wwise (original game) audio, set either “Audio Cue” or “Wwise Audio Event”, respectively.
- Save the blueprint.
Create Audio Dialogue With a Subtitle
- Create a new mod dialogue data blueprint.
- Depending on whether you are using Unreal (modded) or Wwise (original game) audio, set either “Audio Cue” or “Wwise Audio Event”, respectively.
- Set either or both of “Loc Direct Key” and/or “Unlocalized Subtitle” for the subtitle of your dialogue.
- (Optional) Set the “Display Duration Override” if you would like to give the reader more time to read the subtitle.
By default, the subtitle will only be shown as long as the audio is playing. - Save the blueprint.
Add Non-Interactive Dialogue to a Quest
“Play Dialogue” tasks play dialogue immediately, without the player needing to interact. This can be useful for “eavesdropping” style messages that the player should hear.
- Open the Quest Editor from the “Window” menu.
- Open a quest to which dialogue should be added.
- Add a “Play Dialogue” step within that quest.
- Select a “Character ID” of the character that should speak the line. This will set the name displayed for subtitles, as well as where any dialogue audio will emit.
- If the quest should wait for dialogue to complete before continuing, set “Wait for Finish” to “Yes”.
- Click the drop-down box labeled “Mod Dialogue Data Path”.
- Select the path to your newly-created Mod Dialogue Data.
- Click “SAVE” at the bottom of the Quest Editor window to save your dialogue changes.
Add Interact-to-Talk Dialogue to a Quest
“On-Demand Greeting” tasks only begin playing dialogue once the player interacts with the given character. This is useful for starting off quests, as well as for simulating cutscenes (see the following section).
- Open the Quest Editor from the “Window” menu.
- Open a quest to which dialogue should be added.
- Add an “On-Demand Greeting” step within that quest.
- Select a “Character ID” of the character that must be interacted with for the line to be spoken. This will also set the name displayed for subtitles and where any dialogue audio will emit.
- If the quest should wait for dialogue to complete before continuing, set “Wait for Finish” to “Yes”.
- Click the drop-down box labeled “Mod Dialogue Data Path”.
- Select the path to your newly-created Mod Dialogue Data.
- Click “SAVE” at the bottom of the Quest Editor window to save your dialogue changes.
Simulate a Cutscene Using Quest Dialogue
The Creator Kit does not contain the tools needed to create cutscenes in the game’s original style. However, by combining “On-Demand Greeting” tasks with “Play Dialogue” tasks in order, cutscenes can be “simulated” to provide a similar feel (minus the camera angles).
- Open the Quest Editor from the “Window” menu.
- Open a quest to which a cutscene should be added.
- Add an “On-Demand Greeting” step within that quest with the “Character ID” set to NPC who should start the cutscene.
- Next, add a “Play Dialogue” step, setting the “Character ID” to “Player0”.
This will play dialogue as and from the player’s character. - Then, add another “Play Dialogue” step, setting the “Character ID” back to the other NPC.
- Repeat as needed for each line of dialogue in the cutscene.
- Finally, double-check that all of the cutscene’s steps have “Wait for Finish” set to “Yes”.
This ensures that each line is allowed to complete before the next line begins.
Troubleshooting
Imported Audio Not Playing
- Double-check that your audio uses a format supported by the Unreal Editor.
- Check that the volume settings of your Sound Wave and Sound Cue are set appropriately.
Subtitle Not Displaying
- If the dialogue subtitle shows up in the Creator Kit but not in the retail game, make sure your subtitle is localized.
Unlocalized text is never displayed in the retail game. - If the dialogue is text-only, make sure that the “Display Duration Override” is set.
Otherwise, the subtitle will display for the zero-duration of your unset audio!
Mod Dialogue Data Not in Quest Editor
- Close and reopen the Quest Editor to ensure that any newly-created dialogue data is found.
- Double-check any name filters set in the quest.
You may need to rename the dialogue data to match the quest name or add Extra Filters.
Overlapping Dialogue
- If you have multiple “Play Dialogue” steps overlapping each other when playing back, make sure both tasks have “Wait for Finish” set.
Otherwise, the second step will not wait for the first dialogue to complete before starting!