Class NPCDialogue
Modder-facing dialogue wrapper for an NPC. Provides helpers to create interactive conversations with branching dialogue trees, choice-based interactions, and dynamic responses. Use BuildAndRegisterContainer(string, Action<DialogueContainerBuilder>) to define custom conversations.
public sealed class NPCDialogue
- Inheritance
-
NPCDialogue
- Inherited Members
- Extension Methods
Remarks
Dialogue configuration is done in OnCreated(). Use BuildAndSetDatabase(Action<DialogueDatabaseBuilder>) for dialogue entries and BuildAndRegisterContainer(string, Action<DialogueContainerBuilder>) for conversation flows. Subscribe to choice, node, and completion events for dynamic dialogue behavior.
Properties
IsDialogueInProgress
Whether a dialogue is currently in progress for this NPC.
public bool IsDialogueInProgress { get; }
Property Value
Methods
BuildAndRegisterContainer(string, Action<DialogueContainerBuilder>)
Builds a DialogueContainer with choice-based flow and registers it by name. Use this to define custom conversations for this NPC entirely from code.
If a custom NPC, you must also call BuildAndSetDatabase for this to work
public void BuildAndRegisterContainer(string containerName, Action<DialogueContainerBuilder> configure)
Parameters
containerNamestringconfigureAction<DialogueContainerBuilder>
BuildAndSetDatabase(Action<DialogueDatabaseBuilder>)
Builds a dialogue database at runtime from string data and installs it on this NPC. Does not require asset bundles.
public void BuildAndSetDatabase(Action<DialogueDatabaseBuilder> configure)
Parameters
configureAction<DialogueDatabaseBuilder>
ClearCallbacks()
Removes all registered dialogue callbacks for this NPC.
public void ClearCallbacks()
End()
Ends any active dialogue.
public void End()
JumpTo(string, string, bool)
Immediately navigates this NPC's dialogue to a specific container and entry node. Returns true on success.
public bool JumpTo(string containerName, string entryNodeLabel, bool enableBehaviour = false)
Parameters
Returns
OnChoiceSelected(string, Action)
Register a callback to run when a choice with the given label is selected. Label must match the DialogueChoiceData.ChoiceLabel in your container.
public NPCDialogue OnChoiceSelected(string choiceLabel, Action callback)
Parameters
Returns
OnConversationStart(Action)
Register a callback to run when a conversation starts with this NPC. This fires before the dialogue is displayed, allowing you to prepare or rebuild dialogue containers.
public NPCDialogue OnConversationStart(Action callback)
Parameters
callbackAction
Returns
OnDialogueEnded(Action)
Register a callback to run when any dialogue interaction handled by this NPC ends.
public NPCDialogue OnDialogueEnded(Action callback)
Parameters
callbackActionThe callback to invoke when the dialogue handler ends an interaction.
Returns
- NPCDialogue
This dialogue wrapper.
Remarks
The callback is handler-wide and does not identify the ending container. It runs when the native handler ends an interaction, including explicit calls to End(). Register it against the active NPC handler; it does not persist through destruction and recreation of the handler.
OnNodeDisplayed(string, Action)
Register a callback to run when a dialogue node with the given label is displayed.
public NPCDialogue OnNodeDisplayed(string nodeLabel, Action callback)
Parameters
Returns
OverrideText(string)
Overrides the shown dialogue text (e.g., for temporary notifications). You generally won't want to use this
public void OverrideText(string text)
Parameters
textstring
PlayReaction(string, float, bool)
Plays a reaction by key. If duration is -1 the underlying system decides duration.
public void PlayReaction(string key, float durationSeconds = -1, bool network = false)
Parameters
SetChoiceEnabled(string, bool)
Enables or disables a controller-level dialogue choice by its destination container name.
public bool SetChoiceEnabled(string dialogueContainerName, bool enabled)
Parameters
dialogueContainerNamestringThe name of the dialogue container opened by the choice.
enabledboolWhether the choice should be enabled.
Returns
Remarks
This changes only the live DialogueController choice state. It does not modify node choices,
save data, or network state. The name is matched case-insensitively against the choice's destination
container, and the method returns false when that controller choice is unavailable.
ShowWorldText(string, float)
Shows worldspace dialogue text at the NPC for a duration.
public void ShowWorldText(string text, float durationSeconds)
Parameters
Start(string, bool, string)
Starts a dialogue by container name present on the NPC's handler.
public void Start(string containerName, bool enableBehaviour = true, string entryNodeLabel = "ENTRY")
Parameters
StopOverride()
Stops any active override and resumes normal dialogue display.
public void StopOverride()
UseContainerOnInteract(string)
When the player interacts with this NPC, force using the named container for the next dialogue. Returns true if the container was found and applied.
public bool UseContainerOnInteract(string containerName)
Parameters
containerNamestring
Returns
UseContainerOnInteractOnce(string)
When the player interacts with this NPC, force using the named container once for the next dialogue. After the conversation begins, the override is automatically cleared so subsequent interactions use normal flow. Returns true if the container was found and applied.
public bool UseContainerOnInteractOnce(string containerName)
Parameters
containerNamestring