diff --git a/doc/writing_games-en.txt b/doc/writing_games-en.txt
index 25acb05..f7f2294 100644
--- a/doc/writing_games-en.txt
+++ b/doc/writing_games-en.txt
@@ -1053,6 +1053,32 @@ main = room {
};
+==== Dynamic object creation ====
+You can use ''new'' и ''delete'' functions to create and remove dynamic objects. An example follows.
+
+
+new ("obj { nam = 'test', act = 'test' }")
+put(new [[obj {nam = 'test' } ]]);
+put(new('myconstructor()');
+n = new('myconstructor()');
+delete(n)
+
+
+''new'' treats its string argument as an object constructor. The constructor must return an object. Thus, the string argument usually contains a constructor function call. For example:
+
+function myconstructor()
+ local v = {}
+ v.nam = 'test object',
+ v.act = 'test feedback',
+ return obj(v);
+end
+
+The object created will be saved every time the game is saved. ''new()'' returns a real object; to get its name you can use ''deref'' function:
+
+o_name = deref(new('myconstructor()'));
+delete(o_name);
+
+
==== Debugging ====
To see lua call stack during an error, launch sdl-instead with “-debug” parameter. In Windows version debugging console will be created.
diff --git a/doc/writing_games.txt b/doc/writing_games.txt
index 767b744..e5e7033 100644
--- a/doc/writing_games.txt
+++ b/doc/writing_games.txt
@@ -1035,6 +1035,32 @@ main = room {
};
+==== Динамическое создание объектов ====
+Вы можете использовать функции new и delete для создания и удаления динамических объектов. Примеры:
+
+
+new ("obj { nam = 'test', act = 'test' }")
+put(new [[obj {nam = 'test' } ]]);
+put(new('myconstructor()');
+n = new('myconstructor()');
+delete(n)
+
+
+new воспринимает строку-аргумент как конструктор объекта. Результатом выполнения конструктора должен быть объект. Таким образом в аргументе обычно задан вызов функции-конструктора. Например:
+
+function myconstructor()
+ local v = {}
+ v.nam = 'тестовый объект',
+ v.act = 'Тестовая реакция',
+ return obj(v);
+end
+
+Созданный объект будет попадать в файл сохранения. new() возвращает реальный объект; чтобы получить его имя, если это нужно, используйте функцию deref:
+
+o_name = deref(new('myconstructor()'));
+delete(o_name);
+
+
==== Отладка ====
Для того, чтобы во время ошибки увидеть стек вызовов функций lua, вы можете запустить sdl-instead с параметром -debug. При этом в windows версии интерпретатора будет создана консоль отладки.
diff --git a/stead/stead.lua b/stead/stead.lua
index f814df5..f9abb3b 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -1660,7 +1660,7 @@ iface = {
end
if v == false then
- return fmt(r), false;
+ return cat(fmt(r),'\n'), false;
end
ACTION_TEXT = r; -- here, life methods can redefine this