404 lines
15 KiB
Lua
404 lines
15 KiB
Lua
|
-- $Name: Пробуждение 2: Воскрешение.$
|
|||
|
instead_version "1.9.1"
|
|||
|
require "lib"
|
|||
|
require "xact"
|
|||
|
require "hideinv"
|
|||
|
require "para"
|
|||
|
require "dash"
|
|||
|
require "quotes"
|
|||
|
game.codepage="UTF-8";
|
|||
|
|
|||
|
game.act = _('Ничего не происходит.');
|
|||
|
game.inv = _('Это странная штука.');
|
|||
|
game.use = _('Не работает...');
|
|||
|
|
|||
|
main = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = _("..."),
|
|||
|
enter = music_("pyhun",0),
|
|||
|
title = _("ПРОБУЖДЕНИЕ 2"),
|
|||
|
num=16,
|
|||
|
dsc = function(s)
|
|||
|
p(_([[
|
|||
|
Я и ещё несколько человек вышли из криосна.
|
|||
|
К сожалению, как минимум у двоих обнаружился синдром выхода из криосна, одного из них мне пришлось убить,
|
|||
|
другой прямо сейчас движется на меня из лифта, его глаза безумны...
|
|||
|
^
|
|||
|
Мне надо срочно что-то предпринять...
|
|||
|
^^
|
|||
|
]]));
|
|||
|
p ("{v_483fc406_4b48_47a0_b7f5_d43ff639bade|".._('Начать игру').."}^");
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
xact(
|
|||
|
'v_483fc406_4b48_47a0_b7f5_d43ff639bade',
|
|||
|
function(s)
|
|||
|
if not have(_("Бластер")) then take(blasterPistol); end;
|
|||
|
if not have(_("Нож")) then take(knife); end;
|
|||
|
if not have(_("Швабра")) then take(mop); end;
|
|||
|
walk(v_2);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
blasterPistol = obj {
|
|||
|
nam = _("Бластер"),
|
|||
|
inv = _([[Стандартный бластер. Не стреляет в членов экипажа.]]),
|
|||
|
use = function(s, w)
|
|||
|
if w == zombie2 or w == crewMember then
|
|||
|
if not (blaster) then
|
|||
|
p(_([[
|
|||
|
Я пытаюсь выстрелить в безумца, но в ответ мне раздаётся неприятный гудок, и на дисплее оружия высвечивается надпись:
|
|||
|
"Идентифицирован член экипажа. Выстрел отменён."
|
|||
|
^^
|
|||
|
]]));
|
|||
|
stead.add_var { blaster = true };
|
|||
|
else
|
|||
|
p (_("Бластер не стреляет в членов экипажа. Лучше не тратить на это время."))
|
|||
|
end;
|
|||
|
elseif w == rat then
|
|||
|
sound_("shoot_lazer")();
|
|||
|
walk(v_10);
|
|||
|
else
|
|||
|
p (_("Это не поможет"));
|
|||
|
end;
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
knife = obj {
|
|||
|
nam = "Нож",
|
|||
|
inv = [[Нож-пила. Выглядит устрашающе.]],
|
|||
|
use = function(s, w)
|
|||
|
if w == zombie2 then
|
|||
|
walk(v_11);
|
|||
|
elseif w == crewMember then
|
|||
|
walk(v_3);
|
|||
|
else
|
|||
|
p (_("Это не поможет"));
|
|||
|
end;
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
mop = obj {
|
|||
|
nam = "Швабра",
|
|||
|
inv = [[Многофункциональный инструмент.]],
|
|||
|
use = function(s, w)
|
|||
|
if w == zombie2 then
|
|||
|
remove("Швабра", inv());
|
|||
|
walk(v_7);
|
|||
|
else
|
|||
|
p (_("Это не поможет"));
|
|||
|
end;
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
shpritz = obj {
|
|||
|
nam = _("Шприц"),
|
|||
|
inv = _([[Шприц с остатками адреналина.]]),
|
|||
|
tak = function()
|
|||
|
p (_("Подскочив к телу, я выхватываю шприц."))
|
|||
|
end,
|
|||
|
use = function(s, w)
|
|||
|
if w == zombie2 then
|
|||
|
remove(_("Шприц"), inv());
|
|||
|
walk(v_9);
|
|||
|
else
|
|||
|
p (_("Это не поможет"))
|
|||
|
end;
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
liftDoor = obj {
|
|||
|
nam = _("двери лифта"),
|
|||
|
act = _([[Конструкция таких дверей не сильно изменилась за прошедшие века.]]),
|
|||
|
};
|
|||
|
|
|||
|
zombie2 = obj {
|
|||
|
nam = "безумец",
|
|||
|
act = "Это точно синдром выхода из криосна. Уговоры тут не помогут, нужно что-то другое.",
|
|||
|
};
|
|||
|
|
|||
|
crewMember = obj {
|
|||
|
nam = _("Член экипажа"),
|
|||
|
act = _("Похоже, лекарство ему помогло..."),
|
|||
|
};
|
|||
|
|
|||
|
rat = obj {
|
|||
|
nam = _("Крыса"),
|
|||
|
act = _("За тысячу лет пути крыса могла подрасти..."),
|
|||
|
};
|
|||
|
|
|||
|
v_2 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "У лифта",
|
|||
|
pxa = {
|
|||
|
{ "door2_open", 170 },
|
|||
|
{ "zombi", 190 }
|
|||
|
},
|
|||
|
dsc = function(s)
|
|||
|
p(_([[
|
|||
|
...Я судорожно жму на кнопки и {liftDoor|двери лифта} начинают закрываться, но {zombie2|безумец} успевает просунуть наружу свои руки.
|
|||
|
^^
|
|||
|
]]));
|
|||
|
p ("{v_07a7a31c_42f9_4396_bee3_086eb9daccf5|".._('Осмотреться вокруг').."}^");
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'liftDoor',
|
|||
|
'zombie2',
|
|||
|
xact(
|
|||
|
'v_07a7a31c_42f9_4396_bee3_086eb9daccf5',
|
|||
|
function(s)
|
|||
|
walk(v_8);
|
|||
|
end
|
|||
|
),
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_3 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
dsc = _([[
|
|||
|
Я наклоняюсь и добиваю лежащего на полу человека. Будет спокойнее, если я буду уверен, что он мёртв.
|
|||
|
^
|
|||
|
Не знаю, что будет дальше, но этот бой я выиграл. Буду надеяться на лучшее.
|
|||
|
^^
|
|||
|
]]) .. txtc(_("КОНЕЦ")),
|
|||
|
};
|
|||
|
|
|||
|
v_4 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = _("Коридор"),
|
|||
|
pxa = {
|
|||
|
{ "rat", 220 }
|
|||
|
},
|
|||
|
dsc = function(s)
|
|||
|
p(_([[
|
|||
|
Я осторожно склоняюсь над лежащим. Похоже, что он жив: пульс ровный, зрачки не расширены, цвет глаз нормальный.
|
|||
|
Возможно, то, что не помогло Александру, помогло этому бедолаге.
|
|||
|
^
|
|||
|
Я жду довольно долго, наконец человек приходит в себя.
|
|||
|
^
|
|||
|
-- Как тебя зовут? -- спрашиваю я.
|
|||
|
^
|
|||
|
-- Виталий... -- отвечает он. -- Где я, что со мной?
|
|||
|
^
|
|||
|
Я как можно мягче постарался ему всё объяснить. Некоторое время он ещё посидел на полу, понурив голову.
|
|||
|
^
|
|||
|
-- Я очень голоден. -- наконец говорит он. -- пойду, пожалуй, в камеру оргсинтеза, попрошу роботов что-нибудь мне приготовить.
|
|||
|
^
|
|||
|
Виталий медленно поднимается с пола и идёт в лифт. Видимо, он ещё не совсем в порядке.
|
|||
|
^
|
|||
|
-- Постой! -- говорю я ему. -- Возьми нож, там может быть опасно.
|
|||
|
^
|
|||
|
Я отдаю ему нож-пилу. Виталий кивает мне, двери лифта закрываются за ним.
|
|||
|
^
|
|||
|
Раздумывая о происшедшем, я не сразу заметил, что сзади подкрадывается огромная {rat|крыса},
|
|||
|
привлечённая запахом крови. Похоже, она пробралась через вентиляцию.
|
|||
|
Раздавшийся за спиной шорох выводит меня из оцепенения. Резко обернувшись, я вскрикиваю от ужаса.
|
|||
|
^^
|
|||
|
]]));
|
|||
|
p ("{v_b105d2a2_003b_4d06_8584_48252f71838d|".._("Бежать в лифт").."}^");
|
|||
|
if have("Нож") then remove("Нож", inv()); end;
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'rat',
|
|||
|
xact(
|
|||
|
'v_b105d2a2_003b_4d06_8584_48252f71838d',
|
|||
|
function(s)
|
|||
|
walk(v_14);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_5 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Оружейная",
|
|||
|
dsc = [[
|
|||
|
Собственно, мой выбор был невелик. Бежать можно было только в оружейную. Я лихорадочно шарил по полкам, пытаясь
|
|||
|
найти хоть что-то полезное, когда сзади на меня обрушился удар и мир потемнел.
|
|||
|
^^
|
|||
|
]] .. txtc("КОНЕЦ"),
|
|||
|
};
|
|||
|
|
|||
|
v_7 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "У лифта",
|
|||
|
pxa = {
|
|||
|
{ "door2", 170 }
|
|||
|
},
|
|||
|
dsc = function(s)
|
|||
|
p [[
|
|||
|
Я с силой толкаю противника шваброй внутрь лифта. Он не удерживается на ногах и падает, вцепившись в швабру мёртвой хваткой.
|
|||
|
Я едва успеваю отпустить её. Дверь закрывается.
|
|||
|
На какое-то время сумасшедший заблокирован в кабине лифта, но по грохоту, раздающемуся изнутри, я понимаю,
|
|||
|
что надолго это его не задержит. Рано или поздно он найдёт кнопку открытия дверей.
|
|||
|
^^
|
|||
|
]];
|
|||
|
p ("{v_99bc11cc_a4de_4c31_8865_04ad8f93d69d|".._('Скорее бежать').."}^");
|
|||
|
p ("{v_6edd0aec_5b08_4812_8dc7_b6ff8ee67c2b|".._('Быстро осмотреться вокруг').."}^");
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
xact(
|
|||
|
'v_99bc11cc_a4de_4c31_8865_04ad8f93d69d',
|
|||
|
function(s)
|
|||
|
walk(v_5);
|
|||
|
end
|
|||
|
),
|
|||
|
xact(
|
|||
|
'v_6edd0aec_5b08_4812_8dc7_b6ff8ee67c2b',
|
|||
|
function(s)
|
|||
|
walk(v_12);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_8 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
dsc = function(s)
|
|||
|
if not have("Шприц") then take(shpritz); end;
|
|||
|
return [[
|
|||
|
Мой взгляд скользит по стенам, по лужам крови на полу, останавливается на теле Александра. Верхняя часть его тела лежит в
|
|||
|
коридоре, нижняя -- за дверью отсека K007. В груди Александра всё ещё торчит шприц с остатками адреналина.
|
|||
|
Подскочив к телу, я выхватываю шприц. В это же мгновение пальцы безумца смыкаются вокруг моей шеи.
|
|||
|
^^
|
|||
|
]] .. txtc("КОНЕЦ");
|
|||
|
end,
|
|||
|
};
|
|||
|
|
|||
|
v_9 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
pxa = {
|
|||
|
{ "door1", 10 },
|
|||
|
{ "door2", 200 },
|
|||
|
{ "zombi_dead", 400 }
|
|||
|
},
|
|||
|
dsc = function(s)
|
|||
|
p [[
|
|||
|
С отчаянием утопающего я бросаюсь на безумца. Он оказывается гораздо более ловким чем я и хватает меня за руку и за горло.
|
|||
|
Резко дёрнувшись в попытке вырваться, я поскальзываюсь на луже крови и мы оба с грохотом валимся на пол.
|
|||
|
^
|
|||
|
Я считаю себя уже мёртвым, но тут вдруг неожиданно замечаю, что мой {crewMember|противник} внезапно затих.
|
|||
|
Шприц вонзился ему в грудь, похоже, что лекарство подействовало.
|
|||
|
^^
|
|||
|
]];
|
|||
|
p ("{v_119ceea5_1cd3_482b_bf37_46b0973a6e50|".._('Проверить, что с ним').."}^");
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'crewMember',
|
|||
|
xact(
|
|||
|
'v_119ceea5_1cd3_482b_bf37_46b0973a6e50',
|
|||
|
function(s)
|
|||
|
walk(v_4);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_10 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
dsc = function(s)
|
|||
|
p [[
|
|||
|
Я хватаю бластер, в тот же момент крыса бросается на меня. Дальше всё как в тумане, помню только яркий луч бластера
|
|||
|
и резкую боль в плече.
|
|||
|
^^
|
|||
|
]];
|
|||
|
p ("{v_327801e4_1ede_4ab4_bf5c_a669d798e86b|".._('Далее').."}^"));
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
xact(
|
|||
|
'v_327801e4_1ede_4ab4_bf5c_a669d798e86b',
|
|||
|
function(s)
|
|||
|
if have("Бластер") then remove("Бластер", inv()); end;
|
|||
|
walk(v_13);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_11 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
dsc = [[
|
|||
|
Я пытаюсь ударить безумца, но он как будто не чувствует удара. В ответ он с нечеловеческой силой отшвыривает меня
|
|||
|
к стене. Я падаю и проваливаюсь в темноту...
|
|||
|
^^
|
|||
|
]] .. txtc("КОНЕЦ"),
|
|||
|
};
|
|||
|
|
|||
|
v_12 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
pxa = {
|
|||
|
{ "door1", 10 },
|
|||
|
{ "door2", 200 },
|
|||
|
{ "zombi_dead", 400 }
|
|||
|
},
|
|||
|
dsc = function(s)
|
|||
|
p (_([[
|
|||
|
Мой взгляд скользит по стенам, по лужам крови на полу, останавливается на теле Александра. Верхняя часть его тела лежит в
|
|||
|
коридоре, нижняя -- за дверью отсека K007. ]]))
|
|||
|
p ((not have(_("Шприц"))) and _("В груди Александра всё ещё торчит {shpritz|шприц} с остатками адреналина.^" or "^"))
|
|||
|
p (_("{zombie2|Безумец} справился с дверью лифта и приближается ко мне.^^"))
|
|||
|
p ("{v_0df5dc84_caf3_4b24_8d7c_af7853aaf0b1|".._('Скорее бежать').."}^"));
|
|||
|
end,
|
|||
|
obj = {
|
|||
|
'shpritz',
|
|||
|
'zombie2',
|
|||
|
xact(
|
|||
|
'v_0df5dc84_caf3_4b24_8d7c_af7853aaf0b1',
|
|||
|
function(s)
|
|||
|
walk(v_5);
|
|||
|
end
|
|||
|
),
|
|||
|
|
|||
|
},
|
|||
|
};
|
|||
|
|
|||
|
v_13 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Коридор",
|
|||
|
enter = function() mute_()(); complete_("wake2")() end,
|
|||
|
dsc = function(s)
|
|||
|
return [[
|
|||
|
В коридоре криоблока появился робот WR023. Первым делом он доставил раненого в камеру автодоктора.
|
|||
|
Пару дней, и будет как новенький. Затем он вернулся за крысой и потащил её в камеру оргсинтеза.
|
|||
|
Для переработки сгодится.
|
|||
|
^
|
|||
|
Затащив добычу в камеру оргсинтеза, робот заметил на полу человека. Он был мёртв, рядом валялась миска с остатками
|
|||
|
отвратительной смеси. "Наверное, не справился с миксером и сепаратором", -- подумал робот.
|
|||
|
^
|
|||
|
Приблизившись к телу, он собрал материал для клонирования. Сначала здесь, потом у дверей отсека K007.
|
|||
|
Теперь придётся несколько лет ждать, пока клоны вырастут, затем в них необходимо загрузить знания, личность
|
|||
|
и воспоминания... Эти люди так несовершенны...
|
|||
|
]]
|
|||
|
end,
|
|||
|
act = gamefile_("arrival.lua");
|
|||
|
obj = { vobj("next", txtc("{Это ещё не конец...}")) }
|
|||
|
};
|
|||
|
|
|||
|
v_14 = room {
|
|||
|
forcedsc = true,
|
|||
|
nam = "Лифт",
|
|||
|
enter = function() mute_()(); complete_("wake2")() end,
|
|||
|
dsc = function(s)
|
|||
|
if have("Бластер") then remove("Бластер", inv()); end;
|
|||
|
return [[
|
|||
|
Я подбегаю к лифту, жму на кнопку вызова... Конечно же, лифт не успевает приехать, и чудовище набрасывается на меня.
|
|||
|
Огромные жёлтые клыки рядом с моим лицом -- последнее, что я вижу в своей жизни.
|
|||
|
]]
|
|||
|
end,
|
|||
|
act = gamefile_("arrival.lua");
|
|||
|
obj = { vobj("next", txtc("{Это ещё не конец...}")) }
|
|||
|
};
|