17rooms/room12.lua

182 lines
13 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--красное море
-- Доступное пространство имён для объектов - все имена объектов должны начинаться с "room12_" или "gostinnaya_"
-- Все описания можно менять
-- Задача: Игрок должен найти в локации кодовое слово или набор цифр. Кодовое слово придумываете вы, желательно указать его в комментариях в первой строке файла, чтобы я потом заменил его в файле другого автора
-- Крайне желательно чтобы игроку было более или менее явно понятно, что это кодовое слово, которое может пригодится дальше в процессе игры
-- Также - выход на север изначально закрыт, и открывается из этой комнаты, способ открыть дверь остаётся на усмотрение автора
-- Также - кабинет на востоке изначально закрыт, и открывается с помощью предмета squarekey, игрок может зайти в локацию как с этим предметом, так и без него
obj {
-"квадратный ключ,ключ";
nam = "squarekey";
description = "Квадратный ключ.";
score=false;
after_Take = function(s)
if not s.score then
mp.score=mp.score+1;
end;
_'squarekey'.score=true;
return false;
end;
}
room {
nam = "room12_gostinnaya";
title = "Гостиная";
dsc = function()
p "В гостиной тихо и спокойно. Пылинки пляшут в потоке света из-под огромного абажура в центре потолка. Углы комнаты тонут в темноте.";
if _'room12_портал':has'on' then
p 'Ну не считая конечно того, что в дверных проёмах ведущих на север и запад видна картинка явно не соответствующая соседним комнатам.';
end;
end;
n_to = 'room2_on_terrasa'; --терасса
e_to = 'room13_library'; --библиотека
s_to = 'room10_zal'; --зал
w_to = 'room11_kabinet'; --кабинет
before_Listen = "Не считая шумов свойственных старому дому, ничего не слышно.";
before_Smell = "Пахнет пылью и почему-то озоном.";
before_Think = "Всё страньше и страньше! Всё чудесатее и чудесатее! Всё любопытственнее и любопытственнее! Всё страннее и страннее! Всё чудесится и чудесится!";
before_Wait = "Я немного подождала. Внезапно из шкафа послышался какой-то неясный звук. Мыши наверное.";
before_Taste = 'Как-то в детстве я лизнула железные качели в декабре. С тех пор стараюсь явно несъедобные объекты не лизать.';
obj = {'room12_шкаф', 'room12_стол', 'room12_кресло', 'room12_лампа', 'room12_фото', 'room12_пол', 'room12_потолок', 'room12_стены'};
compass_look = function(s,dir)
if _'room12_портал':has'on' then
if dir == 'n_to' then
p 'В двери ведущей на север видны бесконечные морские просторы без каких-либо признаков жизни. Конечно проверять голограмма ли это или правда, а если даже и второе, то есть ли вход с той стороны, я не буду. Тем более плаваю я посредственно.';
elseif dir == 'w_to' then
p 'В двери ведущей на запад видна какая-то пустыня, только какая-то серая и со странным резким освещением. Я провела взглядом по странно близкому горизонту и зависла над невозможной картиной. Из-за горизонта неспешно выкатывался сине-зеленый шар планеты с очень узнаваемыми очертаниями материков. Я в испуге отшатнулась.';
else
p 'С этой стороны находится обычная дверь, ведущая очевидно в соседнее помещение.';
end;
else
p 'С этой стороны находится обычная дверь, ведущая очевидно в соседнее помещение.';
end;
end;
['before_Walk,Enter'] = function(s,w)
if mp:compass_dir(w) == 'n_to' or mp:compass_dir(w) == 'w_to' then
if _'room12_портал':has'on' then
p 'Шагать в неизвестность как минимум неразумно. Стоит сначала осмотреться.';
else
return false;
end;
else
return false;
end;
end;
}
obj {
-"фотография|портрет|диск";
nam = 'room12_фото';
description = 'На стене висит фотография улыбающегося молодого мужчины, замотанного в бурнус (или как там эта арабская одежда называется?), на фоне морского берега. В руках он держит красный керамический диск покрытый резьбой в виде круговых орнаментов и неизвестных символов.';
before_Take = 'Портрет как-то намертво приделан к стене. Приклеен, что ли?';
}:attr 'static';
obj {
-"бордовая лампа, лампа|абажур";
nam = 'room12_лампа';
description = 'Огромный бордовый абажур с оборками. Выглядит очень пыльным.';
before_SwitchOff = 'Выключателя что-то не видно.';
before_Take = 'Я не дотягиваюсь. Слишком высоко.';
}:attr 'scenery';
obj {
-"пол|паркет";
nam = 'room12_пол';
description = 'Пол покрыт старым потёртым паркетом.';
}:attr 'scenery';
obj {
-"потолок";
nam = 'room12_потолок';
description = 'Потолок покрашен белой краской, пожелтевшей от времени. Посередине находится огромный абажур с лампой.';
}:attr 'scenery';
obj {
-"стены|стена";
nam = 'room12_стены';
description = 'Стены оббиты тканью с выгоревшим цветочным рисунком, как это было модно в начале прошлого века. Во всех четырех направлениях есть выходы в соседние комнаты.';
}:attr 'scenery';
obj {
-"шкаф|резьба|дверцы|символы|буквы";
nam = 'room12_шкаф';
description = 'Винтажного вида платяной шкаф с украшенными затейливой резьбой дверцами. В резьбе местами угадываются какие-то буквы и символы.';
obj = {};
['before_Walk,Enter,Open'] = function(s)
if s:once() then
p 'Открыв шкаф я увидела вовсе не пустые вешалки как ожидалось. Вместо задней стенки я обнаружила ночь, заметенную снегом поляну и чугунный фонарь. Внезапно в темноте за кругом света от фонаря мне почудилось какое-то движение, из темноты выступили очертания чего-то. Неестественные и отвратительные. Первобытный ужас охватил меня, холод прокатился по позвоночнику и я поспешно захлопнула дверцу шкафа.';
elseif _'room12_портал':has'on' then
p 'Нет уж. Там страшно.';
else
p 'Шкаф совершенно пуст. Я прикрыла дверцы обратно.';
end;
end;
before_Take = 'Я не думаю, что смогу даже на миллиметр подвинуть этот шкаф.';
}:attr 'static';
obj {
-"стол";
nam = 'room12_стол';
description = 'Круглый обеденный стол. Весьма старый судя по потертому лаку на столешнице.';
obj = {'room12_ноутбук'};
before_Take = 'Слишком большой, чтобы я могла справиться с ним.';
before_LookUnder = 'Кроме следов мышей в пыли тут ничего нет.';
}:attr 'static, supporter, enterable';
obj {
-"кресло";
nam = 'room12_кресло';
description = 'Массивное винтажное кресло с резной спинкой. Оббито полосатой тканью.';
before_Take = 'Это кресло слишком тяжёлое.';
}:attr 'static, supporter, enterable';
obj {
-"стальной кейс,кейс,стальной чемодан,чемодан,ноутбук,компьютер,экран";
nam = "room12_ноутбук";
description = function(s)
if s:has'open' then
p "На экране светится что-то типа нортон-коммандера. Но почти все директории оказались заблокированы. В документах я нашла единственный файл подписанный 'код'. И ещё загадочное приложение 'портал'.";
else
p "Массивный стальной кейс с закруглёнными уголками. На замке кейса есть квадратное отверстие под ключ.";
end
end;
obj = {'room12_файл', 'room12_портал'};
with_key = 'squarekey';
before_Take = 'Я попыталась снять кейс со стола, но внутри что-то очень тяжёлое. Даже тяжелее той сумки, что я собрала в тот раз в отпуск.';
before_LetIn = 'Положить ключ в кейс и захлопнуть его. Прекрасная идея. Я как-то с машиной это проделала, пришлось специального слесаря вызывать. Так что как-нибудь потом.';
before_SwitchOff = 'Каких-то специальных кнопок для выключения ноутбука я не нашла. Может быть достаточно закрыть его?';
after_Open = function()
p 'Кейс оказался каким-то древним ноутбуком. С выпуклым экраном и непривычной раскладкой клавиатуры. На экране замигали надписи и загрузилась незнакомая операционная система.';
-- place('squarekey','room12_стол');
remove('squarekey')
end;
}:attr 'static, openable, lockable, locked, container';
obj {
-"файл,код";
nam = 'room12_файл';
description = "Файл называется code.txt. В файле единственная строчка 'красное море'.";
before_Open = "В файле единственная строчка 'красное море'.";
before_Take = 'В ноутбуке есть какие-то разъёмы сбоку, но это явно не USB. Да и флешки у меня нет с собой.';
}:attr 'scenery';
obj {
-"программа|портал";
nam = 'room12_портал';
description = "Этот файл называется portal.bin.";
['before_Open,SwitchOff,SwitchOn'] = function(s)
p "Поверх вылезло окошко терминала, быстро мигнуло несколько строк и окошко закрылось.";
if s:has'on' then
p "Это так и должно быть? Порталы же зашипели и погасли, открыв за собой проёмы дверей в соседние комнаты.";
s:attr'~on'
_'room2_door':attr'~locked'
_'room2_door':attr'open'
mp.score=mp.score+1
else
p "И больше ничего не произошло.";
end;
end;
before_Take = 'В ноутбуке есть какие-то разъёмы сбоку, но это явно не USB. Да и флешки у меня нет с собой.';
}:attr 'scenery, switchable, on';