room { nam = "room11_kabinet"; title = "Кабинет"; dsc = function(s) if not isDaemon('kabinet_fenestro') then if s:once() then _'kabinet_birdo':disable(); _'kabinet_korvo':disable(); _'kabinet_stranga':disable(); end; DaemonStart('kabinet_fenestro'); end; return "К востоку гостиная. В кабинете есть стол, стул, шкаф. Прямо за столом на стене висит чей-то портрет. Здесь есть окно."; end; before_Think = function(s) if s:once(mp.event) then p 'Ты решила подумать, но тебе, по обыкновению, ничего толкового в голову не приходит.'; else local msg = { "Ты подумала, осмотрела комнату. Можно попробовать поговорить с кем-нибудь."; "Может быть посидеть на стуле? Отдохнуть."; "Можно на стенах узоры какие-нибудь посмотреть."; "Ты подумала о смысле бытия, но додумать не вышло. Это было сложно, но ты попыталась."; "Интересно, если есть предшественники, значит есть и шественники?"; "Ты озарила взглядом своим сие помещение и обнаружила, что в зеркале видишь саму себя! Может попробовать поговорить с самой собой? Только о чем? Нужно придумать..."; "О! Тебе хочется кушать яблоки!"; "Интересно, а здесь есть яблоки? Нужно где-нибудь поискать..."; }; p(msg[rnd(#msg)]); end; end; e_to = function() DaemonStop('kabinet_fenestro') walkin 'room12_gostinnaya'; end; }:with{ obj { -"стол"; nam = 'kabinet_tablo'; description = 'На столе есть печатная машинка, компьютер и небольшая стопка бумаг. Выдвижных ящичков у стола нет.'; before_Take = 'Стол, несмотря на свой внешний обманчивый вид, очень тяжелый.'; before_Attack = 'Можно, конечно, ударить по столу, но это будет достаточно громко. А шуметь как-то не хочется.'; before_Listen = 'Это конечно интересное занятие, но может быть стоит заняться чем-то другим?'; before_Kiss = 'Да, это именно то, что сейчас нужно! На самом деле нет. Что за мысли?'; before_Eat = 'Попытка прогрызть стол прошла неудачно. Не вкусно.'; before_Open = 'Тут нечего открывать.'; before_Taste = 'Что за мысли в голове?'; before_Enter = 'Пожалуй, не стоит.'; }:with{ obj { -"машинка|печатная машинка|пишущая машинка"; nam = 'kabinet_tajpilo'; description = 'То ли немецкий "Robotron", то ли "Хансен Райтинг Белл"...Сложно определить модель.'; before_Take = 'Тебе не нужна пишущая машинка.'; before_Attack = function(s) if s:once(mp.event) then p 'Оно, небось, дорого стоит. И вообще, зачем повреждать это устройство?'; else p 'Слишком дорогая вещь для подобных деяний. И вообще, скорее всего ты себе руки переломаешь.'; end; end; before_Listen = function(s) if s:once(mp.event) then p 'Тишина...'; else local msg = { "И снова тишина!"; "Звуки тишины."; "Тишина..."; }; p(msg[rnd(#msg)]); end; end; before_Kiss = 'Оно пыльное!'; before_Eat = 'Ага, прекрасно! Съесть машинку. Итак, с чего начнем? Клавиши?'; before_Open = 'А что, собственно, открывать?'; before_Push = 'Куда и зачем? Можно, конечно, понажимать на кнопочки, но опять же, зачем?'; before_Taste = function(s) if s:once(mp.event) then p 'Ты сделала вид, что таких мыслей в голове не было.'; else p 'Ты СДЕЛАЛА вид, что таких мыслей в голове не было.'; end; end; before_Enter = 'Зачем же?'; }:attr 'scenery'; obj { -"компьютер|ЭВМ"; nam = 'kabinet_komputilo'; description = 'Ты не разбираешься в компьютерах, но кажется, что это либо "Правец" либо "Роботрон"...'; before_Take = function(s) if s:once(mp.event) then p 'И что ты с ним будешь делать?'; else p 'Нужен ли тебе этот компьютер? Ты решила, что пока что в нем нет необходимости.'; end; end; before_Attack = 'Скорее всего ты сломаешь себе руки или раскрошишь окружение, чем этот компьютер поцарапается.'; before_Listen = 'Компьютер выключен.'; before_Kiss = function(s) if s:once(mp.event) then p 'Нет!'; else local msg = { "Нет!"; "Нет же!"; "Игрок, тебе недостаточно ясно, что ты этого делать не будешь?"; "Странные нынче игроки."; }; p(msg[rnd(#msg)]); end; end; before_Eat = 'Тебе не хочется что либо есть. Еды тут нет. Может быть на кухне?'; before_Open = function(s) if s:once(mp.event) then p 'Как?'; else p 'Ты не представляешь, как это можно сделать.'; end; end; before_Push = 'Нет, нет. Пусть лежит на своём месте.'; before_SwitchOn = 'Зачем тебе его включать?'; before_SwitchOff = 'Он и так выключен.'; before_Taste = function(s) if s:once(mp.event) then p 'Это ещё зачем?'; else local msg = { "Какие-то странные у тебя мысли."; "Ты не будешь этого делать."; "Зачем тебе это?"; "Так делать нехорошо."; }; p(msg[rnd(#msg)]); end; end; before_Enter = 'Это не нужно.'; }:attr 'scenery'; obj { -"бумаги/жр, мн|стопка бумаг"; nam = 'kabinet_paperoj'; description = function(s) if s:once(mp.event) then p 'Стопка каких-то бумаг. Можно было бы подумать, что это какие-то документы, но нет - чистые листы бумаги.'; else p 'Стопка чистых листов бумаги.'; end; end; before_Take = function(s) if s:once(mp.event) then p 'Пусть здесь все лежит на своём месте.'; else p 'Тебе не нужны эти бумаги. Пусть лежат на своем месте.'; end; end; before_Attack = function(s) local msg = { "Порвать бумагу? Но зачем?"; "Ты вспомнила, что твое детство уже окончилось."; "Не стоит."; }; p(msg[rnd(#msg)]); end; before_Listen = function(s) if s:once(mp.event) then p 'Бумажная тишина...'; else p 'Сначала бумажная тишина, а теперь вообще ничего не слышно. Вот же ж...'; end; end; before_Kiss = function(s) if s:once(mp.event) then p 'Целовать пыльную бумагу. Откуда такие мысли?'; else p 'Ты не хочешь целовать бумагу.'; end; end; before_Eat = function(s) if s:once(mp.event) then p 'Вряд ли эта бумага вкусная.'; else local msg = { "Бумага вряд ли съедобна."; "И по внешнему виду бумаги ясно, что она не вкусная!"; "Ты не хочешь есть бумагу."; }; p(msg[rnd(#msg)]); end; end; before_Open = function(s) if s:once(mp.event) then p 'Но бумагу невозможно открыть!'; else p 'Бумагу открыть нельзя!'; end; end; before_Push = 'Ну столкнешь ты стопку этих бумаг со стола и что дальше?'; before_Taste = function(s) if s:once(mp.event) then p 'Чего?'; else p 'Ты решила отогнать такие мысли из головы. Нехорошо это.'; end; end; before_Enter = 'И помять их, да?!'; }:attr 'scenery'; obj { -"ножки стола|ножка стола"; nam = 'kabinet_tablopiedo'; description = function(s) if s:once(mp.event) then p 'Ножка стола, изготовленная из дерева.'; else p 'Деревянная ножка стола.'; end; end; before_Take = 'Ты решила не вандальничать.'; before_Attack = function(s) if s:once(mp.event) then p 'Ты стукнула ногой о ножку стола, но...ничего не произошло.'; else p 'Ты ещё раз стукнула ногой о ножку стола. И снова ничего не произошло.'; end; end; before_Listen = 'От ножек стола никаких звуков. Абсолютно.'; before_Eat = 'Тебе не хочется есть дерево.'; before_Open = 'Открыть или вскрыть ножки стола не представляется возможным.'; before_Push = 'Ты решаешь не устраивать здесь переворот в виде перестановки мебели.'; before_Taste = function(s) if s:once(mp.event) then p 'Ну уж нет.'; else local msg = { "Ты в своем уме?"; "Так делать не стоит."; "Ты решила отогнать такие мысли из головы."; "Это не есть хорошо."; }; p(msg[rnd(#msg)]); end; end; before_Kiss = function(s) if s:once(mp.event) then p 'Нет!'; else local msg = { "Игрок, так делать не стоит."; "Ты не хочешь это делать."; "Опять мысли всякие в голову лезут! Это все интернеты эти. Правильно бабка говорила, меньше тыкаться надо."; "Ты не будешь это делать."; }; p(msg[rnd(#msg)]); end; end; before_Talk = 'Ты решила поговорить с ножкой от стола, но беседа даже не началась - ножки не особо разговорчивые.'; before_Ask = 'Ножки стола не могут говорить. Они, как и вся находящаяся в этом кабинете мебель, могут только слушать. Можно попробовать поговорить с ними о смысле жизни, например.'; before_Enter = function(s) if s:once(mp.event) then p 'Ты не в той Вселенной находишься.'; else p 'Это невозможно.'; end; end; }:attr 'scenery'; }:attr 'scenery'; obj { -"стул"; nam = 'kabinet_segho'; description = 'Деревянный стул.'; before_Take = 'Тебе не нужен стул.'; before_Attack = function(s) if s:once(mp.event) then p 'Ударить стул? Как-то не хочется.'; else p 'Тебе не хочется производить операцию по избиению стула.'; end; end; before_Listen = function(s) if s:once(mp.event) then p 'Кажется ты слышишь звуки дерева!'; else p 'Звуки дерева прекратились...'; end; end; before_Kiss = function(s) if s:once(mp.event) then p 'Ты предлагаешь оставить подобные фантазии у себя в голове.'; else p 'Нет, твоё предложение оставить подобные фантазии у себя в голове все ещё в силе.'; end; end; before_Eat = 'Съесть деревянный стул...Пожалуй нет.'; before_Open = 'Стул невозможно открыть или закрыть.'; before_Push = 'Куда и зачем?'; before_Taste = function(s) if s:once(mp.event) then p 'А вот этого не надо!'; else p 'Тебе же отличная мысль в голову пришла, что не надо это делать. Ты не хочешь заниматься этим.'; end; end; before_Enter = function(s) if s:once(mp.event) then enable('kabinet_radio'); return false else return false end; end; }:attr 'scenery, supporter, enterable'; obj { -"ножки стула|ножка стула"; nam = 'kabinet_seghopiedo'; description = function(s) if s:once(mp.event) then p 'Ножки стула сделаны из дерева.'; else p 'Деревянные ножки стула.'; end; end; before_Take = 'Тебе не нужен стул.'; before_Attack = function(s) if s:once(mp.event) then p 'Ты стукнула ногой о ножку стула. Ничего не произошло.'; else local msg = { "Ты стукнула ногой по стулу. Ничего не произошло."; "Ты чуть сильнее пнула ногой по стулу, но ничего не произошло."; "Ты ударила ногой о ножку стула, но тот стоял на своём, то есть на своих ножках."; }; p(msg[rnd(#msg)]); end; end; before_Listen = function(s) if s:once(mp.event) then p 'Тишина. Слышно только твое сердце.'; else p 'Ты слышишь только свое сердце.'; end; end; before_Eat = function(s) if s:once(mp.event) then p 'Тебе не хочется есть дерево.'; else p 'Ты не видишь смысла в съедении ножки стула.'; end; end; before_Open = 'Открыть или вскрыть ножки стула не представляется возможным.'; before_Push = 'Пусть находится там, где и сейчас.'; before_Taste = function(s) if s:once(mp.event) then p 'Нет!'; else p 'Ты не хочешь этого делать. Опять игрок балуется!'; end; end; before_Kiss = function(s) if s:once(mp.event) then p 'Не стоит.'; else p 'Ты продолжаешь стоять на своем - не стоит заниматься подобным.'; end; end; before_Talk = function(s) if s:once(mp.event) then p 'Попытка поговорить с ножкой стула не увенчалась успехом - не хотят говорить и всё тут!'; else p 'Безуспешно. Ножки стула не идут на встречу для ведения разговора.'; end; end; before_Ask = function(s) if s:once(mp.event) then p 'Ножки стула никак не отреагировали на твои попытки с ними поговорить. Впрочем, окружение этого кабинета всегда может тебя послушать; тебе стоит найти лишь тему для разговора, но начать ты её не сможешь, так как это не предусмотрено игрой.'; else local msg = { "Ножки стула никак не отреагировали на тебя."; "Игрок, пора задуматься о некоторых вещах..."; "Ты можешь попробовать поговорить с ножками стула на какую-нибудь тему, но знай, ты не сможешь это сделать так как это не предусмотрено игрой."; }; p(msg[rnd(#msg)]); end; end; }:attr 'scenery'; obj { -"шкаф"; nam = 'kabinet_shranko'; description = function(s) p 'Деревянный шкаф, на одной дверце которого есть зеркало.'; mp:content(s) end; before_Take = function(s) if s:once(mp.event) then p 'Шкаф слишком тяжёлый, да и не нужен он тебе.'; else p 'У тебя нет необходимости в тяжелом шкафе.'; end; end; before_Attack = function(s) if s:once(mp.event) then p 'Шкаф не сделал тебе ничего плохого, из-за чего тебе понадобилось бы подвергать его насилию.'; else p '-- На наш век хватит... -- сказала ты и отказалась совершать насильственные действия против шкафа.'; end; end; before_Listen = function(s) if s:once(mp.event) then p 'В шкафу тишина. Вывод напрашивается сам за себя - чертиков в шкафу нет!'; else p 'После прослушивания шкафа ты сделала вывод, что чертиков в нем нет.'; end; end; before_Kiss = 'Можно конечно попробовать поцеловать своё отражение в зеркале...Но зачем?'; before_Eat = function(s) if s:once(mp.event) then p 'Съесть шкаф...Нет, у тебя все в порядке с головой.'; else p 'Ты продолжаешь считать, что с головой у тебя все в порядке.'; end; end; before_Open = function(s) if s:once(mp.event) then p 'Дверца шкафа закрыта. Ты не сможешь открыть её.'; else p 'Ты не можешь открыть дверь, так как она закрыта.'; end; end; before_Push = 'Не нужно.'; before_Taste = function(s) if s:once(mp.event) then p 'Ты оставила это у себя в голове от греха подальше.'; else p 'Тебе это действие показалось странным, поэтому ты не будешь его делать.'; end; end; before_Enter = 'Тебе не хочется этого делать.'; }:with{ obj { -"радиола"; nam = 'kabinet_radio'; description = 'Радиола. А на радиоле ещё что-то лежит. Хочется посмотреть, но не можешь - слишком высоко.'; before_Take = 'Тебе не нужна радиола.'; before_Attack = 'Ага, упадет и мало не покажется!'; before_Listen = function(s) if s:once(mp.event) then p 'Тишина...'; else p 'Звуки тишины прервали звуки другой тишины. Теперь ничего не слышно как и прежде.'; end; end; before_Kiss = function(s) if s:once(mp.event) then p 'Во-первых, радиола пыльная, во-вторых она высоко, а в третьих...Не хочешь.'; else p 'Ты уже твердо решила, что не будешь этого делать.'; end; end; before_Eat = function(s) if s:once(mp.event) then p 'Съесть радиолу. Такие мысли тебе не приходили в голову.'; else p 'Все таки мысли съесть радиолу тяжело отогнать...'; end; end; before_Open = 'Не стоит.'; before_Push = 'Нет нет. Пусть лучше стоит там где стоит.'; before_Taste = function(s) if s:once(mp.event) then p 'Нет.'; else p 'Ты отказываешься это делать.'; end; end; before_Talk = function(s) if s:once(mp.event) then p 'Иногда тебе не хватает общения, но это уже слишком.'; else p 'Когда окончишь свои приключения, то сможешь вернуться к своим обычным делам и поискать собеседников, ведь даже радиола никак не реагирует на твои порывы поговорить.'; end; end; before_Ask = function(s) local msg = { 'И что ты ожидаешь в ответ?'; 'Кажется ты что-то услышала...'; 'Ты что-то слышишь, но можешь ошибаться.'; 'Это радиола!'; }; p(msg[rnd(#msg)]); end; before_Enter = function(s) local msg = { "У тебя не получится это сделать."; "Ты не сможешь это сделать."; }; p(msg[rnd(#msg)]); end; }:attr 'static':disable(); obj { -"ножки шкафа|ножка шкафа"; nam = 'kabinet_shrankopiedo'; description = function(s) if s:once(mp.event) then p 'Ножка шкафа, изготовленная из дерева.'; else p 'Деревянная ножка шкафа.'; end; end; before_Take = 'Ты не можешь взять ножку шкафа. Ведь тебе бы пришлось произвести изъятие содержимого из шкафа, дальнейшее перемещение оного в горизонтальное положение и снятие ножки при помощи различных специализированных инструментов, которые сейчас у тебя отсутствуют.'; before_Attack = function(s) if s:once(mp.event) then p 'Ты пнула слегка ножку шкафа, но ничего не произошло.'; else p 'Ты ещё раз пнула ножку шкафа, но как и раньше, ничего не произошло.'; end; end; before_Listen = function(s) if s:once(mp.event) then p 'Ты попробовала послушать ножку шкафа, но ничего не услышала.'; else p 'Прослушка шкафа прошла никак - никаких признаков звука.'; end; end; before_Eat = 'Тебе не хочется есть дерево.'; before_Open = function(s) if s:once(mp.event) then p 'Открыть или вскрыть ножки шкафа не представляется возможным.'; else p 'Открыть ножки шкафа невозможно.'; end; end; before_Push = function(s) if s:once(mp.event) then p 'Шкаф пусть стоит на месте.'; else p 'Ты решаешь оставить шкаф в покое и не перемешать его куда либо относительно текущей позиции.'; end; end; before_Taste = 'Ну уж нет.'; before_Kiss = function(s) if s:once(mp.event) then p 'Нет!'; else p 'Когда ты отсюда уйдешь, то обязательно посетишь врача.'; end; end; before_Talk = 'Ты решила поговорить с ножкой от шкафа, но беседа даже не началась - ножки не особо разговорчивые.'; before_Ask = 'Ножки шкафа не могут говорить. Они, как и вся находящаяся в этом кабинете мебель, могут только слушать, так что ты можешь попробовать им прочитать лекцию о взаимодействии тушканчиков и звезд класса "О". Есть желание?'; before_Enter = 'Ты не в той Вселенной находишься.'; }:attr 'scenery'; obj { -"зеркало|отражение"; nam = 'kabinet_spegulo'; description = function(s) local msg = { "Зеркало, в отличие от всего остального в кабинете не такое уж и пыльное и в него можно смотреться."; "Какая же ты красивая!"; "Тебе показалось или в отражении в окне что-то мелькнуло?"; "Странно, ты не видишь своего отражения...О! Теперь видишь."; "Зеркало как зеркало. Расположено практически во всю высоту дверцы шкафа."; }; p(msg[rnd(#msg)]); end; before_Take = 'Ты не можешь взять зеркало.'; before_Attack = function(s) if s:once(mp.event) then p 'Ударить зеркало? Скорее всего ты наведешь суету и поцарапаешься!'; else p 'Ты решила, что агрессия по отношению к стеклу неоправданна.'; end; end; before_Listen = 'Ты ничего не слышишь.'; before_Kiss = function(s) if s:once(mp.event) then p 'Поцеловать своё отражение? Нет.'; else p 'Сказать своему отражению что-нибудь ещё ладно, но поцеловать? Ты решаешь таким не заниматься. К тому же, зеркало немного пыльное.'; end; end; before_Eat = 'Ты читала давече газету, так там человек, чтобы прожить дольше, принимал каждый день несколько автомобильных зеркал внутрь, запивая чаем...'; before_Open = function(s) if s:once(mp.event) then p 'Зеркало невозможно открыть. То есть, как это?'; else p 'Зеркало невозможно открыть.'; end; end; before_Push = 'Нет. Пусть висит где висит.'; before_Taste = 'Несмотря на то, что в зеркало можно смотреться, это не делает его менее пыльным.'; before_Talk = 'Поговорить со своим отражением? Нет, для того, чтобы поговорить с самой собой тебе не обязательно нужен зрительный контакт.'; ['before_Ask, AskTo, AskFor, Tell, Answer'] = function(s,w) if w:find "красное" and w:find "море" and s:once(mp.event) then p 'Ты произнесла это и услышала за собой какой-то грохот. Что-то упало на пол.'; mp.score=mp.score+1; enable('kabinet_falsajoponardo'); else p 'Можно попробовать ещё что нибудь сказать своему отражению в зеркале...'; end; end; before_Enter = 'Попасть в зазеркалье? Замечательно! Но к твоему разочарованию, это невозможно.'; }:attr 'scenery'; }:attr 'scenery, supporter'; obj { -"портрет|картина|изображение|рисунок|картинка"; nam = 'kabinet_bildo'; description = 'На картине изображен человек средних лет с цилиндром на голове, моноклем на одном глазу и характерными усами с завитушками.^ Интересно, кто это?'; before_Take = 'Тебе не нужна картина.'; before_Attack = function(s) if s:once(mp.event) then p 'Пусть висит где висит. Зачем тебе её бить?'; else p 'Ты находишь это решение неоправданным по отношению к картине.'; end; end; before_Listen = function(s) if s:once(mp.event) then p 'Кажется ты ничего не слышишь!'; else p 'Кроме дыхания самой себя ты ничего не слышишь.'; end; end; before_Kiss = 'Ну уж нет!'; before_Eat = function(s) if s:once(mp.event) then p 'Это невозможно по определению.'; else p 'Съедение тобою картины невозможно само по себе как процесс.'; end; end; before_Open = 'Тебе её порвать как-то? Т.е. отделить рамку от основного полотна? Не совсем понимаю, как должно осуществляться открытие картины...'; before_Push = 'Пусть висит на своём месте.'; before_Taste = 'Это лучше оставить у себя в голове.'; before_Enter = 'Это не представляется возможным.'; }:with{ obj { -"картинная рама|рамка картинки"; nam = 'kabinet_bildkadro'; description = function(s) if s:once(mp.event) then p 'Картинная рама из дерева. На удивление, сделана просто и безо всяких узоров.'; else p 'В отличие от других элементов мебели комнаты, эта рамка сделана просто и скромно.'; end; end; before_Take = 'Тебе не нужна картинная рама.'; before_Attack = 'Голос в голове тебе говорит, что агрессия к картинной раме неоправданна. Задумайся!'; before_Listen = 'Звуки картинной рамки!'; before_Eat = 'Ты не сможешь осилить съедение элементов картинной рамки.'; before_Open = 'Картинную рамку невозможно вскрыть. Её можно только поломать или разделить по частям, но тебе это не нужно.'; before_Taste = 'Облизать картинную рамку?'; before_Kiss = 'Такая симпатия к этой раме неоправданна.'; before_Enter = 'Ты конечно можешь попробовать отодрать рамку от полотна и, выставив рамку перед собой, посмотреть куда-нибудь, но этого никто не увидит.'; before_Push = 'Картинная рамка зафиксирована с полотном, а перемещать картину тебе не нужно.'; before_Ask = 'Картинная рамка не хочет с тобой говорить. Так и передала.'; before_Talk = 'Картинная рамка не хочет с тобой говорить.'; }:attr 'scenery'; obj { -"картинное полотно|холст"; nam = 'kabinet_bildokanvaso'; description = 'Холст, на котором изображен человек средних лет с цилиндром на голове, моноклем на одном глазу и характерными усами с завитушками. Тебе кажется, что ты видела кого-то похожего, но можешь ошибаться.'; before_Take = 'Тебе не нужно это полотно. Пусть лучше висит.'; before_Attack = 'Не стоит.'; before_Listen = 'Звуки холста...'; before_Eat = 'Съесть полотно? Это как?'; before_Open = 'Это невозможно.'; before_Ask = 'Ты попыталась обратиться к картине, но она тебя игнорирует.'; before_Talk = 'Пора задуматься о своем поведении, подумала ты.'; before_Push = 'Пусть висит на своем месте.'; before_Kiss = 'Тебе не хочется целовать холст.'; before_Taste = 'Тебе неприятно заниматься подобным.'; before_Wave = 'Картина никак не отреагировала на это.'; before_Enter = 'На картине на фоне изображены прекрасные пейзажи, но тебе не получится попасть в тот прекрасный мир хотя бы потому, что тебе и в этом хорошо.'; }:attr 'scenery'; }:attr 'scenery'; obj { -"окно"; nam = 'kabinet_fenestro'; description = 'Деревянное окно с толстым стеклом. У окна есть небольшая форточка.'; daemon = function(s) local evento = { _'kabinet_birdo'; _'kabinet_korvo'; _'kabinet_stranga'; }; local evento2 = { _'kabinet_birdo2'; _'kabinet_korvo2'; _'kabinet_stranga2'; }; local r = rnd(12); if r <= 3 then evento[1]:enable(); remove(evento2[1]); else evento[1]:disable(); move(evento2[1],here()); end; if r >= 6 and r <= 9 then evento[2]:enable(); remove(evento2[2]); else evento[2]:disable(); move(evento2[2],here()); end; if r >= 10 then evento[3]:enable(); remove(evento2[3]); else evento[3]:disable(); move(evento2[3],here()); end; end; before_Take = 'Окно взять помогут только мастера, а ты не можешь.'; before_Attack = 'Разбить окно? И зачем?'; before_Listen = 'А у окна отличная звукоизоляционная характеристика - шестой класс. Ты не слышишь даже себя...Стоп, это кажется другое.'; before_Kiss = 'К слову, окно немного грязное.'; before_Eat = 'Окно не может быть как-то съедено.'; before_Open = 'У окна есть форточка, да и та небольшая. А в кабинете не так уж и душно.'; before_Push = 'Куда?'; before_Taste = 'Выглядит это конечно забавно, но не стоит.'; before_Enter = 'Окно закрытое, а через форточку совершить сие деяние не выйдет.'; }:with{ obj { -"форточка"; nam = 'kabinet_minifenestro'; description = 'Небольшая форточка прямоугольной формы.'; before_Take = 'Форточку невозможно взять. Она же часть окна.'; before_Attack = 'Ты не хочешь сломать себе руку.'; before_Listen = 'Тишина!'; before_Kiss = 'Ну уж нет.'; before_Eat = 'Форточку невозможно съесть, она часть окна. Да и что ты сможешь съесть там?'; before_Open = 'В кабинете не настолько душно, чтобы тебе понадобилось открывать окно.'; before_Enter = 'У тебя не получиться пролезть через форточку - твои габариты не позволят.'; }:attr 'scenery'; }:attr 'scenery'; obj { -"оконная рама"; nam = 'kabinet_fenestroframo'; description = 'Деревянная оконная рама.'; before_Take = 'Может тебе заняться демонтажем всего и вся в кабинете?'; before_Attack = 'Ты получишь только ушибы на руках.'; before_Push = 'Не стоит.'; before_Talk = 'Попытки завести разговор с оконной рамой тщетны.'; before_Ask = 'Попытки завести разговор с оконной рамой тщетны.'; before_Kiss = 'Оконная рама пыльная!'; before_Taste = 'Тебе же не семь лет, чтобы устраивать подобные эксперименты!'; before_Open = 'Ты бы могла попробовать открыть окно, но никак не оконную раму.'; before_Eat = 'Это невозможно.'; before_Listen = 'У окна прекрасная звукоизоляция. Ты ничего не слышишь.'; before_Enter = 'Это невозможно.'; }:attr 'scenery'; obj { -"стекло|оконное стекло"; nam = 'kabinet_fenestravitro'; description = 'Оконное стекло. Выглядит очень толстым и крепким.'; before_Take = 'Ты не можешь взять стекло, так как оно является частью такой композиции как окно. Ремонтом тебе, конечно же, заниматься сейчас тоже не хочется.'; before_Attack = 'Скорее всего тебе будет больно.'; before_Push = 'Окно жестко зафиксировано на месте.'; before_Talk = 'Беседа со стеклом не увенчалась успехом.'; before_Ask = 'К сожалению, стекло никак не отреагировало на твои попытки с ним поговорить.'; before_Kiss = 'Стекло пыльное!'; before_Taste = 'А стекло то пыльное. Да и неприятно подобным заниматься. Хотя кто знает, что творится в голове у нашего покорного слуги.'; before_Open = 'Ты не можешь открыть стекло, так как оно является частью окна, которое в свою очередь, не имеет возможности открываться. Есть форточка, да и та мала.'; before_Eat = 'Чтобы съесть стекло, тебе нужно его вытащить, а ты не сможешь этого сделать в виду отсутствия сил.'; before_Listen = 'Звуки стекла...'; before_Enter = 'Что-то за гранью фантастики. Тебе очень хотелось бы быть терминатором, но ты не терминатор и даже не человек-стекло!'; }:attr 'scenery'; obj { -"птица"; nam = 'kabinet_birdo'; dsc = 'В окне видна птица.'; description = 'Небольшая птичка серого цвета. Обращает свой взор из стороны в сторону, словно совершенно не обращая внимания на происходящее внутри комнаты.'; before_Take = 'Ты не можешь взять птичку, так как она находится за окном, а окно тут имеет только небольшую форточку в верхней её части, отчего операция по захвату птички совершенно нереализуема.'; before_Attack = 'Не хочется.'; before_Kiss = 'Птица конечно няшная, но не настолько.'; before_Listen = 'Ты слышишь курлыканье, но можешь ошибаться.'; before_Wave = 'Птица пару раз обратила взгляд на твои руки и вновь вернулась к осмотру окружающего её мира.'; before_Ask = 'Птица не очень-то и разговорчивая.'; before_Eat = 'Из птицы ты ешь только классических домашних животных в виде кур и уток. А это непонятно что, да и откуда у неё мясо?'; before_Open = 'Это невозможно.'; before_Taste = 'Совершенно не понимаешь, зачем это нужно.'; before_Enter = 'Птичка за окном, а ты тут, в кабинете.'; }:dict{ ["птица/вн"] = "птицу"; ["птица/рд"] = "птицы"; ["птица/дт"] = "птице"; ["птица/тв"] = "птицей"; ["птица/пр"] = "птице"; }:attr 'animate'; obj { -"ворон|ворона"; nam = 'kabinet_korvo'; dsc = 'В окне видна ворона.'; description = 'То ли ворон, то ли ворона. Птица черного цвета. Уставилась в окно и всё разглядывает комнату. Сначала посмотрела на картину, а потом...На тебя. И всё, даже не шевелится. ^Что-то как-то не по себе.'; before_Take = 'Ты не можешь взять ворону, так как эта птица находится за окном. Через форточку ты достать её все равно не сможешь, да и незачем. Да тут не только незачем, совсем нет желания.'; before_Attack = 'Никак не выйдет. Да и подходить к этому созданию не очень то и хочется.'; before_Kiss = 'Эээ, что?'; before_Listen = 'Абсолютная тишина.'; before_Wave = 'Птица не отреагировала. Продолжает наблюдать за твоими действиями.'; before_Ask = 'Ворона продолжает смотреть на тебя.'; before_Eat = 'Никак не выйдет. Да и если ты разобьёшь стекло и таки достанешь эту птицу, тебе нужно будет её ещё обработать, а это время, которое ты не хочешь терять.'; before_Open = 'Это как?'; before_Taste = 'Каааак? Объясни мне, мозг мой, что ты хочешь?'; before_Enter = 'Ворона за окном, а ты в кабинете.'; }:attr 'animate'; obj { -"существо/ср|странная тварь,тварь/жр|нечто/ср|белое/ср"; nam = 'kabinet_stranga'; dsc = 'Странная тварь смотрит из окна в комнату.'; description = function(s) local msg = { 'В окне ты видишь...Это что за дрянь? Что-то с большими круглыми глазами смотрит на картину на стене. И отводит взгляд...На тебя!'; 'Оно смотрит прямо на тебя! Вообще ничего не делает, просто словно прилипло к окну и смотрит на тебя своими пустыми глазами!'; 'Жуткое создание. Откуда оно здесь взялось? Похоже, оно пока не может попасть внутрь. Ну и хорошо...'; }; p(msg[rnd(#msg)]); end; before_Take = 'Нет-нет! Ты даже приближаться к окну не собираешься!'; before_Attack = 'Столько смелости у тебя ещё нет.'; before_Kiss = 'Кажется кто-то не в своём уме, раз подобное взбрело в голову.'; before_Listen = 'Тишина, никаких звуков.'; before_Wave = 'Нет уж! Этого ты делать не будешь.'; before_Ask = 'Говорить с этим? Не-а...'; before_Eat = 'Чего?'; before_Open = 'Ну уж нет!'; before_Give = 'Во-первых, ты не имеешь возможности отдать этому созданию что-либо. Во-вторых, оно же жуткое! Зачем?'; before_Taste = 'Чего?'; before_Enter = 'Ты не собираешься даже приближаться к этой твари потому что боишься её.'; }:attr 'animate'; obj { -"пол"; nam = 'kabinet_planko'; description = function(s) p 'Деревянный пол. На полу есть ковер.'; mp:content(s); end; before_Take = 'Ты не сможешь взять пол.'; before_Listen = 'Ничего не слышно.'; before_Attack = 'Ты топнула по полу.'; before_Kiss = 'Нет желания.'; bfeore_Open = 'Пока что тебе не нужно вскрывать пол.'; before_Taste = 'Нет желания.'; }:with{ obj { -"ковер"; nam = 'kabinet_tapisho'; description = 'Выглядит как очень старый ковер. По крайней мере он пыльный, а узоры позволяют их разглядывать часами.'; before_Take = 'Тебе не нужен ковер.'; before_Listen = 'Слышится как ковер. Прикольно.'; before_Attack = 'Ты топнула по ковру.'; before_Kiss = 'Тебе не 8 лет. Подобное дурачество не приведет ни к чему хорошему.'; before_Taste = 'Ну уж нет!'; before_Open = 'Ковер невозможно открыть.'; }:attr 'scenery'; obj { -"кинжал"; nam = 'kabinet_falsajoponardo'; description = 'Таинственный кинжал. Похоже, что он выпал из-за картины.'; before_Take = function(s) disable('kabinet_falsajoponardo'); take 'dagger'; mp.score=mp.score+1; p 'Ты взяла кинжал.'; end; before_Attack = 'Ударить его? Это как?'; before_Eat = 'Ты хотела когда-то выступать в цирке, но теперь не хочешь.'; before_Listen = 'Звуки лезвия...'; before_Kiss = 'Ты не будешь этого делать.'; before_Taste = 'Ты не будешь этого делать.'; before_Open = 'Это невозможно.'; before_Push = 'Ты можешь взять кинжал, больше ничего с ним лучше не делать.'; before_Ask = 'Ты хочешь говорить с кинжалом, а он с тобой не хочет.'; before_Talk = 'Ты хочешь поговорить с кинжалом, а он с тобой не хочет.'; before_Enter = 'Была бы ты терминатором, то это было бы хоть как-то возможно. Но ты не терминатор.'; }:disable(); }:attr 'scenery, supporter'; obj { -"воздух"; nam = 'kabinet_aero'; description = 'Тут пахнет книгами и пылью.'; before_Take = 'Всегда было интересно взять воздух в руки, но это сложно - он постоянно убегает.'; before_Attack = 'Смелая попытка увернуться, воздух!'; before_Listen = 'Ты прислушалась...Тишина.'; before_Kiss = 'Это выглядит глупо, но ты попыталась.'; before_Taste = 'Ээ, нет.'; before_Open = 'Открыть воздух...Что может быть гениальнее?'; before_Ask = 'Осталось подождать, пока воздушное пространство тебе ответит. Стоит сходить к врачу как-нибудь.'; before_Talk = 'Говорить с воздухом. Тебе точно нужно к врачу.'; before_Wave = 'Ты помахала руками в воздухе. Ничего не произошло.'; before_Eat = 'Ты попыталась съесть воздух, но все тщетно.'; before_Enter = 'Но ты и так находишься в воздушном пространстве.'; }:attr 'scenery'; obj { -"пыль"; nam = 'kabinet_polvo'; dsecription = 'Пыль...Пыль никогда не меняется. Она везде.'; before_Attack = 'Борьба с пылью будет длиться в течение всего существования этого мира. Это как борьба эксплуатирующихся с эксплуататорами...Ой, твои мысли уходят не туда.'; before_Take = 'Тебе не обязательно брать пыль. Достаточно лишь просто простоять в кабинете на одном месте некоторое время и пыль сама расположится на тебе.'; before_Listen = 'К сожалению, человеческий организм пока не может послушать пыль. Но у тебя появилась идея: по завершению своих приключений стать видеоблогером и вести дневник, в одном из видео которого ты будешь слушать пыль в течение часа, а то и больше!'; before_Ask = 'Пыль неразговорчива.'; before_Talk = 'Говорить с пылью бесполезно. Это куда более бесполезное занятие, чем беседы с мебелью.'; before_Open = 'Пыль невозможно открыть.'; before_Wave = 'Ты помахала руками в пыли и пыли, но ничего не произошло.'; before_Eat = 'Ты не хочешь есть пыль, так как это весьма неприятно.'; before_Kiss = 'Смелая попытка стать частью с этим миром.'; before_Taste = 'Никакие ухищрения не помогут тебе стать единым целым с Вселенной.'; before_Enter = 'Ты и так находишься в пыли и в покрытом пылью пространстве.'; }:attr 'scenery'; obj { -"потолок"; nam = 'kabinet_plafono'; description = 'Кажется это сплошной подвесной потолок покрытый потолочными плитами из пенополистирола. На потолке подвешена люстра.'; before_Take = 'Потолок невозможно взять.'; before_Attack = 'Потолок не сделал тебе ничего плохого, ради чего тебе стоило бы подвергать его разрушительному воздействию.'; before_Eat = 'Это невозможно.'; before_Kiss = 'Не стоит.'; before_Taste = 'Это совершенно не обязательно.'; before_Ask = 'Интересно, что тебе ответит потолок?'; before_Talk = 'Видимо, потолок не имеет никакого желания с тобой поговорить.'; before_Open = 'Тебе это не нужно.'; before_Wave = 'И что дальше?'; before_Listen = function(s) local msg = { 'Кажется ты слышишь, как кто-то или что-то ползет в потолке.'; 'Ничего не слышно.'; }; p(msg[rnd(#msg)]); end; before_Enter = 'Ты можешь попытаться как-нибудь допрыгнуть до потолка и пролезть внутрь, но не сможешь, так как это не предусмотрено комнатой. К тому же, ты же женщина! Где культура?'; }:attr 'scenery'; obj { -"галтель|потолочный плинтус"; nam = 'kabinet_plafonoplinto'; description = 'Галтель из твердого вспененного поливинилхлорида со всякими узорами. Выглядит симпатично.'; before_Take = 'Не стоит заниматься вандализмом. Да и установлен плинтус скорее всего при помощи контактного клея, что как бы намекает, что скорее всего ты грохнешься на пол в попытках отодрать плинтус.'; before_Push = 'Куда?'; before_Listen = 'От галтели не исходит никаких звуков.'; before_Talk = 'Говорить с потолочным плинтусом бесполезно.'; before_Ask = 'Говорить с потолочным плинтусом бесполезно.'; before_Kiss = 'Ты не буду этого делать!'; before_Taste = 'Не стоит...'; before_Eat = 'Откуда такие мысли вообще?'; before_Open = 'Галтель жестко зафиксирована при помощи контактного клея. Это невозможно.'; before_Attack = 'Ударить плинтус. И зачем?'; before_Enter = 'Это невозможно.'; }:attr 'scenery'; obj { -"люстра"; nam = 'kabinet_lustro'; description = 'Люстра как люстра. Ты можешь путать её с испанской люстрой "Талавера" и с советским "Каскадом". Сложно.'; before_Take = 'Тебе не нужна люстра. Да и высоко она.^Хотя признаешься, выглядит дорого.'; before_Attack = 'Запульнуть чем-нибудь бы да по люстре, да?'; before_Listen = 'Люстра даже не звенит.'; before_Kiss = 'Нет.'; before_Taste = 'Не стоит.'; before_Open = 'Это невозможно.'; before_Eat = 'Ты хочешь прожить немного дольше, чем будешь пребывать в этом кабинете пока не начнёшь есть элементы люстры.'; before_Wave = 'Этого лучше не делать.'; before_Talk = 'Видимо, люстра не имеет желания говорить.'; before_Ask = 'Несговорчивая люстра однако.'; before_Push = 'И вся эта громада упадет на тебя. Ну уж нет!'; before_Enter = 'И вся громада грохнется на тебя. Что-ж, весьма перспективное дело.'; }:attr 'scenery'; obj { -"плинтус|напольный плинтус|деревянный плинтус"; nam = 'kabinet_lignaplinto'; description = 'Деревянный напольный плинтус. В отличие от всего помещения выполнен весьма скромно.'; before_Take = 'Тебе не нужен плинтус.'; before_Attack = 'Ты пару раз пнула ногой плинтус. Ничего не произошло.'; before_Listen = 'Ты прислушалась к покрытию плинтуса. Кажется ты что-то слышишь...Это звук ничего.'; before_Kiss = 'Оно же пыльное и грязное!'; before_Taste = 'Это не стоит того.'; before_Open = 'Плинтус невозможно вскрыть.'; before_Eat = 'Да, это то, что тебе нужно.'; before_Talk = 'Плинтус не может говорить.'; before_Ask = 'Плинтус никак не отреагировал на твои порывы с ним поговорить.'; before_Push = 'Ты ведь не строитель, что ты строишь из себя кот пойми тебя что?'; before_Enter = 'Ты можешь только слегка задеть ногой плинтус, но никак не зайти, залезть или лечь на него.'; }:attr 'scenery'; obj { -"стены/ср,мн|стена/жр,ед"; nam = 'kabinet_muroj'; description = 'На стенах обои с позолотой на узорах. Цветочки, лебеди и античные дворцы! Если что, ты восхищаешься, игрок.'; before_Take = 'Стены невозможно взять.'; before_Push = 'Ты слишком слаба для подобных дел.'; before_Attack = 'Ты не хочешь получить повреждения различных частей тела во время процесса нанесения ударов стенам.'; before_Listen = 'Ты прислушалась к поверхности стен. Абсолютная хтоническая тишина!'; before_Kiss = 'Ты не будешь этого делать, потому что так решил автор этой комнаты.'; before_Taste = 'Ты не горишь желанием это делать.'; before_Ask = 'Стены не умеют говорить, они лишь слушают.'; before_Talk = 'Стены не умеют говорить, они лишь слушают.'; before_Eat = 'Смелые мысли однако.'; before_Open = 'Это невозможно. Ты, конечно, можешь потратить время на поиск тайной кнопки или рычага для открытия прохода в неизвестное, но стоит ли оно того?^На самом деле ты не можешь потратить время на поиск тайной кнопки потому что это не предусматривает автор комнаты.'; before_Enter = 'Ты решаешь не устраивать поиски тайного рычага, открывающего двери в мир потаенного.'; }:attr 'scenery'; obj { -"обои"; nam = 'kabinet_tapeto'; description = 'Обои с позолотой на узорах. На них изображены античные пейзажи, побережье какого-то моря, цветы. Красота!'; before_Take = 'Ты не сможешь отодрать такие обои от стен.'; before_Push = 'Чего ты хочешь добиться?'; before_Attack = 'Бить по стенам будет больно.'; before_Listen = 'Ты прислушалась к стенам и ничего не услышала кроме биения своего сердца.'; before_Kiss = 'Не стоит.'; before_Taste = 'Ты не горишь желанием заниматься подобным.'; before_Talk = 'Обои, как и стены, не умеют говорить - только слушают.'; before_Ask = 'Обои, как и стены, не умеют говорить - только слушают.'; before_Open = 'Это невозможно.'; before_Eat = 'Тебе не хочется есть обои.'; before_Enter = 'Ты решаешь не устраивать поиски тайного рычага, открывающего двери в мир потаенного.'; }:attr 'scenery'; } --obj { -- -"таинственный кинжал,кинжал"; -- nam = "dagger"; -- description = "Таинственный кинжал."; --} obj { -"птица"; nam = 'kabinet_birdo2'; dsc = 'Птицы здесь уже нет.'; description = 'Птицы здесь уже нет.'; before_Any = 'Птицы здесь уже нет.'; }:dict{ ["птица/вн"] = "птицу"; ["птица/рд"] = "птицы"; ["птица/дт"] = "птице"; ["птица/тв"] = "птицей"; ["птица/пр"] = "птице"; }:attr 'animate,concealed'; obj { -"существо/ср|тварь/жр|нечто/ср|белое/ср"; nam = 'kabinet_stranga2'; dsc = 'Твари здесь уже нет.'; description = function(s) p 'Твари здесь уже нет.'; end; before_Any = 'Твари здесь уже нет.'; }:attr 'animate,concealed'; obj { -"ворон|ворона"; nam = 'kabinet_korvo2'; dsc = 'Вороны здесь уже нет.'; description = 'Вороны здесь уже нет.'; before_Enter = 'Вороны здесь уже нет.'; }:attr 'animate,concealed';