main = room { nam = "Около 300 лет назад. Континент Рубинов.", dsc = [[ Последний символ засветился на стене, и Лимзогнок начал ритуал.^^ Из-за закрытой двери доносился тихий гул призраков. Лимзогнок не держал живых слуг - они имели мозги, а значит, в эти мозги мог кто-нибудь залезть (кто-нибудь, кроме самого Лимзогнока). Духи подчинялись беспрекословно и не раздумывая. И, хотя это доставляло некоторые проблемы (например, приказы "Пригоните мои тапочки" или "Приготовьте мою постель, да помягче" понимались буквально), Лимзогнок мирился с такими неудобствами.^^ До Лимзогнока донеслись очень слабые волны сознания. Лимзогнок не обратил внимания - он не мог прервать ритуал только потому,что у какой-нибудь вороны в воздухе рядом случилось просветление мыслей.^^ Внезапно окно за его спиной разлетелось на тысячу осколков. В ту же секунду распахнулась дверь, и двое людей - дин прилетевший из окна, второй ворвавшийся в дверь - прыгнули на волшебника, занося кинжалы.^^ ]]..txtem('--Удержание.')..[[^^ Хотя ритуал вытянул все силы из Лимзогнока, тот всегда держал определённые заклинания в неприкосновенном запасе, хотя ему это давалось истинным чудом.^^ Пока неудавшиеся убийцы висели в прыжке, не в силах двинуть единым мускулом, волшебник копался в их головах. Странно,но оба были невероятно тупы - даже для обычных людей. Подарок судьбы? Нет, Провидение редко делает такие филигранно точные подарки. Лимзогнок улыбнулся и сделал два мягких шага:^^ -- Итак, вы сами пришли ко мне. А между прочим, я уже был готов собственноручно поймать двух таких остолопов. Вы -- болваны, ребята. Интеллектуальные ноли. По сути, просто исполнители приказов. И я очень рад вам сообщить, что я хочу подарить вам разум.^^ Волшебник описывал вычурные фигуры вокруг своих жертв; его шаги были мягки, как у кошки. Он то убыстрял темп ходьбы, то замедлял его, говоря в такие моменты особенно сладко.^^ Вы спросите меня, как? -- в глазах убийц вряд ли читался вопрос, но Лимзогнок продолжал бросаться словами, -- Очень просто. Мы сыграем в игру. Я буду задавать вам загадки, а вы -- решать их. Если вы их не сможете решить... что ж, я подумаю, стоит ли мне работать с вами дальше. Ну,а пока что... выпейте это. Вас ждёт глубокий сон.]], obj = {vway('дальше', '{Начать игру}.', 'three_doors') }, } three_doors = room { nam = 'Светлая комната', enter = [[Джек проснулся в светлой комнате с каменными стенами. В его голове раздался голос:^^ ,,Сообщаю тебе, что первая загадка -- это детская забава. Всего одна из табличек на дверях правдива, за двумя дверями тебя ждёт смерть. Постарайся не проиграть, пожалуйста. Мне будет обидно закончить, не успев ничего начать. К тому же, твой напарник не справился.'']], dsc = [[Светлая пустая комната с каменными стенами. Откуда идёт свет, вам непонятно.]], obj = {'door1_obj','door2_obj','door3_obj'}, way = {vroom('Дверь 1', 'act1'),'door2_room','door3_room'} } door2_room = room{ nam = "Дверь 2", dsc = [[Как только Джек открывает дверь, на него набрасывается разъярённый тигр и разрывает его в клочья.^^]]..txtc(txtb('КОНЕЦ ИГРЫ')), obj = {vway('повтор','{Повторить?}','three_doors')}, } door3_room = room{ nam = "Дверь 3", dsc = [[Как только Джек открывает дверь, его поражает сноп серебряных молний.^^]]..txtc(txtb('КОНЕЦ ИГРЫ')), obj = {vway('повтор','{Повторить?}','three_doors')}, } act1 = room{ nam = 'Часть 1', enter = function() pl.Points = pl.Points+10 end, dsc = txtr(txtem([[День 3044.]]))..[[^^Сегодня на меня было совершено покушение.^^Читатель моего дневника мог подзабыть, но за всё время проведения эксперимента я столкнулся всего лишь с тремя помехами. ^^ Первой помехой был король Песчаного королевства, который внезапно вышел из-под моего контроля и чуть не испортил мои планы в самом начале. Его королевство дорого поплатилось за этот акт непослушания, но я в конце концов простил их и даже сделал одним из Двух. Между прочим, на троне до сих пор сидит тот же король..хотя, это скорее не из-за моей доброты, а просто потому что он такой удобный дурак. Ладно,я отвлёкся.^^ Следующим был какой-то парень из Звёздных Лесов, который проник через железный занавес и начал сеять смуту. Нарушение герметичного развития целой страны! Мне пришлось полностью изолировать оба государства. И вот -- теперь на меня совершено покушение. По сравнению с первыми попытками мне помешать эта выглядит какой-то мелкой. Я думал, уж не стоит ли за этими идиотами кто-нибудь поумнее -- но их головы пусты. Хмм... ^^ Я не хочу углубляться в паранойю, но ведь теоретически мог появиться волшебник, равный мне по силе..который стёр все следы своего воздействия из мозгов этих олухов..и отдал им точные приказы.^^ Мда. Очень, очень маловероятно. В любом случае, мне стоит быть осторожнее. Возможно, в ближайшее время я уйду в один из смежных планов -- а лучше, далёких планов или миров. Так я действительно буду наблюдателем, не вмешиваясь и не будучи внутри наблюдаемого континента. Следует подумать над экстренным свитком телепортации...в какие-нибудь богами забытые королевства.]], --Последняя фраза сохранила отсылку к Forgotten Realms (Забытым Королевствам). Первоначально игра задумывалась с привязкой к этому сеттингу. obj = {vway('дальше','{Продолжить игру}','falling')}, } falling = room{ steps = 0, Times = 0;--количество попыток nam = "В воздухе", enter = function() inv():zap(); falling.steps = 0; falling.Times = falling.Times+1; inv():add('rope'); inv():add('pot'); inv():add('waterskin'); inv():add('knife'); inv():add('axe'); inv():add('black_powder'); inv():add('stick'); inv():add('lock'); inv():add('boat'); inv():add('cape'); inv():add('plantain'); lifeon('falling'); cape.wet = false; rope.wet = false; return [[Как только Джек открыл дверь, свет в комнате погас.Знакомый голос сказал:^^ "Да, ты выбрал верно. Продолжаем игру. Второй раунд! ]]..txtem('Телепорт."'); end, life = function() falling.steps=falling.steps+1; if (falling.steps == 0) then return 'Над вами -- только звёзды. Они быстро удаляются.'; elseif (falling.steps==1) then return 'Вы различаете крыши домов внизу.'; elseif (falling.steps == 2) then return 'Вы пролетаете мимо орла.'; elseif (falling.steps == 3) then return 'Вы видите транспаранты и плакаты на стенах города: "Песчаное королевство -- наш друг и помощник в борьбе против эльфийской дряни!", "Поднимем знамя Войны за дело Мира!", "Сагиттир -- наместник Звёздных Королей!"'; elseif (falling.steps == 4) then return 'Вы можете увидеть людей, идущих по улицам.'; elseif (falling.steps > 4) then ACTION_TEXT = nil; if have('chute') then return goto('landing'),true; else return goto('end_fall'),true; end; end; end, dsc = "Вы находитесь в свободном полёте. На вас быстро падает земля...или вы на неё падаете, что для вас одно и то же. Похоже, что внизу лежит какой-то большой город. Вы почти не чувствуете веса рюкзака на спине." } end_fall = room{ nam = 'Земля', enter = function() a = rnd(9); lifeoff('falling'); end, dsc = function() return txtem("Полёт Пера.")..[[^^В самый последний момент, когда до земли остаётся несколько метров, Джек останавливает полёт и начинает плавно спускаться.Голос в голове Джека возмущается: ^^"]]..comment_things()..'"' end, obj = {vway('повтор','{Повторить?}','falling')}, } landing = room{ nam = 'Мягкая посадка', enter = function() if have('chute') then return 'Вы совмещаете рисунки на трёх предметах и получаете рисунок: человек, из плеч которого выходят 4 длинных линии и заканчиваются в полукруге. В ту же секунду вы чувствуете, как из ваших плеч вырастают волшебные верёвки. Вы поднимаете глаза и видите над собой круглый купол. Вы медленно спускаетесь на землю.' end; end, dsc = [[Как только вы приземляетесь, просыпается знакомый голос. Вы не знаете, откуда он идёт; кажется, что отовсюду сразу.^^-]]..comment_time()..[[^^ Ладно, я слишком многословен. Продолжаем! ]]..txtem('Сон.'), obj = {vway('далее','{Перейти к следующей загадке}','act2')}, } act2 = room{ nam = "Часть 2", dsc = [[]], obj = {vway('next','{Продолжить игру}','square')} } square = room{ nam = 'Площадь им. Звёздных королей', enter = function(from, to) if (from == 'act2') then return [[ -- "Не буду тянуть кота за хвост, твоя задача проста. Ты находишься в Звёздных Лесах, город Руйцикон. Твоя задача -- найти Эндрю Октанта. Хотя бы просто выяснить, где он может быть. Действуй.]] end end, --http://venividi.ru/files/img/4224/4.jpg dsc = [[Джек стоит на вымощенной брусчаткой площади. Площадь имеет форму треугольника, из углов которого выходит по улице. "Стороны" этого треугольника образованы очень плотно стоящими двухэтажными деревянными домиками, расписанными в разные цвета.^^ Небо закрыто тёмными облаками, в которых не видно солнца.]], obj = {'fountain','citizen'}, way = {'chaos_st','ink_st','plain_st'} } chaos_st = room{ nam = "Улица Хаоса", dsc = "", way = {'square'} } ink_st = room{ nam = "Улица Чернил", _visited = false, enter = function() if (ink_st._visited) then return '' end ink_st._visited = true; return "Джек смотрит на облетевшие деревья по краям улицы. Редкий сильный ветер гоняет одинокие жёлтые листья. ,,А ведь уже зима'' -- грустнеет Джек."; end, dsc = [[Джек входит в узкую короткую улочку. На одном из домов по левую руку висит табличка: "Улица Чернил, дом 3".^^ ]], obj = {'elm_st'}, way = {'square'} } plain_st = room{ nam = "Плоская Улица", dsc = [[Под ноги Джеку попадается ржавая табличка: "Плоская Улица, дом 6".^^ Дома на этой улице сделаны не из дерева, как в остальной части города,а из камня.]], obj = {'plain_11','plain_12','plain_7','door_12'}, way = {'square'} } corridor = room { nam = 'Коридор дома № 12, Плоская Улица', _steps = 0, enter = function() lifeon('corridor'); end, exit = function() lifeoff('corridor'); corridor.nam = 'Коридор'; end, life = function() if (corridor._steps == 3) then return goto('apprehension') end; corridor._steps = corridor._steps+1; return; end, dsc = [[Джек заходит в узкий коридор. Прямо напротив входа идёт лестница на второй этаж. Где-то наверху слышен топот ног.]], obj = {'mat','rack','umbrellas','bench','stand','wardrobe','shoes'} } vanishing_1 = room{ nam = 'Гостиная', dsc = [[ Гостиная находится справа от лестницы. Это очень большая комната с тремя окнами; одно справа и два напротив двери. Слева от входа стоит {bookcase:книжный шкаф}. Слева от дальнего окна стоит сервант. Напротив него -- длинный низкий диван, покрытый бархатом. На полу лежит {rug:ковёр}. -- Эндрю здесь нет. - говорит хозяйка, увидев Джека.^^ Она стоит у серванта, держа в руке полный бокал с тёмной жидкостью. За открытой дверцей рядом с ней видна бутылка.. наверное, не с чаем.^^ -- Просто скажите мне, когда и где видели его в последний раз.^^ Она вливает в себя содержимое бокала и наливает ещё один.^^ -- Садитесь. -- она кивает на широкий {sofa:диван} у окна. ]], obj = {'bookcase','rug','sofa'} } stairs = room{ nam = 'Лестница', dsc = [[Джек стоит на широкой лестнице. Лестница спускается к коридору и гостиной. На втором этаже напротив лестницы стоят две двери; справа находятся ещё две.]], way = {'dining','parents','kids','guests','toilet','corridor'} } --Лестница стоит прямо напротив коридора и такой же ширины. --Гостиная начинается там же, но из коридора не видна. За счёт лестницы она кажется больше. --Рядом с гостиной находится кухня. --На втором этаже - 3 спальни (хозяева, дети, гости), туалет. --Вход в подвал находится на кухне. В подвале хранятся продукты. --Хилли убирается в детской, Оан ищет в подвале заначку, Хелия запирается в своей комнате, Ванесса открывает кабинет и ищет свой дневник dining = room{ nam = 'Гостиная', dsc = [[]], way = {'stairs','kitchen','parlor'} } kitchen = room{ nam = 'Кухня', dsc = [[]], way = {'dining','basement','backyard'} } basement = room{ nam = 'Подвал', dsc = [[В подвале много шкафов с продуктами. На полках стоят банки, мешочки, мешки. Твёрдый дикий смешанный запах говорит о том, что не все продукты успевают в салат свежими.]], way = {'kitchen'} } parents = room{ nam = 'Спальня родителей', enter = function() return [[Из-за закрытой двери слышен голос Хелии: ,,Не входите! Мне надо побыть одной.'']],false; end, dsc = [[В центре комнаты стоит {parents_bed:двуспальная кровать}. Справа рядом с кроватью находится низенький {parents_cabinet:шкафчик}, на котором стоит большое {parents_mirror:зеркало}. Слева от кровати -- платяной {parents_wardrobe:шкаф}. Из большого {parents_window:окна} виден кусочек улицы.]], way = {'kitchen'} } kids = room{ nam = 'Детская', _wet = true, enter = function() if kids._wet == true then-- двойственное выражение, ну да ладно return [[Как только Джек открывает дверь, ему на голову опрокидывается бадья с водой.^^ Пока Джек приходит в себя, на него падает и сама железная бадья. Джек охает и падает на пол.^^ Он встаёт и ощупывает голову. Похоже, будет крупная шишка.]] end end, dsc = [[У стены стоит двухярусная {kids_bed:кровать}, под которую засунут {kids_toys:ящик с игрушками}. На полу лежат обугленный {kids_rug:ковёр} и {kids_apple:яблоко}. {kids_walls:Стены} запачканы сажей и соком. {kids_window:Окно} открыто.^^ Одну из стен полностью занимает огромный {kids_books:шкаф} с книгами и рисунками. Ещё один {kids_wardrobe:шкаф}, поменьше, стоит возле кровати.]], way = {'kitchen'} } guests = room{ nam = 'Гостевая', enter = function() if meet_oan:pseen(1) then goto('meet_oan') end end, dsc = [[Комната кажется большой; на самом деле, в ней просто мало мебели.^^ У стены стоит простая {guest_bed:кровать}, рядом стоит {guest_table:столик}. К {guest_window:окну} приставлена табуретка. На полу лежит {guest_rag:ковёр}. В углу стоит {guest_wardobe:шкаф}.]], way = {'kitchen'} } toilet = room{ nam = 'Туалет', dsc = [[Джек заходит в туалет. Здесь стоят {toilet_pot:горшок}, несколько {toilet_sticks:палок} и огромная {toilet_bath:бадья} с водой. Из небольшого {toilet_window:окна} падает свет.]], way = {'kitchen'} } parlor = room{ nam = 'Кабинет', enter = function() if meet_vanessa:pseen(1) then objs():add('vanessa_seeking') end end, dsc = [[На полу кабинета лежит зелёный {parlor_rug:ковёр}, занимая всё видимое место. Напротив двери находится большое {parlor_window:окно}.Перед ним стоит письменный {parlor_table:стол}, за которым, скорее всего, сидел хозяин дома. Перед столом стоит удобный стул для гостей. Обе боковые стены заставлены книгами доверху. На потолке комнаты висит изысканная люстра с шестью свечами.]], exit = function() if seen('vanessa_seeking') then objs():del('vanessa_seeking') end end, obj = { }, way = {'dining'} } backyard = room{ nam = "Задний двор", dsc = [[К {house_back:дому} прилегает небольшой дворик, огороженный высоким {fence:забором}.]], way = {'kitchen'} }