insteadose-3/wake2.lua

404 lines
15 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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