insteadose-3/wake2.lua

404 lines
15 KiB
Lua
Raw Permalink Normal View History

2018-08-09 12:26:42 +03:00
-- $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("{Это ещё не конец...}")) }
};