Create shopkeepers, quest givers, and townspeople.
NPCs & Dialogue
NPCs are the non-player characters that bring your world to life — quest givers, merchants, trainers, and ambient townspeople.


NPC Properties
| Property | Description |
|---|---|
| Name / Title | Display name and subtitle (e.g., "Kira — Village Blacksmith") |
| Role | Vendor, quest giver, innkeeper, blacksmith, stable master, etc. |
| Faction | Faction affiliation (affects reputation interactions) |
| Zone + Position | Which zone and X/Y coordinates |
| Portrait | Image shown during dialogue |
| Sprite | In-world visual appearance |
| Active | Whether the NPC is currently in the world |
What NPCs Can Do
| Role | Function |
|---|---|
| Quest Giver | Offers and completes quests (linked quest definitions) |
| Merchant | Has a shop with items to sell and buys player items |
| Innkeeper | Provides rest and HP/MP recovery |
| Blacksmith | Repairs equipment, may sell weapons/armor |
| Stable Master | Manages pet and mount storage |
| Trainer | Teaches the abilities on its Trainer list, for a gold or item fee |
| Guard / Ambient | Has dialogue but no special function |
> A trainer is how a spell reaches a player. Players can only cast abilities > they have learned or that their gear grants — so any spell that is not on a class > or template's starter list, in a skill book, or in a quest or event reward needs a > trainer, or nobody will ever be able to use it. See > Who can cast what.
Dialogue
There are two ways to give an NPC something to say, and you can mix them across a world.
On the NPC itself — NPC Conversations. The NPC's own Conversation card holds nodes, player choices and server-run actions: give an item, take payment, set a flag, start a quest, teleport, open a shop. This is the one to reach for when the conversation belongs to the character rather than to a spot on the map.
On a map event — the event command system, the same tool used for cutscenes. You build the conversation by chaining commands:
1. Show Text — "Welcome to my shop! See anything you like?" 2. Show Choices — "Show me your goods" / "Got any quests?" / "Goodbye" 3. Conditional Branch — check if a quest is active, if the player has an item, etc. 4. Open Shop — opens the merchant's inventory 5. Start Quest — begins a new quest
This gives you complete control over branching dialogue trees with conditions, loops, and variable tracking.
> They don't stack. If a map event is bound to this NPC, that event takes the whole conversation and the NPC's own Conversation never opens. Pick one per NPC.
Shops
NPC merchants have a configurable shop inventory:
| Property | Description |
|---|---|
| Item | Which item to sell |
| Base Price | Gold cost |
| Stock | Available quantity (-1 = unlimited) |
| Restock Interval | Seconds between restocks |
| Required Reputation | Faction reputation needed to see the item |
Stocking a lot at once
Under Stock, Add many… opens the same browsable item list the loot editor uses — search plus Category / Type / Rarity / Tier filters, shift-click for a run, and Select all N matching. Everything you tick is stocked in one save rather than one save per item, which is the difference between a two-second general store and a forty-round-trip one.
Items the shop already stocks are greyed out as added, and if a selection includes one anyway it is skipped rather than duplicated — the result line tells you how many were stocked and how many were already there. Every new row lands on Auto pricing with unlimited stock; tune the rows afterwards. Loadout kits are still added one at a time, because a stock row sells exactly one kit.
Shops also support a buyback system — items players sell to the NPC can appear for other players to purchase.
Exchange vendors (items for items)
Any stock row can be an exchange instead of a sale: the vendor asks for items and hands items back, no silver involved. Author it on the row in NPCs → Shops → (a shop) → Stock:
| Field | What it does |
|---|---|
| Exchange costs | The items the vendor wants — one or more entries of item × quantity. The player must hand over all of them per trade. |
| Gives per trade | How many of the stocked item one trade hands over (default 1). |
A row with exchange costs ignores its price fields entirely — in the shop window it lists with a ⇄ cost line, an "The vendor wants" panel showing owned vs. needed counts, and an Exchange button instead of Buy.
How to set one up:
1. Open NPCs → Shops and create a shop (or open an existing one). 2. On the Stock tab, add the item the vendor gives out, then add its Exchange costs (e.g. 5× Wolf Pelt) and set Gives per trade. 3. Assign the shop to an NPC as usual — the exchange rows sit beside normal priced rows in the same window.
Gotchas:
- Rotation and restock work unchanged — exchange rows honor stock sets, rotation groups, quantities and restock timers exactly like priced rows, so a rotating exchange list is just a rotation group of exchange rows.
- Stock counts units of the given item: a trade that gives ×5 consumes 5 stock.
- If a cost item's definition is deleted, the row is hidden rather than listed as unpayable.
- Adventurer NPCs never take exchange rows — they only spend coin.
Death VFX
Like mobs, each NPC can pick a per-NPC Death VFX from the VFX editor, falling back to the editable engine default when unset.
AI Chat (optional, runtime LLM dialogue)
When the npcAiChat feature is enabled and an AI provider/credits are configured, players can talk freely to an NPC and the server answers in character through the normal dialogue channel, with hard per-conversation budget caps. With no key or credits it simply falls back to the authored event-command dialogue — so AI chat is a live enhancement layered on top of your scripted lines, never a replacement. (This is a player-facing runtime feature, distinct from the authoring-time Studio AI; see Providers & AI Credits for the cost model.)