[[-- Четвертый уровень секретности. Зал 2. Ну, приходи! Хороший шанс приблизиться к... -- Илья посмотрел на один из портретов на стене. -- Да, чуть не забыл -- протягивает он своей гибкой рукой кусок белого
пластика-- Ну, до встречи!... -- Уххх...]],[[inv():add('invite');return goto('eating');]]),
}
};
kitchen=room{
nam='столовая',
pic='gfx/kitchen.png',
dsc='Небольшой зал столовой.',
act=function(s,w)
ifw==4then
return'Я вижу как чьи-то руки берут подносы с грязной посудой и уносят их вглубь...';
end
ifw==1then
ifnothave('food')then
return'Я присел за свободный столик. Ну -- отдохнул, теперь пора за работу!';
return'Она начинается слишком высоко, к тому-же снизу она закрыта на замок. Возможно, это будет кому-то полезно при пожаре, хотя я лично сомневаюсь...'
end
ifw==2then
return'Наверняка охранники в КПП узнают меня. Лучше я сначала спасу своего Барсика.';
end
ifw==3then
return'Красиво сделано, нечего сказать... Но я не могу избавиться от мысли, что институт пожирает входящих в него людей.';
end
ifw==4then
return'Уже почти стемнело, но в институт все-еще заходят сотрудники...';
end
end,
obj={vobj(3,'вход','Главный {вход} представляет собой крутящуюся стеклянную дверь'),
vobj(4,'люди',' впускающую и выпускающую {людей}.'),
vobj(1,'фургон','Перед входом стоит черный {фургон}.'),
vobj(2,'КПП','Дальше, в метрах 60 от меня, во все сгущающейся темноте я едва различаю {КПП}.'),
vobj(5,'лестница','В южной части стены я вижу пожарную {лестницу}, поднимающуюся со второго до пятого этажа.'),
}
};
turn1=obj{
nam='турникеты',
dsc='Проход к лифтам с улицы заграждают блестящие стальные {турникеты}. <<Для всех уровней и категорий>> - светится зеленым надпись на турникетах.',
act=function(s,w)
ifs._insidethen
s._inside=false;
here().way:del('lift');
return'Я подхожу к турникетам, подношу карточку и выхожу к двери главного входа.';
end
ifs._unlockedthen
s._inside=true;
here().way:add('lift');
return'Я подхожу к турникетам, подношу карточку и через пару секунд я у лифтов.';
end
return'Я подхожу к одному из аппаратов. Турникеты функционируют автономно. Проход закрыт -- на торце горит красная лампочка.';
end,
used=function(s,w)
ifw=='card'then
s._unlocked=true;
s._inside=true;
here().way:add('lift');
return'Я подношу карточку к турникету. Загорается зеленый сигнал. Проход открыт! Я прохожу к лифтам.';
return'Подавленные и пустые взгляды... Тягостное молчание.';
end,
dsc=function(s)
ifs._num==1then
return'В лифте полно {людей}.';
end
ifs._num==2then
return'В лифте несколько {человек}.';
end
ifs._num==3then
return'Лифт пуст.'
end
end
};
lift=room{
nam='лифт',
pic='gfx/lift.png',
dsc='В лифте должно быть светло и уютно, но меня мучает клаустрофобия. На панели я вижу кнопки:',
enter=function(s,t)
ifhere()==entrancethen
s._from=1;
pinlift._num=1;
return'Я дожидаюсь, когда подойдет один из лифтов и захожу внутрь.';
end
pinlift._num=rnd(3);
ifhere()==floor2then
s._from=2;
elseifhere()==floor3then
s._from=3;
elseifhere()==floor4then
s._from=4;
elseifhere()==floor5then
s._from=5;
end
return'Я нажимаю кнопку вызова лифта и жду. Проходит некоторое время и я захожу внутрь.';
end,
act=function(s,w)
localto,st
ifnottonumber(w)then
return
end
ifw==s._fromthen
returncat('Нет!!! Клаустрофобия выгоняет меня из лифта.^^',back());
end
ifw==8then
st='';
ifgalstuk._wearthen
st='К тому же, я в галстуке.';
end
ifme()._britthen
return'Я смотрю в зеркало и вижу усталое, но гладко-выбритое лицо. Это я.'..st;
end
return'Я смотрю в зеркало и вижу усталое, заросшее щетиной лицо. Это я.'..st;
end
ifw==6orw==7then
return'Я нервничаю... Не надо нервов.';
end
ifw==1then
to='entrance';
else
to='floor'..w;
end
returncat('Я нажимаю кнопку и жду. Меня мучает клаустрофобия, но я жду.. Уххх... Приехали!^^',
goto(to));
end,
exit=function()
return'За моей спиной закрываются двери лифта.';
end,
obj={
vobj(1,'1','{1},'),
vobj(2,'2','{2},'),
vobj(3,'3','{3},'),
vobj(4,'4','{4},'),
vobj(5,'5','{5},'),
vobj(6,'стоп','{стоп}'),
vobj(7,'ход','и {ход}.'),
vobj(8,'зеркало','{Зеркало} занимает всю заднюю часть.'),
'pinlift',
},
};
floor2=room{
nam='площадка 2-го этажа',
pic='gfx/floor2.png',
dsc="На площадке второго этажа нет окон. Невысокий потолок и серо-зеленые стены. Тихо и холодно.",
act=function(s,w)
ifw==1then
return'Дверь, похоже, сделана из свинца... Я не вижу возможности попасть внутрь. И хорошо. На двери, кроме знака надпись -- <<Уровень:2 Категория:Ядерная энергия>>.';
end
ifw==2then
return'Да, на одном из этих лифтов я приехал на этот проклятый этаж...';
end
end,
obj={
vobj(1,'дверь','Я вижу массивную {дверь} с знаком <<осторожно - радиация!!!>>'),
vobj(2,'лифты','Кажется, что четыре проема дверей {лифтов} мрачно следят за мной.'),
},
way={'lift'},
};
resh=obj{
nam='решетка',
dsc=function(s)
ifnots._unscrewthen
return'Отверстие закрыто железной {решеткой}.';
end
ifvent._offthen
return'В отверстии видны лопасти большого вентилятора. На полу валяется {решетка}.';
end
return'В отверстии вращаются лопасти большого вентилятора. На полу валяется {решетка}.';
end,
act=function(s)
ifs._unscrewthen
return'Вот что можно сделать обычным тупым ножом при наличии сноровки и терпения!';
end
ifnotstoly._movedthen
return'Не достать...';
end
return'Решетка крепко привинчена 12 шурупами...';
end,
used=function(s,w)
ifw=='knife'andnots._unscrewandstoly._movedthen
s._unscrew=true;
return'Я встаю на стол и долго пытаюсь открутить шурупы ножом. Наконец, мне это удается. Решетка падает на пол. Я спускаюсь со стола.';
end
ifw~='stol'then
return'Не получится...';
end
end,
};
vent=obj{
nam='вентиляция',
dsc='В центре потолка находится большое квадратное вентиляционное {отверстие}.',
act=function(s)
ifnotstoly._movedthen
return'До него не достать...';
end
ifnotresh._unscrewthen
return'Я встаю на стол и изучаю отверстие. Оно закрыто решеткой... Я разочарованно спускаюсь на пол.';
end
ifnots._offthen
return'Я встаю на стол и смотрю на острые лопасти вентилятора. Боюсь, это слишком опасно...';
end
ifnots._trapthen
return'Я встаю на стол, хватаюсь руками за края отверстия и подтягиваюсь... Темно и сыро. Я пытаюсь забраться внутрь вентиляции, когда вдруг перед моими глазами я вижу красные глазки и зубы жирной крысы... Нет!!! Я падаю обратно на стол и скатываюсь на пол.';
end
-- here we go!
returngoto('toilet');
end,
used=function(s,w)
ifw=='stol'then
return
end
ifnotstoly._movedthen
return'Я не могу добраться до отверстия...';
end
ifnotresh._unscrewthen
return'Отверстие закрыто решеткой...';
end
ifnots._offthen
return'Мне мешают лопасти вентилятора...';
end
ifw=='gun'andnots._trapthen
gun._loaded=false;
return'Я встаю на стол и просовываю руку с дробовиком в отверстие. Оба ствола выстреливают одновременно с глухим звуком. Я прислушиваюсь. В отверстии тихо... Я спускаюсь со стола на пол. Я думаю, это бесполезно...';
end
ifw=='trap'then
ifnottrap._salothen
return'Я устанавливаю капкан на край отверстия. Жду. Но крыса не дура -- я забираю капкан обратно. Нужна приманка.';
end
inv():del('trap');
vent._trap=true;
return'Я встаю на стол и устанавливаю капкан-мышеловку на край отверстия... Мне не приходится долго ждать... Лязг железа и визг крысы красноречиво говорит о том, что дело сделано!';
return'Ну что же... Я поднимаю железную решетку в полу туалета и лезу в темноту... Через несколько минут я уже спрыгиваю из вентиляционного отверстия на стол, и спускаюсь на пол.';
end
end,
act=function(s,w)
ifw==1then
return'Отодвинув жалюзи я смотрю в уже черную даль, но наталкиваюсь на свое тусклое отражение. Опустив глаза вниз я вижу пулеметные вышки и железнодорожные пути.';
end
ifw==2then
return'Это всего лишь терминалы. Клиенты, которые подсоединяются к серверам института. Впрочем, меня это не интересует -- я 10 лет не видел компьютеров.';
end
end,
obj={
vobj(1,'окно','Большое {окно} выходит на восток.'),
'stoly',
vobj(2,'терминалы','На каждом столе стоит 17 дюймовый {терминал}.'),
'vent',
'portrait',
},
way={'cor3'},
exit=function()
inv():del('stol');
end
};
key=obj{
nam='ключ',
dsc='В двери торчит {ключ}.',
tak='Я осторожно вытаскиваю ключ и кладу его в карман.',
inv='Удивительно, но в институте вместе с электроникой используется такой простой и понятный механизм, как обычный дверной замок!',
};
room33=room{
nam='комната',
pic='gfx/bholes.png',
dsc=[[Постояв несколько секунд у двери я открываю ее и вхожу внутрь.]],
act=function(s,w)
ifw==1then
returncat('Седой человек в толстых очках оборачивается и с секунду смотрит на меня. -- Кто это? Выйдите немедленно!!^^',back());
end
end,
obj={
vobj(1,'люди',[[Я вижу как группа {людей} в белых халатах расположилась перед доской в центре комнаты и о чем-то ожесточенно спорит.]]),
return[[Яберусьзахолодныйметаллручкииосторожнооткрываюдверь...-- Идет моделирование!!!
-- слышу я из-за двери. Я быстро отпускаю ручку -- дверь закрывается...]],false;
end
ifs._num==5then
ref(f).way:add('eroom');
returngoto('eroom'), false;
end
ifs._num==6then
return[[Я начинаю открывать дверь, когда вдруг начинаю слышать странное все нарастающее гудение. -- Какой идиот не закрыл дверь? -- слышу я изнутри. Я поспешно отхожу от двери.]],false;
end
end,
};
switch=obj{
nam='выключатель',
dsc=function(s)
localt
ifvent._offthen
t=' в позиции <<выключено>>.';
else
t=' в позиции <<включено>>.';
end
return'В углу, перед входной дверью находится {выключатель}'..t;
return'Я подхожу к одной из дверей и заглядываю в окошко-иллюминатор... Люди в белых костюмах, словно пчелы, снуют у причудливых аппаратов. -- Наверное, это лаборатории -- догадываюсь я.';
return'Крепкие тут двери, не то что в моей хижине... Считыватель карточек возле замка. Надпись на двери: <<Уровень:3 Категория:Нанотехнологии>>';
end
end,
used=function(s,w,ww)
ifww~='card'then
return'Это не поможет...';
end
ifw==2then
s._unlocked=true;
s.way:add('cor3');
returngoto('cor3');
end
ifw==3then
return'Я подношу карточку к считывателю... Раздается раздражающий писк -- доступ не разрешен.';
end
end,
obj={
vobj(1,'окно','Широкое {окно} выходит на запад.'),
vobj(2,'коричневая дверь','Справа от окна находится коричневая {дверь}.'),
vobj(3,'белая дверь','Слева -- белая {дверь}.'),
},
way={'lift'},
};
britva=obj{
nam='бритва',
dsc='На умывальнике лежит безопасная {бритва}.',
tak='Я незаметно кладу бритву в карман.',
inv='Бритва, немного ржавое лезвие...',
};
face=obj{
nam='лицо',
dsc='В зеркале отражается мое {лицо}.',
act=function(s)
localst='';
ifme()._britthen
st=' Гладко выбритое.';
elseifme()._mylothen
st='Все в мыле.';
end
ifgalstuk._wearthen
st=st..'К тому же, в галстуке.';
end
return'Это мое лицо, отраженное в зеркале.'..st;
end,
used=function(s,w)
ifw=='mylo'then
ifme()._britthen
return'Я уже брился...';
end
ifnotmylo._penathen
return'Мыло совсем сухое...';
end
ifnothave('britva')then
return'Я намыливаю лицо и смываю грязь... Фуххх....';
end
me()._mylo=true;
return'Я намыливаю лицо...';
end
ifw=='britva'then
ifme()._britthen
return'Я уже брился...';
end
ifnotme()._mylothen
return'Я не намылил лицо...';
end
me()._brit=true;
me()._mylo=false;
return'Я бреюсь... Через несколько минут я смываю мыло...';
end
end
};
tzerkalo=obj{
nam='зеркало',
dsc='Над умывальником установлено {зеркало}.',
act=function(s)
localst='';
objs():add('face');
ifgalstuk._wearthen
st='К тому же, в галстуке...';
end
ifme()._britthen
return'Грустное, но гладко выбритое лицо.'..st;
end
return'Дикое, заросшее щетиной лицо смотрит из зеркала.'..st;
end,
};
toilet=room{
nam='туалет',
pic='gfx/toil4.png',
dsc='Довольно просторный туалет. Белый кафель. Желтые разводы. Сырость и звуки журчащей воды. Деревянная дверь ведет в коридор.',
enter=function(s,f)
iff=='eroom'then
return'Я лезу в вентиляционное отверстие. Внутри пыльно и тихо. Я блуждаю по причудливым переплетениям вентиляции пока, наконец, не вижу над головой свет. Еще мгновение и я выталкиваю железную решетку в полу туалета...';
end
end,
act=function(s,w)
ifw==2then
return'Да... Мне повезло, я чувствую, что туалет мужской...';
end
ifw==3then
return'Странная у них система вентиляции, но благодаря ей я здесь!...';
end
end,
obj={
vobj(2,'унитазы','В этом туалете установлено всего 2 {унитаза}.'),
'umyvalnik',
'britva',
'tzerkalo',
'sushka',
vobj(3,'решетка','На полу находится железная {решетка}.'),
},
way={'eroom','cor4'},
exit=function(s,t)
ifme()._mylothen
return'В мыле? Нет...',false
end
objs():del('face');
ift~='eroom'then
return'Я осторожно выхожу из туалета.';
end
end
};
toiletw=room{
nam='женский туалет',
enter=function(s,w)
return'Фууххх... Чуть не ошибся...',false;
end
};
functionroom4x_hear()
localph={
[1]='...Согласно соотношению неопределенностей мы не можем одновременно измерить координату частицы и ее импульс...',
[2]='...Мгновенная передача возмущения волновой функции не есть передача сигнала, ибо здесь нет физических объектов, движущихся быстрее света...',
[3]='...Редукция фон Неймана — мгновенное изменение описания квантового состояния (волновой функции) объекта, происходящее при измерении...',
[4]='...Допустим, две одинаковые частицы A и B образовались в результате распада третьей частицы C. В этом случае, по закону сохранения импульса, их суммарный импульс p_A + p_B должен быть равен исходному импульсу третьей частицы p_C...',
[5]='...представим себе, что на двух планетах в разных концах Галактики есть две монетки, выпадающие всегда одинаково. Если запротоколировать результаты всех подбрасываний, а потом сравнить их, то они совпадут. Сами же выпадания случайны, на них никак нельзя повлиять. Нельзя, например, договориться, что орёл — это единица, а решка — это ноль, и передавать таким образом двоичный код. Ведь последовательность нулей и единиц будет случайной и на том и на другом <<конце провода>> и не будет нести никакого смысла...';
[6]='...Впервые ЭПР-парадокс был сформулирован Альбертом Эйнштейном в 1928 году на 5-ом Сольвеевском конгрессе, в дискуссии с Нильсом Бором. Эйнштейн не признавал вероятностного характера квантовой механики и считал вероятностное описание микромира неполным...',
[7]='...это интерпретация квантовой механики, которая предполагает существование <<параллельных вселенных>>, в каждой из которых действуют одни и те же законы природы и которым свойственны одни и те же мировые постоянные, но которые находятся в различных состояниях...',
[8]='Докторская работа Эверетта как раз и предлагала подобную альтернативу. Эверетт предложил считать, что для составной системы (каковой является частица, взаимодействующая с измерительным прибором) утверждение о том, что какая-либо подсистема находится в определённом состоянии, является бессмысленным. Это привело Эверетта к заключению об относительном характере состояния одной системы по отношению к другой...',
[9]='...Этот шестимерный объект можно представить в виде суперпозиции двух <<альтернативных историй>> системы S, в одной из которых наблюдался результат измерения <<вверх>>, а в другой — <<вниз>>...',
[10]='...Например, можно приготовить две частицы, находящиеся в едином квантовом состоянии так, что когда одна частица наблюдается в состоянии со спином, направленным вверх, то спин другой оказывается направленным вниз, и наоборот, и это несмотря на то, что согласно квантовой механике, предсказать, какие фактически каждый раз получатся направления, невозможно...',
};
returnph[rnd(10)];
end
room4x=room{
nam='комната',
enter=function(s,f)
ifs._num==1then
return'Я осторожно берусь за ручку и пытаюсь открыть дверь. Закрыто...',false;
elseifs._num==2then
return'Я подхожу к двери и прислушиваюсь... -- '..room4x_hear()..' --- Ухх... Я отхожу от двери..',false;
elseifs._num==3then
return'Я подхожу к двери и прислушиваюсь... -- Внутри я слышу, как кто-то ожесточенно спорит... -- я отхожу от двери...',false;
elseifs._num==4then
return'Открыв дверь я захожу внутрь. На меня пристально смотрят 12 пар глаз сидящих за столами. . Еще одна пара глаз принадлежит человеку у доски. -- Простите, ошибся -- бормочу я и выхожу из комнаты...',false;
elseifs._num==5then
return'Закрыто... ',false;
end
end,
};
galstuk=obj{
nam=function(s)
ifs._galthen
return'галстук';
end
return'тряпка';
end,
inv=function(s,w)
ifnots._galthen
s._gal=true;
return'Я рассматриваю тряпку и понимаю, что когда-то это было галстуком.';
end
ifs._hotthen
ifnots._wearthen
s._wear=true;
return'Я с достоинством надеваю галстук...';
end
return'Галстук надет...';
end
ifs._mylothen
return'Он весь в мыле!';
end
ifnots._waterthen
return'Он грязный! Я не надену это!';
end
ifnots._hotthen
return'Он мокрый! Я не надену это!';
end
end,
used=function(s,w)
ifs._wearthen
return'Галстук надет...';
end
ifw=='mylo'then
ifnotmylo._penathen
return'Мыло сухое...';
end
s._mylo=true;
ifnots._galthen
s._gal=true;
return'Намыливая тряпку, я понимаю, что когда-то это было галстуком.';
end
return'Я намылил галстук...';
end
end,
use=function(s,w)
ifs._wearandw~='hand'then
return'Галстук надет...',false;
end
ifw=='umyvalnik'then
ifnots._mylothen
return'Просто водой? Вряд ли это отмоет мел...';
end
s._water=true;
s._mylo=false;
return'Я помыл галстук в теплой воде...';
end
ifw=='sushka'then
ifnots._waterthen
return'Зачем мне сушить это?';
end
s._hot=true;
s._water=false;
return'Через 5 минут я полностью высушил галстук...';
end
end
};
room46=room{
nam='аудитория 6',
pic='gfx/room4.png',
enter='Я открываю дверь и вхожу внутрь... Комната пуста...',
dsc='Я нахожусь внутри аудитории... Несколько столов стоят в два ряда по направлению к доске.',
act=function(s,w)
ifw==1then
ifnothave('galstuk')then
inv():add('galstuk');
return'На доске лежит тряпка. Я беруее в руки.';
end
return'Гм... Ничего не понимаю...';
end
ifw==2then
return'Внизу я вижу, как следы прожекторов шарят по снежному полю...';
end
ifw==3then
return'Я сажусь за клавиатуру, но вовремя вспоминаю, что я завязал с прошлым... Я больше не хакер - я лесник.';
end
end,
obj={
vobj(3,'терминал','На каждом столе стоит {терминал}.'),
vobj(1,'доска','На {доске} написаны какие-то формулы...'),
vobj(2,'окно','{Окно} выходит на восток.'),
'portrait',
},
way={'cor4'},
};
facectrl=dlg{
nam='фэйсконтроль',
pic='gfx/guard4.png',
dsc='Я вижу перед собой неприятное лицо полного охранника.',
obj={
[1]=phr('Я пришел послушать лекцию Белина...',
'-- Я не знаю кто вы -- ухмыляется охранник -- но мне велели пускать сюда только приличных людей.',
[[pon(2);]]),
[2]=_phr('У меня есть приглашение!',
'-- А мне плевать! Посмотри на себя в зеркало!!! Ты пришел слушать самого Белина -- правую руку самого... -- охранник почтительно помолчал -- Так что пошел вон..',[[pon(3,4)]]),
[3]=_phr('Сейчас я дам тебе по роже!','-- Ну все... Мощные руки выталкивают меня в коридор...',
[[poff(4)]]),
[4]=_phr('Ты, кабан! Я же тебе сказал -- у меня есть приглашение!',
'-- Чтоооооо? Глаза охранника наливаются кровью... Мощный пинок отправляет меня в коридор...',
[[poff(3)]]),
[5]=_phr('Я хочу послушать лекцию Белина...',
'-- Во-первых -- доктора Белина, а во-вторых -- без галстука нельзя...',
[[pon(2)]]),
[6]=_phr('Я очень хочу послушать лекцию доктора Белина!!!',
'Охранник смотрит на меня пристальным взглядом и нехотя произносит. -- Ваше приглашение...',
[[pon(7)]]),
[7]=_phr('Держи... св... пожалуйста...','Ладно... Проходите, не задерживайтесь... Лекция уже началась...',
[[inv():del('invite'); return goto('hall42')]]);
},
exit=function(s,w)
s:pon(1);
end
};
hall42=room{
nam='Зал 2',
pic='gfx/hall2.png',
dsc='Множество людей. Судя по тишине -- лекция уже идет.',
obj={
vobj(1,'Белин','Перед доской стоит {Белин} -- тот самый человек, который забрал моего кота.'),
vobj(2,'места','В третьем ряду с краю я вижу несколько свободных {мест}.'),
vobj(3,'окно','Три широких {окна} выходят на запад.'),
return'Сейчас он без пальто и шляпы и я могу его рассмотреть... Довольно полный, но высокий... Хитрая улыбка, но лицо открытое... Он ведет лекцию -- подожду пока она закончится и поговорю с ним...';
end
ifw==2then
returngoto('lection');
end
ifw==3then
return'За окнами тьма... Только белые снежинки изредка попадают в зону освещения флоуресцентных ламп.';
end
ifw==4then
return'Шесть ламп... Ненавижу этот мерцающий свет...';
end
end,
exit=function(s,t)
ift=='cor4'then
return'Не хочу терять Белина из виду...',false;
end
end,
enter=function(s,f)
iff=='facectrl'then
return'Я прохожу в лекционный зал...';
end
ifnotgalstuk._wearthen
facectrl:pon(5);
facectrl:poff(1);
end
ifnotme()._britornotgalstuk._wearthen
returncat(
'Я захожу в зал, когда меня останавливает человек в форме с надписью <<ОХРАНА>>. Вего руках помповое ружье.^^',goto('facectrl')), false;
end
facectrl:poff(1,5);
facectrl:pon(6);
returngoto('facectrl'), false;
end,
way={'cor4'},
};
hall41=room{
nam='Зал 1',
dsc=[[Язахожувпустойзал.Похоже-- это один из залов для проведения лекций. Множество мест уходят