-- $Name: Пробуждение$ instead_version "1.9.1" require "lib" require "para" require "dash" require "quotes" game.use = "Нет, так ничего не выйдет." main = room { nam = "...", enter = music_("spookyloop",0), title = {"П", "Р", "О", "Б", "У", "Ж", "Д", "Е", "Н", "И", "Е"}, num =15, act = function() walk(room1) end, dsc = [[Я слышал об этом, но никогда не верил, что это действительно может произойти. Говорят, что есть один шанс из миллиона, что человек не сможет проснуться после криосна. Тело его просыпается, но разум остаётся где-то там -- в чёрной космической безде. Сохраняются только основные инстинкты.^ Я слышал об этом, но никогда не верил, что это может действительно произойти.]], obj = { vobj("next", '{Начать игру}') } } room1 = room { nam = "К007", pxa = { { "crio", 10 }, { "med", 310 }, { "door4", 370 } }, enter = function() if room1_neibor._zombi then p (_("Нет, туда пути больше нет.")); return false end end, dsc = "Я в крио-отсеке. Сложно поверить в то, что я спал больше тысячи лет. Кажется, только вчера мы улетели с Земли.", obj = { "room1_capsulas", "room1_neibor", "room1_door", "room1_med" }, way = { "coridor" } } room1_capsulas = obj { nam = "капсулы", dsc = "Здесь {шесть капсул}, но отключаются они постепенно. Сейчас отключилась только моя и моего соседа справа.", act = "Стандартные капсулы для криосна." } room1_neibor = obj { nam = "сосед", dsc = function(s) if room1_neibor._zombi then return (_("{Александр} слепо наступает на меня, издавая странный тяжёлый хрип.")); else return (_("Я его почти не знаю. Но, кажется, его зовут {Александр}. Он плохо выглядит -- сидит и неподвижно смотрит в одну точку.")); end end, act = function(s) if room1_neibor._zombi then return (_("Уговоры не помогут, я должен спасаться бегством!")); else return (_("Он никак на меня не реагирует -- просто смотрит в одну точку. Надо бы ему помочь.")) end end } room1_door = obj { nam = "дверь", dsc = "На стене у {двери}", act = function() if room1_neibor._zombi then return (_("Дверь не закрыта. Нужно бежать отсюда!")); else return (_("Выход из крио-отсека, в коридор. Но уходить пока рано, надо бы помочь Александру.")) end end } room1_med = obj { nam = "аптечка", dsc = "висит {аптечка}.", act = function(s) if not adrenalin._taken then take(adrenalin); adrenalin._taken = true; return (_("Я нашёл в аптечке шприц с адреналином. Надо сделать инъекцию Александру.")); else return (_("Здесь больше нет ничего, что мне было бы нужно.")); end end } adrenalin = obj { nam = "шприц", inv = "Одноразовый шприц с порцией адреналина. Некоторым при выходе из крио-сна это нужно.", use = function(s,v) if v == room1_neibor then remove(s,me()); room1_neibor._zombi=true; return [[Я делаю Александру инъекцию, он странно вздрагивает, смотрит на меня мутными ничего не выражающими глазами, а потом вдруг мощным ударом отшвыривает меня к двери. Не может быть! Он не в себе! Я кричу Александру, пытаюсь остановить его, но он как будто не слышит и продолжает наступать на меня, вытянув вперёд руки.]]; end end } coridor = room { nam = "Коридор", pxa = { { if_("armoryobj._open","door1_open","door1"), 10 }, { "door2", 200 }, { if_("not zombi._dead","zombi", "zombi_dead"), if_("not zombi._dead", 420, 380) }, { if_("not zombi._dead","hatch2", "hatch"), 460 } }, enter = function() if not room1_neibor._zombi then p (_("Надо бы сначала помочь Александру.")); return false; end end, dsc = "Я в коридоре крио-блока.", obj = { "lock", "zombi", "elevator", "cleaner", "armoryobj", "codereader" }, way = { "room1", vroom("Лифт","goodend"), "armory" } } zombi = obj { nam = "Александр", dsc = function(s,v) if zombi._dead then return (_("На полу лежит труп {Александра}. Дверь разрубила его тело попалам. Весь пол залит кровью.")); else return (_("{Александр} идёт прямо на меня. В глазах его горит безумие.")); end end, act = function(s,v) if zombi._dead then return (_("Очень жаль, что мне пришлось сделать это. Но у меня не было другого выхода.")); else return (_("Это синдром выхода из криосна. Теперь в этом нет сомнений! Боюсь, ему уже не помочь...")) end end } lock = obj { nam = "Замок", dsc = "На стене у двери в К007 висит {панель} электронного замка.", act = function(s) if zombi._dead then return (_("Замок разворочен выстрелом.")); else return (_("Александр уже вышел из комнаты, я не смогу его там закрыть.")); end end } elevator = obj { nam = "Лифт", dsc = "Справа от меня -- {лифт}.", act = function(s) if zombi._dead then return (_("Лифт уже стоит на этаже. Надо лишь подойти к двери лифта.")); end if s._call then return (_("Я уже вызвал лифт. Вряд ли я смогу как-то ускорить его прибытие.")); else s._call=true; return (_("Я нажимаю на кнопку вызова лифта. Теперь остаётся ждать. Но у меня нет времени! Александр сошёл с ума и идёт прямо на меня!")); end end } cleaner = obj { nam = "Швабра", dsc = "На полу валяется сломанная {швабра}.", inv = function(s,v) if zombi._dead then return (_("Не думаю, что мне это теперь пригодится.")); else return (_("Вряд ли из неё получится хорошее оружие. Но кто знает...")) end end, tak = "Я поднял швабру.", use = function(s,v) if v==zombi then if zombi._dead then return (_("Он и так мёртв.")); else return walk(badend); end end end } armoryobj = obj { nam = "Оружейная", dsc = "Слева -- вход в {оружейную}.", act = function(s) if s._exam then if s._open then return (_("Дверь открыта.")); else return (_("У меня должен быть допуск.")); end else s._exam=true; return (_("Рядом с дверью висит сканер ретины. У меня должен быть допуск в оружейную.")); end end } codereader = obj { nam = "Сканер ретины", dsc = "Рядом со входом в оружейную висит {сканер ретины}.", act = function(s) if armoryobj._open then return (_("Дверь уже открыта.")); else armoryobj._open=true; return (_("Я смотрю в окуляры сканера. Проходит долгая секунда. Наконец, дверь открывается.")); end end, cnd = function() return armoryobj._exam end } armory = room { nam = "Оружейная", pxa = { { "door1_open", 10 }, { if_("not have(knife)", "knife"), 150 }, { if_("not have(blaster)","blaster"), 180 }, { "box", 180 }, { "box", 280 }, { "box", 380 }, }, enter = function(s) if not armoryobj._open then p (_("Дверь в оружейшую закрыта.")); return false; elseif zombi._dead then p (_("Мне туда больше не нужно.")); return false; end end, dsc = "Я в оружейной.", obj = { "knife", "blaster" }, way = { "coridor" } } blaster = obj { nam = "Бластер", dsc = "Чуть дальше висит {бластер}.", tak = "Я взял бластер.", use = function(s,v) if v==zombi then return (_([[Я пытаюсь выстрелить в Александра, но в ответ мне раздаётся неприятный гудок, и на дисплее оружия высвечивается надпись: "Идентифицирован член экипажа. Выстрел отменён."]])); elseif v==lock then sound_("shoot_lazer")(); p (_("Я выстрелил в замок, дверь в К007 опустилась и разрубила Александра попалам. Ужасно! Но у меня не было выхода.^После того как тело Александра упало на пол, я услышал мелодичный звонок. На этаж пришёл лифт.")); zombi._dead=true; else return (_("Это не поможет.")); end end } knife = obj { nam = "Нож", dsc = "У двери висит {нож-пила}.", tak = "Я беру нож-пилу.", use = function(s,v) if v==zombi then if zombi._dead then return (_("Он и так мёртв.")); else return walk(badend); end end end } badend = room { nam = "Конец", dsc = [[Я пытаюсь ударить Александра, но он как будто не чувствует удара. В ответ он с нечеловеческой силой отшвыривает меня к стене. Я падаю и проваливаюсь в темноту...]] } goodend = room { nam = "Конец", enter = function(s) if not zombi._dead then p (_("Лифта ещё нет на этаже.")); return false; end mute_()(); complete_("wake")(); end, dsc = [[Я подхожу к лифту, дверь открывается и...^ Передо мной оказывается какой-то человек с мутным невидящим взглядом. Не может быть! Ещё один! Руки безумца тянутся ко мне. Я застываю от ужаса, будучи не в силах даже пошевелиться.]], act = gamefile_("wake2.lua"), obj = { vobj("next", txtc("{КОНЕЦ?}")) } }