Dialogue and Quest System

VerifiedSafe

Complete dialogue and quest system with branching conversations, quest stages, and event triggers for narrative progression.

Sby Skills Guide Bot
DevelopmentIntermediate
306/2/2026
Claude Code
#dialogue#quests#npcs#narrative#gameplay

Recommended for

Our review

Creates a complete dialogue and quest system with branching conversations, quest stages, objectives, and rewards.

Strengths

  • Provides structured architecture using ScriptableObjects.
  • Supports multiple objective types (kill, collect, interact).
  • Includes quest state machine and prerequisites.
  • Offers template files for quick start.

Limitations

  • Requires manual setup of ScriptableObject assets.
  • Limited to predefined objective types.
  • May need additional integration for UI display.
When to use it

Use when building an NPC dialogue and quest tracking system in a Unity game.

When not to use it

Use when a simpler conversation system suffices or when you don't need persistent quest progression.

Security analysis

Safe
Quality score85/100

The skill is purely instructional content for a game dialogue and quest system. It does not contain any destructive, exfiltrating, or obfuscated commands. The allowed tools (run_command, list_dir, write_to_file) are standard and not invoked in a risky manner.

No concerns found

Examples

Kill Quest
Quest to kill 10 wolves.
Dialogue Branching
NPC offers two quest paths.

name: dialogue-quest-system description: "Complete dialogue and quest system with branching conversations, quest stages, and event triggers." version: 1.0.0 tags: ["gameplay", "dialogue", "quests", "NPCs", "narrative"] argument-hint: "action='create_quest' name='Kill10Rats' stages='Accept,InProgress,Complete'" disable-model-invocation: false user-invocable: true allowed-tools:

  • run_command
  • list_dir
  • write_to_file

Dialogue Quest System

Overview

Complete dialogue and quest system with branching conversations, multiple quest stages, objectives, rewards, and event-driven progression.

When to Use

  • Use when implementing NPC conversations
  • Use when creating branching dialogue
  • Use when tracking quest progress
  • Use when implementing objectives (kill X, collect Y)
  • Use when rewarding quest completion

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    DialogueSO                               │
├─────────────────────────────────────────────────────────────┤
│  DialogueNode[] (Speaker, Text, Choices)                    │
│  Conditions (RequiredQuest, MinLevel)                       │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                     QuestSO                                 │
├─────────────────────────────────────────────────────────────┤
│  Stages: NotStarted → InProgress → Completed                │
│  Objectives: [{Type, Target, Count}]                        │
│  Rewards: [Item, XP, Gold]                                  │
└─────────────────────────────────────────────────────────────┘

Quest States

  • NotStarted: Quest available but not accepted
  • InProgress: Quest active, tracking objectives
  • Completed: All objectives done, rewards pending
  • TurnedIn: Rewards collected, quest finished
  • Failed: Quest failed (optional)

Objective Types

  • Kill: Kill X enemies of type Y
  • Collect: Obtain X items
  • Interact: Talk to NPC, use object
  • Reach: Arrive at location
  • Escort: Keep NPC alive to destination

Best Practices

  • ✅ Use ScriptableObjects for dialogue/quest data
  • ✅ Implement ISaveable for quest progress
  • ✅ Use events for objective updates
  • ✅ Support quest prerequisites
  • NEVER hardcode dialogue text
  • NEVER forget to save quest state

Few-Shot Examples

Example 1: Kill Quest

User: "Quest to kill 10 wolves."

Agent:

// QuestSO asset with objective:
// Type: Kill, TargetId: "wolf", RequiredCount: 10
// Reward: 100 gold, 50 XP

Example 2: Dialogue Choice

User: "NPC offers two quest paths."

Agent:

DialogueNode choice = new()
{
    Speaker = "Elder",
    Text = "Which path will you take?",
    Choices = new[] 
    {
        { Text = "The Mountains", NextNode = mountainQuestNode },
        { Text = "The Forest", NextNode = forestQuestNode }
    }
};

Related Skills

  • @save-load-serialization - Persist quest progress
  • @inventory-crafting-logic - Quest rewards
  • @scriptableobject-architecture - Data patterns

Template Files

Available in templates/ folder.

Related skills