i101 = room {
    nam = 'Предисловие',
    pic = 'images/intro.gif',
--    enter = function(s)
--        set_music('music/movie.ogg');
--    end,
--    desc = [[Тёмное дождливое утро встретило неподвижное войско людей посреди широкого поля...]],
--    obj = { vway("1", "{Главное меню}^^", 'main2'),
--            vway("3", "{ДАЛЕЕ}", 'i02') },
    way = { vroom ('Назад', 'main'),
            vroom ('ДАЛЕЕ', 'r_111') },
    exit = function (s, to)
        if (to == r_111) then
--            inv():add(medallion);

--            status._health = 1000;
            me().obj:add(status);
            put('compass', me());
            put('n', me());
            put('s', me());
            put('e', me());
            put('w', me());
            actions_init();
            lifeon(status);
            me():enable_all();

            put('medallion', i101);
            Take(medallion);
            status_change (1, 1, 1, 1, 1);
            set_music('music/03_walk_on_unknown_planet.ogg');
        end
    end,
};


-- ----------------------------------------------------------------------

cocoon = iobj {
    nam = 'кокон',
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {амортизационный кокон}.';
--    end,
    exam = function(s)
        return 'Это амортизационный кокон.';
    end,
    take = function (s)
    end,
};


life_boat = iobj {
    nam = 'шлюпка',
    weight = 101,
    _examined = false,
--    desc = function(s)
--        return 'Я вижу {спасательную шлюпку}.';
--    end,
    exam = function(s)
        if not s._examined then
            s._examined = true;
            battery:enable();
            computer:enable();
            if battery._locked then
                return 'В шлюпке я увидел микроаккумулятор, подключённый к бортовому компьютеру.';
            else
                return 'В шлюпке я увидел бортовой компьютер.';
            end
        else
            return 'В шлюпке я увидел бортовой компьютер.';
        end
    end,
    take = function (s)
    end,
    obj = { 'battery', 'computer' },
};


battery = iobj {
    nam = 'аккумулятор',
    _locked = true,
--    desc = function(s)
--        return 'Я вижу {аккумулятор}.';
--    end,
    exam = [[«Артанг Великий. Универсальное зарядное устройство».]],
    used = function (s, w)
        if w == glass then
            if s._locked then
                if have ('glass') then
                    s._locked = false;
                    computer._power = false;
                    return 'Я отсоединил аккумулятор от бортовой панели.';
                else
                    return 'У меня нет стекла.';
                end
            else
                return 'У меня нет стекла.';
            end
        end
    end,
    take = function (s)
        if s._locked then
            return 'Аккумулятор застрял в деформированной панели.', false;
        else
            return 'Я взял аккумулятор.', true;
        end
    end,
}: disable();


computer = iobj {
    nam = 'компьютер',
    _power = true,
    _ready = false,
--    desc = function(s)
--        return 'В спасательной шлюке установлен {компьютер}.';
--    end,
    exam = function (s)
        if s._power then
            return 'Кажется, бортовой компьютер ещё функционирует.';
        else
            return 'Компьютер не работает.';
        end
    end,
    useit = function (s)
        if s._power then
            if s._ready then
                return 'Компьютер уже готов к работе.';
            else
                s._ready = true;
                return 'Я прикоснулся к чувствительным сенсорам. «Готов», — отозвался компьютер на артангском языке.';
            end
        else
            return 'Компьютер без аккумулятора не работает.';
        end
    end,
--    used = function (s, w)
--        if w == 'rod' and Cell._cell_locked then
--            if have ('rod') then
--                Cell._cell_locked = false;
--                Drop(rod);
--                rod:disable();
--                lifeon(guardian);
--                return "Вставленный в замочную скважину прут зацепил скрытый механизм. Внутри что-то щёлкнуло, и дверь открылась.";
--            else
--                return "У меня нет прута.";
--            end
--        end
--    end,
    talk = function (s)
        if s._power then
            if s._ready then
                return goto (computer_dlg);
            else
                return ' Не получается.';
            end
        else
            return ' Не получается.';
        end
    end,
}: disable();


computer_dlg = dlg{
    nam = function (s)
        return call(from(),'nam');
--     'Камень',
    end,
    pic = function(s)
        return call(from(),'pic');
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('Где я нахожусь?', 'Планетная система в справочнике не обнаружена.', [[pon(1);]]),
            [2] = phr('Статус бортовой системы?', 'Обнаружены фатальные неисправности в системе жизнеобеспечения.', [[pon(2);]]),
            [3] = phr('Пеленговать местные источники радиосигналов.', 'На северо-востоке зарегистрирован неопознанный источник радиосигналов.', [[pon(3);]]),
            [4] = phr('Прошу оказать первую помощь.', 'На панели компьютера что-то щёлкнуло и распахнулись створки миниатюрного шкафчика, встроенного в панель. На полке лежала ампула.', [[ampoule:enable();]]),
            [5] = phr('Выйти.', nil, [[pon(5); back();]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};



medallion = iobj {
    nam = 'медальон',
--    weight = 20,
--    desc = function(s)
--            return 'Я вижу {медальон}.';
--    end,
    exam = [[Отец подарил мне этот медальон в день моего первого вылета. На медальоне изображён наш семейный герб.]],
    take = function(s)
        return 'Взял.', true;
    end,
    drop = function(s)
        return 'Бросил.';
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have ('shard') then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    give = function (s, w)
        if w == jameson then
            if jameson._angry then
                return 'Я попытался что-то сказать Джеймсону, но тот не захотел меня слушать. Он с усмешкой посмотрел на меня и сказал:^— Я не верю тебе, друг мой. Иди-ка ты шпионь где-нибудь в другом месте.', false;
            end
            if jameson._bottle then
                objs(r_146_inside):add(jamesons_paper);
                objs(r_146_inside):add(jamesons_bottle);
                jameson._bottle = false;
                return 'Я снял с шеи медальон и дал его Джеймсону. У старого торговца расширились глаза. Он внимательно рассмотрел его и вернул мне:^— По-моему, я теперь знаю кто ты, парень. Я очень хорошо знал твоего отца. К сожалению, он погиб здесь. Его убили артанги. Он входил в состав лиги «Тёмное Колесо». Ты наверняка слышал о ней. Так вот, сейчас те, кто остался в лиге, пытаются противостоять наступлению артангов, но пока безуспешно... Ну да ладно, речь не об этом. Твой отец тут оставил кое-что. Это всё предназначалось для того, кто продолжит его дело. Я думаю, что сын не откажется от дела отца? А? Как ты думаешь?^С этими словами Джемсон залез под прилавок и вытащил оттуда клочок бумаги с какими-то знаками. Потом из под прилавка появилась бутылка ликёра.^— Это всё. — сказал Джеймсон и ухмыльнувшись, добавил: — А этот отличный ликёр он оставил, чтобы его помянули.', false;
            else
                return 'Я уже показывал медальон Джеймсону';
            end
        end
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
};


ampoule = iobj {
    nam = 'ампула',
--    weight = 20,
--    desc = function(s)
--        return 'Я вижу {ампулу}.';
--    end,
    exam = [[«Жидкий асналвил».]],
    take = function(s)
--        if Cell._rod_attached then
--            return 'Прут шатается, но вырвать его не получается.', false;
--        else
            return 'Взял.', true;
--        end
    end,
    drop = function(s)
        return 'Бросил.';
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have ('shard') then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    useit = function (s)
        status_change (23, 18, 15, 0, 0);
        if have (s) then
            Drop (s);
        end
        objs():del(s);
        set_music('music/03_walk_on_unknown_planet.ogg');
        r_111._dark_mood = false;
        return 'Я отломил наконечник и выпил содержимое ампулы. Скоро я почувствовал себя значительно лучше.';
    end,
}:disable();


r_111 = room {
    north = 'r_121',
    east = 'r_112',
    south = nil,
    west = nil,
    nam = 'Место крушения шлюпки',
    pic = function (s)
        return 'images/111.png';
    end,
    _dark_mood = true,
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    _beginning = true,
    enter = function (s, from)
        if s._dark_mood then
            set_music('music/10_island_o.ogg');
        else
            set_music('music/03_walk_on_unknown_planet.ogg');
        end
        if from == i101 then
            s._beginning = true;
        else
            s._beginning = false;
        end
        if from == i101 or from == r_121 or from == r_112 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 s._just_enter then
                s._just_enter = false;
                return 'Посадка была жёсткой, спасательная шлюпка врезалась в отвесный склон скалы и раскололась. Укутанный в амортизационный кокон, я скатился по склону в заросли колючего кустарника.^Несколько минут я лежал неподвижно. Всё тело ныло. Дышать было тяжело. С трудом освободившись от кокона, я поднялся на ноги. Меня мутило и шатало, но, как ни странно, руки и ноги были целы.^Я смотрелся. С запада и с юга половину неба закрывали отвесные серо-зелёные скалы. На востоке простирались болота. Далеко на севере темнела полоска леса.';
            else
                return 'С запада и с юга половину неба закрывали отвесные серо-зелёные скалы. На востоке простирались болота. Далеко на севере темнела полоска леса.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Прошло несколько часов. Я вновь оказался на том самом месте, где упала моя шлюпка.';
            else
                return 'С запада и с юга половину неба закрывали отвесные серо-зелёные скалы. На востоке простирались болота. Далеко на севере темнела полоска леса.';
            end
        end
    end,
    obj = { 'cocoon', 'life_boat', 'ampoule' },
--    way = { vroom ('Север', 'r_121'), vroom ('Восток', 'r_112') },
    rest = function (s)
        if s._beginning then
            if s._rested == 0 then
                s._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Ещё несколько часов я отлёживался на огромном плоском валуне, нагретом местным солнцем.';
            end
            if s._rested == 1 then
                s._rested = 2;
                status_change (-2, -1, -1, 0, 0);
                return 'Я не заметил как стемнело. Стало холодно и я закутался в остатки своего амортизационного кокона. Где-то громко прокричала ночная птица и гулкое эхо её крика прокатилось над скалами.';
            end
            if s._rested == 2 then
                return goto (r_111_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 or s._rested == 2 then
                s._rested = 2;
                if status._health == 1 then
                    health_finish._from = deref(here());
                    return goto (health_finish);
                else
                    status_change (-2, -1, -1, 0, 0);
                    return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
                end
            end
        end
    end,
    exit = function (s, to)
        if to == r_121 or to == r_112 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_111_rest_end = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/111.png';
    end,
    enter = function (s)
        ACTION_TEXT = nil;
        me():disable_all();
    end,
    dsc = function (s)
        return 'Ночь пролетела незаметно. К утру я окончательно замёрз. Совсем рядом, прямо у моего уха, прорычал какой-то хищник. Обернуться я уже не успел...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_112 = room {
    nam = 'Болото',
    north = nil,
    east = 'r_113',
    south = nil,
    west = 'r_111',
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/112.png';
    end,
    enter = function (s, from)
        set_music('music/05_rays_of_rising_sun.ogg');
        s._rested = 0;
        if not status._dead then
            if status._clock == NIGHT then
                return goto (r_112_end);
            end
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Болото, к которому я направился, простиралось далеко на восток. Севернее, в туманной дымке, до самого горизонта распростёрлись мутные воды умирающего озера. На юге всё так же тянулась гряда отвесных скал.';
            else
                return 'Болото простиралось далеко на восток. Севернее, в туманной дымке, до самого горизонта распростёрлись мутные воды умирающего озера. На юге всё так же тянулась гряда отвесных скал.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я шёл по болоту, которое распростёрлось с востока на запад. С юга, почти вплотную к болоту подступали скалы. На севере блестело и переливалось в солнечных лучах умирающее озеро.';
            else
                return 'Болото простиралось далеко на восток. Севернее, в туманной дымке, до самого горизонта распростёрлись мутные воды умирающего озера. На юге всё так же тянулась гряда отвесных скал.';
            end
        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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_111'), vroom ('Восток', 'r_113') },
    exit = function (s, to)
        if to == r_111 or to == r_113 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_112_end = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/112.png';
    end,
    enter = function (s)
        ACTION_TEXT = nil;
        me():disable_all();
    end,
    dsc = function (s)
        return 'Идти ночью приходилось очень осторожно. Внезапно я провалился в глубокую яму, до краёв заполненную вонючей водой. Холодные волны сомкнулись над моей головой...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_113 = room {
    nam = 'Болото',
    north = nil,
    east = 'r_114',
    south = nil,
    west = 'r_112',
    _monster = true,
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/113.png';
    end,
    enter = function (s, from)
        set_music('music/05_rays_of_rising_sun.ogg');
        if from == r_112 or from == r_114 then
            s._rested = 0;
        end
        if not status._dead then
            if s._monster then
                s._monster = false;
                return goto (r_113_attack);
            end
            if status._clock == NIGHT then
                return goto (r_113_end);
            end
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'После битвы с чудищем я долго не мог придти в себя. Слава Богу, что всё закончилось благополучно. Я огляделся по сторонам: местный пейзаж не отличался разнообразием. Но на востоке, кажется, я заметил какие-то постройки.';
            else
                return 'Местный пейзаж не отличался разнообразием. Но на востоке, кажется, я заметил какие-то постройки.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Болото поражало своими размерами. Но я здесь уже хорошо ориентировался.';
            else
                return 'Местный пейзаж не отличался разнообразием. Но на востоке, кажется, я заметил какие-то постройки.';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_112'), vroom ('Восток', 'r_114') },
    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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
    exit = function (s, to)
        if to == r_112 or to == r_114 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_113_attack = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/113_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Неожиданно из мутных вод появилось какое-то странное существо. Я однажды уже видел на одной планете нечто похожее. Клыкастый водяной с рыбьим хвостом сразу атаковал меня.';
    end,
--    way = { vroom ('Далее', 'r_113') },
    obj = { vway('1', '{Далее}', 'r_113') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_113_end = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/113.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Идти ночью приходилось очень осторожно. Внезапно я провалился в глубокую яму, до краёв заполненную вонючей водой. Холодные волны сомкнулись над моей головой...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};



r_114 = room {
    nam = 'Тропинка',
    north = 'r_124',
    east = 'r_115',
    south = nil,
    west = 'r_113',
    _monster = true;
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/114.png';
    end,
    enter = function (s, from)
        set_music('music/05_rays_of_rising_sun.ogg');
        if from == r_124 or from == r_113 or from == r_115 then
            s._rested = 0;
        end
        if not status._dead then
            if status._clock == NIGHT then
                if s._monster then
                    s._monster = false;
                    return goto (r_114_attack);
                end
            end
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Болото осталось позади. Я вышел на заросшее травой поле. Теперь я отчётливо видел на востоке непонятные металлические конструкции. На юге по-прежнему тянулась гряда отвесных скал. На севере я с удивлением обнаружил невзрачную тропинку, пролегавшую сквозь болотные топи.';
            else
                return 'На востоке были видны непонятные металлические конструкции. На юге по-прежнему тянулась гряда отвесных скал. На севере я обнаружил невзрачную тропинку, пролегавшую сквозь болотные топи.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Мне показалось, что я здесь уже проходил однажды. С юга меня окружали скалы, на западе распростёрлись болота, а на севере куда-то вдаль уходила еле заметная тропинка.';
            else
                return 'На востоке были видны непонятные металлические конструкции. На юге по-прежнему тянулась гряда отвесных скал. На севере я обнаружил невзрачную тропинку, пролегавшую сквозь болотные топи.';
            end
        end
    end,
    rest = function (s)
        if status._clock == NIGHT then
            if s._monster then
                s._monster = false;
                return goto (r_114_attack);
            end
        else
            if s._rested == 0 then
                s._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Отдохнуть здесь можно было без проблем. Тёплый ветер с востока приносил запахи моря. Я был уверен, что море совсем рядом.';
            end
            if s._rested == 1 then
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Север', 'r_124'), vroom ('Запад', 'r_113'), vroom ('Восток', 'r_115') },
    exit = function (s, to)
        if to == r_124 or to == r_113 or to == r_115 then
            s._monster = true;
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_114_attack = room {
    nam = 'Тропинка',
    pic = function (s)
        return 'images/114_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Ночь выдалась на редкость тёмной. Я слишком поздно заметил, что надо мной кружит целая стая ночных птиц. Едва я поднял свой взор к небу, как крылатые хищники набросились на меня...';
    end,
--    way = { vroom ('Далее', 'r_114') },
    obj = { vway('1', '{Далее}', 'r_114') },
    exit = function (s, to)
        me():enable_all();
        return 'Кое-как мне удалось отбиться от крылатых хищников. Пара огромных птиц после битвы осталась лежать на траве. Быстро рассветало. Я чувствовал себя разбитым и уставшим. Начинался новый день.';
    end,
};


r_115 = room {
    nam = 'Заброшенный завод',
    north = nil,
    east = 'r_116',
    south = nil,
    west = 'r_114',
    _visit = 0,
    _just_enter = true,
    _rested = 0;
    pic = function (s)
        return 'images/115.png';
    end,
    enter = function (s, from)
        set_music('music/10_island_o.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 3 then
            s._visit = 3;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял на территории какого-то древнего заброшенного завода. Здесь всё заросло травой. Часть построек была разрушена. Повсюду валялись ржавые трубы, прогнившие деревянные ящики и осколки битого стекла. С севера завод окружали скалы, на юг тянулись болота.';
            else
                return 'С севера завод окружали скалы, на юг тянулись болота.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Проходя мимо завода, я ещё раз внимательно осмотрел немногочисленные остатки металлических сооружений. Очень похоже, что на этом заводе в своё время производили оружие. Об этом говорили разбросанные повсюду ржавые детали древних лазерных установок и ракетниц.';
            else
                return 'С севера завод окружали скалы, на юг тянулись болота.';
            end
        end
        if s._visit == 3 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я прошёл мимо старого военного завода. Здесь было тихо и неуютно. Лёгкий ветер гонял по земле обрывки бумаги и пожелтевшего пластика.';
            else
                return 'С севера завод окружали скалы, на юг тянулись болота.';
            end
        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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_114'), vroom ('Восток', 'r_116') },
    exit = function (s, to)
        if to == r_114 or to == r_116 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_116 = room {
    nam = 'Тупик',
    north = nil,
    east = nil,
    south = nil,
    west = 'r_115',
    _visit = 0,
    _just_enter = true,
    _rested = 0;
    pic = function (s)
        if plate._moved then
            return 'images/116_moved.png';
        end
        if plate._burned then
            return 'images/116_burned.png';
        end
        return 'images/116.png';
    end,
    enter = function (s, from)
        set_music('music/10_island_o.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я вплотную приблизился к скалам, окружающим заброшенный завод. Ни на восток, ни на юг я пройти уже не мог. На севере отвесной стеной также стояли неприступные скалы. У подножия одной из скал лежал лист железа, видимо занесённый сюда сильным ветром с территории завода.';
            else
                return 'Серые скалы нависали надо мной со всех сторон. На западе я видел ангары заброшенного завода.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Ничего не изменилось здесь со времени моего последнего посещения. Серые скалы нависали надо мной со всех сторон. На западе я видел ангары заброшенного завода.';
            else
                return 'Серые скалы нависали надо мной со всех сторон. На западе я видел ангары заброшенного завода.';
            end
        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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_115') },
    obj = { 'plate' },
    exit = function (s, to)
        if to == r_115 or to == r_128 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


plate = iobj {
    nam = 'лист железа',
    _burned = false,
    _moved = false,
    weight = 100,
--    desc = function(s)
--        return 'Я вижу {лист железа}.';
--    end,
    exam = function (s)
        if s._burned then
            return 'Лист металла с большой дырой.';
        else
            return 'Большой лист металла.';
        end
    end,
    take = function(s)
        if ( have(blaster) or have(neurowhip) ) then
            return 'Слишком тяжело!', false;
        else
            if s._moved or s._burned then
                return 'Лист железа мне больше не мешает.', false;
            else
                s._moved = true;
                put ('plate_enter', r116);
                return 'Немного приподняв и отодвинув в сторону тяжёлую железяку, я с удивлением обнаружил под ней вход в подземелье. Загадочный туннель уходил под скалу...', false;
            end
        end
    end,
    used = function (s, w)
        if w == blaster then
            if have (blaster) then
                if s._moved or s._burned then
                    return 'Лист железа мне больше не мешает.';
                else
                    s._burned = true;
                    blaster._charged = false;
                    put ('plate_enter', r116);
                    return 'Мне удалось вырезать в железяке большую дыру. За ней я с удивлением обнаружил вход в подземелье. Загадочный туннель уходил под скалу на север...';
                end
            else
                return 'У меня нет осколка.';
            end
        end
    end,
    useit = function (s)
        return 'Каким образом?';
    end,
};


plate_enter = iobj {
    nam = 'вход в туннель',
--    weight = 101,
--    desc = function(s)
--        return '{Вход в туннель} уходил под скалу.';
--    end,
    exam = function (s)
        return 'Загадочный туннель уходил под скалу.';
    end,
    useit = function (s)
        clock_next ();
        if status._health == 1 then
            health_finish._from = deref(here());
            status_change (-2, -1, -1, 0, 0);
            return goto (health_finish);
        else
            return goto (r_128);
        end
    end,
};


r_117 = room {
    nam = 'Причал',
    north = 'r_127',
    east = nil,
    south = nil,
    west = nil,
    _just_enter = true,
    _talked = false,
    pic = function (s)
        return 'images/117.png';
    end,
    enter = function (s, from)
        set_music('music/10_island_o.ogg');
        if not status._biomask then
            return goto (r_117_end);
        end
        s._just_enter = true;
    end,
    dsc = function (s)
        return 'Я спокойно прошёл мимо патрульного автомобиля артангов. Один из артангов даже поприветствовал меня, приняв за своего. У причала порта стоял глайдер. У входа глайдера капитан проверял пропуска у пассажиров.';
    end,
    rest = function (s)
        return goto (r_117_rest);
    end,
--    way = { vroom ('Север', 'r_127') },
    obj = { 'r_117_minimobile', 'r_117_glider', 'r_117_captain' },
    exit = function (s, to)
        if to == r_127 or to == r_198 then
            clock_next ();
        end
    end,
};


r_117_minimobile = iobj {
    nam = 'автомобиль',
--    weight = 101,
--    dsc = function(s)
--        return 'Я спокойно прошёл мимо патрульного {автомобиля} артангов. Один из артангов даже поприветствовал меня, приняв за своего.';
--    end,
    exam = function (s)
        return 'Военный минимобиль с дюжиной артангов.';
    end,
--    useit = function (s)
--        return goto (r_128);
--    end,
};


r_117_glider = iobj {
    nam = 'глайдер',
--    weight = 101,
--    desc = function(s)
--        return 'У причала порта стоял {глайдер}.';
--    end,
    exam = function (s)
        return 'Современный скоростной морской глайдер.';
    end,
--    useit = function (s)
--        return goto (r_128);
--    end,
};


r_117_captain = iobj {
    nam = 'капитан',
--    weight = 101,
--    desc = function(s)
--        return 'У входа глайдера {капитан} проверял пропуска у пассажиров.';
--    end,
    exam = function (s)
        return 'Капитану было не больше сорока. Но несмотря на свой возраст, он выглядел опытным, закалённым в передрягах морским волком. Странно, что такой человек работал на артангов.';
    end,
    talk = function (s)
        if r_117._talked then
            return 'Я уже поговорил с капитаном..';
        else
            return goto (r_117_captain_dlg);
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (r_117_neurowhip);
        end
    end,
--    useit = function (s)
--        return goto (r_128);
--    end,
};


r_117_captain_dlg = dlg{
    nam = function (s)
        return 'Причал';
    end,
    pic = function (s)
        return 'images/117.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
--            Я удивлённо оглянулся, но возле меня не было ни единого существа.]],
    obj = {
            [1] = phr('Куда следует этот глайдер? (Произнести на языке артангов).', 'Я заметил как капитан поморщился и нехотя ответил: «До Пульсара».', [[poff(1,2);]]),
            [2] = phr('Куда идёт глайдер?', nil, [[poff(1,2); return goto (r_117_biomask_end);]]),
          },
    exit = function (s, t)
        r_117._talked = true;
        me():enable_all();
    end,
};


r_117_rest = room {
    nam = 'Причал',
    pic = function (s)
        return 'images/minimobile.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_117_end = room {
    nam = 'Причал',
    pic = function (s)
        return 'images/minimobile.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_117_biomask_end = room {
    nam = 'Причал',
    pic = function (s)
        return 'images/minimobile.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_117_biomask_off_end = room {
    nam = 'Причал',
    pic = function (s)
        return 'images/minimobile.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_117_neurowhip = room {
    nam = 'Причал',
    pic = function (s)
        return 'images/minimobile.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_121 = room {
    nam = 'Болото',
    north = 'r_131',
    east = nil,
    south = 'r_111',
    west = nil,
    _just_enter = true,
    _visit = 0,
    pic = function (s)
        return 'images/121.png';
    end,
    enter = function (s, from)
        set_music('music/04_eternity.ogg');
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 3 then
            s._visit = 3;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я пробирался сквозь кустарник на север. Жёсткие колючие ветки хлестали по лицу, но я не обращал на это внимания. Я торопился добраться до леса, который был уже недалеко.';
            else
                return 'На севере был виден лес. К югу отсюда потерпела крушение моя шлюпка.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'На этот раз заросли кустарника я преодолевал довольно легко. По-моему, эти растения питались мясом местных мелких животных. На ветвях одного куста я заметил обглоданные кости мелкой птицы, запутавшейся в ветвях.';
            else
                return 'На севере был виден лес. К югу отсюда потерпела крушение моя шлюпка.';
            end
        end
        if s._visit == 3 then
            if s._just_enter then
                s._just_enter = false;
                return 'Эта местность мне была уже знакома. Заросли кустарника я проходил быстро и без осложнений.';
            else
                return 'На севере был виден лес. К югу отсюда потерпела крушение моя шлюпка.';
            end
        end
    end,
--    way = { vroom ('Север', 'r_131'), vroom ('Юг', 'r_111') },
    rest = function (s)
        return goto (r_121_rest);
    end,
    exit = function (s, to)
        if to == r_131 or to == r_111 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_121_rest = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/121.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/02_invasion.ogg');
    end,
    dsc = function (s)
        return 'Я выбрал небольшую полянку, чтобы немного перевести дух. Воздух здесь был наполнен дурманящими запахами цветов, растущих неподалёку. Меня стало клонить ко сну.';
    end,
    obj = { vway('1', '{Далее}', 'r_121_rest2') },
};


r_121_rest2 = room {
    nam = 'Болото',
    pic = function (s)
        return 'images/121_rest.png';
    end,
    enter = function (s)
        set_music('music/02_invasion.ogg');
    end,
    dsc = function (s)
        return 'Когда я пришёл в себя, всё мое тело обволакивали длинные колючие ветви куста, возле которого я прилёг. Я не мог пошевелить даже пальцем. Куст-кровопиец, присосавшись ветвями к моему телу, пил мою кровь...';
    end,
--    way = { vroom ('Север', 'r_131'), vroom ('Юг', 'r_111') },
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_122 = room {
    nam = 'Скала',
    north = nil,
    east = 'r_123',
    south = nil,
    west = nil,
--    way = { vroom ('Восток', 'r_123') },
    _just_enter = true,
    _visit = 0,
    _rested = 0,
    pic = function (s)
        return 'images/122.png';
    end,
    enter = function (s, from)
        set_music('music/12_dreams_about_planet_laiv.ogg');
        if from == r_123 then
            s._rested = 0;
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял возле небольшой одинокой скалы, окружённой болотными топями. Здесь было тихо и, кажется, безопасно.';
            else
                return 'Я стоял возле знакомой уже мне одинокой скалы. Вокруг простирались болота. Единственная дорога, по которой я сюда пришёл, вела на восток.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял возле знакомой уже мне одинокой скалы. Вокруг простирались болота. Единственная дорога, по которой я сюда пришёл, вела на восток.';
            else
                return 'Я стоял возле знакомой уже мне одинокой скалы. Вокруг простирались болота. Единственная дорога, по которой я сюда пришёл, вела на восток.';
            end
        end
    end,
--    way = { vroom ('Восток', 'r_123') },
    obj = { 'rock' },
    rest = function (s)
        rock_enter:disable();
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_123 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


rock = iobj {
    nam = 'скала',
--    _examined = false,
--    weight = 101,
--    desc = function(s)
--        return 'Посреди болотных топей возвышалась одинокая {скала}.';
--    end,
    exam = function (s)
        if status._clock == DAY then
            rock_enter:enable();
            return 'У самого подножия скалы я заметил вход в пещеру.';
        else
            rock_enter:disable();
            return 'Осмотрев скалу, я не заметил ничего необычного.';
        end
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have (shard) then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    obj = { 'rock_enter' },
};


rock_enter = iobj {
    nam = 'вход в пещеру',
--    _examined = false,
--    weight = 101,
--    desc = function(s)
--        return 'У самого подножия скалы был {вход в пещеру}.';
--    end,
    exam = function (s)
        return 'Вход вёл в пещеру.';
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have (shard) then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    useit = function (s)
        return goto (r_122_inside);
    end,
}:disable();


r_122_inside = room {
    nam = 'Пещера',
    _just_enter = true,
    _passwd = false,
--    _visit = 0,
--    _rested = 0,
    pic = function (s)
        if s._passwd then
            return 'images/122d.png';
        else
            return 'images/122b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/12_dreams_about_planet_laiv.ogg');
        if from == r_122 then
            put('cave_exit', r_122_inside);
        end
        if from == r_122_terminal_3 then
            s._just_enter = false;
        else
            s._just_enter = true;
        end
    end,
    dsc = function (s)
        if s._just_enter then
            return 'Я вошёл в пещеру. Здесь было довольно сухо. Видимо раньше здесь кто-то жил. Но теперь от следов бывшего жилища не осталось и следа. Однако в глубине пещеры я увидел встроенный в стену терминал.';
        else
            return 'В пещере было довольно сухо. Видимо раньше здесь кто-то жил. Но теперь от следов бывшего жилища не осталось и следа. Однако в глубине пещеры я увидел встроенный в стену терминал.';
        end
    end,
--    way = { vroom ('Восток', 'r_123') },
--    obj = { 'rock' },
    rest = function (s)
        if status._clock == DAY then
            put('cave_exit', r_122_inside);
        else
            objs(r_122_inside):del(cave_exit);
        end
        if r_122._rested == 0 then
            r_122._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_122._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
    obj = { 'terminal' },
    exit = function (s, to)
        if to == r_122 then
            objs(r_122_inside):del(cave_exit);
        end
    end,
};


terminal = iobj {
    nam = 'терминал',
--    desc = function(s)
--        return 'В глубине пещеры был встроенный в стену {терминал}.';
--    end,
    exam = function (s)
        return 'Терминал с борта устаревшей модели «Кобра-МК3». На панели под терминалом была узкая щель.';
    end,
    useit = function (s)
        return '???';
--        return goto (r_122_terminal);
    end,
    used = function (s, w)
        if w == jamesons_plastic then
            return goto (r_122_terminal);
        end
    end,
};


cave_exit = iobj {
    nam = 'выход из пещеры',
--    _examined = false,
--    weight = 101,
--    desc = function(s)
--        return 'Из пещеры был единственный {выход}.';
--    end,
    exam = function (s)
        return 'Похоже, что вход в пещеру открывается какими-то странными механизмами.';
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have (shard) then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    useit = function (s)
        return goto (r_122);
    end,
};


r_122_terminal = room {
    nam = 'Пещера',
    pic = function (s)
        return 'images/122c.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я вставил кусок пластика в щель под терминалом. Экран засветился мягким зеленоватым светом.';
    end,
    obj = { vway('1', '{Далее}', 'r_122_terminal_1') },
};


r_122_terminal_1 = room {
    nam = 'Пещера',
    _key_pressed = 0,
    _passwd = 0,
    pic = function (s)
        return 'images/122c.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Через мгновение вспыхнула надпись «Введите пароль:».';
    end,
--    way = { vroom ('Восток', 'r_123') },
--    obj = { 'rock' },
--    rest = function (s)
--        return '???';
--    end,
--    obj = { 'terminal', 'cave_exit' },
--    exit = function (s, to)
--        if to == r_123 then
--            clock_next ();
--        end
--    end,
    act = function (s, w)
        s._key_pressed = s._key_pressed + 1;
        if s._key_pressed == 5 then
            return goto (r_122_terminal_end);
        end
        if w == "1" then
            if s._passwd == 1 then
                s._passwd = s._passwd + 1;
            end
            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
            return 'Я нажал клавишу К.';
        end
        if w == "13" then
            return 'Я нажал клавишу Л.';
        end
        if w == "14" then
            if s._passwd == 2 then
                s._passwd = s._passwd + 1;
            end
            return 'Я нажал клавишу М.';
        end
        if w == "15" then
            return 'Я нажал клавишу Н.';
        end
        if w == "16" then
            return 'Я нажал клавишу О.';
        end
        if w == "17" then
            return 'Я нажал клавишу П.';
        end
        if w == "18" then
            return 'Я нажал клавишу Р.';
        end
        if w == "19" then
            if s._passwd == 0 then
                s._passwd = s._passwd + 1;
            end
            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
                return goto (r_122_terminal_2);
            else
                return goto (r_122_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_122_terminal_2 = room {
    nam = 'Пещера',
    pic = function (s)
        return 'images/122c.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я ввёл пароль. Экран на секунду погас, а когда засветился вновь, я прочитал:^«Незнакомец, здесь для тебя есть кое-что. Лига «Тёмного Колеса» надеется, что ты поможешь довести великое дело до конца. Футляр не открывай. Доставь его на материк по адресу: Мегаполис Таран, квартал 324, бокс 12, Эдуард Скол. Удачи тебе!».';
    end,
    obj = { vway('1', '{Далее}', 'r_122_terminal_3') },
--    exit = function (s)
--        return goto (the_end);
--    end,
};


r_122_terminal_3 = room {
    nam = 'Пещера',
    pic = function (s)
        return 'images/122d.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        r_122_inside._passwd = true;
        put('niche', r_122_inside);
        return 'Через минуту терминал отъехал в сторону, освободив нишу в стене.';
    end,
    obj = { vway('1', '{Далее}', 'r_122_inside') },
    exit = function (s)
        me():enable_all();
    end,
};


r_122_terminal_end = room {
    nam = 'Пещера',
    pic = function (s)
        return 'images/122b.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я ввёл пароль. Экран погас. И когда мне показалось, что ничего особенного не произошло, вдруг послышался нарастающий гул. В следующую секунду пол ушёл из под ног, и я провалился в пропасть...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
--    exit = function (s)
--        return goto (the_end);
--    end,
};


niche = iobj {
    nam = 'ниша',
    weight = 0,
--    desc = function(s)
--        return 'Терминал отъехал в сторону, освободив {нишу} в стене.';
--    end,
    exam = function (s)
        put('black_case', r_122_inside);
        put('biomask', r_122_inside);
        return 'В нише лежал небольшой чёрный футляр и биомаска.';
    end,
    useit = function (s)
        return 'Каким образом?';
    end,
};


biomask = iobj {
    nam = function (s)
        if status._biomask then
            return 'биомаска (*)';
        else
            return 'биомаска';
        end
    end,
    weight = 0,
--    desc = function(s)
--        return 'Я вижу {биомаску}.';
--    end,
    exam = function (s)

        if status._biomask then
            return 'Великолепная биомаска, сделанная на высочайшем уровне по самым современным технологиям.^Теперь, когда она одета, ни один артанг не мог бы сказать, что я — человек.';
        else
            return 'Великолепная биомаска, сделанная на высочайшем уровне по самым современным технологиям.';
        end


    end,
    take = function (s)
        return 'Я взял биомаску.';
    end,
    drop = function (s)
        if status._biomask then
            return 'Я должен сначала снять биомаску чтобы бросить её.', false;
        else
            return 'Я бросил биомаску.';
        end
    end,
    useit = function (s)
        if here() == r_322 then
            return goto (r_322_biomask_end);
        end
        if status._biomask then
            status._biomask = false;
            if here() == r_117 then
                return goto (r_117_biomask_off_end);
            end
            if here() == r_147 then
                return goto (r_147_biomask_off_end);
            end
            if here() == r_232 then
                return goto (r_232_biomask_off_end);
            end
            if here() == r_232_bar then
                return goto (r_232_bar_mask_off_1);
            end
            if here() == r_241 then
                return goto (r_241_biomask_off_end);
            end
            return 'Я снял биомаску.';
        else
            if here() == r_241 or here() == r_232 then
                if here() == r_232 and kloreds._just_killed then
                    kloreds._just_killed = false;
                end
                status._biomask = true;
                return 'Улучив подходящий момент, я быстро одел биомаску. Никто, кажется, не обратил на меня внимания.';
            end
            status._biomask = true;
            return 'Я одел биомаску. Теперь ни один артанг не мог бы сказать, что я — человек.';
        end
    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
};


black_case = iobj {
    nam = 'футляр',
    weight = 0,
--    desc = function(s)
--        return 'Я вижу {футляр}.';
--    end,
    exam = function (s)
        return 'Небольшой чёрный футляр.';
    end,
    take = function (s)
        return 'Я взял футляр.';
    end,
    drop = function (s)
        return 'Я бросил футляр.';
    end,
    useit = function (s)
        return 'Каким образом?';
    end,
    give = function (s)
    end,
};



r_123 = room {
    nam = 'Дорога',
    north = nil,
    east = 'r_124',
    south = nil,
    west = 'r_122',
--    way = { vroom ('Запад', 'r_122'), vroom ('Восток', 'r_124') },
--    _just_enter = true,
--    _visit = 0,
    _rested = 0,
    pic = function (s)
        return 'images/123.png';
    end,
    enter = function (s, from)
        set_music('music/12_dreams_about_planet_laiv.ogg');
        s._rested = 0;
--        s._just_enter = true;
--        s._visit = s._visit + 1;
--        if s._visit > 3 then
--            s._visit = 3;
--        end
    end,
    dsc = function (s)
        return 'Разбитая дорога петляла меж болотных топей. На западе, прямо из болота поднималась одинокая скала.';
    end,
--    way = { vroom ('Запад', 'r_122'), vroom ('Восток', 'r_124') },
    rest = function (s)
        if not status._biomask then
            return goto (r_124_rest);
        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 (-2, -1, -1, 0, 0);
                    return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
                end
            end
        end
    end,
    exit = function (s, to)
        if to == r_122 or to == r_124 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_124 = room {
    nam = 'Дорога',
    north = nil,
    east = 'r_125',
    south = 'r_114',
    west = 'r_123',
--    way = { vroom ('Запад', 'r_123'), vroom ('Юг', 'r_114'), vroom ('Восток', 'r_125') },
    _just_enter = true,
    _visit = 0,
    _monster = true,
    _rested = 0,
    pic = function (s)
        return 'images/124.png';
    end,
    enter = function (s, from)
        set_music('music/12_dreams_about_planet_laiv.ogg');
        if not status._dead then
            if s._monster then
                s._monster = false;
                ACTION_TEXT = nil;
                return goto (r_124_attack);
            end
        end
        if from == r_124_attack_2 then
            s._visit = 0;
        end
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Враг был повержен. Мёртвое тело лежало возле моих ног. Я огляделся по сторонам. Севернее извилистой дороги тянулись непроходимые топи, на юг уходила тропинка, по которой я сюда пришёл.';
            else
                return 'Севернее извилистой дороги тянулись непроходимые топи, на юг уходила тропинка, по которой я сюда пришёл.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Проходя мимо валявшегося у дороги трупа, изрядно обглоданного хищниками, я вновь вспомнил свою схватку с первым человеком, которого я встретил на этой планете.';
            else
                return 'Севернее извилистой дороги тянулись непроходимые топи, на юг уходила тропинка.';
            end
        end
--        return 'AAA';
    end,
    rest = function (s)
        if (not status._biomask) and status._clock == NIGHT then
            return goto (r_124_rest);
        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 (-2, -1, -1, 0, 0);
                    return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
                end
            end
        end
    end,
--    way = { vroom ('Запад', 'r_123'), vroom ('Юг', 'r_114'), vroom ('Восток', 'r_125') },
    obj = { 'stranger_corpse' },
    exit = function (s, to)
        if to == r_123 or to == r_114 or to == r_125 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_124_attack = room {
    nam = 'Дорога',
    pic = function (s)
        return 'images/124_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Не помню, сколько мне пришлось идти по заросшей тропинке сквозь болотные топи. Я вышел на дорогу, тянущуюся с запада на восток. Вдруг из зарослей кустарника вылез человек в военной форме и направился ко мне.'
    end,
--    way = { vroom ('Далее', 'r_114') },
    obj = { vway('1', '{Далее}', 'r_124_attack_2') },
--    exit = function (s, to)
--    end,
};


r_124_attack_2 = room {
    nam = 'Дорога',
    pic = function (s)
        return 'images/124_attack_2.png';
    end,
    dsc = function (s)
        if have(neurowhip) and neurowhip._charged then
            return 'Я выхватил нейрохлыст и бросился на незнакомца.';
        else
            return 'Едва я открыл рот, чтобы поприветствовать первого человека, встретившегося мне на этой планете, как тот, не говоря ни слова, выхватил из кобуры бластер и выстрелил. Смертоносный луч ударил в мою грудь, и я рухнул на пыльную дорогу.';
        end
    end,
--    way = { vroom ('Далее', 'r_114') },
    obj = { vway('1', '{Далее}', 'r_124') },
    exit = function (s, to)
        me():enable_all();
--        r_124._visit = -1;
        if have(neurowhip) and neurowhip._charged then
--            r_124._visit = 0;
            ACTION_TEXT = nil;
            return goto (r_124);
        else
            return goto (the_end);
        end
    end,
};


stranger_corpse = iobj {
    nam = 'труп',
    _examined = false,
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {труп незнакомца}.';
--    end,
    exam = function (s)
        if s._examined then
            return 'Ещё раз осмотрев труп незнакомца, я не нашёл ничего нового.';
        else
            blaster:enable();
            credit_card:enable();
            s._examined = true;
            return 'Убитый сжимал в руке бластер. Осмотрев незнакомца, я заметил у него в кармане кредитную карточку.';
        end
    end,
    take = function(s)
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have (shard) then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    obj = { 'blaster', 'credit_card' },
};


blaster = iobj {
    nam = 'бластер',
    _charged = true,
    weight = 0,
--    desc = function(s)
--        return 'Я вижу {бластер}.';
--    end,
    exam = function (s)
        if s._charged then
            return 'Бластер многозарядный, с микроизлучателем системы Джонса.';
        else
            return 'Бластер многозарядный, с микроизлучателем системы Джонса. Бластер разряжен.';
        end
    end,
    take = function(s)
        return 'Я взял бластер.';
    end,
    drop = function(s)
        return 'Я бросил бластер.';
    end,
--    used = function (s, w)
--        if w == 'shard' then
--            if have (shard) then
--                Cell._rod_attached = false;
--                Drop(shard);
--                shard:disable();
--                return 'Осколком я расшатал камень, удерживающий прут, и за секунду до того, как глина рассыпалась в моих руках, прут упал на пол.';
--            else
--                return 'У меня нет осколка.';
--            end
--        end
--    end,
    give = function (s, w)
        if w == praggs_leader then
            inv():del(blaster);
            return 'Я протянул бластер главарю прэгов. Взяв оружие, прэг осмотрел его и отшвырнул далеко в сторону, прошипев сквозь зубы: «Кому нужна эта ржавая железка»...';
        end
    end,
}:disable();


credit_card = iobj {
    nam = 'кредитка',
    weight = 0,
--    desc = function(s)
--        return 'Я вижу {кредитную карту}.';
--    end,
    exam = function (s)
        return '«Всепланетный коммерческий банк «Золотая Галактика»».';
    end,
    take = function(s)
        return 'Я взял кредитку.';
    end,
    drop = function(s)
        return 'Я бросил кредитку.';
    end,
    give = function (s, w)
        if w == praggs_leader then
            return 'Прэг долго изучал кредитку, а после сказал: «Это ты можешь оставить себе. Я не такой дурак, как ты думаешь».', false;
        end
    end,
}:disable();



r_124_rest = room {
    nam = 'Дорога',
    pic = function (s)
        return 'images/minimobile.png';
    end,
    enter = function (s)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Силы были на исходе, и я, расположившись в кустарнике у дороги, решил немного отдохнуть.^Военный минимобиль появился так внезапно, что я ничего не успел предпринять. Связанного по рукам и ногам, меня затолкали в минимобиль.^«Тьипер ми ты расстрелят», — ухмыльнулся один из артангов.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_125 = room {
    nam = 'Дорога',
    north = 'r_125_end',
    east = 'r_126',
    south = nil,
    west = 'r_124',
    _from_west = true,
    _rested = 0,
    pic = function (s)
        if s._from_west then
            return 'images/125a.png';
        else
            return 'images/125b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/08_loneliness.ogg');
        s._rested = 0;
        if from == r_124 then
            s._from_west = true;
        else
            s._from_west = false;
        end
    end,
    dsc = function (s)
        return 'Дорога проходила возле самого берега озера, которое находилось на севере. На юге я по-прежнему видел бесконечные болотные топи.';
    end,
    rest = function (s)
        if (not status._biomask) then
            return goto (r_124_rest);
        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 (-2, -1, -1, 0, 0);
                    return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
                end
            end
        end
    end,
--    way = { vroom ('Запад', 'r_124'), vroom ('Север', 'r_125_end'), vroom ('Восток', 'r_126') },
    exit = function (s, to)
        if to == r_124 or to == r_126 or to == r_125_end then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_125_end = room {
    nam = 'Дорога',
    pic = function (s)
        if r_125._from_west then
            return 'images/125a.png';
        else
            return 'images/125b.png';
        end
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Мне показалось, что я смогу переплыть это озеро. Тем более, что полоска противоположного берега была хорошо видна.';
    end,
    obj = { vway('1', '{Далее}', 'r_135_end') },
--    exit = function (s, to)
--        me():enable_all();
--    end,
};


r_126 = room {
    nam = 'Магистраль',
    north = 'r_136',
    east = 'r_127',
    south = nil,
    west = 'r_125',
    _just_enter = true,
    _visit = 0,
    _rested = 0,
    pic = function (s)
        return 'images/126.png';
    end,
    enter = function (s, from)
        set_music('music/08_loneliness.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Дорога казалась бесконечной. Спустя какое-то время я заметил на востоке небольшой посёлок, к которому вела узкая просёлочная дорога. На юге, вплотную к дороге подступали непроходимые болота. На север уходила широкая, заросшая травой магистраль.';
            else
                return 'На востоке я заметил небольшой посёлок, к которому вела узкая просёлочная дорога. На юге, вплотную к дороге подступали непроходимые болота. На север уходила широкая, заросшая травой магистраль.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял на знакомой уже мне развилке. Широкая магистраль уходила на север. На востоке, у берега моря находился посёлок. На запад, в недра болот вела небольшая заброшенная дорога.';
            else
                return 'Широкая магистраль уходила на север. На востоке, у берега моря находился посёлок. На запад, в недра болот вела небольшая заброшенная дорога.';
            end
        end
    end,
    rest = function (s)
        if (not status._biomask) then
            return goto (r_126_rest);
        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 (-2, -1, -1, 0, 0);
                    return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
                end
            end
        end
    end,
--    way = { vroom ('Запад', 'r_125'), vroom ('Север', 'r_136'), vroom ('Восток', 'r_127') },
    exit = function (s, to)
        if to == r_125 or to == r_136 or to == r_127 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_126_rest = room {
    nam = 'Магистраль',
    pic = function (s)
        return 'images/minimobile.png';
    end,
    enter = function (s)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Силы были на исходе, и я, расположившись в кустарнике у дороги, решил немного отдохнуть.^Военный минимобиль появился так внезапно, что я ничего не успел предпринять. Связанного по рукам и ногам, меня затолкали в минимобиль.^«Тьипер ми ты расстрелят», — ухмыльнулся один из артангов.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_127 = room {
    nam = 'Посёлок',
    north = 'r_137',
    east = nil,
    south = 'r_117',
    west = 'r_126',
    _just_enter = true,
--    _visit = 0,
--    _lisa = true,
    _rested = 0,
    pic = function (s)
        if seen (lisa) then
            return 'images/127a.png';
        else
            return 'images/127b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/09_lisa_taylor_theme.ogg');
        if status._clock == NIGHT then
            objs(r_127):del(lisa);
        else
            if not lisa._angry then
                objs(r_127):add(lisa);
            end
        end
        if from == r_127c or from == r_127f then
            objs(r_127):del(lisa);
        end
        if r_122_inside._passwd then
--            objs(r_127):del(lisa);
-- ???
        end
        s._just_enter = true;
        s._rested = 0;
--        s._visit = s._visit + 1;
--        if s._visit > 2 then
--            s._visit = 2;
--        end
    end,
    dsc = function (s)
--        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                if status._clock == NIGHT then
                    return 'Посёлок словно вымер. Я несколько минут бродил между домов, но так никого и не встретил.^На востоке, сразу за посёлком, я видел берег моря, который тянулся с юга на север. На юге, у самых гор, я разглядел небольшой залив и причал.';
                else
                    if lisa._angry then
                        return 'Я в одиночестве стоял возле старого дома у дороги.^На востоке, сразу за посёлком, я видел берег моря, который тянулся с юга на север. На юге, у самых гор, я разглядел небольшой залив и причал.';
                    end
                    if seen (lisa) then
                        return 'Я подошёл к дому у дороги. У крыльца сидела старуха.^На востоке, сразу за посёлком, я видел берег моря, который тянулся с юга на север. На юге, у самых гор, я разглядел небольшой залив и причал.';
                    else
                        return 'Я подошёл к дому у дороги.^На востоке, сразу за посёлком, я видел берег моря, который тянулся с юга на север. На юге, у самых гор, я разглядел небольшой залив и причал.';
                    end
                end
            else
                return 'На востоке, сразу за посёлком, я видел берег моря, который тянулся с юга на север. На юге, у самых гор, я разглядел небольшой залив и причал.';
            end
--        end
--        if s._visit == 2 then
--            if s._just_enter then
--                s._just_enter = false;
--                return '???';
--            else
--                return '???';
--            end
--        end
    end,
    rest = function (s)
        if not lisa._angry then
            objs(r_127):add(lisa);
        end
        if status._clock == NIGHT then
            objs(r_127):del(lisa);
        end
        if r_122_inside._passwd then
--            objs(r_127):del(lisa);
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_126'), vroom ('Север', 'r_137'), vroom ('Юг', 'r_117') },
    obj = { 'lisa_house' },
    exit = function (s, to)
        if to == r_126 or to == r_137 or to == r_117 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


lisa_house = iobj {
    nam = 'дом',
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {старый дом}.';
--    end,
    exam = function(s)
        return 'Это дом.';
    end,
};


lisa = iobj {
    nam = 'старуха',
--    _talk = 0,
    _rest = false,
    _angry = false,
--    desc = function(s)
--        return 'Рядом с домом сидит {старуха}.';
--    end,
    exam = function(s)
        return 'Это старуха.';
    end,
    talk = function (s)
        if not s._rest then
            s._rest = true;
            return goto (lisa_dlg_1);
        else
            if not status._biomask then
                return 'Я вежливо поздоровался с Лизой Тейлор. Старушка поприветствовала меня лёгким кивком головы и ничего не сказала.';
            else
                return 'Я попытался заговорить с Лизой, но она отвернулась.';
            end
        end
    end,
--    givem = function (s, v)
--        if not s
--        return '— Я уже стара, мне ничего не нужно.';
--    end,
};


lisa_dlg_1 = dlg{
    nam = 'Посёлок',
    pic = 'images/127a.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[Я подошёл к крыльцу. Старуха внимательно посмотрела на меня и ничего не сказала.]],
    obj = {
            [1] = phr('Здравствуйте! Вы не могли бы мне помочь?', nil, [[poff(1,2,3); return goto(lisa_dlg_2);]]),
            [2] = phr('Простите, как называется этот посёлок?', nil, [[poff(1,2,3); return goto(lisa_dlg_2);]]),
            [3] = phr('Скажите, где ближайший центр связи?', nil, [[poff(1,2,3); return goto(lisa_dlg_2);]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


lisa_dlg_2 = dlg{
    nam = 'Посёлок',
    pic = 'images/127a.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[Старуха ещё раз окинула меня изучающим взглядом и тихо спросила:^— А Вы откуда?]],
    obj = {
            [1] = phr('С неба!', 'Старуха подняла морщинистое лицо к небу и что-то прошептала. Затем, не говоря ни слова, она развернулась и ушла в дом. Щёлкнул замок и воцарилась тишина.', [[poff(1,2,3); lisa._angry = true; objs(r_127):del(lisa); return goto (r_127); ]]),
            [2] = phr('С планеты Лейв. Понимаете, мой корабль потерпел крушение недалеко от вашей планеты.', 'Старушка при слове «Лейв» вздрогнула и с любопытством посмотрела на меня.', [[poff(1,2,3); return goto(lisa_dlg_3);]]),
            [3] = phr('Какая разница... Мне нужно выбраться отсюда.', 'Старуха подняла морщинистое лицо к небу и что-то прошептала. Затем, не говоря ни слова, она развернулась и ушла в дом. Щёлкнул замок и воцарилась тишина.', [[poff(1,2,3); lisa._angry = true; objs(r_127):del(lisa); return goto (r_127); ]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


lisa_dlg_3 = dlg{
    nam = 'Посёлок',
    pic = 'images/127a.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[— У нас тут живёт один. — Сказала она. — Тоже с этой планеты. Он, наверное, будет очень рад Вас увидеть.^Знаете что, зайдите ко мне, отдохните, а потом я Вам покажу куда идти.]],
    obj = {
            [1] = phr('Спасибо, я очень устал и рад буду отдохнуть у Вас.', nil, [[poff(1,2); return goto (r_127c); ]]),
            [2] = phr('Нет, спасибо, я пойду.', 'Старуха подняла морщинистое лицо к небу и что-то прошептала. Затем, не говоря ни слова, она развернулась и ушла в дом. Щёлкнул замок и воцарилась тишина.', [[poff(1,2); lisa._angry = true; objs(r_127):del(lisa); return goto (r_127); ]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_127c = room {
    nam = 'Дом',
    pic = function (s)
        return 'images/127c.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = [[Мы вошли в дом. Старушка накормила меня вкусным обедом. Пока я ел, она рассказала трагическую историю своей жизни.^
             Её звали Лиза Тейлор. Она родилась на планете Дисо. Мать и отец погибли в схватке с армадой кораблей таргонов когда она была ещё маленькой девочкой. После гибели родителей её взял к себе на корабль дед — Крис Тейлор. Он был знаменитым и очень богатым торговцем.^
             Лиза Тейлор двадцать два года летала вместе с ним, пока не открыла собственное дело. Потом они виделись очень редко. Однажды, в одну из таких встреч, незадолго до своей смерти, дед открыл ей семейную тайну: его отец — её прадед — был членом лиги «Тёмного Колеса».^
             Он пропал без вести в то время, когда первая волна кораблей артангов вторглась в пределы Центрального Союза. По некоторым данным, во время последнего вылета прадеда, на его корабле находились тонны золота, платины и драгоценных камней.^
             Целое состояние, на которое можно было купить половину галактики. Оставалось загадкой, кому и зачем предназначалось это богатство. Крис долго пытался найти хоть какие-то следы своего отца, но безрезультатно.^
             В память о великом предке, Крис Тейлор подарил Лизе семейную реликвию — лётный комбинезон своего отца. С тех пор Лиза и занялась поисками. Ей не давало покоя загадочное исчезновение прадеда. В своих догадках она связывала его возможную гибель с вторжением артангов.^
             Она предполагала, что следы прадеда надо искать на легендарной планете Ракксла. После долгих лет поисков она смогла выйти на людей, которые согласились переправить её на Раккслу. Но их корабль был арестован патрулём артангов.^
             Потом была одиночная камера, а когда исполнилось сто десять лет, артанги выслали её на этот остров... Рассказывая свою историю, старушка с опаской поглядывала в окно. С её слов артанги и здесь не дают покоя.^
             Поэтому она очень боится, что у неё могут найти постороннего человека.^
             На следующий день я покинул дом Лизы Тейлор. Перед этим старушка предложила мне выйти на магистраль и идти на север мимо озера, в лавку Джеймсона. За моей спиной быстро захлопнулась дверь.]],
    obj = { vway('1', '{Далее}', 'r_127') },
    exit = function (s, to)
        objs(r_127):del(lisa);
        lisa._rest = true;
        put('lisa_note', r_127c);
        Take(lisa_note);
        me():enable_all();
    end,
};


lisa_note = iobj {
    nam = 'записка',
--    desc = function(s)
--        return 'Я вижу {записку}.';
--    end,
    exam = function(s)
        return '«Дорогой Джеймсон. Тот, кто передаст тебе эту записку — наш человек, помоги ему.^^Лиза Т.».';
    end,
    take = function (s)
        return 'Я взял записку.';
    end,
    drop = function (s)
        return 'Я бросил записку.';
    end,
    give = function (s)
        Drop (lisa_note);
        objs():del(lisa_note);
        jameson._angry = false;
        return 'Я отдал Джеймсону записку Лизы Тейлор. Он долго изучал её, а потом сказал:^— Понятно. Видимо ты дал понюхать пороха этим жабам. Одобряю. Чем я могу тебе помочь?';
    end,
};


glider_ticket = iobj {
    nam = 'пропуск',
--    desc = function(s)
--        return 'Я вижу {пропуск}.';
--    end,
    exam = function(s)
        return '«Пропуск на пассажирский глайдер до мегаполиса Пульсар».';
    end,
    take = function (s)
        return 'Я взял пропуск.';
    end,
    drop = function (s)
        return 'Я бросил пропуск.';
    end,
    give = function (s, w)
        if w == r_117_captain then
            if r_117._talked then
                return goto (r_198);
            else
                return 'Сначала необходимо поговорить с капитаном.';
            end
        end
    end,
};


r_127d = room {
    nam = 'Посёлок',
    pic = function (s)
        return 'images/127a.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = [[Я отдал браслет старушке. Она повертела его в руках и тихо прошептала:^— Это браслет моего прадеда. Неужели ты нашёл его?... Спасибо тебе, странник. Подожди, я сейчас.]],
    obj = { vway('1', '{Далее}', 'r_127e') },
};


r_127e = room {
    nam = 'Посёлок',
    pic = function (s)
        return 'images/127b.png';
    end,
    dsc = [[Она ушла в дом.]],
    obj = { vway('1', '{Далее}', 'r_127f') },
};


r_127f = room {
    nam = 'Посёлок',
    pic = function (s)
        return 'images/127a.png';
    end,
    dsc = [[Через минуту старушка вернулась.^— Возьми это. Пригодится. — Сказала она и молча ушла в дом.]],
    obj = { vway('1', '{Далее}', 'r_127') },
    exit = function (s, to)
        Drop (bracelet);
        objs():del(bracelet);
        objs(r_127f):add(glider_ticket);
        Take (glider_ticket);
        objs(r_127):del(lisa);
        me():enable_all();
    end,
};




r_128 = room {
    nam = 'Туннель',
    north = 'r_138',
    east = nil,
    south = 'r_116',
    west = nil,
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/128.png';
    end,
    enter = function (s, from)
        set_music('music/06_sticky_fear.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я спустился вниз. Похоже, что этим туннелем уже давно никто не пользовался. Гигантскими сосульками с потолка свешивались сталактиты. Навстречу им поднимались огромные сталагмиты. Туннель тянулся с юга на север.';
            else
                return 'Туннель тянулся с юга на север.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Мёртвую тишину туннеля нарушал лишь отзвук моих шагов.';
            else
                return 'Туннель тянулся с юга на север.';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Север', 'r_138'), vroom ('Юг', 'r_116') },
    exit = function (s, to)
        if to == r_138 or to == r_116 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};



-- ------------------------------------------------------------------------------------

r_131 = room {
    nam = 'Лес',
    north = 'r_141',
    east = 'r_132',
    south = 'r_121',
    west = nil,
    _monster = true,
    _just_enter = true,
    _visit = 0,
    _rested = 0,
    pic = function (s)
        return 'images/131.png';
    end,
    enter = function (s, from)
        set_music('music/04_eternity.ogg');
        if from == r_141 or from == r_132 or from == r_121 then
            s._rested = 0;
        end
        if not status._dead then
            if s._monster then
                s._monster = false;
                return goto (r_131_attack);
            end
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Мой противник издал предсмертный крик и повалился на бок. Только теперь я мог внимательно рассмотреть его. Это была пантера невероятных размеров. Чёрная шерсть покрывала её сильное мускулистое тело. Я никак не мог поверить, что выиграл нелёгкую схватку.';
            else
                return 'Мой противник издал предсмертный крик и повалился на бок. Только теперь я мог внимательно рассмотреть его. Это была пантера невероятных размеров. Чёрная шерсть покрывала её сильное мускулистое тело. Я никак не мог поверить, что выиграл нелёгкую схватку.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Здесь всё было по-прежнему. Лесные обитатели вели свою, спрятанную от посторонних глаз жизнь. Мне приходилось обходить гигантские муравейники и поваленные ветром сухие деревья.';
            else
                return 'Здесь всё было по-прежнему. Лесные обитатели вели свою, спрятанную от посторонних глаз жизнь. Мне приходилось обходить гигантские муравейники и поваленные ветром сухие деревья.';
            end
        end
    end,
    obj = { 'panther' },
    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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Север', 'r_141'), vroom ('Восток', 'r_132'), vroom ('Юг', 'r_121') },
    exit = function (s, to)
        if s._just_enter then
            s._just_enter = false;
        end
        if to == r_141 or to == r_132 or to == r_121 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


panther = iobj {
    nam = 'труп пантеры',
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {труп пантеры}.';
--    end,
    exam = function(s)
        return 'Это была пантера невероятных размеров. Чёрная шерсть покрывала её сильное мускулистое тело. Я никак не мог поверить, что выиграл нелёгкую схватку.';
    end,
    take = function (s)
    end,
};


r_131_attack = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/131_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Лес встретил меня шелестом листвы деревьев, клёкотом птиц и криками животных. Не успел я пройти и нескольких метров, как откуда-то сверху на меня прыгнула огромная чёрная кошка и впилась когтями в шею.';
    end,
--    way = { vroom ('Далее', 'r_131') },
    obj = { vway('1', '{Далее}', 'r_131') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_132 = room {
    nam = 'Лес',
    north = nil,
    east = 'r_133',
    south = nil,
    west = 'r_131',
    _just_enter = true,
    _visit = 0,
    _rested = 0;
    pic = function (s)
        if status._clock == NIGHT then
            return 'images/132_night.png';
        else
            return 'images/132.png';
        end
    end,
    enter = function (s, from)
        set_music('music/04_eternity.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'В этой части лес слегка поредел. Я мог идти здесь уже без особого труда. На севере отвесной стеной стояли серые скалы. На юге вплотную к лесу подбирались непроходимые болота...';
            else
                return 'На севере отвесной стеной стояли серые скалы. На юге вплотную к лесу подбирались непроходимые болота.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'В лесу было тихо. Воздух был наполнен необыкновенными сладкими запахами каких-то растений.';
            else
                return 'На севере отвесной стеной стояли серые скалы. На юге вплотную к лесу подбирались непроходимые болота.';
            end
        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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_131'), vroom ('Восток', 'r_133') },
    exit = function (s, to)
        if to == r_131 or to == r_133 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_133 = room {
    nam = 'Лес',
    north = nil,
    east = 'r_134',
    south = nil,
    west = 'r_132',
    _monster = true,
    _just_enter = true,
    _visit = 0,
    _after_fight = true,
    _rested = 0,
    pic = function (s)
        return 'images/133.png';
    end,
    enter = function (s, from)
        set_music('music/04_eternity.ogg');
        if from == r_132 or from == r_134 then
            s._rested = 0;
        end
        if not status._dead then
            if s._monster then
                s._monster = false;
                if status._clock == NIGHT then
                    return goto (r_133_attack_end);
                else
                    return goto (r_133_attack);
                end
            end
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if status._clock == NIGHT then
            return 'Я практически ничего не видел. Пробираться ночью по лесу было очень трудно.';
        end
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я не ожидал встретить здесь артанга. В нелёгкой схватке мне удалось задушить противника. Откуда и куда шёл он? Судя по его форме, этот артанг так же, как и я, уцелел после нашей звёздной битвы.';
            else
                return 'На севере всё так же тянулась гряда скал, на юге лес утопал в непроходимых болотах.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я вышел на небольшую поляну. На севере всё так же тянулась гряда скал, на юге лес утопал в непроходимых болотах.';
            else
                return 'На севере всё так же тянулась гряда скал, на юге лес утопал в непроходимых болотах.';
            end
        end
    end,
    obj = { 'artang_corpse', 'glass' },
    rest = function (s)
        if s._after_fight then
            s._after_fight = false;
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'После битвы с артангом я долго не мог придти в себя.';
        end
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if s._rested == 1 then
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_132'), vroom ('Восток', 'r_134') },
    exit = function (s, to)
        s._after_fight = false;
        if to == r_132 or to == r_134 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


artang_corpse = iobj {
    nam = 'труп артанга',
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {труп артанга}.';
--    end,
    exam = function(s)
        glass:enable();
        return 'Осмотрев труп артанга, я обнаружил у него в руке осколок стекла.';
    end,
    take = function (s)
    end,
};


glass = iobj {
    nam = 'осколок стекла',
    weight = 0,
--    desc = function(s)
--        return 'Я вижу {осколок стекла}.';
--    end,
    exam = function(s)
        return 'Осколок тугоплавкого стекла.';
    end,
    take = function (s)
        return 'Я взял осколок стекла.';
    end,
    drop = function (s)
        return 'Я бросил осколок стекла.';
    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
}:disable();



r_133_attack = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/133_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Быстро темнело. Пробираться вперёд приходилось почти на ощупь. Едва я вышел на небольшую поляну, как сзади на меня бросилось какое-то существо.';
    end,
--    way = { vroom ('Далее', 'r_133') },
    obj = { vway('1', '{Далее}', 'r_133') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_133_attack_end = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/133_attack.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Я практически ничего не видел. Пробираться ночью по лесу было очень трудно. Я и оглянуться не успел, как кто-то выскочил из кустов и бросился на меня. Страшная боль сковала всё тело. Сопротивляться я уже не мог...';
    end,
--    way = { vroom ('Далее', 'the_end') },
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_134 = room {
    nam = 'Берег лесного озера',
    north = nil,
    east = 'r_135',
    south = nil,
    west = 'r_133',
    _just_enter = true,
    _visit = 0,
    _rested = 0;
    pic = function (s)
        return 'images/134.png';
    end,
    enter = function (s, from)
        set_music('music/04_eternity.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Едва я вышел на берег огромного лесного озера, как сразу увидел брошенный артангом амортизационный кокон. Теперь было ясно, что в лесу я снова встретился со своим недавним противником.';
            else
                return 'На берегу огромного лесного озера находился брошенный артангом амортизационный кокон.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я снова вышел на берег лесного озера.';
            else
                return 'Я находился на берегу лесного озера.';
            end
        end
    end,
    obj = { 'artang_cocoon' },
    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
            status_change (-1, -1, -1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
    end,
--    way = { vroom ('Запад', 'r_133'), vroom ('Восток', 'r_135') },
    exit = function (s, to)
        if to == r_133 or to == r_135 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};



artang_cocoon = iobj {
    nam = 'кокон',
    _examined = false,
    weight = 101,
--    desc = function(s)
--        return 'Я вижу {амортизационный кокон} убитого мной артанга.';
--    end,
    obj = { 'neurowhip', 'pills' },
    exam = function(s)
        if not s._examined then
            neurowhip:enable();
            pills:enable();
            s._examined = true;
            return 'В небольшом пластиковом кармане я заметил лёгкий нейрохлыст и упаковку таблеточной пищи.';
        else
            return 'Я ещё раз обыскал кокон, но не нашёл ничего интересного.';
        end
    end,
    take = function (s)
    end,
};


neurowhip = iobj {
    nam = 'нейрохлыст',
    weight = 0,
    _charged = false,
--    desc = function(s)
--        return 'Я вижу {нейрохлыст}.';
--    end,
    exam = function(s)
        if s._charged then
            return 'Индикатор на рукоятке показывал, что нейрохлыст готов к использованию.';
        else
            return 'Осмотрев нейрохлыст, я заметил, что он не заряжен.';
        end
    end,
    take = function (s)
        return 'Я взял нейрохлыст.';
    end,
    drop = function (s)
        return 'Я бросил нейрохлыст.';
    end,
    used = function (s, w)
        if w == battery then
            if not battery._locked then
                s._charged = true;
                if have (battery) then
                    Drop (battery);
                end
                battery:disable();
                return 'Я зарядил нейрохлыст аккумулятором.';
            else
                return 'Аккумулятор застрял в деформированной панели.';
            end
        end
    end,
}:disable();


pills = iobj {
    nam = 'таблетки',
    weight = 0,
    _number = 10,
--    desc = function(s)
--        return 'Я вижу {таблетки}.';
--    end,
    exam = function(s)
        if s._number > 4 then
            return 'Упаковка с надписью «Синтезированная пища типа А-37, 10 шт.». В упаковке было '..s._number..' таблеток.';
        end
        if s._number > 1 then
            return 'Упаковка с надписью «Синтезированная пища типа А-37, 10 шт.». В упаковке было '..s._number..' таблетки.';
        end
        if s._number == 1 then
            return 'Упаковка с надписью «Синтезированная пища типа А-37, 10 шт.». В упаковке осталась одна последняя таблетка.';
        end
        return 'Упаковка с надписью «Синтезированная пища типа А-37, 10 шт.». Упаковка была пуста.';
    end,
    take = function (s)
        return 'Я взял таблетки.';
    end,
    drop = function (s)
        return 'Я бросил таблетки.';
    end,
    useit = function (s)
        if s._number > 0 then
            status_change (6, 3, 2, 0, 0);
            s._number = s._number - 1;
            if s._number == 0 then
                return 'Я съел последнюю таблетку.';
            else
                return 'Я съел таблетку.';
            end
        else
            return 'В упаковке не осталось ни одной таблетки.';
        end
    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
}:disable();


r_135 = room {
    nam = 'Берег лесного озера',
    pic = function (s)
        return 'images/134.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Мне показалось, что я смогу переплыть это озеро. Тем более, что полоска противоположного берега была хорошо видна.';
    end,
    obj = { vway('1', '{Далее}', 'r_135_end') },
--    exit = function (s, to)
--        me():enable_all();
--    end,
};


r_135_end = room {
    nam = 'Лесное озеро',
    pic = function (s)
        return 'images/135.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return 'Но едва я вошёл в воду, как что-то холодное и скользкое коснулось моих ног, а потом я почувствовал нестерпимую боль. Холодная вода окрасилась красным...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
--    exit = function (s, to)
--        me():enable_all();
--    end,
};


r_136 = room {
    nam = 'Магистраль',
    north = 'r_146',
    east = 'r_137',
    south = 'r_126',
    west = 'r_136_end',
    _from_s = true,
    _rested = 0,
    pic = function (s)
        if s._from_s then
            return 'images/136a.png';
        else
            return 'images/136b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/08_loneliness.ogg');
        s._rested = 0;
        if from == r_126 or from == r_137 then
            s._from_s = true;
        else
            s._from_s = false;
        end
    end,
    dsc = function (s)
        return 'Магистраль проходила с севера на юг вдоль берега огромного озера, которое находилось на западе. На востоке я разглядел неприметную тропинку, ведущую к морю.';
    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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_136_end'), vroom ('Север', 'r_146'), vroom ('Восток', 'r_137'), vroom ('Юг', 'r_126') },
    exit = function (s, to)
        if to == r_146 or to == r_137 or to == r_126 or to == r_136_end then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_136_end = room {
    nam = 'Магистраль',
    pic = function (s)
        if r_136._from_s then
            return 'images/136a.png';
        else
            return 'images/136b.png';
        end
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Мне показалось, что я смогу переплыть это озеро. Тем более, что полоска противоположного берега была хорошо видна.';
    end,
    obj = { vway('1', '{Далее}', 'r_135_end') },
};


r_137 = room {
    nam = 'Берег моря',
    north = 'r_147',
    east = nil,
    south = 'r_127',
    west = 'r_136',
    _from_s = true,
    _rested = 0,
    pic = function (s)
        if s._from_s then
            return 'images/137a.png';
        else
            return 'images/137b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/08_loneliness.ogg');
        s._rested = 0;
        if from == r_136 or from == r_127 then
            s._from_s = true;
        else
            s._from_s = false;
        end
    end,
    dsc = function (s)
        return 'Спустившись по тропинке к морю, я вышел на берег и огляделся. На юге я видел посёлок, на севере — какие-то современные сооружения.';
    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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_136'), vroom ('Север', 'r_147'), vroom ('Юг', 'r_127') },
    exit = function (s, to)
        if to == r_136 or to == r_147 or to == r_127 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};



r_138 = room {
    nam = 'Туннель',
    north = 'r_148',
    east = nil,
    south = 'r_128',
    west = nil,
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/138.png';
    end,
    enter = function (s, from)
        set_music('music/06_sticky_fear.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Прошло несколько часов. Впрочем, здесь трудно было ориентироваться во времени. Вполне вероятно, что я мог ошибаться и в определении сторон света.';
            else
                return 'Туннель тянулся с юга на север.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я шёл по туннелю уже несколько часов. Воздух здесь был влажный и тяжёлый. Я торопился как можно быстрее выйти на поверхность.';
            else
                return 'Туннель тянулся с юга на север.';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Север', 'r_148'), vroom ('Юг', 'r_128') },
    exit = function (s, to)
        if to == r_148 or to == r_128 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};

-- ---------------------------------------------------------------------------------------

r_141 = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/141.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/10_island_o.ogg');
    end,
    dsc = function (s)
        return 'Я всё шёл и шёл вглубь недружелюбного леса. Вдруг несколько каких-то мохнатых карликов выскочили из-за деревьев и бросились на меня с копьями наперевес. Лучники, засевшие на деревьях, осыпали меня градом стрел. Глаза затянуло кровавой пеленой...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_142 = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/141.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/10_island_o.ogg');
    end,
    dsc = function (s)
        return 'Я всё шёл и шёл вглубь недружелюбного леса. Вдруг несколько каких-то мохнатых карликов выскочили из-за деревьев и бросились на меня с копьями наперевес. Лучники, засевшие на деревьях, осыпали меня градом стрел. Глаза затянуло кровавой пеленой...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


r_143 = room {
    nam = 'Лес',
    north = nil,
    east = 'r_144',
    south = nil,
    west = 'r_142',
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
--        if helicopter_enter._closed then
            return 'images/143.png';
--        else
--            return 'images/144_burned.png';
--        end
    end,
    enter = function (s, from)
        s._rested = 0;
        set_music('music/11_helicopter.ogg');
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Спустя несколько часов я вышел к лесу. Далеко на севере по-прежнему бушевало море. С юга лес окружали скалы. С запада до меня доносились крики лесных обитателей.';
            else
                return 'Далеко на севере по-прежнему бушевало море. С юга лес окружали скалы. С запада до меня доносились крики лесных обитателей.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я вошёл в лес. Позади, на востоке, остался пустынный берег моря. По-моему, дальше идти было небезопасно. Лёгкий ветер доносил до меня крики лесных обитателей.';
            else
                return 'Далеко на севере по-прежнему бушевало море. С юга лес окружали скалы. С запада до меня доносились крики лесных обитателей.';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_142'), vroom ('Восток', 'r_144') },
    obj = { 'bushes' },
    exit = function (s, to)
        if to == r_142 or to == r_144 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


bushes = iobj {
    nam = 'кусты',
--    desc = function(s)
--        return 'Многочисленные {кусты} росли на поляне.';
--    end,
    exam = function(s)
        berries:enable();
        return 'На многих кустах я заметил целые гроздья крупных красных ягод.';
    end,
    obj = { 'berries' },
--    useit = function (s)
--        return goto (r_138);
--    end,
};


berries = iobj {
    nam = 'ягоды',
--    desc = function(s)
--        return 'На многих кустах я заметил целые гроздья крупных красных {ягод}.';
--    end,
    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_144 = room {
    nam = 'Винтолёт',
    north = nil,
    east = 'r_145',
    south = nil,
    west = 'r_143',
    _visit = 0,
    _just_enter = true,
    _from_heli = false,
    _rested = 0;
    pic = function (s)
        if helicopter_enter._closed then
            return 'images/144.png';
        else
            return 'images/144_burned.png';
        end
    end,
    enter = function (s, from)
        set_music('music/11_helicopter.ogg');
        if from == r_144_helicopter then
            s._from_heli = true;
        else
            s._from_heli = false;
            s._rested = 0;
--            r_144_inside._rested = 0;
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._from_heli then
            return 'Я выбрался из винтолёта.^Берег моря тянулся с востока на запад. С юга, почти вплотную к морю, подступали неприступные скалы.';
        end
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Прошло несколько часов. Местный пейзаж не отличался разнообразием. Похоже, что битва была глобальной. Я обратил внимание на разбитый двухместный винтолёт. Тем, кто находился в нём во время битвы, я мог только посочувствовать. Винт этой посудины был начисто срезан лазером.';
            else
                return 'Берег моря тянулся с востока на запад. С юга, почти вплотную к морю, подступали неприступные скалы.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я шёл вдоль берега, усеянного костями. С юга, почти вплотную к морю, подступали неприступные скалы. Над унылым пейзажем величественным надгробием возвышался овал разбившегося винтолёта.';
            else
                return 'Берег моря тянулся с востока на запад. С юга, почти вплотную к морю, подступали неприступные скалы.';
            end
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
--            r_144_inside._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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_143'), vroom ('Восток', 'r_145') },
    obj = { 'helicopter' },
    exit = function (s, to)
        if to == r_143 or to == r_145 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


helicopter = iobj {
    nam = 'винтолёт',
--    desc = function(s)
--        return 'Разбитый двухместный {винтолёт} был наполовину занесён песком.';
--    end,
    exam = function(s)
        helicopter_enter:enable();
        return 'Судя по форме, этому винтолёту было лет двести. Такие летательные аппараты уже давно не выпускались ни на одной цивилизованной планете Центрального Союза.';
    end,
    obj = { 'helicopter_enter' },
--    useit = function (s)
--        return goto (r_138);
--    end,
};


helicopter_enter = iobj {
    nam = 'люк винтолёта',
    _closed = true,
--    desc = function(s)
--        return 'В корпуске винтолёта был {люк}.';
--    end,
    exam = function(s)
        if s._closed then
            return 'Люк был сделан на совесть. Он плотно закрывал вход в винтолёт. На люке я заметил надпись: «Чёрная Кобра».';
        else
            return 'В люке была вырезана большая дыра.';
        end
    end,
    useit = function (s)
        if not s._closed then
            if here () == r_144 then
                return goto (r_144_helicopter);
            else
                return goto (r_144);
            end
        else
            return 'Я попытался открыть люк, но безрезультатно.';
        end
    end,
    used = function (s, w)
        if w == blaster then
            if have(blaster) then
                if blaster._charged then
                    s._closed = false;
                    blaster._charged = false;
                    return 'Мне удалось вырезать бластером в люке большую дыру. Увы, на этом заряд бластера закончился.';
                else
                    return 'Бластер не заряжен.';
                end
            else
                return 'У меня нет бластера.';
            end
        end
    end,
}:disable();


r_144_helicopter = room {
    nam = 'Винтолёт',
--    _visit = 0,
--    _just_enter = true,
--    _rested = 0,
    pic = function (s)
        return 'images/144_helicopter.png';
    end,
--    enter = function (s, from)
--        if from == r_144 then
--            s._rested = r_144._rested;
--        end
--        s._just_enter = true;
--        s._visit = s._visit + 1;
--        if s._visit > 2 then
--            s._visit = 1;
--        end
--    end,
    dsc = function (s)
--        if s._visit == 1 then
--            if s._just_enter then
--                s._just_enter = false;
                return 'Внутри было темно и пахло плесенью. За искорёженным пультом управления я увидел человеческий скелет. Из разбитого шлема на меня смотрели пустые глазницы погибшего пилота.';
--            else
--                return 'Берег моря тянулся с востока на запад. С юга, почти вплотную к морю, подступали неприступные скалы.';
--            end
--        end
--        if s._visit == 2 then
--            if s._just_enter then
--                s._just_enter = false;
--                return 'Я шёл вдоль берега, усеянного костями. С юга, почти вплотную к морю, подступали неприступные скалы. Над унылым пейзажем величественным надгробием возвышался овал разбившегося винтолёта.';
--            else
--                return 'Берег моря тянулся с востока на запад. С юга, почти вплотную к морю, подступали неприступные скалы.';
--            end
--        end
    end,
--    rest = function (s)
--        return '???';
--    end,
    rest = function (s)
        if r_144._rested == 0 then
            r_144._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_144._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_143'), vroom ('Восток', 'r_145') },
    obj = { 'skeleton', 'helicopter_enter' },
--    exit = function (s, to)
--        if to == r_144 then
--            r_144._rested = s._rested;
--        end
--    end,
};


skeleton = iobj {
    nam = 'скелет',
    _examined = false,
--    desc = function(s)
--        return 'За искорёженным пультом управления я увидел человеческий {скелет}.';
--    end,
    exam = function(s)
        if s._examined then
            return 'Похоже, что скелет находился тут уже много лет.';
        else
            bracelet:enable();
            s._examined = true;
            return 'На левом запястье скелета я заметил потускневший серебряный браслет.';
        end
    end,
    obj = { 'bracelet' },
--    useit = function (s)
--        return goto (r_138);
--    end,
};


bracelet = iobj {
    nam = 'браслет',
    weight = 0,
    _on_skeleton = true,
--    desc = function(s)
--        if s._on_skeleton then
--            return 'На левом запястье скелета я заметил потускневший серебряный {браслет}.';
--        else
--            return 'Я вижу серебряный {браслет}.';
--        end
--    end,
    exam = function(s)
        return 'На браслете я прочитал: «Командир «Чёрной Кобры» Артур Кинг».';
    end,
    take = function (s)
        if s._on_skeleton then
            s._on_skeleton = false;
            return 'Я снял браслет со скелета.';
        else
            return 'Я взял браслет.';
        end
    end,
    drop = function (s)
        return 'Я бросил браслет.';
    end,
    give = function (s, to)
        if to == lisa then
            if not status._biomask then
                return goto (r_127d);
            else
                return 'Я пытался заговорить с Лизой, но она отвернулась.';
            end
        end
        if to == jameson then
            return '— Оставь себе. Пригодится. Я взяток не беру.', false;
        end
--        return print(deref(to));
    end,
}:disable();


r_145 = room {
    nam = 'Берег моря',
    north = nil,
    east = 'r_148',
    south = nil,
    west = 'r_144',
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/145.png';
    end,
    enter = function (s, from)
        set_music('music/14_raxxla_breathing.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я вышел на берег моря. Здесь всё было усеяно человеческими костями. Повсюду я замечал следы какого-то сражения. По всему берегу валялись оплавленные куски металла, запчасти от лазерных установок и пустые коробки из под энергетических зарядов.^Берег моря тянулся с востока на запад. С юга к берегу подступали отвесные скалы.';
            else
                return 'Берег моря тянулся с востока на запад. С юга к берегу подступали отвесные скалы.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Здесь было по-прежнему тихо и неуютно. Белые кости погибших в жестокой схватке на берегу моря, пустые ящики из под боеприпасов и изуродованные ракетные установки оставляли гнетущее впечатление.';
            else
                return 'Берег моря тянулся с востока на запад. С юга к берегу подступали отвесные скалы.';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_144'), vroom ('Восток', 'r_148') },
    exit = function (s, to)
        if to == r_144 or to == r_148 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};



r_146 = room {
    nam = 'Развалины замка',
    north = nil,
    east = 'r_147',
    south = 'r_136',
    west = nil,
    _visit = 0,
    _just_enter = true,
    _may_enter = false,
    _second_dlg = false,
    _rested = 0,
    pic = function (s)
        return 'images/146.png';
    end,
    enter = function (s, from)
        set_music('music/13_jameson_theme.ogg');
        if from == r_147 or from == r_136 then
            s._rested = 0;
        end
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я находился у развалин старинного замка, построенного в незапамятные времена. Магистраль, которая привела меня сюда, уходила на восток. С запада и с севера замок окружали неприступные скалы.^Возле развалин я заметил небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
            else
                return 'Магистраль, которая привела меня сюда, уходила на восток. С запада и с севера замок окружали неприступные скалы.^Возле развалин я заметил небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я вышел из лавки Джеймсона и осмотрелся. На востоке я видел постройки базы артангов. Магистраль, по которой я сюда пришёл, вела на юг. На западе виднелись развалины старинного замка.';
            else
                return 'На востоке я видел постройки базы артангов. Магистраль, по которой я сюда пришёл, вела на юг. На западе виднелись развалины старинного замка.^Возле развалин стоял небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Юг', 'r_136'), vroom ('Восток', 'r_147') },
    obj = { 'castle_ruins', 'jamesons_house' },
    exit = function (s, to)
        if to == r_136 or to == r_147 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


castle_ruins = iobj {
    nam = 'развалины',
--    desc = function(s)
--        return 'От старинного замка, построенного в незапамятные времена, остались одни {развалины}.';
--    end,
    exam = function(s)
        return 'Судя по всему, это были остатки большого старинного замка, построенного очень и очень давно. Быть может даже до появления первых колонистов на этой земле. Кто жил в этом замке? Это осталось для меня загадкой. Теперь же над руинами кружили лишь хищные птицы...';
    end,
};


jamesons_house = iobj {
    nam = 'дом',
--    desc = function(s)
--        return 'Рядом с развалинами стоял небольшой {дом}.';
--    end,
    exam = function(s)
        jamesons_house_door:enable();
        return 'Я осмотрел дом. Над дверью висела выцветшая вывеска «Лавка Джеймсона».';
    end,
    obj = { 'jamesons_house_door' },
};


jamesons_house_door = iobj {
    nam = 'дверь',
--    desc = function(s)
--        return 'Над {дверью} висела выцветшая вывеска «Лавка Джеймсона».';
--    end,
    exam = function(s)
        jamesons_house_bell:enable();
        return 'Осмотрев дверь, я обнаружил кнопку звонка.';
    end,
    obj = { 'jamesons_house_bell' },
    useit = function (s)
        if r_122_inside._passwd then
            return 'Дверь была заперта изнутри.';
        end
        if r_146._may_enter then
            return goto (r_146_inside);
        else
            return 'Дверь заперта изнутри.';
        end
    end,
}:disable();


jamesons_house_bell = iobj {
    nam = 'звонок',
--    desc = function(s)
--        return 'На двери я заметил кнопку {звонка}.';
--    end,
    exam = function(s)
        return 'Обычная кнопка.';
    end,
    useit = function (s)
        if r_122_inside._passwd then
            return 'Я долго звонил, но никто не ответил. Похоже хозяина не было дома.';
        end
        if r_146._may_enter then
            return 'Нет смысла звонить ещё раз. Дверь открыта.';
        else
            if not r_146._second_dlg then
                return goto (jameson_dlg_11);
            else
                return goto (jameson_dlg_12);
            end
        end
    end,
}:disable();


jameson_dlg_11 = dlg{
    nam = 'Развалины замка',
    pic = 'images/146.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[Я позвонил в дверь.^— Кто там? — хрипло спросили за дверью.]],
    obj = {
            [1] = phr('Свои.', nil, [[poff(1,2,3); return goto(jameson_dlg_21);]]),
            [2] = phr('Откройте, я из Военного Совещания ЦСЧК.', '— Из Военного Совещания? Какие у Вас могут быть ко мне дела? Ну а вообще-то заходи...', [[poff(1,2,3); r_146._second_dlg = true; r_146._may_enter = true; r_146._visit = 0; return goto(r_146);]]),
            [3] = phr('Я хотел бы что-нибудь купить у Вас.', '— Ну Вас к чёрту! Мне сейчас не до этого, убирайтесь!', [[poff(1,2,3); r_146._second_dlg = true; r_146._visit = 0; return goto(r_146);]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


jameson_dlg_12 = dlg{
    nam = 'Развалины замка',
    pic = 'images/146.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[Я позвонил в дверь.^— Эй, ну сколько можно звонить? — проворчали за дверью.]],
    obj = {
            [1] = phr('Откройте, мой корабль потерпел крушение, и мне нужна Ваша помощь.', '— Крушение, говоришь? Ну так и быть... Заходи...', [[pon(1,2,3); r_146._second_dlg = true; r_146._may_enter = true; r_146._visit = 0; return goto(r_146);]]),
            [2] = phr('Немедленно откройте, иначе я разнесу в щепки Вашу хибару!', nil, [[pon(1,2,3); return goto(jameson_dlg_22);]]),
            [3] = phr('Мне нужно поговорить с Вами.', '— Все дела потом, завтра.', [[pon(1,2,3); r_146._visit = 0; return goto(r_146);]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


jameson_dlg_21 = dlg{
    nam = 'Развалины замка',
    pic = 'images/146.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[Тут много таких ходит. Что Вам нужно?]],
    obj = {
            [1] = phr('Я хотел бы что-нибудь купить у Вас.', '— Ну Вас к чёрту! Мне сейчас не до этого, убирайтесь!', [[poff(1,2); r_146._second_dlg = true; r_146._visit = 0; return goto(r_146); ]]),
            [2] = phr('Мне нужно поговорить с Вами.', '— О чём, парень? Если ты на службе у этих жаб, то я уже давно заплатил все налоги. А вести душещипательные беседы мне некогда.', [[poff(1,2); r_146._second_dlg = true; r_146._visit = 0; return goto(r_146); ]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


jameson_dlg_22 = dlg{
    nam = 'Развалины замка',
    pic = 'images/146.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[— Эй, а ты кто такой? Не тот ли ублюдок, которому я вчера набил морду на причале?]],
    obj = {
            [1] = phr('Ты слишком много говоришь, открывай!', '— Проваливай отсюда подобру-поздорову, парень.', [[pon(1,2); r_146._second_dlg = true; r_146._visit = 0; return goto(r_146);]]),
            [2] = phr('Нельзя ли повежливей?', '— Проваливай отсюда подобру-поздорову, парень.', [[pon(1,2); r_146._second_dlg = true; r_146._visit = 0; return goto(r_146);]]),
            },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_146_inside = room {
    nam = 'Лавка Джеймсона',
    _visit = 0,
    _just_enter = true,
    _may_enter = false,
    _second_dlg = false,
    pic = function (s)
        return 'images/146b.png';
    end,
--    enter = function (s, from)
--        if from == r_146 then
--            s._rested = r_146._rested;
--        end
--        s._just_enter = true;
--        s._visit = s._visit + 1;
--        if s._visit > 2 then
--            s._visit = 1;
--        end
--    end,
    dsc = function (s)
--        if s._visit == 1 then
--            if s._just_enter then
--                s._just_enter = false;
--                return 'Я находился у развалин старинного замка, построенного в незапамятные времена. Магистраль, которая привела меня сюда, уходила на восток. С запада и с севера замок окружали неприступные скалы.^Возле развалин я заметил небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
--            else
--                return 'Магистраль, которая привела меня сюда, уходила на восток. С запада и с севера замок окружали неприступные скалы.^Возле развалин я заметил небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
--            end
--        end
--        if s._visit == 2 then
--            if s._just_enter then
--                s._just_enter = false;
--                return 'Я вышел из лавки Джеймсона и осмотрелся. На востоке я видел постройки базы артангов. Магистраль, по которой я сюда пришёл, вела на юг. На западе виднелись развалины старинного замка.';
--            else
--                return 'На востоке я видел постройки базы артангов. Магистраль, по которой я сюда пришёл, вела на юг. На западе виднелись развалины старинного замка.^Возле развалин стоял небольшой дом. Над дверью дома висела выцветшая вывеска «Лавка Джеймсона».';
--            end
--        end
--        return 'Здесь было довольно тесно и, как во всех подобных лавках, пахло прокисшим вином. На полках красовались бутылки с различными марками ликёров и вин.^На противоположной стене над кожаным диваном висела картина с незатейливым космическим пейзажем. Хозяин лавки сидел за прилавком и пристально разглядывал меня.';
        return 'Здесь было довольно тесно и, как во всех подобных лавках, пахло прокисшим вином. На полках красовались бутылки с различными марками ликёров и вин.';
    end,
    rest = function (s)
        if r_146._rested == 0 then
            r_146._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_146._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Юг', 'r_136'), vroom ('Восток', 'r_147') },
    obj = { 'jamesons_sofa', 'jamesons_painting', 'jameson', 'jamesons_door' },
    exit = function (s, to)
--        if to == r_136 or to == r_147 then
--            clock_next ();
--        end
    end,
};


r_146_inside_end = room {
    nam = 'Лавка Джеймсона',
    pic = function (s)
        return 'images/146c.png';
    end,
    enter = function (s, from)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return '— Ах ты щенок! — крикнул Джеймсон и, нырнув под прилавок, затих.^Я обстрелял прилавок, и когда мне показалось, что с Джеймсоном покончено, раздался выстрел. Теряя сознание, я повалился на пол...';
    end,
--    way = { vroom ('Юг', 'r_136'), vroom ('Восток', 'r_147') },
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


jamesons_sofa = iobj {
    nam = 'диван',
--    desc = function(s)
--        return 'На противоположной стене над кожаным {диваном}';
--    end,
    exam = function(s)
        return 'Обыкновенный кожаный диван, изрядно потёртый завсегдатаями лавки.';
    end,
--    useit = function (s)
--        if r_146._may_enter then
--            return 'Нет смысла звонить ещё раз. Дверь открыта.';
--        else
--            if not r_146._second_dlg then
--                return goto (jameson_dlg_11);
--            else
--                return goto (jameson_dlg_12);
--            end
--        end
--    end,
};


jamesons_painting = iobj {
    nam = 'картина',
    _taked = false,
    _used = false,
--    desc = function(s)
--        return 'висела {картина} с незатейливым космическим пейзажем.';
--    end,
    exam = function(s)
        if not s._used then
            return 'По-моему, на картине был изображён вечерний пейзаж планеты Лейв. Во всяком случае, это было очень похоже на Лейв.';
        else
            return 'Я ещё раз осмотрел картину и заметил, что на обороте написано:^^Славься наше звёздное братство^Друг мой, пируй, всё уже позади^Перед нами вселенной богатство,^Ты его для других сохрани.^Как хотел ты узнать эту тайну^Пробил час, наши души в раю^Этот мир, словно кубок хрустальный,^Я тебе по наследству дарю.';
        end
    end,
    take = function (s)
        s._taked = true;
        return 'Я попытался снять со стены картину, но она была крепко прикреплена к стене цепочкой.', false;
    end,
    useit = function (s)
        s._used = true;
        return 'Я перевернул картину.';
    end,
};


jameson = iobj {
    nam = 'Джеймсон',
    _angry = true,
    _talked = false,
    _bottle = true,
--    desc = function(s)
--        return '{Хозяин лавки} сидел за прилавком и пристально разглядывал меня.';
--    end,
    exam = function(s)
        return 'Это был человек преклонных лет, но ещё достаточно крепкий и плотно сбитый. Похоже, что когда-то он был настоящим космическим волком.';
    end,
--    useit = function (s)
--        if r_146._may_enter then
--            return 'Нет смысла звонить ещё раз. Дверь открыта.';
--        else
--            if not r_146._second_dlg then
--                return goto (jameson_dlg_11);
--            else
--                return goto (jameson_dlg_12);
--            end
--        end
--    end,
    talk = function (s)
        if s._talked then
            return 'Я попытался что-то сказать Джеймсону, но он меня остановил:^— Больше ничем помочь не могу.';
        end
        if s._angry then
            return 'Я попытался что-то сказать Джеймсону, но тот не захотел меня слушать. Он с усмешкой посмотрел на меня и сказал:^— Я не верю тебе, друг мой. Иди-ка ты шпионь где-нибудь в другом месте.';
        else
            return goto (jameson_dlg_31);
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (r_146_inside_end);
        end
    end,
};


jamesons_door = iobj {
    nam = 'дверь',
--    desc = function(s)
--        return 'В дом вела {дверь}.';
--    end,
    exam = function(s)
        return 'Обычная дверь.';
    end,
    useit = function (s)
        return goto (r_146);
    end,
};


jamesons_paper = iobj {
    nam = 'клочок бумаги',
--    desc = function(s)
--        return 'Я вижу {клочок бумаги}.';
--    end,
    exam = function(s)
        return 'На клочке бумаги написано:^5(4), 6(2), 7(3), 10(4), 11(1), 14(2), 17(2), 18(1), 21(4), 23(3, 6).';
    end,
    take = function (s)
        return 'Я взял клочок бумаги.';
    end,
    drop = function (s)
        return 'Я бросил клочок бумаги.';
    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
};


jamesons_bottle = iobj {
    nam = 'бутылка',
    _empty = false,
--    desc = function(s)
--        return 'Я вижу {бутылку}.';
--    end,
    exam = function(s)
        if not s._empty then
            return 'На этикетке написано: «Лучшие старинные ликёры и вина от фирмы Майкл & К. Ликёр «Песчаные бури Энсореуса».';
        else
            jamesons_plastic:enable();
            return 'На этикетке написано: «Лучшие старинные ликёры и вина от фирмы Майкл & К. Ликёр «Песчаные бури Энсореуса». На дне бутылки я заметил кусок пластика.';
        end
    end,
    take = function (s)
        return 'Я взял бутылку.';
    end,
    drop = function (s)
        inv():del(jamesons_bottle);
        put (jamesons_bottle_glass);
        put (jamesons_plastic);
        return 'Я бросил бутылку и она разбилась.', false;
    end,
    useit = function (s)
        if s._empty then
            return 'Бутылка пуста.';
        else
            s._empty = true;
            return 'Я открыл бутылку и залпом осушил её.';
        end
    end,
};


jamesons_bottle_glass = iobj {
    nam = 'осколки',
--    desc = function(s)
--        return 'Несколько {осколков} это всё, что осталось от бутылки.';
--    end,
    exam = function(s)
        return 'Острые осколки.';
    end,
    take = function (s)
        return 'Слишком острые.', false;
    end,
--    drop = function (s)
--        return 'Я бросил кусок пластика.';
--    end,
};


jamesons_plastic = iobj {
    nam = 'кусок пластика',
--    desc = function(s)
--        return 'Я вижу {кусок пластика}.';
--    end,
    exam = function(s)
        return 'На куске пластика написано:^1 (1, 2), 3 (7), 4 (7, 8), 8 (2), 10 (4), 12 (3).';
    end,
    take = function (s)
        return 'Я взял кусок пластика.';
    end,
    drop = function (s)
        return 'Я бросил кусок пластика.';
    end,
};


jameson_dlg_31 = dlg{
    nam = 'Лавка Джеймсона',
    pic = 'images/146b.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[— Чем я могу тебе помочь?]],
    obj = {
            [1] = phr('Где я нахожусь?', nil, [[poff(1); return goto(jameson_dlg_32);]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


jameson_dlg_32 = dlg{
    nam = 'Лавка Джеймсона',
    pic = 'images/146b.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[ — Ты ещё не понял, парень? Это — Ракксла, чёртова планета, самое тухлое место во Вселенной, с тех пор как здесь появились артанги. Я сам так долго искал её, что теперь чувствую себя полным идиотом. Я поздно нашёл её, слишком поздно...^Здесь уже вовсю хозяйничали артанги. Получилось так, что я сам себе вырыл могилу. И будь проклят тот день, когда последний из династии Джеймсонов оказался в плену у этих тварей. А этот гнилой остров называется «О», он для ссыльных.^База артангов отсюда буквально в двух шагах на восток. И я не советую приближаться к ней.]],
    obj = {
            [1] = phr('Как мне выбраться отсюда?', nil, [[poff(1); return goto(jameson_dlg_33);]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


jameson_dlg_33 = room{
    nam = 'Лавка Джеймсона',
    pic = 'images/146b.png',
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = [[ — На юго-востоке есть порт. Морской глайдер курсирует между островом и материком. Если сумеешь пробраться на глайдер — считай что тебе повезло. На материке найдутся добрые люди. Желаю удачи. Смерть артангам!]],
    obj = { vway('1', '{Далее}', 'r_146_inside') },
    exit = function (s, t)
        jameson._talked = true; 
        me():enable_all();
    end,
};



r_147 = room {
    nam = 'База артангов',
--    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    north = nil,
    east = nil,
    south = 'r_137',
    west = 'r_146',
    pic = function (s)
        return 'images/147.png';
    end,
    enter = function (s, from)
        set_music('music/27_artangs_theme.ogg');
        s._rested = 0;
        if not status._biomask then
            return goto (r_147_end);
        end
--        s._just_enter = true;
--        s._visit = s._visit + 1;
--        if s._visit > 2 then
--            s._visit = 1;
--        end
    end,
    dsc = function (s)
--        if s._visit == 1 then
--            if s._just_enter then
--                s._just_enter = false;
                return 'У ворот базы артангов стоял часовой. Внутрь он меня не пустил, так как у меня не было пропуска. Вежливо извинившись, я отошёл в сторону.';
--            end
--        end
--        if s._visit == 2 then
--            if s._just_enter then
--                s._just_enter = false;
--                return 'У ворот базы артангов стоял часовой. Внутрь он меня не пустил, так как у меня не было пропуска. Вежливо извинившись, я отошёл в сторону.';
--            else
--                return '???';
--            end
--        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
    obj = { 'r_147_guardian' },
--    way = { vroom ('Запад', 'r_146'), vroom ('Юг', 'r_137') },
    exit = function (s, to)
        if to == r_146 or to == r_137 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_147_guardian = iobj {
    nam = 'часовой',
--    desc = function(s)
--        return 'Вход на базу охранял {часовой}.';
--    end,
    exam = function(s)
        return 'Это был довольно грозного вида артанг. На плече у него висел гравимёт. На поясе болтались гранаты.';
    end,
    talk = function (s)
        return 'Едва я открыл рот, артанг остановил меня жестом руки, давая понять, что разговаривать с посторонними не собирается.';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (r_147_neuro);
        end
    end,
};


r_147_end = room {
    nam = 'База артангов',
    pic = function (s)
        return 'images/147.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_147_neuro = room {
    nam = 'База артангов',
    pic = function (s)
        return 'images/147.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_147_biomask_off_end = room {
    nam = 'База артангов',
    pic = function (s)
        return 'images/147.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_148 = room {
    nam = 'Карьер',
    north = nil,
    east = nil,
    south = nil,
    west = 'r_145',
    _visit = 0,
    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/148.png';
    end,
    enter = function (s, from)
        set_music('music/14_raxxla_breathing.ogg');
        s._rested = 0;
        s._just_enter = true;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял на дне огромного карьера, который тянулся с востока на запад. На юге отвесной стеной поднимались скалы. С севера ветер доносил звуки бушующего моря. В одной из скал был прорублен вход в туннель.';
            else
                return 'Огромный карьер тянулся с востока на запад. На юге отвесной стеной поднимались скалы. С севера ветер доносил звуки бушующего моря. В одной из скал был прорублен вход в туннель.';
            end
        end
        if s._visit == 2 then
            if s._just_enter then
                s._just_enter = false;
                return 'Я стоял на дне древнего карьера. Вероятно, что когда-то здесь добывали полезные ископаемые для военного завода, который находился по ту сторону туннеля.';
            else
                return 'Огромный карьер тянулся с востока на запад. На юге отвесной стеной поднимались скалы. С севера ветер доносил звуки бушующего моря. В одной из скал был прорублен вход в туннель.';
            end
        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 (-2, -1, -1, 0, 0);
                return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_145') },
    obj = { 'mine_enter' },
    exit = function (s, to)
        if to == r_145 or to == r_138 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


mine_enter = iobj {
    nam = 'вход в туннель',
--    desc = function(s)
--        return 'В одной из скал прорублен {вход в туннель}.';
--    end,
    exam = function(s)
        return 'Туннель уходил под скалу и шёл в южном направлении.';
    end,
    useit = function (s)
        clock_next ();
        if status._health == 1 then
            health_finish._from = deref(here());
            status_change (-2, -1, -1, 0, 0);
            return goto (health_finish);
        else
            return goto (r_138);
        end
    end,
};


r_198 = room {
    nam = '...',
    pic = function (s)
        return 'images/198.png';
    end,
    enter = function (s, from)
        set_music('music/17_escape.ogg');
        inv():del(glider_ticket);
        me():disable_all();
    end,
    dsc = function (s)
        return 'Через несколько минут глайдер отчалил. Я стоял на верхней палубе и смотрел на удаляющийся остров. Я до сих пор не верил, что мне удалось вырваться отсюда. С юга дул тёплый ветер. Глайдер набирал скорость. Впереди меня ждало неизведанное...';
    end,
    obj = { vway("1", "{Далее}", 'r_200') },
--    obj = { vway("1", "{Далее}", 'r_241') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_199 = room {
    nam = '...',
    pic = function (s)
        return 'images/198.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Поздравляю!^^Вы прошли первую часть игры. Какие приключения ждут главного героя в мегаполисе Пульсар и чем закончится история — всё это в следующих частях игры.^^Следите за обновлениями.';
    end,
--    way = { vroom ('Далее', 'r_199') }
    exit = function (s, to)
        me():enable_all();
    end,
};

-- ---------------------------------------------------------------------------------------

the_end = room {
    nam = '...',
    pic = function (s)
        return 'images/end.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/02_invasion.ogg');
    end,
    dsc = function (s)
        return 'Спустя некоторое время по всем каналам связи Центрального Союза Человеческих Колоний было передано следующее сообщение:^«Военное совещание Центрального Союза с глубоким прискорбием сообщает, что при выполнении важного задания пал смертью храбрых секретный агент Военного Совещания «Неустрашимый». Об этом стало известно после того, как агент не вышел на связь в назначенное время. Президент ЦСЧК и руководство ВС приносят глубокие соболезнования родным и близким покойного».';
    end,
    exit = function (s)
        me():enable_all();
    end,
};
