<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=NPC_Dialogue</id>
	<title>NPC Dialogue - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=NPC_Dialogue"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=NPC_Dialogue&amp;action=history"/>
	<updated>2026-10-25T14:33:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=NPC_Dialogue&amp;diff=37653&amp;oldid=prev</id>
		<title>Shokkoh: Sync from dragonminez-wiki repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=NPC_Dialogue&amp;diff=37653&amp;oldid=prev"/>
		<updated>2026-10-22T00:45:24Z</updated>

		<summary type="html">&lt;p&gt;Sync from dragonminez-wiki repository&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:45, 22 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot;&gt;Line 46:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 46:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!--T:10--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!--T:10--&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When a master has a tree, right-clicking it shows the tree &#039;&#039;&#039;instead of&#039;&#039;&#039; the master&#039;s usual options (Quests, Skills, Train and services; see [[Special:MyLanguage/Masters|Masters]]). The tree uses the same dialogue window: the line appears in the middle of the bottom band and the choices are listed on the right. Give one of your choices the &amp;lt;code&amp;gt;OPEN_QUESTS&amp;lt;/code&amp;gt; action so players can still reach the master&#039;s quests. The player must have created a character first. A master&#039;s alignment requirement does not stop the conversation; it only locks Skills, Train and new quests (see [[Special:MyLanguage/Masters|Masters]]).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When a master has a tree, right-clicking it shows the tree &#039;&#039;&#039;instead of&#039;&#039;&#039; the master&#039;s usual options (Quests, Skills, Train and services; see [[Special:MyLanguage/Masters|Masters]]). The tree uses the same dialogue window: the line appears in the middle of the bottom band and the choices are listed on the right. Give one of your choices the &amp;lt;code&amp;gt;OPEN_QUESTS&amp;lt;/code&amp;gt; action so players can still reach the master&#039;s quests. The player must have created a character first. A master&#039;s alignment requirement does not stop the conversation &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(a master who dislikes you greets you with a &quot;disliked&quot; line)&lt;/ins&gt;; it only locks Skills, Train and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that master&#039;s &lt;/ins&gt;new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;side quests, while saga &lt;/ins&gt;quests &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and quests already in progress stay open &lt;/ins&gt;(see [[Special:MyLanguage/Masters|Masters&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] and [[Special:MyLanguage/Alignment|Alignment&lt;/ins&gt;]]).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/translate&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key dmzwiki:diff:1.41:old-272:rev-37653:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Shokkoh</name></author>
	</entry>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=NPC_Dialogue&amp;diff=272&amp;oldid=prev</id>
		<title>Neb: Sync from dragonminez-wiki repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=NPC_Dialogue&amp;diff=272&amp;oldid=prev"/>
		<updated>2026-10-13T04:18:28Z</updated>

		<summary type="html">&lt;p&gt;Sync from dragonminez-wiki repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NPC dialogue&amp;#039;&amp;#039;&amp;#039; lets you give master NPCs branching conversations with JSON alone, with no Java. A dialogue tree is a set of &amp;#039;&amp;#039;&amp;#039;nodes&amp;#039;&amp;#039;&amp;#039;: each node is one line the NPC says, plus the &amp;#039;&amp;#039;&amp;#039;choices&amp;#039;&amp;#039;&amp;#039; the player can answer with. Choices can lead to another node, be hidden behind &amp;#039;&amp;#039;&amp;#039;conditions&amp;#039;&amp;#039;&amp;#039;, and run &amp;#039;&amp;#039;&amp;#039;actions&amp;#039;&amp;#039;&amp;#039; such as changing alignment, giving TP, running a command or starting a quest.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Dialogue is per-world data, like quests and wishes.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Where files go == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;world save&amp;gt;/dragonminez/dialogues/*.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The folder is created the first time the server starts, together with an &amp;lt;code&amp;gt;_example.json&amp;lt;/code&amp;gt; you can copy. Every &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt; file in the folder (no subfolders) holds &amp;#039;&amp;#039;&amp;#039;one tree for one NPC&amp;#039;&amp;#039;&amp;#039;. Files are loaded in alphabetical order; if two files target the same NPC, the later one wins.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Dialogue loads at server start and reloads with &amp;lt;code&amp;gt;/dmzreload story&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;/dmzreload all&amp;lt;/code&amp;gt;); see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/dialogue/&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;DialogueRegistry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DialogueParser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DialogueService&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DialogueAction&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Which NPCs can use it == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Dialogue trees work on &amp;#039;&amp;#039;&amp;#039;master NPCs&amp;#039;&amp;#039;&amp;#039;: the trainers placed by [[Special:MyLanguage/NPC Placement and Alignment|NPC Placement and Alignment]], such as Roshi or Goku. The &amp;lt;code&amp;gt;npc&amp;lt;/code&amp;gt; field is the master&amp;#039;s id. The masters DragonMineZ places by default use these ids:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;roshi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;goku&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;karin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dende&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;popo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gero&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kingkai&amp;lt;/code&amp;gt; ([[Special:MyLanguage/King Kai|King Kai]]), &amp;lt;code&amp;gt;toribot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;enma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;baba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grandkai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;otherworld_announcer&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
When a master has a tree, right-clicking it shows the tree &amp;#039;&amp;#039;&amp;#039;instead of&amp;#039;&amp;#039;&amp;#039; the master&amp;#039;s usual options (Quests, Skills, Train and services; see [[Special:MyLanguage/Masters|Masters]]). The tree uses the same dialogue window: the line appears in the middle of the bottom band and the choices are listed on the right. Give one of your choices the &amp;lt;code&amp;gt;OPEN_QUESTS&amp;lt;/code&amp;gt; action so players can still reach the master&amp;#039;s quests. The player must have created a character first. A master&amp;#039;s alignment requirement does not stop the conversation; it only locks Skills, Train and new quests (see [[Special:MyLanguage/Masters|Masters]]).&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The default quest NPCs (&amp;lt;code&amp;gt;dragonminez:quest_npc&amp;lt;/code&amp;gt;, for example Bulma) keep their quest list and do not use dialogue trees.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== File format == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;npc&amp;quot;: &amp;quot;roshi&amp;quot;,&lt;br /&gt;
  &amp;quot;start&amp;quot;: &amp;quot;greet&amp;quot;,&lt;br /&gt;
  &amp;quot;nodes&amp;quot;: {&lt;br /&gt;
    &amp;quot;greet&amp;quot;: {&lt;br /&gt;
      &amp;quot;line&amp;quot;: &amp;quot;Well, if it isn&amp;#039;t %player%! What brings you here?&amp;quot;,&lt;br /&gt;
      &amp;quot;choices&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;text&amp;quot;: &amp;quot;I want to get stronger.&amp;quot;,&lt;br /&gt;
          &amp;quot;goto&amp;quot;: &amp;quot;training&amp;quot;,&lt;br /&gt;
          &amp;quot;conditions&amp;quot;: { &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;, &amp;quot;conditions&amp;quot;: [ { &amp;quot;type&amp;quot;: &amp;quot;LEVEL&amp;quot;, &amp;quot;minLevel&amp;quot;: 5 } ] }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;text&amp;quot;: &amp;quot;Give me your money!&amp;quot;,&lt;br /&gt;
          &amp;quot;goto&amp;quot;: &amp;quot;angry&amp;quot;,&lt;br /&gt;
          &amp;quot;actions&amp;quot;: [ { &amp;quot;type&amp;quot;: &amp;quot;ALIGNMENT&amp;quot;, &amp;quot;amount&amp;quot;: -5 } ]&lt;br /&gt;
        },&lt;br /&gt;
        { &amp;quot;text&amp;quot;: &amp;quot;Show me your quests.&amp;quot;, &amp;quot;actions&amp;quot;: [ { &amp;quot;type&amp;quot;: &amp;quot;OPEN_QUESTS&amp;quot; } ] },&lt;br /&gt;
        { &amp;quot;text&amp;quot;: &amp;quot;Goodbye.&amp;quot; }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;training&amp;quot;: {&lt;br /&gt;
      &amp;quot;line&amp;quot;: &amp;quot;Ha! I like your spirit. Take these training points and come back later.&amp;quot;,&lt;br /&gt;
      &amp;quot;choices&amp;quot;: [&lt;br /&gt;
        { &amp;quot;text&amp;quot;: &amp;quot;Thank you!&amp;quot;, &amp;quot;actions&amp;quot;: [ { &amp;quot;type&amp;quot;: &amp;quot;TPS&amp;quot;, &amp;quot;amount&amp;quot;: 50 } ] }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;angry&amp;quot;: {&lt;br /&gt;
      &amp;quot;line&amp;quot;: &amp;quot;How dare you! Leave my sight at once!&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Tree === &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; Field&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; Type&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;npc&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; &amp;#039;&amp;#039;&amp;#039;Required.&amp;#039;&amp;#039;&amp;#039; The id of the master the tree belongs to (case-insensitive). An id that starts with &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; keeps the file inactive; that is how &amp;lt;code&amp;gt;_example.json&amp;lt;/code&amp;gt; stays off.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; Id of the first node. Default &amp;lt;code&amp;gt;&amp;quot;start&amp;quot;&amp;lt;/code&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nodes&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; Object&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; &amp;#039;&amp;#039;&amp;#039;Required.&amp;#039;&amp;#039;&amp;#039; Map of node id to node.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
A tree is skipped (and the reason logged) when &amp;lt;code&amp;gt;npc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nodes&amp;lt;/code&amp;gt; is missing, or when the &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; node does not exist.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Node === &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; Field&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; Type&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;line&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &amp;#039;&amp;#039;&amp;#039;Required.&amp;#039;&amp;#039;&amp;#039; What the NPC says. A translation key or plain text; supports [[Special:MyLanguage/NPC Dialogue#Placeholders|placeholders]]. A node without &amp;lt;code&amp;gt;line&amp;lt;/code&amp;gt; is skipped.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;choices&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; Array&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; The player&amp;#039;s answers, listed as options. A node without choices just shows its line; the player leaves with &amp;#039;&amp;#039;&amp;#039;Close&amp;#039;&amp;#039;&amp;#039; or {{Key|Esc}}.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Choice === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Field&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; Type&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; &amp;#039;&amp;#039;&amp;#039;Required.&amp;#039;&amp;#039;&amp;#039; Button text. A translation key or plain text; supports placeholders. A choice without &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; is skipped.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; Node to show next. Leave it out (or point it at a node that doesn&amp;#039;t exist) to end the conversation.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; Object&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; Optional. The choice is only shown when the conditions are met. Same format as quest &amp;lt;code&amp;gt;prerequisites&amp;lt;/code&amp;gt; (see below). If the block can&amp;#039;t be read, the whole choice is dropped rather than shown to everyone.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;actions&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt; Array&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Optional. Actions run in order when the choice is picked (see below).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Conditions === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt; uses the quest condition-tree format: an &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;) and a list of &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;, which can be nested. Every quest condition type works, for example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{ &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;, &amp;quot;conditions&amp;quot;: [&lt;br /&gt;
    { &amp;quot;type&amp;quot;: &amp;quot;RACE&amp;quot;, &amp;quot;race&amp;quot;: &amp;quot;saiyan&amp;quot; },&lt;br /&gt;
    { &amp;quot;type&amp;quot;: &amp;quot;SAGA_QUEST&amp;quot;, &amp;quot;sagaId&amp;quot;: &amp;quot;saiyan_saga&amp;quot;, &amp;quot;questId&amp;quot;: 12 },&lt;br /&gt;
    { &amp;quot;type&amp;quot;: &amp;quot;ALIGNMENT&amp;quot;, &amp;quot;max&amp;quot;: 40 }&lt;br /&gt;
] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
The available types are &amp;lt;code&amp;gt;SAGA_QUEST&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;QUEST&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LEVEL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;STAT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RACE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLASS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SKILL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BIOME&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DIMENSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;STRUCTURE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ALIGNMENT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TIME&amp;lt;/code&amp;gt;. Field names are the same as in quests (for example, &amp;lt;code&amp;gt;LEVEL&amp;lt;/code&amp;gt; uses &amp;lt;code&amp;gt;minLevel&amp;lt;/code&amp;gt;); see [[Special:MyLanguage/Custom Quests#Prerequisites and requirements|Custom Quests]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Conditions are checked again on the server when the player picks the choice, so a hidden choice can&amp;#039;t be forced.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Actions === &amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; Fields&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALIGNMENT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; Adds &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt; to the player&amp;#039;s alignment (negative values lower it).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TPS&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; Gives &amp;lt;code&amp;gt;amount&amp;lt;/code&amp;gt; training points (positive amounts only).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;COMMAND&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;command&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; Runs a command from the server with operator permissions. &amp;lt;code&amp;gt;%player%&amp;lt;/code&amp;gt; is replaced with the player&amp;#039;s name.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;START_QUEST&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;quest&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; Starts a quest with the same rules as starting it from the quest log (prerequisites, start requirements, party). Use the side quest id (for example &amp;lt;code&amp;gt;&amp;quot;bulma_gero_blueprints&amp;quot;&amp;lt;/code&amp;gt;) or &amp;lt;code&amp;gt;sagaId:questId&amp;lt;/code&amp;gt; for a saga quest (for example &amp;lt;code&amp;gt;&amp;quot;saiyan_saga:3&amp;quot;&amp;lt;/code&amp;gt;). If the quest can&amp;#039;t be started, nothing happens.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OPEN_QUESTS&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; None&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; Switches the same window to the NPC&amp;#039;s quest list (accept, turn in, see locked quests) and ends the tree (&amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt; is ignored).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is accepted as a generic alias for &amp;lt;code&amp;gt;command&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;quest&amp;lt;/code&amp;gt;. An action with an unknown &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; is skipped and logged.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Placeholders == &amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
Lines and choice texts can contain these placeholders; they are filled in for the player reading them:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; Placeholder&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; Value&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%player%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; Player name&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%race%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt; Race id&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%class%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt; Class id&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%level%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt; Player level&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%alignment%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt; Alignment&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%deaths%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt; Number of deaths&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%form%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt; Active form (&amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt; when untransformed)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;%dimension%&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt; Dimension name (for example &amp;lt;code&amp;gt;overworld&amp;lt;/code&amp;gt;)&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Placeholders also work inside your own translations. Java add-ons can add more with &amp;lt;code&amp;gt;DMZTextPlaceholders.register(...)&amp;lt;/code&amp;gt;; see [[Special:MyLanguage/Implementation and Events#Custom text placeholders|Implementation and Events]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Translations == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; are shown translated when they match a translation key in a language file, and as written otherwise. The name tab above the line shows the NPC&amp;#039;s usual name (its entity name, for example &amp;lt;code&amp;gt;entity.dragonminez.master_roshi&amp;lt;/code&amp;gt;). Custom translations merge with the Crowdin ones in the same way as for [[Special:MyLanguage/Custom Races#Step 4: Add translation keys|custom races]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Reload and validate == &amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
# Save your file under &amp;lt;code&amp;gt;&amp;lt;world save&amp;gt;/dragonminez/dialogues/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Validate the JSON syntax (see [[Special:MyLanguage/How to JSON|How to JSON]]).&lt;br /&gt;
# Run &amp;lt;code&amp;gt;/dmzreload story&amp;lt;/code&amp;gt;; see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]].&lt;br /&gt;
# Check the server console: it logs how many trees were loaded, and names any node, choice or action that was skipped.&lt;br /&gt;
# Talk to the NPC and walk through every branch, including the choices gated by conditions.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navbox Modding}}&lt;/div&gt;</summary>
		<author><name>Neb</name></author>
	</entry>
</feed>