mirror of https://github.com/goraph/17rooms.git
297 lines
9.9 KiB
Lua
297 lines
9.9 KiB
Lua
-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room17_" или "cherdak_"
|
||
-- Все описания можно менять
|
||
-- Задача: Это изначально тёмная комната. Игрок может придти как с источником света, так и без него. Задача - найти предмет circlekey
|
||
room {
|
||
nam = "room17_cherdak";
|
||
title = "Чердак";
|
||
lock_down = false;
|
||
cornice_seen = false;
|
||
door_seen = false;
|
||
dsc = "Почти нет пыли. Уютно, хоть и пустовато.";
|
||
dark_dsc = "Здесь темно, единственный выход вниз.";
|
||
d_to = function(s)
|
||
if not (have("room17_canvas") or have("room17_box") or have("room17_letter") or have("room17_mask")) then
|
||
return 'room14_secondfloor';
|
||
else
|
||
pn [[По какой-то причине ты оказалась тут снова. Чудеса!]];
|
||
return "room17_cherdak"
|
||
end;
|
||
end;
|
||
-------
|
||
before_Walk = function (s,w)
|
||
if w ^ '@d_to' then
|
||
if s.lock_down then
|
||
pn [[Странное дело - пути вниз теперь нет.]];
|
||
return true;
|
||
else
|
||
return false;
|
||
end;
|
||
else
|
||
return false;
|
||
end;
|
||
end;
|
||
-------
|
||
before_Listen = "Ничего не слышно.";
|
||
before_Smell = "Ничем не пахнет.";
|
||
obj = {"room17_woodtable",
|
||
"room17_door",
|
||
"room17_walls",
|
||
"room17_wall",
|
||
};
|
||
--};
|
||
}: attr '~light'
|
||
|
||
|
||
obj {
|
||
-"стол,деревянный стол";
|
||
nam = "room17_woodtable";
|
||
before_Exam = function(s)
|
||
if not (_"room17_box":inside("room17_woodtable")) and _"room17_mask":has'worn' then
|
||
p "На столешнице видна надпись «Поставь на меня».^Странно. Раньше вроде не было её.";
|
||
else
|
||
p "Деревянный, немного пыльный стол";
|
||
end;
|
||
return true;
|
||
end;
|
||
description = "Деревянный стол.";
|
||
}:attr 'supporter,static'
|
||
|
||
obj {
|
||
-"коробка";
|
||
nam = "room17_box";
|
||
before_Exam = function(s)
|
||
if _"room17_mask":has'worn' then
|
||
pn "На коробке видна надпись «Наполни меня».^Странно. Раньше вроде не было её.";
|
||
else
|
||
pn "Похоже, что самая обычная коробка.";
|
||
end;
|
||
if s:has "open" then
|
||
content(s);
|
||
end;
|
||
return true;
|
||
end;
|
||
description = "Картонная коробка.";
|
||
found_in = { 'room17_woodtable' }
|
||
}:attr 'container,openable'
|
||
|
||
obj {
|
||
-"маска";
|
||
nam = "room17_mask";
|
||
description = "Театральная маска с длинным носом.";
|
||
before_Wear = function(s)
|
||
enable("room17_wall");
|
||
--disable '@d_to'
|
||
here().lock_down = true;
|
||
|
||
if here().cornice_seen then
|
||
enable("room17_cornice");
|
||
end;
|
||
|
||
if here().door_seen then
|
||
enable("room17_door");
|
||
end;
|
||
|
||
mp:clear();
|
||
return false;
|
||
end;
|
||
after_Wear = function(s)
|
||
pn [[Ты надеваешь маску.]];
|
||
p [[^Обстановка комнаты изменилась.]];
|
||
return true;
|
||
end;
|
||
before_Disrobe = function(s)
|
||
return false;
|
||
end;
|
||
after_Disrobe = function(s)
|
||
--enable '@d_to'
|
||
here().lock_down = false;
|
||
pn [[Ты снимаешь маску.]];
|
||
p [[^Обстановка комнаты изменилась.]];
|
||
mp:clear();
|
||
|
||
here().cornice_seen = not _'room17_cornice':disabled();
|
||
here().door_seen = not _'room17_door':disabled();
|
||
|
||
disable("room17_wall");
|
||
disable("room17_cornice");
|
||
disable("room17_door");
|
||
return true;
|
||
end;
|
||
found_in = { 'room17_box' }
|
||
}:attr 'clothing'
|
||
|
||
obj {
|
||
-"холст";
|
||
nam = "room17_canvas";
|
||
get_from_carnise = false;
|
||
description = "Холст.";
|
||
before_Take = function (s, w)
|
||
if parent (s) == _"room17_cornice" then
|
||
s.get_from_carnise = true;
|
||
enable("room17_door");
|
||
return false;
|
||
else
|
||
return false;
|
||
end;
|
||
end;
|
||
after_Take = function (s, w)
|
||
if s.get_from_carnise then
|
||
pn [[Ты берёшь холст. ^]];
|
||
pn [[Позади холста обнаружилась маленькая дверца.]];
|
||
s.get_from_carnise = false;
|
||
return true;
|
||
else
|
||
return false
|
||
end;
|
||
end;
|
||
before_Tear = function (s, w)
|
||
if parent (s) == _"room17_cornice" then
|
||
s.get_from_carnise = true;
|
||
enable("room17_door");
|
||
return false;
|
||
end;
|
||
end;
|
||
after_Tear= function (s, w)
|
||
if s.get_from_carnise then
|
||
pn [[Ты срываешь холст с карниза.^]];
|
||
p [[Позади холста обнаружилась маленькая дверца.]];
|
||
take(s);
|
||
s.get_from_carnise = false;
|
||
return true;
|
||
else
|
||
return false
|
||
end;
|
||
end;
|
||
after_Exam = function(s)
|
||
p [[На холсте нарисован очаг. В очаге горит огонь. На огне стоит котелок.^В котелке кипит баранья похлёбка с чесноком. Над котелком вьётся дым.]];
|
||
end;
|
||
after_PutOn = function(s, w)
|
||
if not w ^ 'room17_cornice' then
|
||
s.get_from_carnise = false;
|
||
return false;
|
||
else
|
||
p [[Ты вешаешь холст на карниз.]];
|
||
disable("room17_door");
|
||
return true;
|
||
end;
|
||
end;
|
||
found_in = { 'room17_cornice' };
|
||
}:disable():attr 'clothing'
|
||
|
||
obj {
|
||
-"дверца";
|
||
nam = "room17_door";
|
||
description = function(s)
|
||
p "Маленькая дверца.";
|
||
return false;
|
||
-- mp:content(s);
|
||
end;
|
||
before_Unlock = function(s, w)
|
||
p [[Не получается.]]
|
||
end;
|
||
before_Open = function(s, w)
|
||
p [[Заперто.]]
|
||
end;
|
||
obj = {
|
||
obj {
|
||
-"замочная скважина,скважина";
|
||
nam = "room17_keyhole";
|
||
description = function(s)
|
||
p [[Замочная скважина с латунной накладкой.]];
|
||
return false;
|
||
end;
|
||
}:attr 'container, static, transparent, open';
|
||
obj {
|
||
-"латунная накладка,накладка";
|
||
nam = "room17_platter";
|
||
description = function(s)
|
||
p [[Декоративная латунная накладка.]];
|
||
return false;
|
||
end;
|
||
}:attr 'static,scenery';
|
||
};
|
||
}:disable():attr 'container,static, open'
|
||
|
||
obj {
|
||
-"записка,лист бумаги";
|
||
nam = "room17_letter";
|
||
description = "Записка.";
|
||
after_Exam = function(s)
|
||
if _"room17_mask":has'worn' then
|
||
p [[«Эта дурацкая дверца раздражает. Три часа на неё пялюсь, не могу отсюда выбраться. Завешу её чем-нибудь.»^
|
||
Похоже на почерк тёти Агаты.
|
||
«Это невыносимо. Дурацкая дверца просто исчезла. Теперь ни дверцы, ни другого выхода. Сижу и таращусь на пустую стену.
|
||
Лучше повесить холст обратно на карниз.»^
|
||
Вторая строка писалась гораздо позже первой.^Буквы крупнее и почерк неровный, но это всё ещё её почерк.]];
|
||
else
|
||
p [[«Дорогая Агата, возвращаю тебе эту забавную безделицу.^Признаться, я так и не смог разобраться в её предназначении.
|
||
^Наш общий знакомый, граф А., темнит и насвистывает какую-то глупую песенку про болото.
|
||
^Возможно, в этом есть какой-то смысл. Возможно я упускаю из виду что-то лежащее на поверхности.
|
||
^Представь себе, он сказал мне с изрядной фамильярностью — "Джемс, вы слишком серьёзно к этому относитесь!" и показал "нос".
|
||
^При удобном случае постарайся его разговорить.
|
||
^Навеки твой. J. McP.»
|
||
^Твёрдый мужской почерк. Интересно, кто такие граф А. и таинственный тётушкин «Навеки твой J. McP.»?]];
|
||
end;
|
||
end;
|
||
found_in = { 'room17_box' };
|
||
}
|
||
|
||
obj {
|
||
-"стены,стенки/мн";
|
||
nam = "room17_walls";
|
||
description = function(s)
|
||
if _"room17_mask":has'worn' then
|
||
p "Одна из стен привлекает ваше внимание.";
|
||
else
|
||
p "Пустые стены.";
|
||
end;
|
||
end;
|
||
}:attr 'static'
|
||
|
||
obj {
|
||
-"стена,стенка/ед";
|
||
nam = "room17_wall";
|
||
before_Exam = function(s)
|
||
enable("room17_cornice");
|
||
return false;
|
||
end;
|
||
description = function(s)
|
||
p [[Гладкая стена.]];
|
||
return false;
|
||
end;
|
||
}:disable():attr 'scenery, supporter'
|
||
|
||
obj {
|
||
-"карниз,старый бронзовый карниз";
|
||
nam = "room17_cornice";
|
||
before_Exam = function(s)
|
||
enable("room17_canvas");
|
||
return false;
|
||
end;
|
||
description = function(s)
|
||
p "Обычный, немного потёртый бронзовый карниз, ";
|
||
if parent 'room17_canvas' == s then
|
||
p "с которого свисает обтрёпанный по краям холст.";
|
||
else
|
||
p "привинченный к стене.";
|
||
end;
|
||
end;
|
||
found_in = { 'room17_wall' }
|
||
}:disable():attr 'static, supporter'
|
||
|
||
-- Менять нельзя!!!! Это не ваш предмет!!! Вы не знаете как он выглядит, его придумает другой автор!!!
|
||
--obj {
|
||
-- -"круглый ключ,ключ";
|
||
-- nam = "circlekey";
|
||
-- description = "Круглый ключ.";
|
||
-- found_in = { 'room17_keyhole' }
|
||
--}
|
||
--[[Изменить объект маски - добавить включение и выключение объектов. Так же написать обработчики для следующих элементов паззла.
|
||
дополнить обработчики холста , разобраться с сорвать холст]]
|
||
|
||
|
||
Verb { "повес/ить",
|
||
"{noun}/вн,held на {noun}/вн,supporter : PutOn",
|
||
"~ на {noun}/вн,supporter {noun}/вн,held : PutOn reverse",
|
||
}
|