--красное море -- Доступное пространство имён для объектов - все имена объектов должны начинаться с "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 = 'Стены оббиты тканью с выгоревшим цветочным рисунком, как это было модно в начале прошлого века. Во всех четырех направлениях есть выходы в соседние комнаты.'; dsc = 'Во всех четырех направлениях есть выходы в соседние комнаты.'; }:attr 'static'; obj { -"шкаф|резьба|дверцы|символы|буквы"; nam = 'room12_шкаф'; description = 'Винтажного вида платяной шкаф с украшенными затейливой резьбой дверцами. В резьбе местами угадываются какие-то буквы и символы.'; obj = {}; ['before_Walk,Enter,Open'] = function(s) if _'room12_портал':has'on' then if s:once() then p 'Открыв шкаф, я увидела вовсе не пустые вешалки, как ожидалось. Вместо задней стенки я обнаружила ночь, заметенную снегом поляну и чугунный фонарь. Внезапно в темноте за кругом света от фонаря мне почудилось какое-то движение, из темноты выступили очертания чего-то. Неестественные и отвратительные. Первобытный ужас охватил меня, холод прокатился по позвоночнику, и я поспешно захлопнула дверцу шкафа.'; else p 'Нет уж. Там страшно.'; end; 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 = 'Массивное винтажное кресло с резной спинкой. Оббито полосатой тканью.'; title = 'в кресле'; inside_dsc = 'Ты сидишь в кресле.'; after_Enter = 'Ты садишься в кресло.'; 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';