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("{Это ещё не конец...}")) }
|
||
};
|