Предисловие
В ZDoom есть поддержка диалогов, как это было в Strife. С её помощью, вы сможете разговаривать с NPC.
В этом уроке, мы изучим основы построения диалогов.

Создавать диалог, можно двумя способами:
- Изменяя DIALOGUE в Doom Builder.
- Создавая файл типа «DIALOGxx», где «xx» — номер карты (например DIALOG01, DIALOG02).
Мы будем использовать 1 способ, потому что он проще.
Подготовка
Для начала, поставьте на карту ревенанта, и установите у него флаг Friendly и Stand Still.

Теперь, ревенант вам не навредит. Хорошо, приступим к написанию диалога.
Создаем свой первый диалог.
Перепишите следующий код к себе в DIALOGUE:
namespace = "ZDoom";
conversation
{
actor = "Revenant";
page
{
name = "Random Doomer";
dialog = "Doom is a old game, why do you play it?";
}
}
Теперь, разберем по порядку.
namespace = "ZDoom";
Стандарт USDF (формат диалогов из Strife), требует указания пространства имен (namespace). Поэтому, данная строчка является обязательной.
Далее разберем структуру блока conversation (разговор). Синтаксис у этого блока, следующий.
conversation
{
actor = "название_актора";
page
{
name = "имя_в_диалоге";
dialog = "Сообщение_в_диалоге";
}
}
В этой строке:
actor = "название_актора";
Задается актор, с которым можно разговаривать.
В блоке page, как раз таки, и происходит все общение. Здесь задается имя собеседника (name), и сообщение (dialog).
page
{
name = "имя_в_диалоге";
dialog = "Сообщение_в_диалоге";
}
Кстати, между страницами (page), можно переключаться, но об этом позже.
Как вы могли заметить, в конце каждой строки ставится «;«, не забывайте об этом.
С кодом разобрались, тестируем.

Выбираем вариант ответа.
Также, в DIALOGUE есть блок choice, задающий вариант ответа. Теперь, измените код DIALOGUE на следующий.
conversation
{
actor = "Revenant";
page
{
name = "Random Doomer";
dialog = "Doom is a old game, why do you play it?";
choice
{
text = "choice1";
yesmessage = "hi doomer";
}
choice
{
text = "choice2";
yesmessage = "zavardo";
}
}
}
Блок choice задается внутри блока page (как и все элементы диалога). И имеет, следующий синтаксис.
choice
{
text = "вариант_ответа";
yesmessage = "сообщение_при_выборе_ответа";
}
Комментарии излишни, синтаксис предельно ясен. Ладно, время тестить.

Заключение
Диалоги позволяют ввести в Doom, новые RPG элементы. Они являются глотком свежего воздуха в создании карт. Диалоги просты, но в то же время — ограничены. Dialogue никогда не сравнится с ZScript, вот для примера, диалог на ZScript:
Но, и порог вхождения у ZScript — выше. Поэтому изучать Dialogue или нет, это ваш выбор.
Итоговый результат.
