Удобный исходный код для квестов

2012-03-08T19:02:23+07:00

В моём представлении, идеальный движок для квестов работал бы на таком исходном коде. Как должны выглядеть диалоги, я пока не придумал.

В качестве примера взята комната из квеста “Обещание”, сама игра всё равно была гадостной. Писал, держа в уме Javascript.

Перед входом в библиотеку
=======================

Я стою в полутёмном коридоре перед широкой дверью. На двери висит огромный замок.

Рядом со мной стоят брат Кельтор и брат Гарард.

[предметы]

дверь
замок
брат Кельтор
брат Гарард

[вход]
Пользуясь тем, что на нас уже никто не обращал внимания, мы встали из-за стола и пошли по коридорам, направляясь одним словом: ,,Авось!''. Брат Кельтор обладал удивительной интуицией; он моментально нашёл (по запаху, что ли?) нужную дверь с надписью: <<ЧИТАЛЬНЯ>> и объяснил, что она -- нужная.

музыка: music/whisky_es_a_szaxofon.xm

положить в инвентарь "Письменное Слово"

["Письменное Слово"][постучать "Письменным Словом" по двери]
Я стучу книгой по двери, но она не желает открываться. Видимо, книги предназначены не для этого.

["Письменное Слово"][прочитать в "Письменном Слове" о замках]

Вот что говорит о замках Книга: ,,Каждый из нас имеет замок. Он хранит самые важные тайны. Важно лишь найти ключ... но где искать ключ? Конечно же, в себе...''

Нет, мне кажется, что это немного не то, что мне надо.

["Письменное Слово"][осмотреть "Письменное Слово"]
Очень умная книга, которую мне дали мои новые друзья. Листал, ни бельмеса не понял. В ней есть заклинания?

["Письменное Слово"][показать "Письменное Слово" Кельтору]
quote()

["Письменное Слово"][показать "Письменное Слово" Гарарду]
quote()

[замок][осмотреть замок]
Огромный навесной замок размером с мой кулак. Ключа, конечно же, у меня нет.

[дверь][осмотреть дверь]
Широкая деревянная дверь. Наверное, за ней таятся несметные богатства.

function quote()
 var response = new Array(
  'Не следует варить вареные яйца, иначе это занятие теряет весь смысл',
  'Телефонами маги Севера называют переговорные кристаллы. Ценность кристалла определяется шириной его канала соединения с Астралом. Качественная передача живых картинок возможна при ширине не менее трёх мегер.',
  'Возлюби книгу как самого себя. Первая заповедь литературовера.',
  'Появилась мысль -- запиши. Вторая заповедь литературовера.',
  'Никогда не загибай страницы книг. Третья заповедь литературовера.',
  'Без слов книги бесполезны.',
  'Поздно стирать кляксы, если ты уже закончил переплёт.',
  'Я считаю свой день неудачным, если я не держал в руках перо.',
  'Хороший редактор может исправлять книгу бесконечно.',
  'Атавизм, дерево, муравей. Не пейте вина больше меры, дети мои.',
  'Мы не знаем, кто распространяет миф о Мастере. Но мы не хотим верить.',
  'Никогда не запивай селёдку молоком.',
  'Вчера у меня был удачный день. Сегодня всё-таки наступило!',
  'Игра есть отражение реальности, и лишь в игре мы можем познать истинные грани мироздания.',
  'Смерть -- лучшее средство от простуды.'
 );
 return "Брат берёт у тебя книгу, открывает страницу наобум и читает:" . response[Math.floor(Math.random() * response.length)];
end