Zero files to say a line
Add the node and write in the TalkKit main screen. Content lives in the scene. No database, no resource file per line, no setup step before the first word.
Add one node, write in the dedicated TalkKit workspace, call play(). Your player controller, quests and saves keep working exactly as before.
$NPCTalkKit.play(&"greeting", {"player_name": "Alex"})Opt into as much coupling as you want, and no more:
$NPCTalkKit.request_player_lock.connect(set_player_locked)
$NPCTalkKit.event_triggered.connect(handle_talk_event)No autoload. No base class. No change to the architecture you already have.
func _on_blocked(event_id: StringName, payload: Variant) -> void:
var accepted: bool = await choice_ui.ask(payload["options"])
$NPCTalkKit.play(&"quest_accepted" if accepted else &"quest_declined")There is no condition language here because your game already has one. How branching works →