251 lines
22 KiB
Lua
251 lines
22 KiB
Lua
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'}
|
||
}
|