r_412 = room {
    nam = 'Ангар',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _visit = 0,
    pic = function (s)
        return 'images/412.png';
    end,
    enter = function (s, from)
        if from == r_422 then
            s._visit = 1;
        end
        if from == fly_cabin then
            s._visit = 2;
        end
        if from == r_412_attack_2 then
            s._visit = 3;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я оказался в просторном ангаре «Чёрной Кобры». Посреди ангара я увидел затянутую огромной паутиной одноместную воздушную шлюпку «Муха».';
        end
        if s._visit == 2 then
            return 'Я вылез из «Мухи».';
        end
        if s._visit == 3 then
            return 'Мне удалось одолеть гигантского паука. Его мёртвое тело лежало возле забрызганной кровью стены ангара.';
        end
    end,
    rest = function (s)
        if r_432._rested == 0 then
            r_432._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов.';
        end
        if r_432._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 = { 'cobra_hatch', 'fly' },
--    exit = function (s, to)
--        if to == r_433 or to == r_435 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


fly = iobj {
    nam = 'шлюпка «Муха»',
    exam = function(s)
        if spider._alive then
            return goto (r_412_attack_1);
        else
            return 'Одноместная воздушная шлюпка «Муха».';
        end
    end,
};


fly_hatch = iobj {
    nam = 'люк «Мухи»',
    exam = function(s)
        return 'Люк одноместной воздушной шлюпки «Муха».';
    end,
    useit = function (s)
        if here() == r_412 then
            return goto (fly_cabin);
        else
            return goto (r_412);
        end
    end,
};


spider = iobj {
    nam = 'труп паука',
    _alive = true,
    exam = function(s)
        return 'Паук был мёртв.';
    end,
};


r_412_attack_1 = room {
    nam = 'Ангар',
    pic = function (s)
        return 'images/412.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я подошёл к шлюпке и осмотрел её. Кажется, она ещё способна летать. Когда я обходил шлюпку вокруг, моя нога зацепилась за паутину, и я чуть не упал.';
    end,
    obj = { vway('1', '{Далее}', 'r_412_attack_2') },
};


r_412_attack_2 = room {
    nam = 'Ангар',
    pic = function (s)
        return 'images/412_spider.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Спустя мгновение рядом возник гигантский чёрный паук и с тихим причмокиванием бросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'r_412') },
    exit = function (s)
        spider._alive = false;
        objs(r_412):add(spider);
        objs(r_412):add(fly_hatch);
        me():enable_all();
    end,
};


fly_cabin = room {
    nam = '«Муха»',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _visit = 0,
    pic = function (s)
        return 'images/fly_cabin.png';
    end,
    enter = function (s, from)
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s_visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Кое-как освободив шлюпку от паутины, я залез внутрь. Пульт «Мухи» был похож на пульт челнока, на котором мне уже доводилось летать.';
        else
            return 'Я снова залез внутрь. Пульт «Мухи» был похож на пульт челнока, на котором мне уже доводилось летать.';
        end
    end,
    rest = function (s)
        if r_432._rested == 0 then
            r_432._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов.';
        end
        if r_432._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 = { 'fly_hatch', 'fly_console' },
--    exit = function (s, to)
--        if to == r_433 or to == r_435 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


fly_console = iobj {
    nam = 'пульт',
    _destination = 0,
    exam = function(s)
        objs(fly_cabin):add(fly_hole);
--        objs(r_327_cabin):add(shuttle_button);
--        objs(r_327_cabin):add(shuttle_handle);
--        objs(r_327_cabin):add(shuttle_panel);
        return 'На передней панели была щель для карточки электронного навигатора.';
    end,
    useit = function (s)
        if not fly_hole._navigator then
            return 'Безрезультатно.';
        else
            return goto (fly_dlg);
        end
    end,
};


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


fly_dlg = dlg{
    nam = '«Муха»',
    pic = function(s)
        return 'images/fly_cabin.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = 'Выберите цель полёта:';
    obj = {
            [1] = phr('Темпоральная зона. Квадрат А.', nil, [[poff(1,2); return goto (fly_fly_tempor_1);]]),
            [2] = phr('Город Аркан.', nil, [[poff(1,2); return goto (fly_fly_arkan_1);]]),
          },
    exit = function (s)
        me():enable_all();
    end,
};


fly_fly_arkan_1 = room {
    nam = '«Муха»',
    pic = function (s)
        return 'images/fly_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
        set_music('music/01_intro.ogg');
    end,
    dsc = function (s)
        return 'Медленно, со скрежетом, распахнулись створки грузового шлюза, и шлюпка взмыла ввысь...^Через несколько часов я уже стоял на взлётном поле города Аркана.';
    end,
    obj = { vway('1', '{Далее}', 'fly_fly_arkan_2') },
};


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


fly_fly_arkan_3 = room {
    nam = 'КОНЕЦ',
--    pic = function (s)
--        return 'images/213_final.png';
--    end,
    dsc = function (s)
--        return 'ПОЗДРАВЛЯЮ! Вы только что прошли игру «Звёздное Наследие» и наградой Вам станет любовь девушки, которая так долго ждала Вас. До встречи в новой игре «Последняя любовь аса галактики».^(с) «STEP» 1995.';
        return 'ПОЗДРАВЛЯЮ! Вы только что прошли игру «Звёздное Наследие» и наградой Вам станет любовь девушки, которая так долго ждала Вас.';
    end,
};


fly_fly_tempor_1 = room {
    nam = '«Муха»',
    pic = function (s)
        return 'images/fly_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
--        set_music('music/32_tempor.ogg');
    end,
    dsc = function (s)
        return 'С борта моей «Мухи» электронный навигатор послал сигнал створкам грузового шлюза. Медленно, со скрежетом они распахнулись, и шлюпка взмыла ввысь...';
    end,
    obj = { vway('1', '{Далее}', 'fly_fly_tempor_2') },
};


fly_fly_tempor_2 = room {
    nam = '«Муха»',
    pic = function (s)
        return 'images/fly_cabin.png';
    end,
    enter = function (s, from)
        me():disable_all();
--        set_music('music/32_tempor.ogg');
    end,
    dsc = function (s)
        return 'Шлюпка приземлилась через час полёта.';
    end,
    obj = { vway('1', '{Далее}', 'tempor') },
    exit = function (s)
        me():enable_all();
    end,
};


r_421 = room {
    nam = 'Рубка',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _visit = 0,
    pic = function (s)
        return 'images/421.png';
    end,
--    enter = function (s, from)
--        set_music('music/31_black_cobra.ogg');
--    end,
    dsc = function (s)
        return 'Я вошёл в рубку. Сквозь помутневшее стекло сюда едва добирались лучи солнца. Пульт корабля был затянут паутиной.';
    end,
    rest = function (s)
        if r_432._rested == 0 then
            r_432._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов.';
        end
        if r_432._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 = { 'cobra_cabin_door', 'cobra_console' },
--    exit = function (s, to)
--        if to == r_433 or to == r_435 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


cobra_console = iobj {
    nam = 'пульт',
    exam = function(s)
        return 'Системы управления неисправны.';
    end,
};


r_422 = room {
    nam = 'Центральный отсек',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/422.png';
    end,
    enter = function (s, from)
        set_music('music/31_black_cobra.ogg');
        if from == r_432 then
            s._visit = 1;
        else
            s._visit = 2;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я вошёл внутрь. Здесь было темно и довольно сыро. В полутьме я заметил люк и две двери, которые вели в разные отсеки корабля.';
        end
        if s._visit == 2 then
            return 'Я снова вышел в центральный отсек. Здесь было темно и довольно сыро. Я видел люк и две двери, которые вели в разные отсеки корабля.';
        end
    end,
    rest = function (s)
        if r_432._rested == 0 then
            r_432._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_432._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 = { 'cobra_lock', 'cobra_cabin_door', 'cobra_cargo_door', 'cobra_hatch' },
--    exit = function (s, to)
--        if to == r_433 or to == r_435 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


cobra_cabin_door = iobj {
    nam = 'дверь рубки',
    exam = function(s)
        return 'Это дверь рубки.';
    end,
    useit = function (s)
        if here() == r_422 then
            return goto (r_421);
        else
            return goto (r_422);
        end
    end,
};


cobra_cargo_door = iobj {
    nam = 'дверь карго',
    exam = function(s)
        return 'Это дверь грузового отсека.';
    end,
    useit = function (s)
        if here() == r_422 then
            return goto (r_423);
        else
            return goto (r_422)
        end
    end,
};


cobra_hatch = iobj {
    nam = 'люк',
    exam = function(s)
        return 'Обычный люк.';
    end,
    useit = function (s)
        if here() == r_422 then
            return goto (r_412);
        else
            return goto (r_422)
        end
    end,
};


r_423_forest = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/433.png';
    end,
    enter = function (s)
        lifeoff(ghost7);
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Здесь находились сразу несколько отрядов карликов. Едва увидев незванного гостя, один из карликов бросил боевой клич и на меня обрушился целый град камней и стрел. Теряя сознание я рухнул на землю...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};



r_423 = room {
    nam = 'Грузовой отсек',
    north = nil,
    east = nil,
    south = nil,
    west = nil,
    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/423.png';
    end,
    enter = function (s, from)
        if from == r_422 then
--            s._rested = 0;
--            set_music('music/31_black_cobra.ogg');
--            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,
    rest = function (s)
        if r_432._rested == 0 then
            r_432._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_432._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 = { 'cobra_cargo_door' },
--    exit = function (s, to)
--        if to == r_433 or to == r_435 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};



r_432 = room {
    nam = 'Поле',
    north = nil,
    east = 'r_433',
    south = nil,
    west = nil,
    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/432.png';
    end,
    enter = function (s, from)
        if from == r_433 then
            s._rested = 0;
            set_music('music/29_mystery_of_island_o.ogg');
            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 'Пройдя мимо поселения лесных карликов, я вышел на заросшее высокой травой поле. С севера, юга и запада поле окружали неприступные скалы. Прямо передо мной, утопая в высокой траве и заросший мхом, лежал космический корабль «Кобра МК-3».';
--            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 = { 'cobra' },
    exit = function (s, to)
        if to == r_433 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


cobra = iobj {
    nam = '«Кобра МК-3»',
    exam = function(s)
        objs(r_432):add(cobra_lock);
        return 'На заросшем мхом фюзеляже была еле заметная надпись: «Чёрная Кобра». На правом борту корабля — распахнутые створки наполовину засыпанного землёй шлюзового отсека.';
    end,
};


cobra_lock = iobj {
    nam = 'шлюзовой отсек',
    exam = function(s)
        return 'Засыпанный землёй и заросший мхом шлюзовой отсек.';
    end,
    useit = function (s)
        if here() == r_432 then
            return goto (r_422);
        else
            return goto (r_432);
        end
    end,
};



r_433 = room {
    nam = 'Лес',
    north = nil,
    east = 'r_434',
    south = 'r_423_forest',
    west = 'r_432',
    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/433.png';
    end,
    enter = function (s, from)
        if from == r_432 or from == r_434 then
            if not (ghost7._active and ghost7._state > 1) then
                lifeoff (ghost7);
                return goto (r_141);
            end
            s._rested = 0;
            set_music('music/29_mystery_of_island_o.ogg');
--        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 'b';
--            else
--                return 'Далеко на севере по-прежнему бушевало море. С юга лес окружали скалы. С запада до меня доносились крики лесных обитателей.';
--            end
        end
    end,
    rest = function (s)
        return goto (r_433_rest_end);
    end,
--    way = { vroom ('Запад', 'r_142'), vroom ('Восток', 'r_144') },
--    obj = { 'bushes' },
    exit = function (s, to)
        if to == r_432 or to == r_434 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_433_rest_end = room {
    nam = 'Лес',
    pic = function (s)
        return 'images/433.png';
    end,
    enter = function (s)
        lifeoff(ghost7);
        me():disable_all();
--        set_music('music/02_invasion.ogg');
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Прошло несколько часов. Внезапно один из карликов бросил боевой клич, и на меня обрушился целый град камней и стрел. Теряя сознание, я рухнул на землю.';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};



r_434 = room {
    nam = 'Лес',
    north = nil,
    east = 'r_435',
    south = nil,
    west = 'r_433',
    _visit = 0,
--    _just_enter = true,
    _rested = 0,
    pic = function (s)
        return 'images/434.png';
    end,
    enter = function (s, from)
        if from == r_433 or from == r_435 then
            s._rested = 0;
            set_music('music/30_returning_to_island_o.ogg');
            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,
    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_433 or to == r_435 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_435 = room {
    nam = 'Берег моря',
    _visit = 0,
    _rested = 0,
    north = nil,
    east = 'r_436',
    south = nil,
    west = 'r_434',
    pic = function (s)
        return 'images/435.png';
    end,
    enter = function (s, from)
        set_music('music/30_returning_to_island_o.ogg');
        if from == r_434 or from == r_436 then
            s._rested = 0;
--            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 4 then
                s._visit = 4;
            end
        end
        if from == r_435_attack then
            s._visit = 2;
        end
        if s._visit == 1 then
            return goto (r_435_attack);
        end
    end,
    dsc = function (s)
        if s._visit == 2 then
            return 'Бой был короткий, но жаркий. С карликами я разделался без особого труда. Два окровавленных трупа лежали возле моих ног.';
        end
        if s._visit == 3 then
            return 'Рядом с разбившимся винтолётом бушевало море. На берегу лежали два трупа агрессивных лесных жителей. Что искали эти доисторические существа в винтолёте? Или это было просто любопытством каменного века?';
        end
        if s._visit == 4 then
            return 'Я стоял возле разбившегося винтолёта. Теперь я мог с уверенностью сказать, что этот винтолёт стал могилой моего отца. Тайна обстоятельств его гибели до сих пор оставалась для меня за семью печатями.';
        end
    end,
    obj = { 'helicopter_435', 'furry_dwarfs_corpses' },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_434 or to == r_436 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


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


helicopter_enter_435 = iobj {
    nam = 'дыра в люке',
    exam = function(s)
        if here() == r_435 then
            return goto (helicopter_435_inside);
        else
            return goto (r_435);
        end
    end,
--    useit = function (s)
--          return goto (r_144_helicopter);
--    end,
}:disable();


helicopter_435_inside = room {
    nam = 'Винтолёт',
    pic = function (s)
        return 'images/435_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)
        return 'Я заглянул внутрь. Здесь пахло плесенью. На полу возле развороченного кресла лежали человеческие кости. Под креслом я обнаружил потайную нишу. Она была пуста. Судя по всему, эти карлики нашли тайник.';
    end,
    rest = function (s)
        if r_435._rested == 0 then
            r_435._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов. Я отдыхал и ни о чём не думал...';
        end
        if r_435._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_enter_435' },
--    exit = function (s, to)
--        if to == r_144 then
--            r_144._rested = s._rested;
--        end
--    end,
};


furry_dwarfs_corpses = iobj {
    nam = 'трупы карликов',
    _examined = false,
    exam = function(s)
        if not s._examined then
            s._examined = true;
            objs(r_435):add(spear);
            objs(r_435):add(boulder);
            objs(r_435):add(metal_box);
            return 'Я осмотрел трупы. У одного в руке было острое копьё. У другого — булыжник и небольшая металлическая коробка.';
        else
            return 'Я осмотрел трупы, но больше ничего не нашёл.';
        end
    end,
};


spear = iobj {
    nam = 'копьё',
    exam = function(s)
        return 'Острое короткое копьё.';
    end,
    take = function (s)
        return 'Я взял копьё.';
    end,
    drop = function (s)
        return 'Я бросил копьё.';
    end,
};


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


metal_box = iobj {
    nam = 'коробка',
    _closed = true,
    exam = function(s)
        if s._closed then
            return '«Косморазведка Лиги Тёмное Колесо. Прибор «Призрак-7»». Крышка коробки закрыта на миниатюрный замок.';
        else
            return '«Косморазведка Лиги Тёмное Колесо. Прибор «Призрак-7»».';
        end
    end,
    used = function (s, w)
        if w == boulder then
            if not (have (boulder)) then
                return 'У меня нет булыжника.';
            else
                s._closed = false;
                objs():add(ghost7);
                return 'С помощью булыжника мне удалось сбить замок. В коробке я заметил небольшой прибор.';
            end
        end
    end,
    take = function (s)
        return 'Я взял коробку.';
    end,
    drop = function (s)
        return 'Я бросил коробку.';
    end,
};


ghost7 = iobj {
    nam = 'прибор',
    _active = false,
    _state = 3,
    exam = function(s)
        if not s._active then
            return 'Небольшой приборчик с маленькой красной кнопкой.';
        else
            return 'Небольшой приборчик с маленькой красной кнопкой. Изнутри раздётся тихое жужжание.';
        end
    end,
    take = function (s)
        return 'Я взял прибор.';
    end,
    drop = function (s)
        return 'Я бросил прибор.';
    end,
    useit = function (s)
        if s._active then
            return 'Прибор уже активирован.';
        else
            if s._state == 0 then
                return 'Я нажал на кнопку, но ничего не произошло.';
            else
                s._active = true;
                lifeon (s);
                return 'Я нажал на кнопку. Прибор тихо зажжужал.';
            end
        end
    end,
    life = function (s)
        s._state = s._state - 1;
        if s._state == 0 then
            s._active = false;
            lifeoff (s);
            return 'Прибор перестал жужжать.';
        end
    end,
};



r_435_attack = room {
    nam = 'Берег моря',
    pic = function (s)
        return 'images/435_furry_dwarfs.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_435') },
    exit = function (s, to)
        me():enable_all();
    end,
};



r_436 = room {
    nam = 'Берег моря',
    _visit = 0,
    _rested = 0,
    north = nil,
    east = 'r_437',
    south = nil,
    west = 'r_435',
    pic = function (s)
        return 'images/436.png';
    end,
    enter = function (s, from)
        set_music('music/30_returning_to_island_o.ogg');
        if from == r_327_fly_arkan_4 or from == r_435 or from == r_437 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
        if from == r_327_fly_arkan_4 then
            berries:disable();
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Когда я очнулся, то заметил, что нахожусь в местах, до боли знакомых. Это была северная часть острова О. На юге неприступной стеной стояли высокие скалы. На севере бушевало море. Вокруг меня белели в песке человеческие кости, рядом лежали остатки моей катапульты.';
        end
        if s._visit == 2 then
            return 'Здесь было по-прежнему тихо и неуютно. Белые кости погибших в жестокой схватке на берегу моря, пустые ящики из под боеприпасов и изуродованные ракетные установки оставляли гнетущее впечатление.';
        end
    end,
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Прошло несколько часов...';
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_435 or to == r_437 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


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


shuttle_wreckage = iobj {
    nam = 'обломки',
    _cracked = false,
    _examined = false,
    exam = function(s)
        if not s._cracked then
            return 'Я осмотрел обломки челнока. Было ясно, что корабль уже не восстановить.';
        else
            if not s._examined then
                s._examined = true;
                objs(r_437):add(enavigator);
                return 'Я заглянул в приоткрывшуюся щель и заметил, что в развороченном пульте торчит карточка электронного навигатора.';
            else
                return 'Я ещё раз осмотрел обломки, но больше ничего не нашёл.';
            end
        end
    end,
--    obj = { 'r_333_berries' },
    used = function (s, w)
        if w == spear then
            if not s._cracked then
                s._cracked = true;
                return 'С помощью копья мне удалось приподнять разбитую крышку кабины.';
            else
                return 'Я уже поднял крышку кабины.';
            end
        end
    end,
};
