15 октября 2003 года (на самом деле, это дата файла, а не написания текста)
(для удобства вместо слова "пользователь" употребляется слово "игрок")
- Объект - это набор функций (и их параметров), описывающих свойства объекта, а так же информация о расположении объекта.
- Ввиду пункта 1, отсутствует понятие типа или вида объектов. Различных "типов" может быть до 2^X, где X - количество доступных необязательных функций.
- Расположение.
- Может быть четыре варианта расположения объекта.
- В комнате/локации. Видно при осмотре комнаты.
- У игрока в руках/"кармане". Видно как инвентарь, и только самому игроку.
- Одето на игроке. Видно при осмотре игрока. Возможно лишь при наличии соответствующей функции.
- Внутри другого объекта-"контейнера". Видно при осмотре "контейнера".
- Хранится расположение в виде списка идентификаторов объектов в соответствующих данному расположению местах. Таким образом сам объект освобождается от этого.
- Функции.
- Функции задают все свойства и всю функциональность объектов.
- Функции имеют параметры, которые могут быть различных типов.
- Флаг - функция дает что-либо одним своим наличием.
- Логический - функция может принимать лишь два значения, 0 или 1.
- Строка - любая строка, даже пустая.
- Текст - многострочный текст, хранимый внутри самого объекта.
- Внешний текст - многострочный текст, хранимый в отдельном файле.
- Целое число - любое целое число в диапазоне от 0 до 2147483647.
- Действительное число - любое положительное действительное число.
- Перечислимый - функция может принимать лишь одно из некоторого набора значений.
- Шаблон - обычная строка, используемая в качестве шаблона для генерации текста.
- Объект-шаблон - ссылка на объект-шаблон.
- Некоторые функцию налагают дополнительные условия на свои значения, но все они основаны на вышеперечисленных типах.
- Обязательные функции: название, род, описание, вес и объем. Все остальные являются необязательными, но именно они и создают функциональность объекта.
- Команды.
- Команды, оперирующие с объектами, можно разделить на три группы.
- Команды создания объектов. Наиболее сложная из всех группа. Сюда входит: создание заготовка, наполнение его функциями, и завершение. Подробнее смотрите раздел 7.
- Команды перемещения объектов. Их результатом является изменение расположения.
- Команды, использующие определенные функции объекта. Например, если есть функция "текст", то применение команды "читать" выдаст параметр этой функции, и таким образом прочитает текст.
- Идентификация объектов.
- Внутренняя идентификация: все объекты нумеруются, ибо может существовать два совершенно одинаковых объекта. Эти номера важны лишь для системы, и игрок ничего не знает о них. Используются для точной идентификации и в списках объектов.
- Внешняя идентификация: название. Если в названии несколько слов, то достаточно указать начало одного из слов. Поиск ведется в той области, с какой работает команда, и находится первый подходящий объект.
- Возможны модификаторы внешней идентификации.
- Если перед названием объекта указано число (отделенное ПРОБЕЛОМ), то оно считается количеством данных объектов. Применительно только в командах изменения расположения. Пример:
команда - взять 2 ложка
действие - Вы взяли две ложки.
(примечание: на данный момент не реализовано)
- Если перед названием объекта указано число (отделенное ТОЧКОЙ), то оно считается номером объекта среди группы аналогичных. Пример:
команда - взять 2.ложка
действие - Вы взяли ложку. (вторую, если их две)
или - Здесь нет 'ложка'. (если есть только одна)
- Команды создания и редактирования объектов.
- Принцип редактирования объекта заключается в том, что нужно выбрать его, и затем станут доступными команды для его изменения.
- Создание нового объекта: "+создать". Создаётся пустой объект, не имеющий даже названия.
- Изменение уже имеющегося объекта: "+изменить <что>". Объект должен быть либо в руках, либо в комнате. Он переводится в режим редактирования, исчезая из своего бывшего местонахождения. По окончанию оказывается на том же месте.
- Уничтожение объекта: "+уничтожить <что>". Объект должен быть либо в руках, либо в комнате. После применение команды объект безвозвратно исчезает.
- Добавление функции в объект: "+добфунк <функция> [значение]". В зависимости от типа функции значение требуется или нет. При типе "текст" вызывается многострочный редактор. Если функция уже существует, то её значение замещается или редактируется.
- Удаление функции из объекта: "+удалфунк <функция>".
- Просмотр значения функции: "+осмфунк [функция]". Если не указать конкретную функцию, выведется список всех функций с их значениями.
- Список функций в объекте без значений: "+списфунк".
- Список всех доступных функций и их типы: "+функции".
- Завершить редактирование объекта: "+завершить".
- Отменить редактирование объекта: "+отменить". Если объект был только что создан, он уничтожается, а иначе возвращается в своё прежнее состояние.
- Система объектов-шаблонов.
- При наличии в объекте специальной функции "шаблон", он считается шаблоном, и при завершении помещается в отдельный список. Доступ и работа с шаблонами осуществляется с помощью специальных команд.
- Просмотр списка имеющихся шаблонов: "+списшабл".
- Удаление шаблона: "+удалшабл <что>".
- Просмотр состава шаблона (функции с их значениям): "+осмшабл <что>".
- Изменение шаблона: "+измшабл <что>".
- Добавление шаблона в текущий редактируемый объект: "+добшабл <что>".
- Создание нового объекта на основе шаблона: "+создшабл <что>".
- Кроме облегчения создания множества одинаковых или похожих объектов, шаблоны еще бывают необходимы для некоторых функций объекта (см.п. 4.2.10.). Как правило, этим задаётся, во что превратится объект в таком-то случае.