-- $Name: Пояс астероидов$ instead_version "1.9.1"; require "lib" require "dash"; game.codepage="UTF-8"; game.use = function() p'Би-би. Я не могу этого сделать.'; hp = hp - 1; if hp == 0 then walk('end5');end; end; global { q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; hp = 31; } st = stat { nam = function(s) p ('До отключения осталось: ',hp,' мин^'); end }; main = timerpause(700, 520, "main2"); main2 = room { nam = "..."; enter = music_("spookyloop", 0); title = { "П", "О", "Я", "С", " ", "А", "С", "Т", "Е", "Р", "О", "И", "Д", "О", "В" }; num = 7; obj = {vway("a1", [[Запустить процесс синхронизации: {старт}. ]], 'loc1') }, }; robo = obj{ nam = '_'; dsc = 'Отсек почти пуст. В центре стоит {робот}. '; act = 'Би-би. Я мыслю. Я существую. Я - робот.'; }; glass = obj{ nam = '_'; dsc = '^В стене открыт огромный {иллюминатор}. '; act = 'Космос. Сияют звезды. Приближается пояс астероидов.'; }; panel = obj{ nam = '_'; dsc = '^Рядом стоит {панель} управления. '; act = 'Статус эксперимента: завершён. Модель: WR069.'; }; door = obj{ nam = '_'; dsc = 'В конце отсека есть {дверь}. '; act = 'Статус эксперимента: завершён. Модель: WR069.'; }; loc1 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "robot", 180 }, { "door1", 370 } }; obj = {robo, glass, panel, vway("_", [[^В конце отсека есть {дверь}.]], 'loc2') }, }; loc2 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "robot", 180 }, { "door1", 370 } }; obj = { vway("_", [[Дверь закрыта. На экране появляется сообщение: ^"Доступ закрыт. До начала вахты: 10 дней." ^У робота возникает странное чувство. {Чувство?}]], 'loc3') }, }; loc3 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "door1", 370 } }; obj = { vway("_", [[Робот подходит к иллюминатору. В стекле на мгновение отражается лицо мужчины. Странные помехи вскоре проходят. Красные огоньки зрительных сенсоров внимательно смотрят во тьму. Мимо пролетают десятки астероидов. Внезапно сильные толчки начинают сотрясать корабль. ^^{Далее} ]], 'loc4') }, }; loc4 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "door1_open", 370 } }; obj = { vway("_", [[За дверью раздаются выстрелы. Затем наступает тишина. Проходит несколько минут. Внезапно дверь разлетается на кусочки от мощного выстрела. Лазерный луч попадает роботу прямо в корпус. Робот отключается. Срабатывает {тревога}. ]], 'loc5') }, }; loc5 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "door1_open", 370 } }; obj = { vway("_", [[Через некоторое время тревога проходит. Наступает тишина. Вскоре робот поднимается на ноги. Сенсоры внимательно осматривают корпус. Повреждена основная батарея питания. Это очень серьезно. Нужно срочно найти замену и понять, что же произошло на корабле. {Би-би}! ]], 'loc6') }, }; glass2 = obj{ nam = '_'; dsc = 'Отсек почти пуст. В стене открыт огромный {иллюминатор}.'; act = 'Стекло кажется прочным. Пояс астероидов остался позади.'; used = function(s,w) if w == blaster then inv():del('blaster');inv():del('st'); walk('end4'); end; end; }; panel2 = obj{ nam = '_'; dsc = 'Рядом стоит {панель} управления. '; act = 'Компьютерный терминал не работает.'; used = function(s,w) if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; }; door = obj{ nam = '_'; dsc = 'Можно выйти в {коридор}.'; act = function() walk('loc7'); end; }; loc6 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "door1_open", 370 } }; obj = {glass2, panel2, door}, enter = function() if q1 == 0 then q1 = 1; inv():add('st');end; hp = hp - 1; if hp == 0 then walk('end5');end; end, }; door1 = obj{ nam = '_'; dsc = 'Все двери заблокированы. В углу есть {ворота}, ведущие в ремонтный отсек.'; act = function() if q2 == 0 then p[[Внимание! Отсек разгерметизирован! ^Для устранения неполадок вставьте чип-ключ.]]; else walk('loc10'); end; end; used = function(s,w) if w == key1 then hp = hp - 1; if hp == 0 then walk('end5');end; q2 = 1; inv():del('key1'); p'Би-би. Процесс устранения неполадок завершен.'; end; end; }; blaster = obj{ nam = 'бластер'; inv = 'Бластер разряжен. Энергии хватит только на один выстрел.'; }; robo1 = obj{ nam = '_'; dsc = 'У стены лежит неисправный {робот}.'; act = function() if q3 == 0 then p[[Нижняя часть робота полностью разъедена кислотой. Правый манипулятор отсутствует. В левом манипуляторе крепко зажат бластер. Вытащить не получается.]]; else p'Би-би. Прости, приятель.'; end; end; used = function(s,w) if w == stone then q3 = 1; p[[Обломок метеорита с силой ударяет в корпус неисправного робота. Манипулятор разжимается, высвобождая бластер. Робот забирает оружие себе.]]; hp = hp - 1; if hp == 0 then walk('end5');end; inv():del('stone'); inv():add('blaster'); end; if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; }; loc7 = room { nam = "Коридор. Сектор А"; pxa = { { if_("q2==0","door1","door1_open"), 10 }, { "shaft", 250 }, { if_("have(blaster)", "robot_nohand", "robot_nohand_blaster"), 395 } }; obj = {door1, robo1, vway("_", [[Небольшой проход уводит {вправо}.]], 'loc8'), vway("_", [[Можно вернуться {назад}.]], 'loc6'), }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; loc8 = room { nam = "Коридор. Сектор B"; pxa = { { "door4", 60 }, { "blood", 200 }, { "door4", 310 } }; obj = { vway("_", [[Пол испачкан кровью. След тянется из отсека {К613}]], 'loc9'), vway("_", [[в отсек {К614}.]], 'loc11'), vway("_", [[На стене чернеют кислотные разводы. Можно вернуться {назад}.]], 'loc7'), }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; cap1 = obj{ nam = '_'; dsc = 'В центре отсека установлена большая {криокапсула}.'; used = function(s,w) if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; act = 'Это отдельная капсула для элитных членов экипажа. ^Капсула пуста. На разбитом стекле есть следы крови.'; }; key = obj{ nam = '_'; dsc = 'На полу лежит оторванный {манипулятор}.'; act = function() if q4 == 0 then hp = hp - 1; if hp == 0 then walk('end5');end; p[[Робот вынимает из манипулятора синий чип-ключ. ]]; inv():add('key1'); q4 = 1; else p'Би-би. Мне не нужен третий манипулятор.';end; end; used = function(s,w) if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; }; key1 = obj{ nam = 'чип-ключ'; inv = 'Синий чип-ключ высокого уровня допуска.'; }; loc9 = room { nam = "Отсек К613"; pxa = { { "door2", 10 }, { "panel", 210 }, { "crio_blood", 300 } }; obj = {cap1,key, vway("_", [[Можно вернуться в {коридор}.]], 'loc8'), }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; glass3 = obj{ nam = '_'; dsc = 'В центре стены размещен большой {иллюминатор}.'; act = 'Стекло разбито и закрыто снаружи стальной пластиной.'; used = function(s,w) if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; }; stone = obj{ nam = 'метеорит'; inv = 'Довольно крупный и тяжелый осколок метеорита.'; use = function(s,w) if not (w == robo1) then hp = hp - 1; if hp == 0 then walk('end5');end; inv():del('stone');p'Метеорит падает на пол и разбивается на части.'; end; end; }; repair = obj{ nam = '_'; dsc = 'В центре стоит ремонтный {модуль}.'; act = function() if q5 == 0 then hp = hp - 1; if hp == 0 then walk('end5');end; p[[Ремонтный модуль сломан. Похоже, в него, разбив иллюминатор, врезался обломок метеорита. Робот аккуратно достаёт его своими манипуляторами, но всё бесполезно. Модуль уже не починить.Что же делать? ]]; inv():add('stone'); q5 = 1; else p'Би-би. Что же делать? Смириться и ждать отключения?';end; end; used = function(s,w) if w == blaster then hp = hp - 1; if hp == 0 then walk('end5');end; p'Робот стреляет из бластера. Ничего не происходит.'; inv():del('blaster'); end; end; }; loc10 = room { nam = "Ремонтный отсек"; pxa = { { "door1_open", 10 }, { if_("q5==1","repair_broken", "repair_meteor"), 190 }, { "window", 390 } }; obj = {glass3, repair, vway("_", [[Можно вернуться в {коридор}.]], 'loc7'), }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; cap2 = obj{ nam = '_'; dsc = 'В центре отсека установлена большая {криокапсула}.'; act = 'В капсуле спит мужчина. Его лицо кажется очень знакомым. ^ Робот начинает узнавать в нём себя. Но как это возможно?'; used = function(s,w) if w == blaster then inv():del('st'); inv():del('blaster'); walk('end1'); end; end; }; alien = obj{ nam = '_'; dsc = 'Её пытается разбить ужасный {мутант}.'; act = 'Это бывший член экипажа. Его руки превратились в острые клешни, из головы высовываются мерзкие щупальца. Похоже, он заразился инопланетным вирусом.'; used = function(s,w) if w == blaster then inv():del('blaster');inv():del('st'); walk('end2'); end; end; }; loc11 = room { nam = "Отсек К614"; pxa = { { "crio", 10 }, { "mutant", 210 } }; obj = {cap2,alien, vway("a1", [[Можно убежать в {коридор}.]], 'loc12') }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; next1 = obj{ nam = '_'; dsc = [[Робот стреляет из бластера. Капсула взрывается. Мутанта разрывает на части. Робот смотрит на своё мертвое тело в капсуле и ждёт отключения. Вскоре сигнал пропадает. ^^{Далее}]]; act = function(s,w) hp = 31; q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; walk('loc6'); end; }; remove_objs=function() inv():del('blaster'); inv():del('stone');inv():del('st');inv():del('key1'); end end1 = room { nam = "Эпилог";enter=remove_objs; obj = {next1, }, }; next2 = obj{ nam = '_'; dsc = [[Робот стреляет из бластера. Раненый мутант, разбрызгивая кислоту, быстро приближается к роботу и мощным ударом разрубает его на части. Человек в капсуле внезапно открывает глаза и кричит. Настоящий кошмар только начинается. ^^{Далее}]]; act = function(s,w) hp = 31; q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; walk('loc6'); end; }; end2 = room { nam = "Эпилог";enter=remove_objs; obj = {next2, }, }; loc12 = room { nam = "Коридор. Сектор B"; pxa = { { "door4", 60 }, { "blood", 200 }, { "door4", 310 } }; obj = {vway("a1", [[Мутант замечает робота и бросается в погоню. Стараясь увести монстра как можно дальше от криокапсул, робот возвращается в свой отсек. Наступает решающий момент. {Би-би}!]], 'loc13') }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; alien1 = obj{ nam = '_'; dsc = 'К роботу медленно приближается {мутант}, отрезая все пути к отступлению.'; act = function() inv():del('blaster');inv():del('st');inv():del('stone'); walk('end3'); end; used = function(s,w) if w == blaster then inv():del('blaster');inv():del('st'); walk('end2'); end; end; }; glass4 = obj{ nam = '_'; dsc = 'В стене открыт огромный {иллюминатор}.'; act = 'Стекло кажется прочным. За ним холод и бесконечная тьма.'; used = function(s,w) if w == blaster then inv():del('blaster');inv():del('st'); walk('ending'); end; end; }; loc13 = room { nam = "Отсек кибер-крионики"; pxa = { { "window", 10 }, { "panel", 70 }, { "mutant", 160 }, { "door1", 370 } }; obj = {alien1, glass4, }, enter = function() hp = hp - 1; if hp == 0 then walk('end5');end; end, }; next3 = obj{ nam = '_'; dsc = [[Разъярённый мутант, разбрызгивая кислоту, быстро приближается к роботу и мощным ударом разрубает его на части. В это время человек в капсуле внезапно открывает глаза и кричит. Настоящий кошмар только начинается. ^^{Далее}]]; act = function(s,w) hp = 31; q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; walk('loc6'); end; }; end3 = room { nam = "Эпилог";enter=remove_objs; pxa = { { "mutant", 172 } }; obj = {next3, }, }; next4 = obj{ nam = '_'; dsc = [[ Робот стреляет из бластера. Иллюминатор разбивается, впуская внутрь тьму. Вакуум засасывает робота наружу. Оказавшись в открытом космосе, робот печально смотрит вслед удаляющемуся кораблю. Затем сигнал пропадает. ^^{Далее}]]; act = function(s,w) hp = 31; q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; walk('loc6'); end; }; end4 = room { nam = "Эпилог";enter=remove_objs; obj = {next4, }, }; next5 = obj{ nam = '_'; dsc = [[ Батарея робота окончательно выходит из строя. Сигнал пропадает. ^^{Далее}]]; act = function(s,w) hp = 31; q1 = 0; q2 = 0; q3 = 0; q4 = 0; q5 = 0; walk('loc6'); end; }; end5 = room { nam = "Эпилог"; pxa = { { "robot", 212 } }; obj = {next5, }, enter=remove_objs }; ending = room { nam = "Финал", enter = function() mute_()(); complete_("meteor")(); end, dsc = [[Робот стреляет из бластера. Иллюминатор разбивается вдребезги, впуская внутрь тьму. Вакуум засасывает мутанта наружу. Робот не успевает ухватиться за поручни и летит за ним следом. Оказавшись в открытом космосе, робот печально смотрит вслед удаляющемуся кораблю. Перед тем, как отключиться, он думает о том, что исполнил свой долг сполна, и надеется, что следующий робот проведет свою вахту без серьезных происшествий. Затем сигнал пропадает. А на лице мужчины, спящего в капсуле, появляется спокойная улыбка.]], act = gamefile_("robot.lua"), obj = { vobj("next", txtc("^{Продолжение...}")) } }