True/False Node (Conditions2)
Overview
The True/False Node is the branching and conditional logic node of the Dialogue System. It evaluates a set of Malbers Conditions2 against a target GameObject and routes the dialogue graph down either the True or False output path based on the result.
It is the primary tool for making dialogue context-aware — showing different responses based on quest state, player stats, dialogue flags, NPC state, or any other condition supported by the Malbers Conditions2 system.
The node is notably wider than others in the graph editor (minimum 450px) to accommodate the full Conditions2 property drawer inline, and resizes dynamically as conditions are added or removed.

Ports
Previous
Input
Single
Receives a connection from the preceding node.
True
Output
Single
Followed when the condition block evaluates to true.
False
Output
Single
Followed when the condition block evaluates to false.
The Previous input port accepts only a single incoming connection, unlike most other nodes which accept Multi. Plan your graph accordingly — use a preceding branching node if you need multiple paths to converge here.
Node Properties
Target (GameObjectVar)
GameObjectVar
A Malbers GameObjectVar ScriptableObject pointing to the GameObject that conditions will be evaluated against. Optional — see target resolution order below.
Conditions
Conditions2
A full Malbers Conditions2 block. Supports multiple conditions with AND/OR logic, an active toggle, and all standard Malbers condition types. Rendered as a live IMGUI property drawer directly inside the node.
Target Resolution Order
At runtime, DialogueManager resolves the evaluation target in the following priority order:
Explicit Target — the
GameObjectVarassigned to this node, if it has a valid runtime value.Player — the player GameObject from
QuestManager.Instance.playerTransform, if no explicit target is set.DialogueManager — the
DialogueManagerGameObject itself, used as a last-resort fallback.
Note:
GameObjectVaris used here (rather thanTransformVar) because the Conditions2 block must be hosted inside a ScriptableObject for proper serialization, which requires a ScriptableObject-compatible variable type.
How It Works
At runtime, DialogueManager.ProcessTrueFalseNode() calls EvaluateCondition():
If the
Conditions2block is inactive or has no conditions configured, the result defaults totrueand the True path is followed immediately.Otherwise, the resolved target GameObject is passed to
Conditions2.Evaluate(targetObject).The result (
trueorfalse) selects the corresponding output port by name — matching"True"or"False"on the outgoing edge's port name, not by list order.The graph jumps to whichever node is connected to the matching port.
If the matching port has no connection, DialogueManager logs an error and calls EndDialogue().
Supported Condition Types
The Conditions2 block supports all standard Malbers condition types, including the three custom QuestForge conditions:
C2_DialogueFlag
Checks a named boolean flag stored on DialogueManager.
C2_DialogueInt
Checks a named integer variable stored on DialogueManager against a value (equal, greater, less, etc.).
C2_DialogueString
Checks a named string variable stored on DialogueManager against a value.
(All standard Malbers Conditions2 types)
Quest state, animal state, stats, distances, tags, components, and more.
Multiple conditions can be combined with AND / OR logic within the same block.
Validation
No incoming connection
Warning
No outgoing connection
Warning
Neither a missing Target nor an empty Conditions block is flagged as an error — an empty or inactive conditions block simply defaults to
trueat runtime, which is a valid design for a node that conditionally routes only under specific circumstances.
Usage Tips
Quest state gating — use the standard Malbers
C2_QuestStatecondition (or equivalent) to check whether a quest is active, complete, or not started, and route the NPC's dialogue to an appropriate branch accordingly.Dialogue flags for conversation memory — set a
DialogueFlagusing a Malbers Event Node or code earlier in the conversation (or a previous session), then check it here withC2_DialogueFlagto detect whether the player has spoken to this NPC before.No target needed for dialogue variables —
C2_DialogueFlag,C2_DialogueInt, andC2_DialogueStringread directly fromDialogueManagerand do not require a Target to be assigned.Default to True when empty — if the Conditions block is left inactive or empty, the node always follows the True path. This can be used temporarily during graph construction as a passthrough before conditions are fully configured.
Single input port — unlike most nodes, this node only accepts one incoming connection. If you need multiple paths to converge into a single condition check, route them through an intermediate node first.
Port routing is by name — the True and False edges are matched by their port name at runtime, not by their serialization order. Re-wiring edges in the graph will not break routing as long as the port names remain correct.
Last updated