====== Модуль Nouse ======

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

===== Описание =====

Модуль позволяет более удобным способом прописывать реакции на действия,
не предусмотренные игрой.

У каждого объекта могут быть атрибуты (методы) nouse или noused. Если в результате действия игрока одним предметом (a) на другой (b), реакция игры не предусмотрена (пустой вывод), то будет вызван метод nouse у объекта a. Если вывод a.nouse пустой, будет вызван b.noused. Если вывод b.noused пустой, будет вызван метод game.nouse.

===== Примеры использования =====

<code lua>
instead_version "1.7.0"
require "nouse"

game.nouse = 'Бесполезно';

worm = obj {
	nam = 'червячок';
	inv = 'Маленький.';
	use = function(s, w)
		if w == apple then
			p 'Он уже сыт.'
			return
		end
	end;
	noused = 'Не буду его трогать.'
}

apple = obj {
	nam = 'яблоко';
	dsc = 'На столе лежит {яблоко}.';
	tak = 'Я взял яблоко.';
	inv = function(s)
		if not taken 'worm' then
			p [[В яблоке червяк!]]
			take 'worm'
		else
			p 'Оставлю про запас.';
		end
	end;
	use = function(s, w)
		if w == table then
			drop(s, table)
			p 'Я вернул яблоко на стол.';
		end
	end;
	nouse = 'Яблоко тут не поможет.';
}

table = obj {
	nam = 'стол';
	dsc = 'В центре комнаты стоит {стол}.';
	act = 'Стол как стол.';
	obj = { 'apple' };
}

tree = obj {
	nam = 'пальма';
	dsc = 'У стены стоит {пальма}.';
	act = 'Декоративная...';
	noused = 'Это не поможет пальме.';
}

main = room {
	nam = 'комната';
	obj = { 'table', 'tree' };
}
</code>


