r_319 = room {
    nam = '...',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = 'r_329',
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/319.png';
    end,
    enter = function (s, from)
        set_music('music/23_scent_of_wandering.ogg');
        if from == r_329 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я несколько часов шёл по Южной трассе на юг, в сторону странного туманного образования. По мере приближения к нему, я всё отчётливей видел, что по всему периметру туманного образования тянется высокий забор с наблюдательными вышками.^Дорога привела меня к высоким воротам, по обе стороны которых стояли две вышки. Пройти дальше я не мог.';
        end
        if s._visit == 2 then
            return 'Я вновь стоял рядом с наблюдательными вышками. Вдали, за высокими воротами, я видел безжизненную пустыню. Раньше я что-то слышал про Темпор Раккслы, через который, собственно, и осуществлялись перелёты в Иные Вселенные. Но я не думал, что такое чудо света может находиться на поверхности планеты. Или всё, что я видел, это ещё не знаменитое Темпоральное Поле?';
        end
        if s._visit == 3 then
            return 'Я вновь вышел к наблюдательным постам артангов, которые охраняли подступы к Зоне. С запада и с востока, вплотную к пустынной трассе подступали горы. На юге, за высокими воротами, я видел голую, безжизненную пустыню, окутанную плотным туманным образованием.';
        end
    end,
    rest = function (s)
        return goto (r_319_rest_end_1);
    end,
    obj = { 'r_319_towers' },
    exit = function (s, to)
        if to == r_329 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_319_towers = iobj {
    nam = 'вышки',
    exam = function (s)
        return 'Массивные наблюдательные вышки. В каждой — минимум полсотни вооружённых артангов.';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (r_319_attack_end);
        end
    end,
};


r_319_rest_end_1 = room {
    nam = '...',
    pic = function (s)
        return 'images/319.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я расположился вблизи пустынной трассы и немного вздремнул.';
    end,
    obj = { vway('1', '{Далее}', 'r_319_rest_end_2') },
};


r_319_rest_end_2 = room {
    nam = '...',
    pic = function (s)
        return 'images/artangs.png';
    end,
--    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
--        me():disable_all();
--    end,
    dsc = function (s)
        return 'Когда я проснулся, то увидел, что вокруг меня стоит дюжина артангов. «Ну что, шпеон? Дапригался?» — с ухмылкой произнёс один из артангов.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_319_attack_end = room {
    nam = '...',
    pic = function (s)
        return 'images/319.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Едва я схватился за оружие, как с вышек на меня обрушился шквал огня. Я рухнул на дорогу...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_322 = room {
    nam = 'КПП',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = 'r_332',
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/322.png';
    end,
    enter = function (s, from)
        set_music('music/27_artangs_theme.ogg');
        if from == r_332 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 1;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я несколько часов шёл по обочине дороги. Прямо по ходу, на юге я заметил контрольно-пропускной пункт. Возле будки со шлагбаумом стоял артанг с гравимётом. Он останавливал и проверял все автокрафты.';
        end
        if s._visit == 2 then
            return 'Я стоял неподалёку от контрольно-пропускного пункта. Артанг-полицейский останавливал и проверял все въезжающие в город автокрафты. Кажется, просто так пройти через пункт мне не дадут.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Расположившись на траве неподалёку от дороги, я немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    obj = { 'r_322_policeman' },
    exit = function (s, to)
        if to == r_341 or to == r_332 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_322_policeman = iobj {
    nam = 'полицейский',
    exam = function (s)
        return 'Это был высокий жирный артанг. На груди у него висел гравимёт.';
    end,
    talk = function (s)
        return 'Похоже, что артанг не был расположен к разговорам.';
    end,
};


r_322_biomask_end = room {
    nam = 'КПП',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Артанг-полицейский заметил моё перевоплащение и, что-то крикнув своим напарникам, направился ко мне. Из будки выскочило ещё несколько артангов с гравимётами наперевес.^Уйти мне не удалось. Артанги открыли огонь из гравимётов. Я рухнул на пыльную дорогу.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_327 = room {
    nam = 'Аэропорт',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    _walk = false,
    north = 'r_337',
    east = 'r_328',
    south = nil,
    west = nil,
    pic = function (s)
        if seen (r_327_shuttle) then
            if r_327_shuttle_cabin._open then
                return 'images/327_shuttle_open.png';
            else
                return 'images/327_shuttle.png';
            end
        else
            return 'images/327_no_shuttle.png';
        end
    end,
    enter = function (s, from)
        if from == r_213_lucky_end_2t then
            s._visit = 1;
            set_music('music/16_escape_2.ogg');
        else
            set_music('music/24_roads.ogg');
        end
        if from == r_337 or from == r_328 then
            s._rested = 0;
            s._visit = s._visit + 1;
            s._just_enter = true;
            if s._visit > 3 then
                s._visit = 2;
            end
        end
        if (from == r_337 or from == r_328) and (s._visit == 1) then
            s._visit = 3;
        end
        objs(r_327):del(r_327_shuttle);
        objs(r_327):del(r_327_shuttle_lever);
        objs(r_327):del(r_327_shuttle_cabin);
        objs(r_327):del(r_327_shuttle_ladder);
        r_327_shuttle_cabin._open = false;
        if (s._visit == 1) or (s._visit == 3) then
            objs(r_327):add(r_327_shuttle);
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Когда мы приземлились в аэропорту Тарана, я вышел из аэро последним, спустился по трапу и осмотрелся. Аэропорт с юга и с запада окружали горы. На востоке и севере я видел жилые кварталы города. Моё внимание привлекли стоящие в аэропорту лёгкие космические челноки типа «Плот».';
        end
        if s._visit == 2 then
            return 'Я снова стоял на взлётном поле местного аэропорта. Здесь всё было по-прежнему. Правда, челноков, которых я видел в прошлый раз, здесь уже не было.';
        end
        if s._visit == 3 then
            return 'Спустя несколько часов я вышел к местному аэропорту. Аэропорт с юга и с запада окружали горы. На востоке и севере распростёрлись жилые кварталы города. На взлётном поле я заметил несколько лёгких космических челноков типа «Плот». Вокруг не было ни души.';
        end
    end,
    rest = function (s)
        return goto (r_327_rest_end);
    end,
    exit = function (s, to)
        if to == r_337 or to == r_328 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_327_shuttle = iobj {
    nam = 'челнок',
    exam = function(s)
        objs(r_327):add(r_327_shuttle_cabin);
        return 'Одноместный грузовой космический челнок «Плот-МС» класса «поверхность-орбита» с прозрачным колпаком.';
    end,
};


r_327_shuttle_cabin = iobj {
    nam = 'кабина',
    _open = false,
    exam = function(s)
        objs(r_327):add(r_327_shuttle_lever);
        return 'Я осмотрел кабину снаружи. На фюзеляже, под откидной крышкой был небольшой рычаг.';
    end,
};


r_327_shuttle_lever = iobj {
    nam = 'рычаг',
    exam = function(s)
        return 'Небольшой рычаг.';
    end,
    useit = function (s)
        if status._clock == NIGHT then
            if r_327_shuttle_cabin._open then
                r_327_shuttle_cabin._open = false;
                objs(r_327):del(r_327_shuttle_ladder);
                return 'Я дёрнул за рычаг, крышка кабины медленно закрылась, лестница втянулась в едва заметные углубления.';
            else
                r_327_shuttle_cabin._open = true;
                objs(r_327):add(r_327_shuttle_ladder);
                return 'Я дёрнул рычаг, откинулась крышка кабины и выдвинулась лестница.';
            end
        else
            return goto (r_327_open_1_end);
        end
    end,
};


r_327_shuttle_ladder = iobj {
    nam = 'лестница',
    exam = function(s)
        return 'Выдвижная лестница.';
    end,
    useit = function (s)
        if here() == r_327 then
            return goto (r_327_cabin);
        else
            p 'Я вылез из челнока.';
            return goto (r_327);
        end
    end,
};


r_327_cabin = room {
    nam = 'Кабина',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/327_cabin.png';
    end,
--    enter = function (s, from)
--    end,
    dsc = function (s)
        return 'Я забрался в челнок и разместился за пультом управления.';
    end,
    obj = { 'shuttle_console', 'r_327_shuttle_ladder' },
    rest = function (s)
        return goto (r_327_rest_end);
    end,
--    exit = function (s, to)
--        if to == r_337 or to == r_328 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


shuttle_console = iobj {
    nam = 'пульт',
    exam = function(s)
        objs(r_327_cabin):add(shuttle_button);
        objs(r_327_cabin):add(shuttle_hole);
        objs(r_327_cabin):add(shuttle_handle);
        objs(r_327_cabin):add(shuttle_panel);
        return 'Я внимательно осмотрел пульт управления. Этот челнок практически не нуждался в пилоте. На пульте была лишь рукоятка закрывания крышки, щель для карточки электронного навигатора, кнопка запуска и панель установки машрута.';
    end,
--    useit = function (s)
--    end,
};


shuttle_button = iobj {
    nam = 'кнопка запуска',
    exam = function(s)
        return 'Кнопка запуска челнока.';
    end,
    useit = function (s)
        if shuttle_panel._destination < 3 then
            return 'Безрезультатно.';
        else
            if not (shuttle_handle._cabin_closed) then
                return goto (r_327_fly_open_1_end);
            else
                if shuttle_panel._destination == 3 then
                    return goto (r_327_fly_tempor_1);
                else
                    return goto (r_327_fly_arkan_1);
                end
            end
        end
    end,
};


shuttle_hole = iobj {
    nam = 'щель',
    _navigator = false,
    exam = function(s)
        return 'Щель для карточки электронного навигатора.';
    end,
    used = function (s, w)
        if w == enavigator then
            if have (enavigator) then
                s._navigator = true;
                inv():del(enavigator);
                return 'Я вставил э-навигатор в щель на панели управления.';
            else
                return 'У меня нет э-навигатора.';
            end
        end
    end,
};


shuttle_handle = iobj {
    nam = 'рукоятка',
    _cabin_closed = false,
    exam = function(s)
        return 'Рукоятка закрывания крышки.';
    end,
    useit = function (s)
        if s._cabin_closed then
            s._cabin_closed = false;
            objs(r_327_cabin):add(r_327_shuttle_ladder);
            return 'Я дёрнул рукоятку и колпак кабины медленно открылся.';
        else
            s._cabin_closed = true;
            objs(r_327_cabin):del(r_327_shuttle_ladder);
            return 'Я дёрнул рукоятку и колпак кабины медленно закрылся.';
        end
    end,
};


shuttle_panel = iobj {
    nam = 'панель',
    _destination = 0,
    exam = function(s)
        return 'Панель установки маршрута.';
    end,
    useit = function (s)
        if shuttle_hole._navigator then
            return goto (shuttle_dlg_tempor);
        else
            return goto (shuttle_dlg_usual);
        end
    end,
};


shuttle_dlg_usual = dlg{
    nam = 'Кабина',
    pic = function(s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = 'Выберите цель полёта:';
    obj = {
            [1] = phr('Кориолис «Альфа».', 'Цель полёта выбрана.', [[pon(1); shuttle_panel._destination = 1; back();]]),
            [2] = phr('Додо «Омега».', 'Цель полёта выбрана.', [[pon(2); shuttle_panel._destination = 2; back();]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


shuttle_dlg_tempor = dlg{
    nam = 'Кабина',
    pic = function(s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = 'Выберите цель полёта:';
    obj = {
            [1] = phr('Темпоральная зона. Квадрат А.', 'Цель полёта выбрана.', [[pon(1); shuttle_panel._destination = 3; back();]]),
            [2] = phr('Город Аркан.', 'Цель полёта выбрана.', [[pon(2); shuttle_panel._destination = 4; back();]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


r_327_fly_open_1_end = room {
    nam = 'Кабина',
    pic = function (s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
        set_music('music/16_escape_2.ogg');
    end,
    dsc = function (s)
        return 'Я нажал на кнопку. Едва слышно загудели двигатели и челнок стал сначала медленно, а потом всё быстрее и быстрее набирать высоту.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_open_2_end') },
};


r_327_fly_open_2_end = room {
    nam = 'Кабина',
    pic = function (s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Меня обдало ледяным ветром. Ещё через несколько секунд я почувствовал, что теряю сознание...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_327_open_1_end = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/327_shuttle_open.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я дёрнул рычаг, откинулась крышка кабины и выдвинулась лестница.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_open_2_end') },
};


r_327_open_2_end = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
    end,
    dsc = function (s)
        return 'Но не успел я ничего сделать, как словно из-под земли появился целый взвод артанговских солдат-охранников. Спустя несколько минут меня уже вели на допрос в Следственное управление СОПЭ...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_327_rest_end = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я разместился неподалёку от взлётного поля и немного расслабился. Несколько часов пронеслось незаметно.^Когда я открыл глаза, то увидел рядом с собой целый взвод вооружённых артангов-охранников.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_327_fly_tempor_1 = room {
    nam = 'Кабина',
    pic = function (s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
        set_music('music/16_escape_2.ogg');
    end,
    dsc = function (s)
        return 'Загудели двигатели и челнок начал медленно отрываться от земли. Через несколько секунд я уже находился высоко над землёй. Челнок держал курс к Темпоральной Зоне, которая находилась южнее Тарана.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_tempor_2') },
};


r_327_fly_tempor_2 = room {
    nam = '...',
    pic = function (s)
        return 'images/327_fly.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Скоро я заметил, что за мной погоня. Три иглообразных истрибителя быстро догоняли мой тихоходный корабль. Но челноку удалось уйти от преследователей — истребители повернули назад возле границы Темпора. Я же летел дальше. Сквозь плотный туман я ничего не мог разглядеть.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_tempor_3') },
};


r_327_fly_tempor_3 = room {
    nam = '...',
    pic = function (s)
        return 'images/327_fly.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Неожиданно, прямо по курсу что-то вспыхнуло и прогремел гром. Челнок резко накренился и вошёл в штопор. Последнее, что я помню -- быстро приближающаяся поверхность безжизненной пустыни...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_327_fly_arkan_1 = room {
    nam = 'Кабина',
    pic = function (s)
        return 'images/327_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
        set_music('music/16_escape_2.ogg');
    end,
    dsc = function (s)
        return 'Я не знаю зачем я выбрал целью этот город. По слухам, в нём жили современные нимфы — женщины, обладающие мощными гипнотическими способностями. На что я надеялся?';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_arkan_2') },
};


r_327_fly_arkan_2 = room {
    nam = 'Кабина',
    pic = function (s)
        return 'images/327_cabin.png';
    end,
    dsc = function (s)
        return 'Но у меня не было другого выбора — лететь в Темпоральную Зону на челноке, использующем аннигиляционное горючее было смертельно.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_arkan_3') },
};


r_327_fly_arkan_3 = room {
    nam = '...',
    pic = function (s)
        return 'images/327_fly.png';
    end,
    dsc = function (s)
        return 'Когда челнок поднялся в воздух, я сразу заметил, что меня преследуют три иглообразных военных истрибителя. Мне оставалось надеяться только на прочность обшивки челнока. Когда истребители открыли огонь, челнок уже находился над океаном. Спустя несколько секунд я почувствовал запах гари. Один из двигателей челнока горел. В этот момент я подумал, что всё кончено.^То же самое, наверное, подумали и преследовавшие меня пилоты — они повернули назад. Пролетев несколько километров, челнок стал разваливаться.';
    end,
    obj = { vway('1', '{Далее}', 'r_327_fly_arkan_4') },
};


r_327_fly_arkan_4 = room {
    nam = '...',
    pic = function (s)
        return 'images/327_fly_catapult.png';
    end,
    dsc = function (s)
        return 'Но тут сработала система катапультирования — измученная электроника корабля выполнила свой последний долг...';
    end,
    obj = { vway('1', '{Далее}', 'r_436') },
    exit = function (s)
        me():enable_all();
    end,
};


r_328 = room {
    nam = 'Южная окраина',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = 'r_338',
    east = 'r_329',
    south = nil,
    west = 'r_327',
    pic = function (s)
        return 'images/328.png';
    end,
    enter = function (s, from)
        set_music('music/23_scent_of_wandering.ogg');
        if from == r_327 or from == r_329 or from == r_338 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
--            if s._visit > 3 then
--                s._visit = 2;
--            end
            if s._visit > 1 then
                if status._clock == NIGHT then
                    s._visit = 3;
                else
                    s._visit = 2;
                end
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я стоял на южной окраине города Таран. Здесь было много маленьких одноэтажных строений. Люди, которые жили здесь, по всей видимости занимались сельским хозяйством. На юге, в долине реки, я видел большие сельскохозяйственные угодья.';
        end
        if s._visit == 2 then
            return 'Я вновь вышел на южную окраину города. Здесь было довольно тихо и спокойно. Жизнь текла своим чередом. Мужчины и женщины работали на полях. На узких пыльных улицах играли дети.';
        end
        if s._visit == 3 then
            return 'Этот район города Тарана ночью словно вымирал. И, не смотря на то, что ночи здесь были довольно светлые, я не встретил на узких улочках ни души.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Отдохнуть здесь можно было без особых проблем. Я расположился на мягкой траве в диком саду на окраине района и немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_327 or to == r_329 or to == r_338 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_329 = room {
    nam = 'Трасса',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = 'r_339',
    east = nil,
    south = 'r_319',
    west = 'r_328',
    pic = function (s)
        return 'images/329.png';
    end,
    enter = function (s, from)
        set_music('music/23_scent_of_wandering.ogg');
        if from == r_328 or from == r_339 or from == r_319 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я вышел на большую, но пустынную трассу, которая уходила на юг. Здесь я не встретил ни одного автокрафта, ни одного человека или артанга. Трасса петляла меж заросших лесами холмов.^На севере и на западе я видел жилые кварталы Тарана. На юге, почти у самого горизонта, висело очень плотное белое облако. Странное образование распростёрлось над большой площадью. Отсюда казалось, что туман покрывает половину планеты.';
        end
        if s._visit == 2 then
            return 'Я снова стоял на трассе, которая, судя по указателям, называлась Южной. На юге, у самого горизонта, по-прежнему висело гигантское туманное образование. Складывалось впечатление, что целая туманность Андромеды пожаловала в гости на загадочную планету Ракксла.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Расположившись в зарослях кустарника возле обочины дороги, я немного вздремнул...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_328 or to == r_339 or to == r_319 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_331 = room {
    nam = 'Шоссе',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = 'r_341',
    east = 'r_332',
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/331.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
        if from == r_341 or from == r_332 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я несколько часов шёл по шоссе. За всё это время мимо меня не проехало ни одного автокрафта. Спустя некоторое время я заметил на западе берег моря. На юге я видел высокие горы. Дорога вела на север вдоль берега моря. Там, на пологом холме, стояла большая добротная вилла.';
        end
        if s._visit == 2 then
            return 'Я стоял на шоссе, недалеко от берега моря. На юге я видел высокие горы. На востоке шоссе исчезало в лесах. Далеко на севере я видел большую виллу, построенную на пологом холме.';
        end
        if s._visit == 3 then
            return 'Несколько часов по шоссе — и я вышел к берегу моря. На востоке я видел знакомую мне лесополосу, сквозь которую проходило шоссе. На юге поднимались горы. На севере, на холме, стояла одинокая вилла.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Выбрав удобное место для отдыха на берегу моря, я сначала с удовольствием искупался, а потом немного поспал.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Выбрав удобное место для отдыха на берегу моря, я немного поспал.';
            end
        end
    end,
    exit = function (s, to)
        if to == r_341 or to == r_332 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_332 = room {
    nam = 'Развилка',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = nil,
    east = 'r_333',
    south = 'r_322',
    west = 'r_331',
    pic = function (s)
        return 'images/332.png';
    end,
    enter = function (s, from)
        if from == porcupine_dlg_end_3 then
            set_music('music/16_escape_2.ogg');
        else
            set_music('music/24_roads.ogg');
        end
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_333 or from == r_322 or from == r_331 or from == porcupine_dlg_end_3 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я стоял на обочине дороги, к которой с севера вплотную подступали горы. Дорога шла с юга и, огибая маленькое озерцо, поворачивала на восток. На западе я заметил узкое двустороннее шоссе, ответвляющееся от главной дороги.';
        end
        if s._visit == 2 then
            return 'Я вышел на знакомую мне развилку.';
        end
    end,
--    obj = { 'infoboard', 'roboturnstile' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Я разместился в зарослях кустарника на обочине дороги и немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Я разместился в зарослях кустарника на обочине дороги и немного вздремнул.';
            end
        end
    end,
    exit = function (s, to)
        if to == r_333 or to == r_322 or to == r_331 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_333 = room {
    nam = 'Трасса',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = nil,
    east = 'r_334',
    south = nil,
    west = 'r_332',
    pic = function (s)
        return 'images/333.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_332 or from == r_334 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 1 then
                s._visit = 1;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я шёл по обочине скоростной трассы. Изредка мимо меня с резким свистом проносились автокрафты. Трасса проходила с запада на восток между высокими отвесными скалами. Почти вплотную к обочине подступали заросли кустарника.';
        end
    end,
    obj = { 'r_333_bushes' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Выбрав удобное место для отдыха, я расположился в зарослях кустарника.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_332 or to == r_334 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_333_bushes = iobj {
    nam = 'кусты',
    exam = function(s)
        r_333_berries:enable();
        return 'На многих кустах я заметил целые гроздья крупных красных ягод.';
    end,
    obj = { 'r_333_berries' },
};


r_333_berries = iobj {
    nam = 'ягоды',
    exam = function(s)
        return 'Большие сочные красные ягоды.';
    end,
    useit = function (s)
        status_change (5, 5, 5, 0, 0);
        return 'Я съел несколько ягод.';
    end,
    take = function (s)
        return 'Ягоды были так нежны, что через несколько секунд буквально вытекали сквозь пальцы.', false;
    end,
}:disable();


r_334 = room {
    nam = 'Дорога',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = nil,
    east = 'r_335',
    south = nil,
    west = 'r_333',
    pic = function (s)
        return 'images/334.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if status._clock == NIGHT and s._just_enter then
            status_change (-24, -15, -13, 2, 0);
            if status._health <= 0 then
                status._health = 1;
            end
        end
        if from == r_333 or from == r_335 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if status._clock == NIGHT and s._rested == 0 then
           return 'Ночью идти здесь было довольно опасно. Я не заметил, как совершенно неожиданно из туннеля, который находился на юге, выскочил автокрафт. Я не успел отскочить в сторону. Сильный касательный удар опрокинул меня на спину, и я свалился в придорожную канаву.';
        end
        if s._visit == 1 then
            return 'Дорога казалась бесконечной. С юга и севера вплотную к трассе подступали скалы. Иногда в небе надо мной с низким гулом проносились аэро. На востоке я видел туннель, который уходил вглубь отвесных скал.';
        end
        if s._visit == 2 then
            return 'Я стоял на обочине пустынной дороги. Изредка мимо меня проносились автокрафты. На востоке я увидел начало туннеля, который уходил вглубь отвесных скал.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Я расположился возле обочины дороги и решил немного отдохнуть. Я чувствовал себя неважно. Но впереди был ещё длинный путь. Сумею ли я когда-нибудь выбраться отсюда?';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_333 or to == r_335 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_335 = room {
    nam = 'Туннель',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = nil,
    east = 'r_336',
    south = nil,
    west = 'r_334',
    pic = function (s)
        return 'images/335.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_334 or from == r_336 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я стоял внутри длинного туннеля, который уходил на восток. Здесь было светло: стенки туннеля были отделаны самосветящимся материалом. По обе стороны туннеля располагались узкие пешеходные дорожки.';
        end
        if s._visit == 2 then
            return 'Я находился в знакомом уже мне туннеле. Здесь было всё по-прежнему: тихо и безлюдно. Лишь изредка мимо меня с лёгким шелестом проносились автокрафты. Туннель тянулся с востока на запад.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Отдыхать здесь было не очень удобно. Но я как-то умудрился пристроиться на узкой пешеходной дорожке, и, прислонившись спиной к холодной стене, немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_334 or to == r_336 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_336 = room {
    nam = 'АПП',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = nil,
    east = nil,
    south = nil,
    west = 'r_335',
    pic = function (s)
        return 'images/336.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_335 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я стоял возле автоматического пропускного пункта. Здесь никого не было. Мощный автоматический шлагбаум поднимался и опускался специальными механизмами, управляемыми электроникой. Со всех сторон на меня смотрели видеокамеры.';
        end
        if s._visit == 2 then
            return 'Возле АПП не было ни души. Изредка около шлагбаума появлялись автокрафты и на несколько секунд останавливались, пока электроника проверяла пропуска.';
        end
        if s._visit == 3 then
            return 'Я вновь вышел к АПП.';
        end
    end,
    obj = { 'app_device' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_335 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


app_device = iobj {
    nam = 'аппарат',
    exam = function (s)
        return 'Большой металлический аппарат с прорезью для пропуска.';
    end,
    used = function (s, w)
        if w == oneway_ticket then
            if have (w) then
                inv():del(oneway_ticket);
                p 'Я сунул карточку в прорезь аппарата, шлагбаум поднялся и я прошёл через АПП.';
                return goto (r_337);
            else
                return 'У меня нет карточки.';
            end
        end
        if w == autocraft_pass then
            if have (w) then
                inv():del(w);
                p 'Я сунул пропуск в прорезь аппарата, шлагбаум поднялся и я прошёл через АПП.';
                return goto (r_336);
            else
                return 'У меня нет пропуска.';
            end
        end
    end,
};


r_337 = room {
    nam = 'АПП',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    north = 'r_347',
    east = 'r_338',
    south = 'r_327',
    west = nil,
    pic = function (s)
        return 'images/337.png';
    end,
    enter = function (s, from)
        set_music('music/24_roads.ogg');
        if from == r_327 or from == r_347 or from == r_338 or from == r_336 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я стоял возле автоматического пропускного пункта. Здесь никого не было. Мощный автоматический шлагбаум поднимался и опускался специальными механизмами, управляемыми электроникой. Со всех сторон на меня смотрели видеокамеры.';
        end
        if s._visit == 2 then
            return 'Возле автоматического пропускного пункта не было ни души. Изредка возле шлагбаума появлялись автокрафты и на несколько секунд останавливались, пока электроника проверяла пропуска.';
        end
        if s._visit == 3 then
            return 'Я вновь вышел к АПП.';
        end
    end,
    obj = { 'app_device' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_327 or to == r_338 or to == r_347 or to == r_336 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_338 = room {
    nam = 'Центр Тарана',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = 'r_348',
    east = 'r_339',
    south = 'r_328',
    west = 'r_337',
    pic = function (s)
        return 'images/338.png';
    end,
    enter = function (s, from)
        set_music('music/28_taran_city.ogg');
        if from == r_348 or from == r_339 or from == r_328 or from == r_337 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
        if status._clock == NIGHT and not (from == r_338_artangs_3) then
            return goto (r_338_artangs_1);
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я вышел в центр города Таран. Здесь было много правительственных зданий, окружённых глухими высокими заборами. Изредка по узким улочкам проносились глянцево-чёрные автокрафты новых правителей Раккслы. Казалось, ничто не могло нарушить идиллию артанговского рая.';
        end
        if s._visit == 2 then
            return 'Я вновь оказался в центральной, старинной части города. Случайные прохожие, встречавшиеся мне по пути, были угрюмы и необщительны. Люди, жившие здесь, уже давно смирились со своей судьбой. Двести лет артанговского правления — это, конечно, большой срок.';
        end
        if s._visit == 3 then
            return 'Я вышел в знакомую мне центральную часть города. Здесь всё было по-прежнему. Артанговский правительственный центр жил своей привычной, размеренной жизнью. Разглядывая внушительные правительственные здания, я думал о том, что может быть скоро этому будет положен конец.';
        end
    end,
    rest = function (s)
        if status._clock == NIGHT then
            return goto (r_338_artangs_1);
        end
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Отдохнуть здесь можно было без особых проблем. Я разместился на скамейке в уютном скверике и немного расслабился...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_348 or to == r_339 or to == r_328 or to == r_337 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_338_artangs_1 = room {
    nam = 'Центр Тарана',
    pic = function (s)
        return 'images/338.png';
    end,
    enter = function (s, from)
        set_music('music/27_artangs_theme.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Ночью в центре было небезопасно. Здесь свирепствовал артанговский патруль. Всех редких прохожих, оказавшихся случайно на улице, избивали и забирали артанги-полицейские.';
    end,
    obj = { vway('1', '{Далее}', 'r_338_artangs_2') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_338_artangs_2 = room {
    nam = 'Центр Тарана',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
--        set_music('music/27_artangs_theme.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'С одной патрульной группой пришлось встретиться и мне...';
    end,
    obj = { vway('1', '{Далее}', 'r_338_artangs_3') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_338_artangs_3 = room {
    nam = 'Центр Тарана',
    pic = function (s)
        return 'images/338.png';
    end,
    enter = function (s, from)
--        set_music('music/27_artangs_theme.ogg');
        set_music('music/07_battle.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Сегодня звёзды были на моей стороне. Мне удалось положить двух артангов из патрульной службы. Оставшиеся в живых артанги бросились бежать. Я не стал догонять их, мне нужно было уходить.';
--        return 'После отчаянного сопротивления я был тяжело ранен. Истекая кровью, я упал на дорогу. Последнее, что я услышал, были слова: "Добей его, Ахид"...';
    end,
    obj = { vway('1', '{Далее}', 'r_338') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_339 = room {
    nam = 'Торговый квартал',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = 'r_349',
    east = nil,
    south = 'r_329',
    west = 'r_338',
    pic = function (s)
        if status._clock == NIGHT then
            return 'images/339_night.png';
        else
            return 'images/339_day.png';
        end
    end,
    enter = function (s, from)
        objs(r_339):del(beggar);
        objs(r_339):del(leftovers);
        if not (status._clock == NIGHT) then
            objs(r_339):add(beggar);
            objs(r_339):add(leftovers);
        end
        set_music('music/28_taran_city.ogg');
        if from == r_329 or from == r_338 or from == r_349 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if status._clock == NIGHT then
            return 'Я вышел к местному торговому центру. Здесь никого не было. Повсюду валялись обрывки бумаги, обёртки и пустые коробки. На севере и на юге я видел огни жилых кварталов, на западе — строения центральной части города. На востоке — высокие горы.';
        end
        if s._visit == 1 then
            return 'Я вышел к большому торговому центру. Здесь было довольно много людей и представителей других рас. За порядком следили усиленные группы артангов-полицейских. Возле одного магазинчика я увидел одетого в лохмотья нищего, который торговал пакетиками с каким-то порошком.';
        end
        if s._visit == 2 then
            return 'Я стоял на территории большого торгового центра. Как всегда, здесь было полно народу и артангов-полицейских. Возле небольшого магазинчика стоял мой старый знакомый нищий.';
        end
    end,
    rest = function (s)
        objs(r_339):del(beggar);
        objs(r_339):del(leftovers);
        if not (status._clock == NIGHT) then
            objs(r_339):add(beggar);
            objs(r_339):add(leftovers);
        end
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            Drop (neurowhip);
            objs():del(neurowhip);
            Drop(credit_card);
            objs():del(credit_card);
            Drop(blaster);
            objs():del(blaster);
            Drop(medallion);
            objs():del(medallion);
            Drop(black_case);
            objs():del(black_case);
            Drop(electronic_key);
            objs():del(electronic_key);
            Drop(biomask);
            objs():del(biomask);
            Drop(r_341_clock);
            objs():del(r_341_clock);
            Drop(veres_documents);
            objs():del(veres_documents);
            Drop(pills);
            objs():del(pills);
            return 'Я расположился на облезлой лавке возле магазинчика. Сколько я проспал не помню. Когда я проснулся, то понял, что меня подчистую обокрали...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_329 or to == r_338 or to == r_349 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


beggar = iobj {
    nam = 'нищий',
    exam = function (s)
        return 'Типичный представитель дна общества. Таких можно встретить на любой цивилизованой планете вселенной.';
    end,
    talk = function (s)
        return 'Похоже, что этот парень был глухонемым.';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (beggar_attack);
        end
    end,
    accept = function (s, w)
        if w == r_341_clock or w == coin then
            drop (w);
            objs(r_339):del(w);
            inv():add(package);
            if w == r_341_clock then
                return 'У нищего засветились глаза. Он взял часы и быстро сунул их в свою потрёпанную сумку. Взамен он дал мне один пакетик.';
            else
                return 'У нищего засветились глаза. Он взял монету и быстро сунул их в свою потрёпанную сумку. Взамен он дал мне один пакетик.';
            end
        else
            return 'Нищий резко помотал головой, давая понять, что это ему не нужно.', false;
        end
    end,
};


beggar_attack = room {
    nam = 'Торговый квартал',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Убить нищего я не успел. Словно из под земли выросли артанги-полицейские и, быстро скрутив меня, поволокли к своей машине. Я пытался сопротивляться, но несколько сильных ударов прикладом гравимёта по голове лишили меня чувств. Это было последнее, что я помню...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


leftovers = iobj {
    nam = 'объедки',
    exam = function (s)
        return 'Кажется, это что-то съедобное.';
    end,
    take = function (s)
        return 'Я взял объедки.';
    end,
    drop = function (s)
        return 'Я бросил объедки.';
    end,
    useit = function (s)
        drop (s);
        objs():del(s);
        status_change (6, 2, 0, 0, 0);
        return 'Я с отвращением проглотил объедки.';
    end,
};


r_341 = room {
    nam = 'Вилла',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    _from_villa = false,
--    _owner = false,
--    _owner_is_dead = false,
--    _owner_is_left = false,
    north = nil,
    east = nil,
    south = 'r_331',
    west = nil,
    pic = function (s)
        if seen (r_341_owner) then
            if r_341_owner._alive then
                return 'images/341_owner.png';
            else
                return 'images/341_owner_is_dead.png';
            end
        else
            return 'images/341.png';
        end
    end,
    enter = function (s, from)
        set_music('music/26_villa.ogg');
        if from == r_341_villa_a then
            s._from_villa = true;
        else
            s._from_villa = false;
        end
        if from == r_331 or from == r_341_villa_a then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._from_villa then
            return 'Хороший добротный дом утопал в густой растительности ухоженного сада. Здесь было тихо и уютно. Судя по всему, вилла принадлежала зажиточному торговцу.';
        end
        if s._visit == 1 then
            return 'Я прошёл по дороге, ведущей к вилле, и поднялся на холм. Хороший добротный дом утопал в густой растительности ухоженного сада. Здесь было тихо и уютно. Судя по всему, вилла принадлежала зажиточному торговцу. Плиточная дорожка привела меня к парадной двери виллы.';
        end
        if s._visit == 2 then
            return 'Пройдя по пустынному шоссе на север, я взобрался на холм и вышел к одинокой вилле. Здесь было по прежнему тихо. Вилла утопала в густой растительности большого ухоженного сада. В воздухе пахло экзотическими цветами.';
        end
    end,
    obj = { 'r_341_bushes', 'r_341_door' },
    rest = function (s)
        if r_341_owner._alive then
            if not seen (r_341_owner) then
                if not r_341_door_lock._locked then
                    return goto (r_341_rest_end);
                end
                if not r_341_bushes._inside then
                    return goto (r_341_rest_end);
                else
                    s._rested = 1;
                    objs(r_341):add(r_341_owner);
                    status_change (2, 1, 1, 0, 0);
                    set_music('music/25_arbes_veres_theme.ogg');
                    return 'Через некоторое время на дорожке, ведущей к вилле, появился небольшого роста человек. Я сразу понял, что это хозяин виллы. Он долго стоял возле запертой двери, обыскивая свои карманы. Видимо, ключа от двери у него не было.';
                end
            else
                return goto (r_341_rest_end);
            end
        else
            if s._rested == 0 then
                s._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Прошло несколько часов...';
            end
            if s._rested == 1 then
                if status._health == 1 then
                    health_finish._from = deref(here());
                    return goto (health_finish);
                else
                    status_change (-1, -1, -1, 0, 0);
                    return 'Прошло несколько часов...';
                end
            end
        end
    end,
    exit = function (s, to)
        if to == r_331 then
            if r_341_owner._is_left then
                return goto (r_341_owner_left_end);
            end
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_341_rest_end = room {
    nam = 'Вилла',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я немного вздремнул. Когда я открыл глаза, вокруг меня стояло несколько артангов с гравимётами наперевес. Из-за спин артангов выглядывал небольшого роста человек и, указывая на меня пальцем, говорил: «Да-да, это он, он! Я точно знаю! Арестуйте его!»';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_341_owner_left_end = room {
    nam = 'Шоссе',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я вышел к берегу моря. Здесь, как оказалось, меня ждали. Дорога была перекрыта. Целый взвод вооружённых артангов поджидал меня в засаде. «Бросить орюжие, рюки за гольову!» — услышал я. Мне ничего не оставалось делать...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_341_bushes = iobj {
    nam = 'кусты',
    _inside = false,
    exam = function (s)
        return 'Хорошо ухоженные густые декоративные кусты.';
    end,
    useit = function (s)
        if s._inside then
            s._inside = false;
            if (seen (r_341_owner)) and (r_341_owner._alive) then
                objs(r_341):del(r_341_owner);
                r_341_owner._is_left = true;
                set_music('music/26_villa.ogg');
                return 'Я вылез из кустов и попытался заговорить с человеком. Едва услышав мой голос, человек обернулся, бросил на меня мимолётный взгляд, и, не говоря ни слова, бросился бежать. Через несколько секунд я потерял его из виду.';
            else
                return 'Я вылез из кустов.';
            end
        else
            s._inside = true;
            return 'Я спрятался в зарослях декоративных кустов. Отсюда я мог прекрасно наблюдать за входной дверью.';
        end
    end,
};


r_341_door = iobj {
    nam = 'входная дверь',
    _examined_outside = false,
    _examined_inside = false,
    exam = function (s)
        r_341_villa_a._painting = false;
        if here() == r_341 then
            if not s._examined_outside then
                s._examined_outside = true;
                objs(r_341):add(r_341_door_lock);
            end
        else
            if not s._examined_inside then
                s._examined_inside = true;
                objs(r_341_villa_a):add(r_341_door_lock);
            end
        end
        return 'Тяжёлая массивная дверь, сделанная из особо прочных пород «каменных» деревьев. Внизу, под инкрустированной ручкой, прорезь электронного замка.';
    end,
    useit = function (s)
        if r_341_door_lock._locked then
            return 'Дверь заперта.';
        else
            if here() == r_341 then
                p 'Я открыл дверь и вошёл внутрь.';
                return goto (r_341_villa_a);
            else
                p 'Я вышел на улицу.';
                return goto (r_341);
            end
        end
    end,
};


r_341_door_lock = iobj {
    nam = 'замок',
    _examined = false,
    _locked = true,
    exam = function (s)
        if not s._examined then
            s._examined = true;
            objs(r_341):add(r_341_door_note);
        end
        if r_341_door_note._in_lock then
            return 'Обыкновенный электронный замок. В прорезь замка вставлена записка.';
        else
            return 'Обыкновенный электронный замок.';
        end
    end,
    used = function (s, w)
        if w == electronic_key then
            if not have (w) then
                return 'У меня нет ключа.';
            else
                if r_341_door_note._in_lock then
                    return 'Не получается.';
                else
                    if s._locked then
                        s._locked = false;
                        return 'Замок открылся.';
                    else
                        s._locked = true;
                        return 'Замок закрылся.';
                    end
                end
            end
        end
    end,
};


r_341_door_note = iobj {
    nam = 'записка',
    _in_lock = true,
    exam = function (s)
        if s._in_lock then
            return 'Не получается.';
        else
            return '«Уехал по делам на остров «О». Арбес».';
        end
    end,
    take = function (s)
        s._in_lock = false;
        return 'Я взял записку.';
    end,
    drop = function (s)
        return 'Я бросил записку.';
    end,
};


r_341_owner = iobj {
    _alive = true,
    _is_left = false,
    _examined= false,
    nam = function (s)
        if s._alive then
            return 'человек';
        else
            return 'труп';
        end
    end,
    exam = function (s)
        if s._alive then
            return 'Мужчина среднего роста. Его лицо показалось мне знакомым. Кажется, я видел этго человека на глайдере.';
        else
            if not s._examined then
                s._examined = true;
                objs(r_341):add(black_case);
                objs(r_341):add(veres_documents);
                return 'Убитый был одет в дорогой костюм. Во внутреннем кармане его пиджака я обнаружил знакомый мне футляр и документы.';
            else
                return 'Я ещё раз обыскал труп, но больше ничего не нашёл.';
            end
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            if s._alive then
                s._alive = false;
                set_music('music/26_villa.ogg');
                return 'Я выскочил из кустов и бросился на хозяина виллы. Он ничего не успел сделать. Через секунду у моих ног лежал труп.';
            else
                return 'Нейрохлыст здесь больше не нужен.';
            end
        end
    end,
};


veres_documents = iobj {
    nam = 'документы',
    exam = function (s)
        return 'Арбес Верес. Год рождения — 3700. Место рождения — Пульсар, Ракксла. Холост. С 3721 года зачислен в штат 3-го Отдела контрразведки СОПЭ. Имеет отличия и награды.';
    end,
    take = function (s)
        return 'Я взял документы.';
    end,
    drop = function (s)
        return 'Я бросил документы.';
    end,

};


r_341_villa_a = room {
    nam = 'Гостиная',
    _visit = 0,
--    _rested = 0,
    _just_enter = true,
    _painting = false,
    _clock = true,
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        if s._painting then
            return 'images/341_painting.png';
        else
            return 'images/341_villa_a.png';
        end
    end,
    enter = function (s, from)
        set_music('music/26_villa.ogg');
        if from == r_341 or from == r_341_villa_b then
            s._just_enter = true;
--            s._rested = 0;
--            s._visit = s._visit + 1;
--            if s._visit > 2 then
--                s._visit = 2;
--            end
        end
    end,
    dsc = function (s)
--        if s._visit == 1 then
        if s._clock then
            return 'Я оказался в довольно большой и просторной гостиной современного типа. Хозяин виллы любил уют. На стене над старинным камином висели дисплейные часы. Напротив камина стояло несколько мягких кресел и маленький столик. Напротив входной двери я заметил ещё одну, проходную дверь, которая вела в кабинет.';
        else
            return 'Я оказался в довольно большой и просторной гостиной современного типа. Хозяин виллы любил уют. Напротив камина стояло несколько мягких кресел и маленький столик. Напротив входной двери я заметил ещё одну, проходную дверь, которая вела в кабинет.';
        end
--        if s._visit == 2 then
--            return 'Я снова вышел в гостиную.';
--        end
    end,
    obj = { 'r_341_door', 'r_341_villa_door', 'r_341_clock', 'r_341_painting' },
    rest = function (s)
        if r_341_owner._alive then
            return goto (r_341_rest_end);
        else
            if r_341._rested == 0 then
                r_341._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Прошло несколько часов...';
            end
            if r_341._rested == 1 then
                if status._health == 1 then
                    health_finish._from = deref(here());
                    return goto (health_finish);
                else
                    status_change (-1, -1, -1, 0, 0);
                    return 'Прошло несколько часов...';
                end
            end
        end
    end,
    exit = function (s, to)
        r_341_villa_a._painting = false;
        if to == r_341 and r_341_door_lock._locked then
            return 'Дверь заперта.', false;
        end
--        if to == r_341 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
    end,
};


r_341_villa_door = iobj {
    nam = 'дверь в кабинет',
    exam = function (s)
        r_341_villa_a._painting = false;
        return 'Обычная дверь.';
    end,
    useit = function (s)
        if here() == r_341_villa_a then
            return goto (r_341_villa_b);
        else
            return goto (r_341_villa_a);
        end
    end,
};


r_341_clock = iobj {
    nam = 'часы',
    _state = 1,
    exam = function (s)
        r_341_villa_a._painting = false;
        local v = 'Оригинальные плоские электронные часы. Внизу, под цифровым индикатором — голографическое изображение ';
        if s._state == 1 then
            v = v..'рака.';
        end
        if s._state == 2 then
            v = v..'паука.';
        end
        if s._state == 3 then
            v = v..'кита.';
        end
        if s._state == 4 then
            v = v..'быка.';
        end
        if s._state == 5 then
            v = v..'змеи.';
        end
        if s._state == 6 then
            v = v..'пчелы.';
        end
        if s._state == 7 then
            v = v..'гриба.';
        end
        if s._state == 8 then
            v = v..'клеща.';
        end
        if s._state == 9 then
            v = v..'комара.';
        end
        if s._state == 10 then
            v = v..'пиявки.';
        end
        if s._state == 11 then
            v = v..'кошки.';
        end
        if s._state == 12 then
            v = v..'рыбы.';
        end
        if r_341_safe_hole._clock_inside then
            v = v..'^Часы вставлены в прорезь сейфа.';
        end
        return v;
    end,
    used = function (s, w)
        if w == electronic_key then
            s._state = s._state + 1;
            if s._state > 12 then
                s._state = 1;
            end
            return 'Я приложил ключ к дисплею. Кажется, ничего не произошло.';
        end
    end,
    take = function (s)
        r_341_safe_hole._clock_inside = false;
        r_341_villa_a._clock = false;
        if r_341_villa_a._visit == 1 then
            r_341_villa_a._visit = 2;
        end
        return 'Я взял часы.';
    end,
    drop = function (s)
        return 'Я бросил часы.';
    end,
};


r_341_painting = iobj {
    nam = 'картина',
    exam = function (s)
        r_341_villa_a._painting = true;
        return 'В нижнем углу очень мелкая надпись: «Грет Кан. 29 век. Врата Темпора».';
    end,
};


r_341_villa_b = room {
    nam = 'Кабинет',
    _visit = 0,
--    _rested = 0,
    _just_enter = true,
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        if r_341_safe._locked then
            return 'images/341_villa_b.png';
        else
            return 'images/341_villa_c.png';
        end
    end,
    enter = function (s, from)
--        set_music('music/26_villa.ogg');
        if from == r_341_villa_a then
--            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я прошёл в кабинет. Здесь у окна стоял массивный стол, сделанный из особых пород так называемой «вечной» древесины. У одной из стен стоял внушительный сейф.';
        end
        if s._visit == 2 then
            return 'Я снова оказался в кабинете. У окна стоял массивный стол. У одной из стен стоял внушительный сейф.';
        end
    end,
    obj = { 'r_341_villa_door', 'r_341_safe' },
    rest = function (s)
        if r_341_owner._alive then
            return goto (r_341_rest_end);
        else
            if r_341._rested == 0 then
                r_341._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Прошло несколько часов...';
            end
            if r_341._rested == 1 then
                if status._health == 1 then
                    health_finish._from = deref(here());
                    return goto (health_finish);
                else
                    status_change (-1, -1, -1, 0, 0);
                    return 'Прошло несколько часов...';
                end
            end
        end
    end,
    exit = function (s, to)
--        if to == r_341 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
    end,
};


r_341_safe = iobj {
    nam = 'сейф',
    _examined = false,
    _locked = true,
    exam = function (s)
        if not s._examined then
            s._examined = true;
            objs(r_341_villa_b):add(r_341_safe_hole);
            objs(r_341_villa_b):add(r_341_safe_codelock);
        end
        return 'Большой прочный сейф. На дверце прорезь, видимо для ключа, и шифронаборник.';
    end,
};


r_341_safe_hole = iobj {
    nam = 'прорезь',
    _clock_inside = false,
    exam = function (s)
        return 'Прорезь на двери сейфа, по видимому, была предназначена для ключа.';
    end,
    used = function (s, w)
        if w == electronic_key then
            return 'Электронный ключ не подходил к прорези.';
        end
        if w == r_341_clock then
            if s._clock_inside then
                return 'Я уже вставил часы в прорезь.';
            else
                Drop (r_341_clock);
                s._clock_inside = true;
                return 'Я вставил часы в прорезь сейфа.';
            end
        end
    end,
};


r_341_safe_codelock = iobj {
    nam = 'шифронаборник',
    exam = function (s)
        return 'Сейф открывался комбинацией букв.';
    end,
    useit = function (s)
        if r_341_safe._locked then
            return goto (r_341_terminal);
        else
            return 'Я уже открыл сейф.';
        end
    end,
};


r_341_terminal = room {
    nam = 'Кабинет',
    _key_pressed = 0,
    _passwd = 0,
    pic = function (s)
        return 'images/341_villa_b.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
--    dsc = function (s)
--        return 'Через мгновение вспыхнула надпись «Введите пароль:».';
--    end,
    act = function (s, w)
        s._key_pressed = s._key_pressed + 1;
        if s._key_pressed == 5 then
            return goto (r_341_terminal_end);
        end
        if w == "1" then
            return 'Я нажал клавишу А.';
        end
        if w == "2" then
            return 'Я нажал клавишу Б.';
        end
        if w == "3" then
            return 'Я нажал клавишу В.';
        end
        if w == "4" then
            return 'Я нажал клавишу Г.';
        end
        if w == "5" then
            return 'Я нажал клавишу Д.';
        end
        if w == "6" then
            return 'Я нажал клавишу Е.';
        end
        if w == "7" then
            return 'Я нажал клавишу Ё.';
        end
        if w == "8" then
            return 'Я нажал клавишу Ж.';
        end
        if w == "9" then
            return 'Я нажал клавишу З.';
        end
        if w == "10" then
            return 'Я нажал клавишу И.';
        end
        if w == "11" then
            return 'Я нажал клавишу Й.';
        end
        if w == "12" then
            if s._passwd == 0 then
                s._passwd = s._passwd + 1;
            end
            return 'Я нажал клавишу К.';
        end
        if w == "13" then
            return 'Я нажал клавишу Л.';
        end
        if w == "14" then
            return 'Я нажал клавишу М.';
        end
        if w == "15" then
            if s._passwd == 2 then
                s._passwd = s._passwd + 1;
            end
            return 'Я нажал клавишу Н.';
        end
        if w == "16" then
            if s._passwd == 1 then
                s._passwd = s._passwd + 1;
            end
            return 'Я нажал клавишу О.';
        end
        if w == "17" then
            return 'Я нажал клавишу П.';
        end
        if w == "18" then
            return 'Я нажал клавишу Р.';
        end
        if w == "19" then
            return 'Я нажал клавишу С.';
        end
        if w == "20" then
            return 'Я нажал клавишу Т.';
        end
        if w == "21" then
            return 'Я нажал клавишу У.';
        end
        if w == "22" then
            return 'Я нажал клавишу Ф.';
        end
        if w == "23" then
            return 'Я нажал клавишу Х.';
        end
        if w == "24" then
            return 'Я нажал клавишу Ц.';
        end
        if w == "25" then
            return 'Я нажал клавишу Ч.';
        end
        if w == "26" then
            return 'Я нажал клавишу Ш.';
        end
        if w == "27" then
            return 'Я нажал клавишу Щ.';
        end
        if w == "28" then
            return 'Я нажал клавишу Ъ.';
        end
        if w == "29" then
            return 'Я нажал клавишу Ь.';
        end
        if w == "30" then
            return 'Я нажал клавишу Э.';
        end
        if w == "31" then
            return 'Я нажал клавишу Ю.';
        end
        if w == "32" then
            return 'Я нажал клавишу Я.';
        end
        if w == "33" then
            if s._passwd == 3 then
                if (r_341_clock._state == 6) and (r_341_safe_hole._clock_inside) then
                    if r_341_door_lock._locked then
                        return goto (r_341_terminal_success);
                    else
                        return goto (r_341_terminal_almost_success);
                    end
                else
                    return goto (r_341_terminal_end);
                end
            else
                return goto (r_341_terminal_end);
            end
            return 'Я нажал клавишу [ввод].';
        end
    end,
    obj = { vobj ( "1",  "{А}"),
            vobj ( "2", " {Б}"),
            vobj ( "3", " {В}"),
            vobj ( "4", " {Г}"),
            vobj ( "5", " {Д}"),
            vobj ( "6", " {Е}"),
            vobj ( "7", " {Ё}"),
            vobj ( "8", " {Ж}"),
            vobj ( "9", " {З}"),
            vobj ("10", " {И}"),
            vobj ("11", " {Й}"),
            vobj ("12", " {К}"),
            vobj ("13", " {Л}"),
            vobj ("14", " {М}"),
            vobj ("15", " {Н}"),
            vobj ("16", " {О}"),
            vobj ("17", " {П}"),
            vobj ("18", " {Р}^"),
            vobj ("19", " {С}"),
            vobj ("20", " {Т}"),
            vobj ("21", " {У}"),
            vobj ("22", " {Ф}"),
            vobj ("23", " {Х}"),
            vobj ("24", " {Ц}"),
            vobj ("25", " {Ч}"),
            vobj ("26", " {Ш}"),
            vobj ("27", " {Щ}"),
            vobj ("28", " {Ъ}"),
            vobj ("29", " {Ь}"),
            vobj ("30", " {Э}"),
            vobj ("31", " {Ю}"),
            vobj ("32", " {Я}"),
            vobj ("33", " {[ввод]}") },
};


r_341_terminal_end = room {
    nam = 'Кабинет',
    pic = function (s)
        return 'images/341_villa_b.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я не успел отдёрнуть руку, как мощнейший удар электрического тока свлил меня наповал...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
--    exit = function (s)
--        return goto (the_end);
--    end,
};


r_341_terminal_almost_success = room {
    nam = 'Кабинет',
    pic = function (s)
        return 'images/341_villa_c.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я набрал комбинацию. Сейф открылся, но мощнейший удар электрического тока свлил меня наповал...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
--    exit = function (s)
--        return goto (the_end);
--    end,
};


r_341_terminal_success = room {
    nam = 'Кабинет',
    pic = function (s)
        return 'images/341_villa_c.png';
    end,
    enter = function (s, from)
        r_341_safe._locked = false;
        objs(r_341_villa_b):add(oneway_ticket);
        me():disable_all();
    end,
    dsc = function (s)
        return 'Сейф распахнулся и я увидел, что он пуст. То есть практически пуст. На одной из полок лежала пластиковая карточка. Больше в сейфе ничего не было.';
    end,
    obj = { vway('1', '{Далее}', 'r_341_villa_b') },
    exit = function (s)
        me():enable_all();
    end,
};


oneway_ticket = iobj {
    nam = 'карточка',
    exam = function (s)
        return 'Одноразовый пропуск в мегаполис Таран.';
    end,
    take = function (s)
        return 'Я взял карточку.';
    end,
    drop = function (s)
        return 'Я бросил карточку.';
    end,
};



r_347 = room {
    nam = 'Северо-западная окраина',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = nil,
    east = 'r_348',
    south = 'r_337',
    west = nil,
    pic = function (s)
        if seen (autocraft) then
            return 'images/347_autocraft.png';
        else
            return 'images/347.png';
        end
    end,
    enter = function (s, from)
        objs(r_347):del(autocraft);
        objs(r_347):del(autocraft_door);
        if status._clock == DAY then
            objs(r_347):add(autocraft);
        end
        set_music('music/24_roads.ogg');
        if from == r_337 or from == r_348 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        local v = '';
        if s._visit == 1 then
            v = 'Я находился на северо-западной окраине Тарана. С севера и с запада к городу вплотную подступали высокие горы. На востоке я видел жилые кварталы. На юге, в туманной дымке я разглядел трассу, которая скрывалась в туннеле, прорубленном в одной из скал.';
        end
        if s._visit == 2 then
            v = 'Я вновь вышел на северо-западную окраину города.';
        end
        if s._visit == 3 then
            v = 'Я стоял неподалёку от знакомой мне строительной площадки. Вокруг не было ни души. С севера и с запада к городу вплотную подступали высокие горы. На юге и востоке я видел жилые кварталы.';
        end
        if seen (autocraft) then
            v = v..' Неподалёку от меня, возле строительной площадки остановился пассажирский автокрафт. Из него вышли несколько человек, похоже рабочих, и направились к стройплощадке.';
        end
        return v;
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            if seen (autocraft) then
                objs(r_347):del(autocraft);
                objs(r_347):del(autocraft_door);
                return 'Я разместился на поляне неподалёку от строительной площадки, чтобы немного передохнуть. Когда я проснулся, автокрафта на площадке уже не было.';
            else
                if status._clock == DAY then
                    objs(r_347):add(autocraft);
                    return 'Я разместился на поляне неподалёку от строительной площадки, чтобы немного передохнуть.^Пока я спал, неподалёку от меня, возле строительной площадки остановился пассажирский автокрафт. Из него вышли несколько человек, похоже рабочих, и направились к стройплощадке.';
                else
                    return 'Я разместился на поляне неподалёку от строительной площадки, чтобы немного передохнуть.';
                end
            end
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                if status._clock == DAY then
                    objs(r_347):add(autocraft);
                    return 'Прошло несколько часов.^Пока я спал, неподалёку от меня, возле строительной площадки остановился пассажирский автокрафт. Из него вышли несколько человек, похоже рабочих, и направились к стройплощадке.';
                else
                    return 'Прошло несколько часов...';
                end
            end
        end
    end,
    exit = function (s, to)
        if to == r_348 or to == r_337 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


autocraft = iobj {
    nam = 'автокрафт',
    exam = function (s)
        objs(r_347):add(autocraft_door);
        return 'Я подошёл к автокрафту. Через стекло кабины водителя я заметил, что внутри никого нет. Дверца в автокрафт прикрыта, но не заперта.';
    end,
};


autocraft_door = iobj {
    nam = 'дверца',
    exam = function (s)
        return 'Дверца в автокрафт была прикрыта, но не заперта.';
    end,
    useit = function (s, w)
        if here() == r_347 then
            return goto (r_347_autocraft_a);
        else
            p 'Я вышел из автокрафта. По-моему, никто не заметил, что я заходил в автокрафт. Рабочие занимались своими делами.';
            return goto (r_347);
        end
    end,
};


r_347_autocraft_a = room {
    nam = 'Автокрафт',
    _visit = 1,
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/347_autocraft_a.png';
    end,
    enter = function (s, from)
        if from == r_347 then
            s._visit = 1;
        else
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я открыл дверцу и вошёл внутрь автокрафта.';
        else
            return 'Я вернулся в салон автокрафта.';
        end
    end,
    obj = { 'autocraft_door', 'autocraft_door_b' },
    rest = function (s)
        return goto (r_347_autocraft_rest);
    end,
};


r_347_autocraft_rest = room {
    nam = 'Автокрафт',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я сел в кресло и меня стало клонить в сон. Проснулся я от того, что кто-то настойчиво тряс меня за плечо. Я открыл глаза. Рядом стояли артанги.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


autocraft_door_b = iobj {
    nam = 'дверь в кабину',
    _locked = true,
    exam = function (s)
        if s._locked then
            return 'Дверь в кабину автокрафта была заперта.';
        else
            return 'Дверь в кабину автокрафта была открыта.';
        end
    end,
    useit = function (s, w)
        if s._locked then
            return 'Дверь в кабину автокрафта была заперта.';
        else
            if here() == r_347_autocraft_a then
                return goto (r_347_autocraft_b);
            else
                return goto (r_347_autocraft_a);
            end
        end
    end,
    used = function (s, w)
        if w == wire then
            if not s._locked then
                return 'Я уже открыл дверь в кабину.';
            else
                s._locked = false;
                return 'С помощью куска проволоки мне удалось открыть простой замок, который запирал дверь в кабину автокрафта.';
            end
        end
    end,
};


r_347_autocraft_b = room {
    nam = 'Кабина автокрафта',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        return 'images/347_autocraft_b.png';
    end,
--    enter = function (s, from)
--        if from == r_347 or from == r_347_autocraft_b then
--            s._visit = s._visit + 1;
--            if s._visit > 2 then
--                s._visit = 2;
--            end
--        end
--    end,
    dsc = function (s)
          local v = 'Я вошёл внутрь. Пульт управления автокрафтом был под сигнализацией. Я вряд ли мог угнать эту машину.';
          if seen (aaa) then
             v = v..' На пульте управления я заметил специальный пропуск, оставленный водителем.';
          end
          return v;
    end,
    obj = { 'autocraft_door_b', 'autocraft_pass' },
    rest = function (s)
        return goto (r_347_autocraft_rest);
    end,
};


autocraft_pass = iobj {
    nam = 'пропуск',
    exam = function (s)
        return '«Восточный АПП города Тарана».';
    end,
    take = function (s)
        return 'Я взял пропуск.';
    end,
    drop = function (s)
        return 'Я бросил пропуск.';
    end,
};


r_348 = room {
    nam = 'Квартал 323',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = nil,
    east = 'r_349',
    south = 'r_338',
    west = 'r_347',
    pic = function (s)
        if seen (oldman) then
            if oldman._alive then
                return 'images/348_oldman.png';
            else
                return 'images/348_oldman_corpse.png';
            end
        else
            return 'images/348.png';
        end
    end,
    enter = function (s, from)
        if seen (oldman) then
            objs():del(oldman);
        end
        if not (status._clock == NIGHT) then
            if not oldman._killed then
                objs():add(oldman);
            end
        end
        set_music('music/28_taran_city.ogg');
        if from == r_347 or from == r_338 or from == r_349 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if seen (oldman) then
                if oldman._alive then
                    return 'Я прошёл несколько жилых кварталов и оказался на улице имени Плуда Врожера. На углу перекрёстка, под указателем с надписью «Квартал 323» я заметил облезлого волосатого старика.';
                else
                    return 'Я был на улице имени Плуда Врожера. На углу перекрёстка, под указателем с надписью «Квартал 323» лежал облезлый волосатый старик.';
                end
            else
                return 'Я прошёл несколько жилых кварталов и оказался на улице имени Плуда Врожера.';
            end
        end
        if s._visit == 2 then
            return 'Я стоял на улице имени Плуда Врожера под вывеской «Квартал 323». Здесь всё было по-прежнему. Город жил привычной жизнью.';
        end
    end,
    rest = function (s)
        if seen (oldman) and oldman._killed then
--            status_change (2, 1, 1, 0, 0);
            return goto (r_348_dead_body_remove_1);
        end
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Я зашёл в сквер, который находился на противоположной стороне улицы и, присев на скамейку, немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_347 or to == r_338 or to == r_349 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


oldman = iobj {
    _alive = true,
    _killed = false,
    _examined = false,
    _talked = false,
    nam = 'старик',
    exam = function (s)
        if s._alive then
            return 'Старик был одет в засаленную одежду с тёмными разводами масляных пятен. На ногах — стоптанные ботинки. Грязная борода свисала клочьями. Помутневшие глаза смотрели на меня с полным безразличием.';
        else
            if not s._examined then
                s._examined = true;
                objs(r_348):add(package);
                return 'Я обыскал труп. У старика в кармане лежал пакетик с каким-то порошком.';
            else
                return 'Я ещё раз обыскал труп, но больше ничего не нашёл.';
            end
        end
    end,
    talk = function (s)
        if not s._alive then
            return 'Старик был мёртв.';
        end
        if status._biomask then
            objs(r_348):del(oldman);
            return 'Едва увидев меня, старик свернул в подворотню и бросился бежать. Вскоре он скрылся из виду.';
        else
            if not s._talked then
                s._talked = true;
                return goto (oldman_dlg_1);
            else
                return 'Старик, казалось, не слышал меня. Он смотрел прямо перед собой и что-то шептал про себя.';
            end
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            if not s._alive then
                return 'Старик уже мёртв.';
            else
                s._alive = false;
                s._killed = true;
                return 'Я выхватил оружие. Старик не сопротивлялся, и я убил его. Труп лежал возле моих ног.';
            end
        end
    end,
    accept = function (s, w)
        if not s._alive then
            return 'Старик мёртв.', false;
        else
            drop(w);
            objs(r_348):del(w);
            s._killed = true;
            inv():add(package);
            objs(r_348):del(oldman);
            return 'Старик взял мой подарок и, повертев в руках, сунул его за пазуху. «Может быть пригодится,» — сказал он. Взамен этого он что-то сунул мне в руку и, озираясь по сторонам, повернул за угол и скрылся из виду.';
        end
    end,
};


oldman_dlg_1 = dlg{
    nam = 'Квартал 323',
    pic = function(s)
        return 'images/348_oldman.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = 'Заметив, что я проявил к нему интерес, старик сразу начал говорить, оборвав меня на полуслове.^— Дорогой, мне наплевать кто ты. Мне плевать кого ты любишь или не любишь в этом дерьмовом мире. Я хочу только одного — денег. Дай мне немного. Да пусть тебя хранит Молчание Темпора.',
    obj = {
            [1] = phr('У меня ничего нет, дай пройти.', '— Подожди, не горячись. Вижу, что ты богат, но стоишь не на том пути. Вспомнишь меня потом, когда попробуешь кое-что. Я не жадный. Я-то всем помогаю. Возьми вот это. А меня, если чего будет нужно, сможешь найти всегда, если захочешь. Счастливо. — Сказав это, старик развернулся и медленно пошёл прочь.', [[poff(1,2,3); inv():add(package); oldman._killed = true; objs(r_348):del(oldman); back();]]),
            [2] = phr('Что такое? О чём ты говоришь? Какой Темпор?', nil, [[poff(1,2,3); return goto (oldman_dlg_21);]]),
            [3] = phr('Подожди, может сейчас что-нибудь дам.', '— О, ты добрый человек! дай что-нибудь, а я тебе дам взамен кое-что.', [[poff(1,2,3); back();]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


oldman_dlg_21 = room {
    nam = 'Квартал 323',
    pic = function (s)
        return 'images/348_oldman.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return '— А, ты оказывается, не местный. Неужели ты ничего не слышал про Темпор Раксслы? Конечно, наверное, слышал. Другие миры, вселенные, богатства неисследованных планет... Только вот вся эта куча дерьма обернулась для нас, жителей Раккслы, страшной напастью.^Посмотри на этих монстров — артангов. Они ведь все оттуда, из тех вселенных... Мы жили в раю, а теперь? Теперь рай превратился в ад!^Хо-хо-хо... Но все ждут чуда, которого нет! Все ждут, что Темпор закроется. Кукиш! Теперь артанги — хозяева этой жизни. И Темпор подчиняется только им. Артангов — тьма. Они превратят в пыль любую галактику. Их владения — миллион парсек пространства.';
    end,
    obj = { vway('1', '{Далее}', 'oldman_dlg_22') },
};


oldman_dlg_22 = room {
    nam = 'Квартал 323',
    pic = function (s)
        return 'images/348_oldman_corpse.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        oldman._alive = false;
        me():disable_all();
    end,
    dsc = function (s)
        return 'Ха-ха-ха! — у старика закатились глаза, он повалился на землю и забился в конвульсиях.^Через минуту он скончался. Труп старика лежал возле стены дома, прямо под вывеской «Ул. им. Плуда Врожера. Квартал 323».';
    end,
    obj = { vway('1', '{Далее}', 'r_348') },
    exit = function (s)
        me():enable_all();
    end,
};


package = iobj {
    nam = 'пакетик',
    exam = function (s)
        return 'Препарат «Брейк», одна порция.';
    end,
    take = function (s)
        return 'Я взял пакетик.';
    end,
    drop = function (s)
        return 'Я бросил пакетик.';
    end,
};


r_348_dead_body_remove_1 = room {
    nam = 'Квартал 323',
    pic = function (s)
        return 'images/police.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Пока я отдыхал, подъехал полицейский автокрафт и подобрал труп старика.';
    end,
    obj = { vway('1', '{Далее}', 'r_348_dead_body_remove_2') },
};


r_348_dead_body_remove_2 = room {
    nam = 'Квартал 323',
    pic = function (s)
        return 'images/348.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'На меня никто не обратил внимания.';
    end,
    obj = { vway('1', '{Далее}', 'r_348') },
    exit = function (s)
        me():enable_all();
    end,
};


r_349 = room {
    nam = 'Квартал 324',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
    north = nil,
    east = nil,
    south = 'r_339',
    west = 'r_348',
    pic = function (s)
        return 'images/349.png';
    end,
    enter = function (s, from)
        set_music('music/28_taran_city.ogg');
        if from == r_339 or from == r_348 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я вышел к 324 кварталу города. Дома здесь были небольшие, одно- и двухэтажные. Похоже, что звёздные волки, осевшие на Ракксле, строили тут временные пристанища, которые в конце концов стали постоянными.';
        end
        if s._visit == 2 then
            return 'Я находился в районе 324 квартала. На улицах не было ни души. Потомки первых колонизаторов Раккслы уединились в своих домах-крепостях и редко выходили в свет.';
        end
        if s._visit == 3 then
            return 'Здесь было тихо и безлюдно. Как ни странно, но за время своего путешествия я не встретил в этом районе ни одного артанга. Похоже, что они не очень любили захаживать в район, где жили потомки первых колонизаторов Раккслы.';
        end
    end,
    obj = { 'box_12' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Выбрав удобное место под развесистым деревом, я немного вздремнул.';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_339 or to == r_348 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


box_12 = iobj {
    nam = 'квартал',
    exam = function (s)
        p 'Я прошёлся по улице и, наконец, нашёл дом с табличкой «Бокс 12».';
        return goto (r_349_12);
    end,
    useit = function (s)
        p 'Я прошёлся по улице и, наконец, нашёл дом с табличкой «Бокс 12».';
        return goto (r_349_12);
    end,
};


quarter_324 = iobj {
    nam = 'квартал 324',
    exam = function (s)
        p 'Я вернулся в 324 квартал.';
        return goto (r_349);
    end,
    useit = function (s)
        p 'Я вернулся в 324 квартал.';
        return goto (r_349);
    end,
};



r_349_12 = room {
    nam = 'Бокс 12',
    _visit = 0,
--    _rested = 0,
--    _just_enter = true,
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    pic = function (s)
        if seen (box_12_guardian) then
            return 'images/349_12_guardian.png';
        else
            return 'images/349_12.png';
        end
    end,
--    enter = function (s, from)
--    end,
    dsc = function (s)
        return 'Большой двухэтажный дом с роскошным крыльцом и массивной дверью.';
    end,
    obj = { 'quarter_324', 'box_12_door' },
    rest = function (s)
        if seen (box_12_guardian) then
            return 'Сейчас было не самое подходящее время, чтобы отдыхать.';
        end
        if r_349._rested == 0 then
            r_349._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Выбрав удобное место под развесистым деревом, я немного вздремнул.';
        end
        if r_349._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_349 and (seen (box_12_guardian)) then
            return 'Мне не следовало уходить сейчас.', false;
        end
    end,
};


box_12_door = iobj {
    nam = 'дверь',
    _examined = false,
    exam = function (s)
        if not s._examined then
            s._exmined = true;
            objs(r_349_12):add(box_12_eye);
            objs(r_349_12):add(box_12_bell);
        end
        return 'Дверь с видеоглазком, сделанная из прочного материала. На двери я заметил кнопку звонка.';
    end,
--    useit = function (s)
--        return 'aaa';
--    end,
};


box_12_eye = iobj {
    nam = 'глазок',
    _seen_case = false,
    _seen_medallion = false,
    exam = function (s)
        return 'Видеоглазок.';
    end,
    used = function (s, w)
        if w == black_case then
            if have (black_case) then
                s._seen_case = true;
                if box_12_bell._belled and s._seen_case and s._seen_medallion then
                    box_12_bell._belled = false;
                    objs(r_349_box_12):add(box_12_guardian);
                    return 'За дверью послышалось какое-то движение и через минуту она распахнулась. На пороге стоял мужчина средних лет с гравимётом в руках.';
                end
                return 'Я приставил к глазку футляр.';
            else
                return 'У меня нет футляра.';
            end
        end
        if w == medallion then
            if have (medallion) then
                s._seen_medallion = true;
                if box_12_bell._belled and s._seen_case and s._seen_medallion then
                    box_12_bell._belled = false;
                    objs(r_349_box_12):add(box_12_guardian);
                    return 'За дверью послышалось какое-то движение и через минуту она распахнулась. На пороге стоял мужчина средних лет с гравимётом в руках.';
                end
                return 'Я приставил к глазку свой медальон.';
            else
                return 'У меня нет медальона.';
            end
        end
    end,
};


box_12_bell = iobj {
    nam = 'звонок',
    _belled = false,
    exam = function (s)
        return 'Кнопка звонка.';
    end,
    useit = function (s)
        if seen (box_12_guardian) then
            return 'Дверь уже открыта. Звонить ещё раз не было смысла.';
        else
            s._belled = true;
            box_12_eye._seen_case = false;
            box_12_eye._seen_medallion = false;
            return 'Я позвонил в дверь, но мне никто не открыл. За дверью — ни шороха.';
        end
    end,
};


box_12_guardian = iobj {
    nam = 'мужчина',
    exam = function (s)
        return 'Мужчина был одет в лётный комбинезон. На рукаве комбинезона я разглядел нашивку с каким-то гербом и надписью «Каменный рыцарь». В руках мужчина сжимал многозарядный гравимёт модели «Плазма-666».';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (box_12_attack);
        end
    end,
    talk = function (s)
        if here() == r_349_12 then
            return goto (box_12_prelude);
        else
            return 'Я обратился к охраннику, но он не стал со мной разговаривать.';
        end
    end,
};


box_12_attack = room {
    nam = 'Бокс 12',
    _outside = true,
    pic = function (s)
        if s._outside then
            return 'images/349_12_guardian.png';
        else
            return 'images/349_12_inside.png';
        end
    end,
    enter = function (s, from)
        if from == r_349_12 then
            s._outside = true;
        else
            s._outside = false;
        end
--        set_music('music/02_invasion.ogg');
        set_music('music/07_battle.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я не успел ничего сделать. Поняв мои намерения, мужчина выстрелил навскидку из гравимёта. Моё сознание растворилось во тьме мироздания...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


box_12_prelude = room {
    nam = 'Бокс 12',
    pic = function (s)
        return 'images/349_12_guardian.png';
    end,
    enter = function (s, from)
        set_music('music/15_searching_case.ogg');
        objs(r_349_12):del(box_12_guardian);
        me():disable_all();
    end,
    dsc = function (s)
        return 'Едва я открыл рот, чтобы поприветствовать хозяина дома, как тот остановил меня:^— Следуй за мной.';
    end,
    obj = { vway('1', '{Далее}', 'box_12_inside') },
};


box_12_inside = room {
    nam = '...',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _just_enter = true,
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, from)
        if from == r_349_12 then
            s._just_enter = true;
        else
            s._just_enter = false;
        end
--        set_music('music/15_searching_case.ogg');
        me():enable_all();
    end,
    dsc = function (s)
        if s._just_enter then
            return 'Мы вошли в дом, пересекли прихожую и поднялись на второй этаж. Человек с гравимётом провёл меня в гостиную, где меня встретил высокий мужчина.^— Здравстуйте, — сказал он. — Присаживайтесь. Меня зовут Эдуард Скол. Чем могу служить? Судя по всему, Вы пришли ко мне не с пустыми руками?';
        else
            return 'Я находился в гостиной. Передо мной стоял Эдуард Скол и его охранник.';
        end
    end,
    obj = { 'box_12_guardian', 'edward' },
    rest = function (s)
        return 'Мне некогда было отдыхать.';
    end,
--    exit = function (s, to)
--    end,
};


edward = iobj {
    nam = 'Эдуард Скол',
    _wait_case = false,
    exam = function (s)
        return 'Высокий мужчина с крепкими сильными руками. Одет в обыкновенный гражданский костюм.';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (box_12_attack);
        end
    end,
    talk = function (s)
        if s._wait_case then
            return 'Я начал что-то объяснять Эдуарду Сколу, но он ждал пока я ему отдам футляр.';
        else
            return goto (edward_dlg_1);
        end
    end,
    accept = function (s, w)
        if w == black_case then
            inv():del(black_case);
            return goto (edward_story_1);
        else
            return 'Эдуард Скол покачал головой:^— Это мне не нужно.', false;
        end
    end,
};


edward_dlg_1 = dlg{
    nam = '...',
    pic = function(s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
--    dsc = '';
    obj = {
            [1] = phr('Я кое-что принёс для Вас.', nil, [[poff(1,2); return goto (edward_dlg_2);]]),
            [2] = phr('Я из Военного Совещания ЦСЧК, служебный позывной «Неустрашимый».', '— Наслышан, наслышан... Как же тебе удалось... Невероятно! Ну так что ты принёс?', [[poff(1,2); edward._wait_case = true;]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


edward_dlg_2 = dlg{
    nam = '...',
    pic = function(s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = '— Я видел в видеоглазок какой-то чёрный футляр. Если это то, что я думаю... Я так понял, что ты, парень, пошёл по стопам своего отца?';
    obj = {
            [1] = phr('Я выполнял последнюю просьбу отца — он велел передать это Вам.', '— Хорошо. Я знал твоего отца, парень. Это был очень смелый человек.', [[poff(1,2); edward._wait_case = true; back();]]),
            [2] = phr('Я бы хотел кое-что получить взамен этого.', nil, [[poff(1,2); return goto (edward_dlg_3);]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


edward_dlg_3 = dlg{
    nam = '...',
    pic = function(s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = '— И что же ты хотел бы?';
    obj = {
            [1] = phr('Денег!', nil, [[poff(1,2); return goto (box_12_money_1);]]),
            [2] = phr('Мне нужно выбраться отсюда хоть к чёртовой бабушке!', '— Подожди, не горячись. Горячая голова твоего отца его и погубила. Что ты принёс?', [[poff(1,2); edward._wait_case = true; return goto (box_12_inside);]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


box_12_money_1 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return '— О-о-о, твой отец не был таким жадным до денег. Впрочем, Биг, дай ему денег и пусть убирается. И забери у него футляр!';
    end,
    obj = { vway('1', '{Далее}', 'box_12_money_2') },
};


box_12_money_2 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_guardian.png';
    end,
    enter = function (s, from)
--        set_music('music/02_invasion.ogg');
        me():disable_all();
        inv():del(black_case);
    end,
    dsc = function (s)
        return 'Человек с гравимётом забрал у меня футляр и проводил вниз.';
    end,
    obj = { vway('1', '{Далее}', 'r_349_12') },
    exit = function (s)
        p 'Когда захлопнулась дверь, я вдруг понял, что они не заплатили мне ни креда!';
        me():enable_all();
    end,
};


edward_story_1 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Скол взял футляр и несколько секунд внимательно рассматривал его. Затем, не говоря ни слова, он прошёл к книжному шкафу, достал из него какой-то приборчик с кнопкой, и, приложив его к футляру, нажал на кнопку. Послышалось лёгкое шипение и треск. В воздухе запахло озоном. Потом я услышал хлопок и увидел, что футляр раскрылся. Из него Эдуард Скол достал что-то похожее на бинокль и обрывок старинной карты. Какое-то время он крутил обрывок в руках, изучая рукописные пометки, сделанные на полях. Затем стал рассматривать бинокль. Я внимательно наблюдал за Сколом. Похоже, что он был слегка разочарован. И, видимо, разочаровал его обрывок карты.^— Здесь нет самого главного — места, где спрятаны сокровища! — с сожалением сказал Скол.';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_2') },
};


edward_story_2 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return 'Опомнившись, он посмотрел на меня.^— Но, коли ты принёс это мне, думаю, кое-что придётся тебе объяснить. Дело в том, что около двухсот лет назад на Ракксле исчезла знаменитая «Чёрная Кобра», пожалуй, самый дорогой корабль Вселенной. На его борту находилось гигантское состояние. Сначала все думали, что «Чёрная Кобра» ушла через Темпор к другим мирам и потерялась там, но, неожиданно, стали появляться косвенные сведения о том, что она всё-таки осталась на Ракксле. Или вернулась на неё.';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_3') },
};


edward_story_3 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return '— Дело в том, что командир «Чёрной Кобры», Артур Кинг возглавлял в то время лигу «Тёмное Колесо». И часть ценностей, которые находились на борту «Чёрной Кобры» принадлежали Лиге. Лишившись целого состояния, Лига распалась на несколько независимых враждующих групп.^Наша группа, «Каменный Рыцарь», как впрочем и другие группы, до сих пор активно ищет сокровища. Нам нужны деньги, много денег. Без них мы не сможем серьёзно противостоять артангам. И дело теперь не в «Чёрной Кобре» — её нашёл твой отец. Правда, эту тайну он скрывал до последних своих дней. Я сам только что узнал об этом...';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_4') },
};


edward_story_4 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return '— Посмотри на карту. Видишь, здесь крестиком отмечено место, где лежит «Чёрная Кобра» — северо-западная часть острова «О»...^Что с тобой? Тебе плохо? Что ты говоришь???';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_5') },
};


edward_story_5 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return 'Я рассказал Сколу о своих похождениях. Внимательно выслушав меня, Скол подумал и сказал:^— В винтолёте не могло быть Артура Кинга. Твой отец нашёл «Чёрную Кобру» в законсервированном состоянии. На карте это указано. То есть «Чёрная Кобра» вернулась на Раккслу без экипажа...^Я так думаю, что в винтолёте ты встретился со своим отцом... Понимаешь, эта история такова, что «Чёрная Кобра» исчезла в 3551 году. А нашествие началось в 3550. То есть битва за Раккслу, в которой «Тёмное Колесо» потерпело поражение, была за год до исчезновения «Чёрной Кобры». После этой битвы Лига и снарядила корабль, чтобы закупить вооружение, технологии и прочее для ведения войны.';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_6') },
};


edward_story_6 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return '— И ещё. Никто не видел тела твоего отца. Никто... Я не знаю откуда у него браслет, но знаю точно — «Чёрная Кобра» вернулась на Раккслу намного позже нашествия артангов. Да и не мог винтолёт с «Чёрной Кобры» участвовать в битве за Раккслу — в то время «Кобры» в этих краях не было. Кстати, твой отец написал на этом обрывке всё достаточно подробно. Вот, читай:^«Чёрная Кобра. Найдена в режиме полной консервации. По данным внутренних часов, время возвращения — первая половина 3690 года. Грузовые отсеки корабля пусты. Сведений об экипаже нет.^Капитан разведки «Тёмного Колеса» — «Сыщик».^Твой отец исполнил свой долг до конца. Только удивительно как он сумел предвидеть твоё появление на Ракксле?';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_7') },
};


edward_story_7 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return '— Ладно, теперь о главном. На юге от Тарана находится та самая Темпоральная Зона. Её ещё называют Темпоральным Полем. Двести лет назад Темпор использовали для перелёта в другие Вселенные, из него же пришли к нам артанги. Теперь Темпор закрыт и охраняется этими тварями. Никто, кроме артангов, не может им воспользоваться. И это понятно — артанги никого не допустят к колыбели своей цивилизации. Но их колыбель ещё надо найти среди миллиардов чужих звёзд. Кто они, откуда — это неизвестно никому. Зато все знают, какими возможностями они располагают. Найти ключ к разгадке тайны артангов — значит найти ключ к наше общей победе. И Лига «Каменный Рыцарь» готова сотрудничать с Военным Совещанием, таргонами и даже с самим дьяволом, лишь бы убрать этих тварей из нашей Вселенной.^Мы много раз пытались проникнуть в Темпоральную Зону, но безрезультатно. Те, которым удалось преодолеть охрану, погибали в Темпоральных бурях, которые там бушуют. То, что передал нам твой отец, поможет нам в Темпоре. Этот бинокль позволяет найти выход. Только вот... Мне кажется, будет справедливее, если я отдам его тебе. Ведь так завещал твой отец.';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_8') },
};


edward_story_8 = room {
    nam = '...',
    pic = function (s)
        return 'images/349_12_inside.png';
    end,
    dsc = function (s)
        return '— Помни: в Темпор нельзя влететь на современных кораблях с аннигиляционным горючим — это чревато гибелью. Винтолёты, не использующие такое горючее, более подходят для этой цели.^И знай, артанги полностью контролируют всё воздушное пространство Раккслы.^Возьми вот этот электронный навигатор — он поможет тебе в полёте. Больше, пожалуй, мы ничем тебе не сможем помочь. Понимаем, что тебе нужно связаться со своими, но... У нас ещё очень много дел здесь, на Ракксле... Мы готовим восстание и не хотелось бы пока лишний раз общаться с артангами...';
    end,
    obj = { vway('1', '{Далее}', 'edward_story_9') },
};


edward_story_9 = room {
    nam = 'Бокс 12',
    pic = function (s)
        return 'images/349_12.png';
    end,
    enter = function (s)
    end,
    dsc = function (s)
        return '...Когда я вышел из дома Эдуарда Скола, я некоторое время осмысливал шкал информации, обрушившийся на меня. Мне многое предстояло сделать.';
    end,
    obj = { vway('1', '{Далее}', 'r_349_12') },
    exit = function (s)
        inv():add(enavigator);
        inv():add(binoculars);
        me():enable_all();
    end,
};


enavigator = iobj {
    nam = 'э-навигатор',
    exam = function (s)
        return 'Карточка электронного навигатора.';
    end,
    take = function (s)
        return 'Я взял Э-навигатор.';
    end,
    drop = function (s)
        return 'Я бросил Э-навигатор.';
    end,
};


binoculars = iobj {
    nam = 'бинокль',
    exam = function (s)
        return 'Анализатор темпорального поля.';
    end,
    take = function (s)
        return 'Я взял бинокль';
    end,
    drop = function (s)
        return 'Я бросил бинокль';
    end,
    useit = function (s)
        if objs(tempor):look(clot) then
            clot:enable();
            return 'Я посмотрел в бинокль. Удивительно... Я видел огромный, просто гигантский сгусток, скорее похожий на торнадо. Странно, но без анализатора я не видел этого гигантского образования.';
        else
            return 'Я посмотрел в бинокль.';
        end
    end,
};

