1
0
Fork 0
mirror of https://github.com/goraph/17rooms.git synced 2024-04-30 02:49:18 +03:00
17rooms/room17.lua

297 lines
9.9 KiB
Lua
Raw Normal View History

2021-05-08 00:47:56 +03:00
-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room17_" или "cherdak_"
2021-05-04 14:35:02 +03:00
-- Все описания можно менять
-- Задача: Это изначально тёмная комната. Игрок может придти как с источником света, так и без него. Задача - найти предмет circlekey
room {
nam = "room17_cherdak";
title = "Чердак";
lock_down = false;
2021-05-08 00:47:56 +03:00
cornice_seen = false;
door_seen = false;
2021-05-04 14:35:02 +03:00
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;
2021-05-08 00:47:56 +03:00
if here().cornice_seen then
enable("room17_cornice");
end;
if here().door_seen then
enable("room17_door");
end;
2021-05-04 14:35:02 +03:00
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'
2021-05-08 00:47:56 +03:00
here().lock_down = false;
2021-05-04 14:35:02 +03:00
pn [[Ты снимаешь маску.]];
p [[^Обстановка комнаты изменилась.]];
mp:clear();
2021-05-08 00:47:56 +03:00
here().cornice_seen = not _'room17_cornice':disabled();
here().door_seen = not _'room17_door':disabled();
2021-05-04 14:35:02 +03:00
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)
2021-05-08 00:47:56 +03:00
p [[На холсте нарисован очаг. В очаге горит огонь. На огне стоит котелок.^В котелке кипит баранья похлёбка с чесноком. Над котелком вьётся дым.]];
2021-05-04 14:35:02 +03:00
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
2021-07-02 18:04:17 +03:00
p [[«Эта дурацкая дверца раздражает. Три часа на неё пялюсь, не могу отсюда выбраться. Завешу её чем-нибудь.»^
2021-05-04 14:35:02 +03:00
Похоже на почерк тёти Агаты.
2021-05-08 00:47:56 +03:00
«Это невыносимо. Дурацкая дверца просто исчезла. Теперь ни дверцы, ни другого выхода. Сижу и таращусь на пустую стену.
2021-05-04 14:35:02 +03:00
Лучше повесить холст обратно на карниз.»^
Вторая строка писалась гораздо позже первой.^Буквы крупнее и почерк неровный, но это всё ещё её почерк.]];
else
p [[«Дорогая Агата, возвращаю тебе эту забавную безделицу.^Признаться, я так и не смог разобраться в её предназначении.
^Наш общий знакомый, граф А., темнит и насвистывает какую-то глупую песенку про болото.
^Возможно, в этом есть какой-то смысл. Возможно я упускаю из виду что-то лежащее на поверхности.
^Представь себе, он сказал мне с изрядной фамильярностью "Джемс, вы слишком серьёзно к этому относитесь!" и показал "нос".
^При удобном случае постарайся его разговорить.
^Навеки твой. J. McP.»
^Твёрдый мужской почерк. Интересно, кто такие граф А. и таинственный тётушкин «Навеки твой J. McP.»?]];
end;
end;
found_in = { 'room17_box' };
}
obj {
2021-05-08 00:47:56 +03:00
-"стены,стенки/мн";
2021-05-04 14:35:02 +03:00
nam = "room17_walls";
description = function(s)
if _"room17_mask":has'worn' then
p "Одна из стен привлекает ваше внимание.";
else
p "Пустые стены.";
end;
end;
}:attr 'static'
obj {
2021-05-08 00:47:56 +03:00
-"стена,стенка/ед";
2021-05-04 14:35:02 +03:00
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",
}