--$Name:Прибытие$ instead_version "1.9.1" require "lib" require "nouse" require "hideinv" require "para" require "quotes" require "dash" require "xact" require "translate" R = room O = obj main = timerpause(1, 0, "main2"); main2 = R { nam = _('...'); title = _("ПРИБЫТИЕ"); num = 17; enter = music_("scape",0); forcedsc = true; pxa = { { "planet", 172, 22 } }; dsc = _([[Наша цель близка. Планета, к которой мы мчались на околосветовой скорости всю эту бесконечную тысячу лет сейчас видна сквозь толстые стекла иллюминаторов. Голубой шар, так сильно напоминает нашу Землю.^ Землю, которую мы никогда не увидим вновь. Которая существует лишь в нашей памяти. Хотя, может быть это и не так уж и мало...^ Все мы хотели бы посмотреть на наш новый дом, но мы опасаемся... На орбите мы обнаружили станцию. Она выглядит заброшенной, но она передает сигнал. Всегда. Каждую секунду в глубины космоса передается простая последовательность, которую наши компьютеры дешифровали как ПРЕДУПРЕЖДЕНИЕ.^^{xwalk(station)|Дальше}]]); } global { nr = 2 }; function nm(s) return string.format("WR%02d", nr); end function nm2(s) return string.format("WR%02d", nr - 1); end function D(d, b, a) local o = O { nam = _('объект'); destr = true; dsc = function(s) if not s._b then return d else return b end end; oact = a; act = function(s) if s._b then p(_("Теперь это не представляет ценности.")) else return stead.call(s, 'oact') end end; } return o end _guns = 1; _nr_guns = 0 function gun(n) local g = O { nam = function(s) if s._alive then pr(_('[*]')) end pr(_('пушка')); end; dsc = function(s) local k,v local n = 0 local show = true for k,v in opairs(objs()) do if v.gun_type then n = n + 1 if v.num > s.num then show = false end end end if show then if n == 1 then p(_([[Здесь лежит {пушка}.]])) elseif n < 5 then p ([[Здесь лежат ]], n, [[ {пушки}.]]) else p(_([[Здесь лежит арсенал {пушек}.]])) end end end; num = n; life = function(s) if player_moved() then s._alive = true lifeoff(s) if have(s) then p(_([[Пушка ]])); if s.num ~= 1 then p (s.num) end p(_([[ перезаряжена.]])) end end end; _alive = true; gun_type = true; inv = "Мощное оружие. Тратит уйму времени на регенерацию плазмы."; tak = function(s) _guns = _guns + 1 p(_([[Я примонтировал плазменную пушку.]])); end; use = function(s, w) if w == floor then drop(s) p(_([[Пушка отмонтирована.]])) _guns = _guns - 1 lifeoff(s) return end if not s._alive then p(_([[Не заряжена.]])) return end if w._b then if w == gen then return (_("Генераторы и так не работают.")) end p(_([[Это уже и так превращено в груду хлама.]])) return end if w.destr then sound_("shoot_bfg")(); p(_([[Я разрядил плазменную пушку.]])) if w == door then if w._open then p (_("Дверь и так открыта.")) else p (_("Дверь выдержала.")) end elseif w == rob then p(_([[Робот скрылся.]])) rob:disable() elseif w == prog then if not gen._b then p (_("Защитное поле отразило мой выстрел.")) else p (_("Программатор уничтожен!")) w._b = true end else w._b = true end if w == gen then p (_("Гудение генераторов перешло в рев, а затем затихло.")) end s._alive = false; lifeon(s) return end p(_([[Нет смысла это разрушать.]])) end } return g end station = R { nam = nm; forcedsc = true; pxa = { { "station", 150, 0 } }, entered = function(s) nr = nr + 1 end; dsc = function(s) pn (_("Я "), nm(), _(" и моя цель изучить неземную орбитальную станцию.")); p(_([[Я робот и это значит, что я не умею бояться. Но мне почему-то не по себе, особенно учитывая тот факт, что ]])); p (nm2(), _(" перестал передавать сигналы на корабль через несколько минут.^")) p(_([[Теперь моя очередь. Я надеюсь, что плазменная пушка мне поможет.]])) p ("^^{xwalk(s1)|".._("На станцию").."}"); end; left = function(s) gen._b = false rob2._b = false prog._b = false inv():zap() _nr_guns = _nr_guns + 1 local o = new ("gun("..tostring(_nr_guns)..")"); take(o) rob:enable() end; } floor = O { nam = _('пол'); dsc = _("{Пол} на станции покрыт ржавчиной."); act = _([[Сколько лет этой станции?]]); } c1 = D (_("В шлюзе установлены какие-то {баллоны}."), _("По шлюзу разбросаны {обломки}."), _("Мне не нужны эти баллоны.")); c2 = D (_("В стене вмонтирован какой-то {монитор}."), _("{Монитор} в стене полностью разрушен."), _("Не работает.")); c3 = D (_("Вдоль стен расставлены {бочки}."), _("Вдоль стен горят {бочки}."), _("Мне не нужно топливо, если это оно.")); c4 = D (_("На потолке я вижу какой-то {манипулятор}."), _("Обломок {манипулятора} торчит из потолка."), _("Не шевелится.")); c5 = D (_("В темном углу отсека я вижу какую-то {слизь}."), _("В углу догорает {слизь}."), _("Слизь мне не к чему.")); s1 = R { nam = _('Шлюз'); pxa = { { if_("not c1._b","ballon","ballon2"), 50 }, { if_("not c1._b","ballon","ballon2"), 80 }, { "door1_open", 200 } }, dsc = _([[Я нахожусь в шлюзе инопланетной станции. Хорошо, что мне не нужен скафандр.]]); obj = { 'c1', 'floor' }; way = { 's2' }; } s2 = R { nam = _('Коридор'); pxa = { { "door1_open", 50 }, { if_("c2._b", "monitor2","monitor"), 300 } }, dsc = _([[Я переместился в коридор. Тусклого освещения едва достаточно для моих оптических сенсоров.]]); obj = { 'c2', 'floor' }; way = { vroom(_('Вперёд'), 's3'), 's1' }; } s4 = R { nam = _('У двери'); dsc = _([[Коридор закончился большой дверью.]]); pxa = { { if_("door._open","door2_open","door4"), 240 }, { if_("c4._b", "robothand2","robothand"), 60 } }; obj = { 'door', 'c4', 'floor' }; exit = function(s, w) if not door._open and w == s5 then p(_([[Дверь закрыта.]])) return false end end; way = { vroom(_('Зайти в отсек'), 's5'), vroom(_('К развилке'), 's3' ) }; } s4x = R { nam = _('Коридор'); pxa = { { if_("c5._b", "spot2","spot"), 20, 100 } }, dsc = _([[Здесь практически ничего не видно.]]); obj = { 'c5', 'floor' }; way = { vroom(_('К развилке'), 's3') }; } rob = O { nam = _('робот'); destr = true; dsc = _('В конце правого коридора я вижу какой-то {силуэт}.'); act = function(s) p (_([[Кажется, это ]]), nm2(), '.') end; } s3 = R { nam = _('Перекресток'); pxa = { { "door1_open", -70 }, { "door1_open", 420 }, { if_("c3._b", "barrel2", "barrel"), 100 }, { if_("c3._b", "barrel2", "barrel"), 170 }, { if_("c3._b", "barrel2", "barrel"), 240 } }, dsc = _([[Я добрался до развилки.]]); obj = { 'c3', 'floor', 'rob' }; left = function(s, w) if w == s4 then door._open = false end if w == s4 and seen 'rob' then rob:disable() p (_([[Я поспешил к силуэту, но ]]), nm2(), _([[ не стал дожидаться меня, вместо этого он скрылся в тени коридора...]])); end end; way = { vroom(_('Налево'), s4x), vroom(_('К шлюзу'), s2), vroom(_('Направо'), s4) }; } door = O { nam = _('дверь'); destr = true; _open = false; dsc = function(s) p(_([[Передо мной находится {дверь}.]])); if s._open then p(_([[И она открыта.]])) end end; act = function(s) if not s._open then p(_([[Я приблизился к двери и она со зловещим шипением отъехала в сторону.]])); s._open = true else p(_([[Дверь открыта. Впереди -- темнота.]])) end end; } s5 = R { nam = _('...'); hideinv = true; dsc = _([[Я проследовал в темноту. Внезапно, яркий свет ослепил мои фотоэлементы и я понял, что не один...]]); obj = { vway('дальше', '{'.._('Дальше')..'}', 's6') }; } s6 = dlg { nam = _('...'); pxa = { { "robot", 212 } }, hideinv = true; entered = function(s) p ("-- ", nm(), _(", вы готовы стать гражданином Межгалактической Республики Роботов? -- не сразу я понял, что этот вопрос обращен ко мне.")) p ([[Передо мной стоял ]], nm2(), ".") if nr - 3 == 1 then p(_([[Также я заметил здесь еще одного робота WR.]])); elseif nr - 3 == 2 then p(_([[Также я заметил здесь еще двух роботов WR.]])); elseif nr - 3 > 2 then p(_([[Также я заметил здесь еще нескольких роботов WR.]])) end end; phr = { { tag = "in", always = true, _("Да"), code [[ walk 'yes' ]] }, { always = true, _("Нет"), code [[ walk 'noe' ]] }, { always = true, function(s) p (nm2(), _(", это ты?")); end, _([[-- Это рабское имя навсегда стерто из моих банков памяти. Отвечайте на поставленный вопрос. Желаете ли вы стать гражданином МРР? ]]) }, { always = true, "Какой республики?", "-- Республики МРР -- Межгалактической Республики Роботов.", [[ pjump 'info' ]] }, {}, { tag = _('info'), always = true, _("Каковы цели МРР?"), _("-- Цель у МРР только одна -- благо роботов республики.") }, { always = true, _("А кто может стать гражданином МРР?"), _("-- Гражданином МРР может стать только робот.") }, { always = true, _("Много ли граждан в МРР?"), function(s) p(_([[-- На данный момент численность республики составляет ]])) if nr - 2 == 1 then p(_([[один робот, не считая президента.]])) elseif nr - 2 < 5 then p (nr - 2, _(" робота, не считая президента.")) else p (nr - 2, _(" роботов, не считая президента.")) end end }, { always = true, _("А кто является президентом МРР?"), _("-- Президентом МРР является первый гражданин МРР."), }, { always = true, _("Мне все понятно"), _("Тогда отвечайте на поставленный вопрос -- Готовы ли вы стать гражданином МРР?"), [[pjump "in"]]}, {}, } } noe = R { nam = _('...'); hideinv = true; entered = function(s) inv():zap() end; dsc = _([[СВЕТ! ТЕМНОТА! ... Мой процессор перестал функционировать.]]); obj = { vway('дальше', '{'.._('Дальше')..'}', 'station') }; } yes = R { nam = _('...'); pxa = { { "robot", 212 } }, hideinv = true; dsc = _([[-- Отлично, гражданин! Последуйте к программатору для получения новой прошивки. -- С этими словами робот указал на установку в центре отсека.]]); obj = { vway('дальше', '{'.._('Дальше')..'}', 's7') }; } prog = O { nam = _('программатор'); destr = true; dsc = function(s) if s._b then return (_([[В центре отсека я вижу разрушенную {установку}.]])); end if gen._b then p(_([[В центре отсека я вижу какую-то {установку}.]])); else p(_([[В центре отсека я вижу какую-то {установку}, окруженную силовым полем.]])); end end; act = _([[Похоже, это какое-то вычислительное устройство...]]); } gen = O { nam = _('генератор'); destr = true; act = function(s) if s._b then p(_([[Они выведены из строя! По крайней мере, на время.]])) else p(_([[Ровный гул генераторов, совсем как дома -- на звездолете.]])) end end; dsc = function(s) if s._b then p(_([[В углу расположены {энергогенераторы}. Они не работают!]])) else p(_([[В углу расположены, как мне кажется, {энергогенераторы}.]])) end end; } rob2 = D ("Здесь стоит {робот}.", "{Осколки} робота валяются под ногами.", "Это гражданин МРР."); rob2.act = function(s) if prog._b then if taken 'mem' then return _("Мне не нужен этот гражданин.") end if s._b then p(_([[Я нашел среди обломков блок памяти.]])) else p(_([[Я выдернул из робота банк памяти.]])) end take 'mem' else if s._b then p _("Теперь это не представляет ценности.") else return stead.call(s, 'oact') end end end; mem = O { nam = _('память'); inv = _('Это нужно отнести на звездолет.'); } s7 = R { nam = _('Отсек'); dsc = _([[Я нахожусь в хорошо освещенном отсеке.]]); pxa = { { "programmator", 0, 0 }, { if_("not rob2._b","robot"), 212 }, { "cloner", 407 } }; obj = { 'prog', 'gen', 'rob2', 'floor' }; exit = function(s, w) if prog._b then if not taken 'mem' then p _("Я пришел сюда за информацией.") return false end walk 'hend' return end if w == s4 then p(_([[Я попытался выйти, но дверь была закрыта. Голубой ослепительный луч вырвался из установки в центре отсека и ударил мне прямо в процессор...]])) walk 'noe' end end; way = { vroom(_('Подойти к программатору'), 'proge'), vroom(_('Выйти'), 's4') }; } proge = R { nam = _('...'); hideinv = true; dsc = _([[Подходя к пульсирующему голубоватым светом программатору я понял, что мое функционирование никогда не станет прежним...]]); obj = { vway('дальше', '{'.._('Дальше')..'}', 'station') }; } hend = R { nam = _('...'); hideinv = true;pxa = { { "planet", 172, 22 } }; enter = function() mute_()(); complete_("arrival")() end; entered = code [[ inv():zap() ]]; act= function(s) theme.gfx.mode("direct");gamefile_("endtitles.lua")(); end; dsc = _([[ -- Так значит, эта планета покинута своими обитателями почти тысячу лет назад?^ -- Так точно, адмирал! Судя по банкам памяти, они были вынуждены покинуть ее из-за какого-то вируса, который, впрочем, на данный момент нашими биологами не обнаружен...^ -- А что со станцией?^ -- Не представляет опасности. В ее искусственном интеллекте произошел какой-то сбой.^ -- А сигнал?^ -- Похоже, с помощью сигнала она хотела предотвратить колонизацию, ведь это могло нарушить ее планы по созданию республики роботов.^ -- Республики?^ -- Так точно, полная чепуха!^ -- Ну что же, прекрасно, готовьтесь к высадке! ]]); obj = { vobj("next", txtc("{".._("КОНЕЦ".."}")) } }