HOW-TO: Use quest nodes

To add a new quest node: right click on the grey background of the Quest Editor’s graph.

Complexity Management


In

Where the signal enters a given phase (or in the case of a .w2quest file, where the signal starts). The naming of these matters, you can have any number of Inputs for phases to control signal flow.

  • socketID - Name of the Input

Out

Output of the phase/quest. Once the signal passes this all other nodes inside the phase will die. Useful for organising content and turning off a large chunk of logic at the same time.

  • socketID - Name of the Output

Phase

A phase is basically a folder, used to structure the quest. Technically they are not required, but it is advised to add them for better structure. They can also either have their own external .w2phase asset assigned to them or they can be embedded in the parent without a file.

  • phase - Reference to the .w2phase asset, can be left empty in which case it will be embedded in the parent.

  • requiredWorld - Waits until the player is in the correct world to start the signal (completely optional)

  • isBlackscreenPhase - Keeps a blackscreen until the phase has completed and the signal has reached the Output. Used for cleaning up content after a scene or a quest so the player does not see it (for example, despawning NPCs or hiding some props).

  • blackscreenFadeDuration - How quickly the blackscreen fades in/out.

  • saveMode - Governs whether the player is allowed to save the game while the signal is inside this phase.

  • soundsBanksDependency - Choose which soundbanks to force load when this phase is active.

  • playGoChunk - Chooses which content chunk to load for the phase.

 

 

Flow Control


Condition

Checks whether a specific condition is currently True or False and immediately releases the signal through either the True or False output.

  • questCondition - a conditions to check for.

Cut Control

Kills the signal in the connected Pause or Phase. To make a connection hold the left mouse button on the lightning bolt and drag a line to any Pause or Phase you wish to connect it to.

  • permanent - Whether the Pause or Phase can be activated again or not. If False then the nodes that are connected will only lose their current signal, but if another signal enters the node it will activate again. But if permanent is set to True then another signal entering the node will not activate.

Pause

One of the most important nodes in the quest graph. Holds the signal inside of it until a provided condition is met. Once the conditions are met, the signal releases from the output.

  • conditions - An array of conditions, all must be fulfilled in order for the signal to progress.

Random

Releases the signal through a random output. Use the right click - context menu to add additional Outputs.

  • TerminationInput - Terminates the node

 

Deletion marker

You may have noticed that when you delete a node, it creates another node in its place. This is a deletion marker and it makes sure that the signal in the quest can’t die when the quest is updated in a patch.

It works in two ways:

  • If the signal enters this node normally, it simply releases it immediately from the output without doing anything. Kind of like a dummy node.

  • If the Deletion Marker used to be a node that had a signal inside it (for example a Trigger Pause), then it will also immediately release its signal. This way if there are changes made to the quest graph in an update and a player loads a save with those changes, the quest will continue. (Check out quests\bugfixing_phase.w2phase for a showcase of this)

To get rid of nodes completely, simply use the Ctrl-X shortcut without ever pasting it.

 

 

 

 

Game Systems Control


Change World

Changes the world and optionally plays a video.

  • worldFilePath - deprecated

  • newWorld - List of worlds to pick from

  • loadingMovieName - A .usm file to play during the loading, if the movie is shorter than the load time then a loading screen is shown at the end.

  • targetTag - Target location inside the world where to teleport to.

Checkpoint

Saves the game.

  • enableSaving - When set to False, blocks saving the game until this setting is set to True again.

  • ignoreSaveLocks - Ignores any locks added to saving by either this node or by quest phases.

Denied Area

Toggle whether a Denied Area (an area that blocks access for NPCs) is enabled or disabled.

  • entityTag - Tag of the Denied Area placed in the world.

  • enabled - area enabled.

Hide/Show layers

Used to Show and Hide layers in the world. It has two main purposes, to show changes in the world based on player action/time, and to optimize the game not to have to load too many quest objects when they are not needed.

  • world - What world to do the show/hide in. Not necessary to add when the world you are doing this in is already open in the editor.

  • layersToShow - Choose which layers to show.

  • layersToHide - Choose which layers to hide.

  • syncOperation - When set to False it shows/hides the layers asynchronously (meaning there might be a slight delay). When set to True it forces the change in the same frame (which might cause a stutter in performance, depending on the amount of objects in the layers).

FactsDB Change

Manages the games Fact Database. The primary method of tracking different player choices in the game, story moments. (For example, if you killed an NPC, or were rude to them in dialogue).

  • factID - Name of the fact you want to add, which can later be checked in a Pause or Condition node.

  • value - The value the fact should get, by default it adds to the current value.

  • setExactValue - When set to False, the value is added to the current value (negative values also work). When set to True it sets the exact nr that is set in the value property.

Manage Fast Travel

Operate on fast travel points.

  • operation - Choose what to do with the fast travel points.

  • enable - A single property to enable the fast travel points.

  • show - A single property to show the fast travel points.

  • affectedAreas - Worlds to do the operation in.

  • affetedFastTravelPoints - Tags of the fast travel points in the world that will be affected.

Minigame

Starts a minigame.

  • minigame - Choose between fist fighting and gwent.

    • FistFighting

      • fightAreaTag - Area that the enemies and the player are stuck in for the duration of the minigame.

      • playerPosTag - Teleports the player to this target at the start of the minigame.

      • toTheDeath - Whether its to the death or low health.

      • endsWithBlackscreen - Whether to fade out when the minigame ends, used to transition into scenes.

      • enemies - Tags of all the enemies that will fight the player and tags of their starting positions.

    • Gwent

      • deckName - Enemy gwent deck.

      • difficulty - Enemy difficulty level.

      • aggression - Enemy aggression.

      • allowMultipleMatches - When losing the match, allow for a rematch.

      • forceFaction - Forces the player faction.

Manage Switch

Operate on Switches.

  • switchTag - Tag of the switch in the world.

  • operations - Operations to choose from.

  • force - Choose whether to force the operation, if set to False it may fail depending on the current state of the switch.

  • skipEvents - Skips all events that the switch triggers when its state is changed.

 

Time Management

Allows you to modify the game time.

  • PauseTime - Choose whether to Pause or Resume the game time.

    • pause - True = Pause, False = Resume.

  • SetTime - Sets the game time.

    • newTime - Choose the hours, minutes and seconds to set the time to.

    • callEvents - Sends out time related events.

  • ShiftTime - Shifts the time from the current game time.

    • timeShift - Choose how many hours, minutes and seconds to advance the game time from the current time.

    • callEvents - Sends out time related events.

 

Journal entry

Activating single journal entries. Used for Character entries, bestiary, tutorials.

  • entry - Journal entry reference.

  • showInfoOnScreen - Show the update on the UI.

Map Pin State

Toggles the visibility of map pins.

  • mappinEntry - Journal reference to the map pin.

  • enableOnlyIfLatest - Enable the map pin only if its the latest one on the list of map pins. (Used for example when following a long track of clues and only enabling a new map pin when you get further than before - in combination with the next property)

  • disableAllOtherMapPins - When dealing with multiple map pins in an objective, you can disable all the other ones with this property so you dont have to do it one by one.

 

 

 

 

Quest


Main way to update the quest journal.

  • questEntry - Journal entry to update.

  • showInfoOnScreen - Should the update be shown on the UI.

  • track - Whether to force track the objective/quest when this update is called.

  • enableAutoSave - Whether to auto save after the update.

Objective Counter

Used to update objectives with a counter. Feed the signal into the correct input to Increment, Decrement or Reset the counter.

  • manualObjective - Journal entry reference.

  • showInfoOnScreen - Show the update on the UI whenever the signal gets into the node.

Quest Monster Known

In a monster hunt, shows the full picture in the Bestiary for the given monster.

  • manualQuest - Quest reference.

 

Track Quest

Force track a specific Quest or Objective.

  • questEntry - Quest reference.

  • objectiveEntry - Objective reference.

 

 

 

 

Logical


And

Releases the signal only when ALL inputs have received a signal. Use Right click and “Add Input” to add more inputs.

Used when you need the signal to continue only when multiple things have happened, usually in combination with Pause nodes. (For example, the player killed the enemies AND picked up an item)

Xor

Immediately release the signal when any of the inputs is triggered AND block the signal from ever firing again through this node. Meaning that the signal only ever passes this node once. Use Right click and “Add Input” to add more inputs.

Used when any number of things can progress the quest. (For example, the player has entered a trigger OR gotten too close to an enemy OR pulled out their sword)

Prepare Scene

Loads the scene into memory ahead of time to reduce loading time when actually starting it.

  • storyScenes - List of scenes to preload.

    • scene - Scene path.

    • input - Which input to load for this given scene.

Scripted Dialog

  • scene - Scene to play.

  • actorTags -

 

 

 

 

Scenes


Context Dialog

Embeds one scene inside another scene.

  • scene - Scene to embed.

  • targetScene - The scene where the above scene is put into.

Interaction Dialog

A scene that is played when interacting with the provided actor(s).

  • scene - Scene to play.

  • actorTags - Actor tags that will play the scene when they are interacted with.

  • interrupt - Whether you can interrupt the previous interaction scene while its playing. (Used mostly for gameplay scenes)

Scene

Play a scene.

  • scene - Scene to play.

  • forcingMode - Whether to wait for actors to be spawned or force spawn them.

  • interrupt - If its possible to interrupt the scene somehow.

  • shouldFadeOnLoading - Should the scene fade to black when starting.

 

PlayGo


Activate Content

Loads the required bundles.

  • playGoChunk - The bundle to load.

 

 

 

 

______________________________________
The Witcher 3: Wild Hunt Complete Edition © 2024 CD PROJEKT S.A. Published by CD PROJEKT S.A. Developed by CD PROJEKT RED. CD PROJEKT®, The Witcher®, REDengine® are registered trademarks of CD PROJEKT Capital Group. All rights reserved. The Witcher game is set in the universe created by Andrzej Sapkowski in his series of books. All rights reserved.