====== Модуль xAct ======

^ Подключение          | require %%"%%xact%%"%%        |
^ Тип                  | расширение кода |
^ Зависимости          | нет                     |

===== Описание =====
Модуль позволяет делать ссылки на объекты из других объектов, реакций и life методов в форме: {объект(параметры)|текст}.

Где 'объект' это сам объект или атрибут nam объекта. При этом, чтобы ссылка работала, объект должен
присутствовать в сцене.(Начиная с 1.2.2 -- не обязательно).

(параметры) -- необязательные параметры в виде: (текст, текст, ...)

'текст' -- то, как ссылка выглядит в игре для игрока.

Модуль содержит в себе функцию xact, которая создает объект - простейшую реакцию.
Первый параметр функции -- имя, второй -- реакция, которая может быть строкой, функцией или code.

Модуль содержит в себе реализацию комнаты с расширенным описанием: xroom. Если в такой комнате задать
атрибут xdsc, то он будет выведен в области описаний объектов.

Функция xdsc позволяет более гибко управлять выводом текста в области предметов. См. примеры.

Модуль xact содержит в себе специальный xact -- "xwalk", который позволяет делать переходы по ссылкам, как в книгах играх. См. примеры.
===== Примеры использования =====
<code lua>
main = room {
    nam = 'Начало';
    forcedsc = true;
    dsc = [[От автора. Эту игру я писал очень  {note1|долго}.]];
    obj = {
        xact('note1', [[Больше 10 лет.]]);
    }
}
</code>

<code lua>main = room {
    nam = 'Комната';
    forcedsc = true;
    dsc = [[Я в комнате.]];
    xdsc = [[ Я вижу {apple|яблоко} и {knife|нож}. ]];
    other = [[ Еще здесь лежат {chain|цепь} и {tool|пила}.]];
    obj = {
        xdsc(), -- 'xdsc method by default'
        xdsc 'other',
        'apple', 'knife', 'chain', 'tool',
    }
}
</code>

<code lua>
main = xroom {
    nam = 'Комната';
    forcedsc = true;
    dsc = [[Я в комнате.]];
    xdsc = [[ Я вижу {apple|яблоко} и {knife|нож}. ]];
    obj = {
        'apple', 'knife', 'chain', 'tool',
    }
}
</code> 

<code lua>
main = room {
    nam = 'Начало';
    forcedsc = true;
    dsc = [[ Начать {xwalk(startgame)|приключение}? ]];
}
startgame = room {
    dsc = [[ В одной далекой-далекой галактике... ]];
}
</code> 