i = room {
    nam = 'Предисловие',
    pic = 'images/intro.gif',
--    enter = function(s)
--    end,
--    dsc = [[Тёмное дождливое утро встретило неподвижное войско людей посреди широкого поля...]],
--    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);
            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,
};
-- ----------------------------------------------------------------------

r_200 = room {
    nam = '...',
    pic = function (s)
        return 'images/200.png';
    end,
    enter = function (s, from)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Триста километров, отделявшие остров «О» от мегаполиса Пульсар, глайдер переодолел за несколько часов. Я стоял на палубе и смотрел на приближающийся берег. Большой портовый город распахнул передо мной свои объятия.';
    end,
    obj = { vway("1", "{Далее}", 'r_241') },
    exit = function (s, to)
        me():enable_all();
    end,
};


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

r_212 = room {
    nam = 'Старый район',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    _tiseller_img = false,
    _praggs_gone = false,
    north = 'r_222',
    east = 'r_213',
    south = nil,
    west = nil,
    pic = function (s)
        if seen (praggs_leader) or seen (porcupine) then
            return 'images/212_praggs.png';
        else
            return 'images/212.png';
        end
    end,
    enter = function (s, from)
        set_music('music/22_praggs.ogg');
        if status._clock == NIGHT then
            if status._biomask then
                return goto (r_212_biomask_end);
            else
                if not s._praggs_gone then
                    objs(r_212):add(praggs_leader);
                end
            end
        end
        if from == r_222 or from == r_213 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        else
            s._just_enter = false;
        end
    end,
    dsc = function (s)
        if status._clock == NIGHT then
            if s._just_enter then
                return 'Ночью находиться в этом районе было небезопасно. Целые банды прэгов — местных хулиганствующих анархистов — разгуливали по улицам.';
            else
                return 'Я находился в старом районе. Ночью находиться здесь было небезопасно.';
            end
        end
        if s._visit == 1 then
            return 'Я находился в старом, грязном районе. Судя по всему, его населяли бедняки и отбросы общества. Неудивительно, что я не встретил здесь ни одного артанга. Зато иногда мне встречались группы прэгов — молодых хулиганов.^Прэги — дети трущоб, признавали только анархию. Как правило, они были детьми спившихся и опустившихся космических отшельников.';
        end
        if s._visit == 2 then
            return 'Я снова забрёл в старый район, который населяли отбросы общества. Видимо, с незапамятных времён здесь жили заблудившиеся космические отшельники, которые обрели покой на этой легендарной планете. Что искали они и что нашли?';
        end
        if s._visit == 3 then
            return 'Я находился на территории старого района города. На севере, в центре города возвышались небоскрёбы, на западе бушевало море, на востоке я видел постройки аэропорта. С юга, вплотную к району, подступали отвесные скалы.';
        end
    end,
--    obj = { 'infoboard', 'roboturnstile' },
--    way = { vroom ('Север', 'r_222'), vroom ('Восток', 'r_213') },
    rest = function (s)
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            if seen (praggs_leader) then
                objs(r_212):del(praggs_leader);
                objs(r_212):del(porcupine);
                return 'Не обращая внимания на толпу прэгов, я с невозмутимым видом прилёг на стоящие в подворотне ящики. Прэги, видимо, опешили и не решились ко мне подойти. Я чувствовал сильную усталость, поэтому быстро заснул.^Прошло несколько часов...';
            else
                return 'Прошло несколько часов...';
            end
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Прошло несколько часов...';
            end
        end
    end,
    exit = function (s, to)
        if to == r_222 or to == r_213 then
            if seen (praggs_leader) then
                objs(r_212):del(porcupine);
                return goto (r_212_runaway_1);
            else
                health_finish._from = deref(here());
                clock_next ();
                status_change (-2, -1, -1, 0, 0);
                return check_health();
            end
        end
    end,
};


r_212_runaway_1 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
        clock_next ();
        status_change (-13, -7, -7, 0, 0);
        if status._health <= 0 then
            status._health = 1;
        end
        objs(r_212):del(praggs_leader);
        inv():del(blaster);
        inv():del(neurowhip);
    end,
    dsc = function (s)
        return 'Я попытался убежать от банды, но это оказалось не так просто. Меня быстро догнали, повалили на землю и избили. На какое-то время я потерял сознание.';
    end,
    obj = { vway('1', '{Далее}', 'r_212_runaway_2') },
};


r_212_runaway_2 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212.png';
    end,
    dsc = function (s)
        return 'Когда я очнулся, рядом уже никого не было.';
    end,
    obj = { vway('1', '{Далее}', 'r_212') },
    exit = function (s)
        me():enable_all();
    end,
};


praggs_leader = iobj {
    nam = 'главарь прэгов',
    _talked = false,
    dsc = function(s)
        if s._talked then
            return 'Банда прэгов окружила меня. {Главарь прэгов} сжимал в руке тяжёлый нейрохлыст.';
        else
            return 'С одной из банд я случайно столкнулся в какой-то подворотне. Я сразу понял, что просто так мне уйти не дадут.^{Главарь прэгов} сжимал в руке тяжёлый нейрохлыст.';
        end
    end,
    exam = function(s)
        return 'Это был огромный детина человеческого происхождения. Прэг был закован в пластиковый бронежилет и увешан оплавленными кусочками металла, применяемого в космической технике. В руке прэг сжимал тяжёлый нейрохлыст.';
    end,
--    obj = { 'infozone_1', 'infozone_2', 'tiseller' },
    talk = function (s)
        if s._talked then
            return 'Кажется, он не расположен к диалогу...';
        else
            return goto (praggs_leader_dlg_1);
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (praggs_attack_end);
        end
    end,
--    givem = function (s, w)
--        if w == credit_card then
--            retunr ' al';
--        end
--    end,
};


praggs_leader_dlg_1 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('Ну и что вы хотите от меня?', nil, [[poff(1,2,3); return goto(praggs_leader_dlg_21);]]),
            [2] = phr('Эй, посторонись, хватит глазеть! Дай пройти!', nil, [[poff(1,2,3); return goto(praggs_leader_dlg_22);]]),
            [3] = phr('Ты, ублюдок, не смотри на меня так!', nil, [[poff(3); return goto (praggs_leader_dlg_13_1);]]),
          },
};


praggs_leader_dlg_21 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— Деньги есть?',
    obj = {
            [1] = phr('Да, есть кое-что.', '— Давай, выкладывай всё, что есть!', [[praggs_leader._talked = true; poff(1,2,3); me():enable_all(); return goto (r_212);]]),
            [2] = phr('Деньги? Чего захотел!', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_1);]]),
            [3] = phr('Может разойдёмся по-хорошему?', nil, [[poff(3); return goto (praggs_leader_dlg_31);]]),
          },
};


praggs_leader_dlg_22 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— Не дёргайся, мужик! Нам нужно пощупать твой кошелёк.',
    obj = {
            [1] = phr('Ребята, отстаньте от меня, пожалуйста!', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_21);]]),
            [2] = phr('У меня ничего нет!', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_8);]]),
          },
};


praggs_leader_dlg_31 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— А что ты можешь мне предложить?',
    obj = {
            [1] = phr('Всё, что захотите!', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_3);]]),
            [2] = phr('Приятную ночь и развлечения!', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_41);]]),
          },
};


praggs_leader_dlg_41 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— Не понял?',
    obj = {
            [1] = phr('Я хорошо заплачу, вам хватит этого чтобы немного поразвлечься.', nil, [[praggs_leader._talked = true; poff(1,2); return goto (praggs_leader_dlg_end_5);]]),
--            [2] = phr('Вы возьмёте всё, что вам нужно, и даже больше!', nil, [[praggs_leader._talked = true; poff(1,2); return goto (praggs_leader_dlg_51);]]),
            [2] = phr('Вы возьмёте всё, что вам нужно, и даже больше!', nil, [[praggs_leader._talked = true; poff(1,2); if porcupine_paper._examined then return goto (praggs_leader_dlg_52); else return goto (praggs_leader_dlg_51); end ]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


praggs_leader_dlg_51 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— А что нам нужно? Ты не знаешь?',
    obj = {
            [1] = phr('Нет, не знаю.', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_6);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


praggs_leader_dlg_52 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— А что нам нужно? Ты не знаешь?',
    obj = {
            [1] = phr('Нет, не знаю.', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_5);]]),
            [2] = phr('Один вопрос — вы не знаете кто такой Браз Дик?', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_7);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


praggs_leader_dlg_end_1 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return '— Дикобраз! Ты слышал? Ну так действуй!^  От группы прэгов отделился огромный волосатый человек, действительно чем-то похожий на дикобраза и, не говоря ни слова, набросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_end_2') },
};


praggs_leader_dlg_end_2 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
--        return 'Силы были явно не равны. Захлёбываясь кровью, я рухнул на грязный тротуар.';
        return 'В нелёгкой схватке мне удалось победить противника.^Но не успел я придти в себя, как на меня набросились остальные прэги. Сопротивляться было бесполезно...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


praggs_leader_dlg_end_3 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return [[«Оʼкей! Дикобраз, забери у него всё!» — приказал главарь. От толпы прэгов отделился огромный детина и направился ко мне. Я ничего не успел сделать. Дикобраз скрутил меня, а два других прэга вывернули мне карманы.]];
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_end_4') },
};


praggs_leader_dlg_end_4 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        set_music('music/07_battle.ogg');
        inv():del(blaster);
        inv():del(neurowhip);
        clock_next ();
        status_change (-13, -7, -7, 0, 0);
        if status._health <= 0 then
            status._health = 1;
        end
        me():disable_all();
        objs(r_212):del(praggs_leader);
    end,
    dsc = function (s)
        return 'Забрав всё, что они сочли нужным, прэги избили меня и оставили лежать в грязной подворотне.';
    end,
    obj = { vway('1', '{Далее}', 'r_212') },
    exit = function (s)
        me():enable_all();
    end,
};


praggs_leader_dlg_end_5 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return '— Ха-ха-ха! Мы и так у тебя всё заберём. Дикобраз, действуй!^  От группы прэгов отделился огромный волосатый человек, действительно чем-то похожий на дикобраза и, не говоря ни слова, набросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_end_2') },
};


praggs_leader_dlg_end_6 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return '— Хватит жевать мне мозги. Дикобраз, разберись с ним!^  От группы прэгов отделился огромный волосатый человек, действительно чем-то похожий на дикобраза и, не говоря ни слова, набросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_end_2') },
};


praggs_leader_dlg_end_7 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return '«А откуда ты его знаешь? Дикобраз, ты слышал? Этот парень откуда-то тебя знает», — пробормотал главарь. Из толпы вышел огромный детина двухметрового роста.';
    end,
    obj = { vway('1', '{Далее}', 'r_212') },
    exit = function (s)
        me():enable_all();
        objs(r_212):add(porcupine);
    end,
};


praggs_leader_dlg_end_8 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
--    enter = function (s)
--        me():disable_all();
--    end,
    dsc = function (s)
        return '— А это мы сейчас проверим! Дикобраз, разберись с ним!^  От группы прэгов отделился огромный волосатый человек, действительно чем-то похожий на дикобраза и, не говоря ни слова, набросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_end_2') },
};



praggs_attack_end = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return '«Что он делает?» — закричал кто-то из прэгов. «Ребята, кончайте его!!!»^Схватка, была жаркой, но короткой. Силы были не равны. Последнее, что я помню — шипящая ручная граната под ногами...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


praggs_leader_dlg_13_1 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'За «ублюдка» ты мне ответишь! Дикобраз, разберись с ним!^От группы прэгов отделился огромный волосатый человек, действительно чем-то похожий на дикобраза и, не говоря ни слова, набросился на меня.';
    end,
    obj = { vway('1', '{Далее}', 'praggs_leader_dlg_13_2') },
};


praggs_leader_dlg_13_2 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'В нелёгкой схватке мне удалось победить противника.^Но не успел я придти в себя, как на меня набросились остальные прэги. Сопротивляться было бесполезно...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};


porcupine = iobj {
    nam = 'Дикобраз',
    _talked = false,
    _happy = false,
    dsc = function(s)
        return 'Огромный детина двухметрового роста по кличке {Дикобраз} молча смотрел на меня.';
    end,
    exam = function(s)
        return 'Здоровенный прэг с неприветливым взглядом.';
    end,
    talk = function (s)
        if s._happy then
            return goto (porcupine_dlg_2);
        end
        if s._talked then
            return 'Я уже поговорил с Дикобразом.';
        else
            return goto (porcupine_dlg_1);
        end
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (praggs_attack_end);
        end
    end,
};


porcupine_dlg_1 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
--    dsc = '',
    obj = {
            [1] = phr('У меня кое-что есть для тебя. Я думаю, что ты будешь рад. Только скажи своим, чтобы они угомонились.', 'Дикобраз молча смотрел на меня, но в глазах его уже засветились огоньки любопытства.', [[porcupine._talked = true; poff(1); return goto (r_212);]]),
--            [2] = phr('Один вопрос — вы не знаете кто такой Браз Дик?', nil, [[praggs_leader._talked = true; poff(1,2,3); return goto (praggs_leader_dlg_end_7);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


porcupine_dlg_2 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = 'Я окликнул Браз Дика и тот согласился меня выслушать.',
    obj = {
            [1] = phr('Ну ладно, я пошёл, пока!', '— Будь здоров! — ответил Дикобраз и побежал догонять своих, которые всей толпой направились отмечать радостное событие. Через несколько секунд прэги растворились в темноте ночи.', [[poff(1,2); objs(r_212):del(porcupine); return goto (r_212);]]),
            [2] = phr('Вы не можете мне помочь?', nil, [[poff(1,2,3); return goto (porcupine_dlg_3);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


porcupine_dlg_3 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— А что я могу сделать?',
    obj = {
            [1] = phr('Мне срочно нужно в Таран.', nil, [[poff(1); return goto (porcupine_dlg_4);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


porcupine_dlg_4 = dlg{
    nam = 'Старый район',
    pic = function(s)
        return 'images/212_praggs.png';
    end,
    dsc = '— Если есть деньги — тогда на рейсовом аэро. Если нет — тогда по северной трассе. Только там пост, без документов не пройдёшь.',
    obj = {
            [1] = phr('Хорошо, спасибо.', '— Будь здоров! — ответил Дикобраз и побежал догонять своих, которые всей толпой направились отмечать радостное событие. Через несколько секунд прэги растворились в темноте ночи.', [[poff(1,2); objs(r_212):del(porcupine); return goto (r_212);]]),
            [2] = phr('А не могли бы вы помочь мне пробраться через пост?', nil, [[poff(1); return goto (porcupine_dlg_end_1);]]),
          },
--    exit = function (s, t)
--        me():enable_all();
--    end,
};


porcupine_dlg_end_1 = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
    dsc = function (s)
        return '— Нет проблем, — сказал Дикобраз и свистнул удалявшейся толпе прэгов. Они вернулись, и Браз Дик что-то прошептал на ухо главарю.^Тот изучающе посмотрел на меня и сказал: «Ладно, поехали. Протащим тебя через пост», — с этими словами главарь прэгов подал знак своим, и из темноты подворотни выехал старый, видавший виды автокрафт-фургон.^Я и вся банда прэгов погрузились в автокрафт и уже спустя несколько секунд мы мчались по ночным улицам города на север.';
    end,
    obj = { vway('1', '{Далее}', 'porcupine_dlg_end_2') },
    exit = function (s)
        r_212._praggs_gone = true;
        objs(r_212):del(praggs_leader);
        objs(r_212):del(porcupine);
    end,
};


porcupine_dlg_end_2 = room {
    nam = '...',
    pic = function (s)
        return 'images/243_runaway.png';
    end,
    dsc = function (s)
        return 'У поста артанг-полицейский поднял жезл и приказал остановиться. Но водитель автокрафта только прибавил скорости. Столкновение с шлагбаумом было не из приятных: сильный удар, скрежет переднего бампера, сноп искр и разлетающиеся куски полосатого пластика.^Артанга-полицейского главарь банды снял одним выстрелом. Остальные открыли огонь из окон по полицейской будке.';
    end,
    obj = { vway('1', '{Далее}', 'porcupine_dlg_end_3') },
};


porcupine_dlg_end_3 = room {
    nam = 'Развилка',
    pic = function (s)
        return 'images/332.png';
    end,
    enter = function (s)
        set_music('music/16_escape_2.ogg');
    end,
    dsc = function (s)
        return 'Мы проскочили пост и затормозили только через несколько километров.^«Выходи. Быстро», — сказал главарь, открыл дверь и буквально вытолкал меня из фургона.^Взревели двигатели автокрафта, машина развернулась и на огромной скорости помчалась обратно в город.';
    end,
    obj = { vway('1', '{Далее}', 'r_332') },
    exit = function (s)
        me():enable_all();
    end,
};


porcupine_happy = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_praggs.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я достал из кармана мятую облигацию и протянул её Дикобразу. Тот переменился в лице и его широкая улыбка обнажила беззубый рот.^«О, ты нашёл её!» — радостно закричал Дикобраз.^Он показал облигацию главарю и тот, дружески похлопав его по плечу, повернулся ко мне:^«Где ты нашёл её?».^Я рассказал историю с облигацией. Прэги долго хохотали.^«Дикобраз, ну ты напился тогда!» — закатываясь, выдавил главарь прэгов.^«А помнишь, как ты валялся под скамейкой в той беседке?»^«Помню. Ха-ха-ха».^«А потом хотел переплыть на ту сторону моря! Хо-хо-хо».^Казалось, прэги забыли про меня, но когда волна веселья немного поутихла, главарь прэгов повернулся ко мне: «Ты ещё здесь? Иди гуляй, парень. Ты свободен. Ха-ха-ха».';
    end,
    obj = { vway('1', '{Далее}', 'r_212') },
    exit = function (s)
        r_212._praggs_gone = true;
        objs(r_212):del(praggs_leader);
        inv():del(porcupine_paper);
        me():enable_all();
    end,
};



r_212_biomask_end = room {
    nam = 'Старый район',
    pic = function (s)
        return 'images/212_fist.png';
    end,
    enter = function (s)
        me():disable_all();
        set_music('music/07_battle.ogg');
    end,
    dsc = function (s)
        return 'Блуждая по городу, я забрёл в грязный бедный район, который населяли отбросы общества. Целые банды прэгов — местных анархистов — разгуливали по улицам. С одной из банд я случайно столкнулся в какой-то подворотне. Прэги набросились на меня неожиданно, я ничего не успел предпринять...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};



r_213 = room {
    nam = 'Аэропорт',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
    _tiseller_img = false,
    north = 'r_223',
    east = nil,
    south = nil,
    west = 'r_212',
    pic = function (s)
        if s._tiseller_img then
            return 'images/213_tiseller.png';
        else
            return 'images/213.png';
        end
    end,
    enter = function (s, from)
        set_music('music/18_harbour.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_223 or from == r_212 then
            s._tiseller_img = false;
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'После долгого пути я оказался внутри большого и светлого здания аэропорта. Сквозь высокие и толстые стеклянные стены я мог наблюдать за типичной пассажирской суетой. Изредка со взлётных площадок в небо взмывали лёгкие аэро, грузовые трейлеры, туристические винтолёты.';
        end
        if s._visit == 2 then
            return 'Я находился в вестибюле аэропорта. Сквозь стеклянные двери я видел как взлетали и прилетали воздушные суда. На инфотабло помимо расписания и новостей светилась реклама каких-то авиакомпаний. Здесь было довольно людно и никто не обращал на меня внимания.';
        end
        if s._visit == 3 then
            return 'Здесь всё было по-прежнему. Аэропорт мегаполиса Пульсар жил своей обычной суетливой жизнью.';
        end
    end,
    obj = { 'infoboard', 'roboturnstile' },
--    way = { vroom ('Север', 'r_223'), vroom ('Запад', 'r_212') },
    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_223 or to == r_212 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


infoboard = iobj {
    nam = 'инфотабло',
    _examined = false,
    dsc = function(s)
        if s._examined then
            return 'На противоположной глухой стене вестибюля висело {инфотабло}, разделённое на ';
        else
            return 'На противоположной глухой стене вестибюля висело {инфотабло}.';
        end
    end,
    exam = function(s)
        r_213._tiseller_img = false;
        if s._examined then
            return 'Огромное информационное табло, разделённое на несколько независимых друг от друга инфозон.';
        else
            s._examined = true;
            infozone_1:enable();
            infozone_2:enable();
            return 'Огромное информационное табло, разделённое на несколько независимых друг от друга инфозон.';
        end
    end,
    obj = { 'infozone_1', 'infozone_2', 'tiseller' },
};


infozone_1 = iobj {
    nam = '1-ая инфозона',
    dsc = function(s)
        return '{1-ую} и';
    end,
    exam = function(s)
        r_213._tiseller_img = false;
        return 'В этой инфозоне было написано:^Пульсар — Таран: Регулярные рейсы. Каждые два часа. Билеты продаются в любом тисейлере. Красивый город Таран ждёт Вас!^Пульсар — Аркан: Регулярные рейсы. Каждый час. Дешёвые билеты в любом тисейлере. Прекрасный Аркан — город невест — ждёт Вас!';
    end,
}:disable();


infozone_2 = iobj {
    nam = '2-ая инфозона',
    _index = 0,
    dsc = function(s)
        return '{2-ую} инфозоны.';
    end,
    exam = function(s)
        r_213._tiseller_img = false;
        s._index = s._index + 1;
        if s._index > 15 then
            s._index = 2;
        end
        if s._index == 1 then
            return 'В этой инфозоне шли новости. Симпатичная дикторша приятным голосом зачитывала сообщение военного правительства планеты:^«...Сегодня на пресс-конференции после встречи Ан Гияда и Плуда Врожера были опровергнуты слухи о гибели космического патрульного крейсера «Артанг Великий».^Напоминаем, речь идёт о недавнем событии, после которого заговорили о некоем вторгшемся в пределы Охраняемой Зоны агенте ЦСЧК, который якобы уничтожил корабль. Министр Сил Обороны и Поддержки Экспансии Плуд Врожер пригласил на конференцию пилота «Артанга Великого».^Пилот подтвердил, что распускаемые слухи — провокация руководства ЦСЧК. Руководство СОПЭ в жёсткой форме заявило протест ЦСЧК, требуя неукоснительного соблюдения Лейвского Договора о Мире 3551 года».';
        end
        if s._index == 2 then
            return 'Голографическая мультисистема «Фантом» позволит Вам побывать на любой обитаемой и необитаемой планете вселенной. Купите и Вы не пожалеете! Компания «Голос» ждёт ВАС!';
        end
        if s._index == 3 then
            return 'Банк «Золотая Галактика»: у нас всё в порядке. А у Вас?';
        end
        if s._index == 4 then
            return 'Лучшие биопирожки «Смол-Натурал» от фирмы «У Фрода на обочине» — мы накормим всю вселенную!';
        end
        if s._index == 5 then
            return 'Чёрный коньяк «Фонтаны Раккслы» — это то, что Вам нужно в жаркий вечер после утомительной работы. Попробуйте наши фонтаны. Компания «АлкоМетео».';
        end
        if s._index == 6 then
            return '«Смол-Натурал» — компания «У Фрода на обочине» предлагает воздушные пирожки! Оболочка сделана из лучших злаковых растений, собранных на полях Ретоуна, начинки любые — от мясных из мяса птицы Кошера, до сладких из мякоти великолепных плодов гигантских Пальских деревьев. Фирма «У Фрода на обочине» — мы накормим всю вселенную!';
        end
        if s._index == 7 then
            return 'Только для настоящих мужчин — гражданское оружие самообороны — плазменный электрошок с синхроимпульсным излучателем! И Вы никого не боитесь! Разрешено министерством СОПЭ. Фирма «Армед Ган».';
        end
        if s._index == 8 then
            return '«Дорогая, как я выгляжу?» — спросил ОН. «Отвратительно, дорогой,» — ответила ОНА. Вы НИКОГДА не услышите таких слов, если будете пользоваться микролазерной вибробритвой «СимплТрэк». «Теперь у меня никаких проблем!» Фирма «УльтраЛав».';
        end
        if s._index == 9 then
            return 'Новости культуры. Сегодня в Центре Культуры прошла конференция, посвящённая творчеству выдающегося художника и математика прошлого тысячелетия — легендарного Грет Кана. Как известно, большую часть своих картин он посвятил уникальному природному явлению — Темпору Раккслы.^В его картинах отражены такие вечные категории как Пространство и Время. На конференции присутствовал мэр Пульсара — Ан Гияд.';
        end
        if s._index == 10 then
            return 'Из последних сообщений. На Раккслу прибыл корабль «ФФФ» с делегацией дружественной нам цивилизации клоредов. На борту «ФФФ» сорок пять дипломатов. На переговорах в Великой Башне будут обсуждаться дальнейшие пути развития сотрудничества.';
        end
        if s._index == 11 then
            return 'Фирма «Сторож» предлагает уникальные сейфы для хранения ценных бумаг и денег. Выполненные из особо прочных материалов и оформленные в старинном стиле, наши сейфы помогут Вам сохранить Тайну.';
        end
        if s._index == 12 then
            return 'Ценителям естественной пищи — Заячьи Ягоды. Специалисты рекомендуют диету из Заячьих Ягод от всех болезней.';
        end
        if s._index == 13 then
            return '«Таран-Пресс» сообщает. Продолжаются строительные работы в северо-западном районе города. В связи с этим будет перекрыто движение по прилегающим к району трассам. Управление Движения СОПЭ предлагает пользоваться объездными путями.';
        end
        if s._index == 14 then
            return 'Фирма «Сторож» предлагает многофункциональные настенные часы «ЭкстраТайм». Отличительная особенность этой модели — в огромном наборе дополнительных возможностей. Наши часы умеют ВСЁ!';
        end
        if s._index == 15 then
            return 'Пока Ваш дом — проходной двор, в наш сейф не залезет вор!!! Фирма «Сторож». Сохрани себя сам!';
        end
    end,
}:disable();


tiseller = iobj {
    nam = 'тисейлер',
    _to_taran = true,
    dsc = function(s)
        return 'Под табло стояли будки {тисейлеров} — автоматов по продаже билетов.';
    end,
    exam = function(s)
        r_213._tiseller_img = true;
        return 'Обыкновенный интеллектуальный автомат по продаже билетов.';
    end,
    obj = { 'coin_receiver' },
    useit = function (s)
        coin_receiver:enable();
        return goto (tiseller_dlg);
    end,
};


coin_receiver = iobj {
    nam = 'монетоприёмник',
    dsc = function(s)
        return 'В каждом тисейлере располагался {монетоприёмник}.';
    end,
    exam = function(s)
        r_213._tiseller_img = true;
        return 'Обычный монетоприёмник.';
    end,
    used = function (s, w)
        if w == credit_card then
            return goto (r_213_end_1);
        end
        if w == coin then
            Drop (coin);
            objs():del(coin);
            inv():add(sky_kiss_ticket);
            r_213._tiseller_img = true;
            sky_kiss_ticket._to_taran = tiseller._to_taran;
            return 'Я положил деньги в монетоприёмник и через некоторое время из прорези автомата выполз билет.';
        end
    end,
}:disable();


sky_kiss_ticket = iobj {
    nam = 'билет',
    _to_taran = true,
    dsc = function(s)
        if s._to_taran then
            return 'Я вижу {билет} до Тарана.';
        else
            return 'Я вижу {билет} до Аркана.';
        end
    end,
    exam = function(s)
        if s._to_taran then
            return 'Компания «Воздушный поцелуй». На любой рейс: Пульсар — Таран.';
        else
            return 'Компания «Воздушный поцелуй». На любой рейс: Пульсар — Аркан.';
        end

    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Меня интересуют только деньги и оружие, — сказал Прэг.', false;
        end
    end,
};


r_213_end_1 = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/213_tiseller_woman.png';
    end,
    enter = function (s)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я положил кредитку в монетоприёмник. Через несколько секунд женский голос произнёс: «Подождите секундочку, пожалуйста».';
    end,
    obj = { vway('1', '{Далее}', 'r_213_end_2') },
};


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


tiseller_dlg = dlg{
    nam = 'Тисейлер',
    pic = function(s)
        return 'images/213_tiseller_woman.png';
    end,
    enter = function (s, t)
        me():disable_all();
        r_213._tiseller_img = true;
    end,
    dsc = 'Я прикоснулся к экрану. Сработали чувствительные сенсоры и на экране появилось лицо миловидной девушки.^«Здравствуйте! Компания «Воздушный поцелуй» приветствует Вас! Какой рейс желаете заказать?» — произнесла она и на некоторое время застыла в ожидании ответа.',
    obj = {
            [1] = phr('Мне нужен один билет до Тарана.', '— Вы выбрали рейс до Тарана. Оплатите билет, пожалуйста.', [[tiseller._to_taran = true; pon(1); back();]]),
            [2] = phr('Мне нужен один билет до Аркана.', '— Вы выбрали рейс до Аркана. Оплатите билет, пожалуйста.', [[tiseller._to_taran = false; pon(2); back();]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};




roboturnstile = iobj {
    nam = 'роботурникет',
    dsc = function(s)
        return 'У выхода к взлётным площадкам стояли {роботурникеты}.';
    end,
    exam = function(s)
        r_213._tiseller_img = false;
        return 'Индивидуальный автоматизированный пропускной пункт.';
    end,
    used = function (s, w)
        if w == sky_kiss_ticket then
            if sky_kiss_ticket._to_taran then
                return goto (r_213_lucky_end_1t);
            else
                return goto (r_213_lucky_end_1a);
            end
        end
    end,
};


r_213_lucky_end_1a = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/213.png';
    end,
    enter = function (s, from)
        set_music('music/01_intro.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я вставил билет в щель приёмника и встал на самодвижущуюся дорожку, которая буквально за минуту доставила меня на взлётную площадку, к одному из аэро.';
    end,
    obj = { vway('1', '{Далее}', 'r_213_lucky_end_2a') },
};


r_213_lucky_end_2a = room {
    nam = '...',
    pic = function (s)
        return 'images/213_aero.png';
    end,
    dsc = function (s)
        return 'Я прошёл внутрь и сел в первое свободное кресло. Кроме меня в салоне находилось ещё пять человек. Через несколько минут мы взлетели. Испытывая знакомые с детства лёгкие перегрузки, я вдруг подумал, что впервые за последнее время нахожусь высоко в небе.';
    end,
    obj = { vway('1', '{Далее}', 'r_213_lucky_end_3a') },
};


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


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


r_213_lucky_end_1t = room {
    nam = 'Аэропорт',
    pic = function (s)
        return 'images/213.png';
    end,
    enter = function (s, from)
        inv():del(sky_kiss_ticket);
        set_music('music/16_escape_2.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я вставил билет в щель приёмника и встал на самодвижущуюся дорожку, которая буквально за минуту доставила меня на взлётную площадку, к одному из аэро.';
    end,
    obj = { vway('1', '{Далее}', 'r_213_lucky_end_2t') },
};


r_213_lucky_end_2t = room {
    nam = '...',
    pic = function (s)
        return 'images/213_aero.png';
    end,
    dsc = function (s)
        return 'Я прошёл внутрь и сел в первое свободное кресло. Кроме меня в салоне находилось ещё пять человек. Через несколько минут мы взлетели. Испытывая знакомые с детства лёгкие перегрузки, я вдруг подумал, что впервые за последнее время нахожусь высоко в небе.';
    end,
    obj = { vway('1', '{Далее}', 'r_327') },
    exit = function (s)
        me():enable_all();
    end,
};


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

r_221 = room {
    nam = 'Набережная',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
--    _beginning = true,
    north = 'r_231',
    east = 'r_222',
    south = nil,
    west = nil,
--    way = { vroom ('Север', 'r_231'), vroom ('Восток', 'r_222') },
    pic = function (s)
        return 'images/221.png';
    end,
    enter = function (s, from)
        set_music('music/21_poulsar_city.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_231 or from == r_222 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 3 then
                s._visit = 3;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я шёл на юг по набережной вдоль берега моря. Мегаполис Пульсар был большим современным городом. На востоке я видел огромные небоскрёбы, которые закрывали половину неба. На западе распростёрлась морская гладь.^Как ни странно, на набережной практически никого не было.';
        end
        if s._visit == 2 then
            return 'Я стоял на набережной. На западе, до самого горизонта, простиралось море. На севере я видел постройки морского порта. На востоке, сразу за широкой дорогой, по которой проносились автокрафты на воздушных подушках, возвышались гигантские небоскрёбы.';
        end
        if s._visit == 3 then
            return 'Эта набережная была мне знакома. На севере я видел постройки морского порта, на востоке — великолепные современные небоскрёбы.';
        end
    end,
    obj = { 'pavillon' },
--    way = { vroom ('Север', 'r_231'), vroom ('Восток', 'r_222') },
    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_231 or to == r_222 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


pavillon = iobj {
    nam = 'беседка',
    _examined = 0,
    dsc = function(s)
        return 'На набережной стояла небольшая {беседка}.';
    end,
    exam = function(s)
        trash_heap:enable();
        return 'Небольшая беседка из белого камня. Внутри по периметру — каменные скамейки. Под скамейками большие кучи мусора.';
    end,
    obj = { 'trash_heap' },
};


trash_heap = iobj {
    nam = 'куча мусора',
    _examined = 0,
    dsc = function(s)
        return 'Под скамейками беседки лежали большие {кучи мусора}.';
    end,
    exam = function(s)
        s._examined = s._examined + 1;
        if s._examined == 7 then
            s._examined = 6;
        end
        if s._examined == 1 then
            return 'Вероятно что здесь недавно здорово отдохнули какие-то некультурные личности. Под скамейками разбросаны кучи пробок, огрызков, очистков и пустые банки.';
        end
        if s._examined == 2 then
            return 'Копаться в этой куче этого дерьма было неприятным занятием. Ничего, что могло бы заинтересовать меня.';
        end
        if s._examined == 3 then
            objs(r_221):add(porcupine_paper);
            return 'Я ещё раз с отвращением перевернул весь мусор и заметил в углу измятую бумажку с какой-то надписью.';
        end
        if s._examined == 4 then
            return 'Копаться в этой куче этого дерьма было неприятным занятием. Ничего, что могло бы заинтересовать меня.';
        end
        if s._examined == 5 then
            objs(r_221):add(wire);
            return 'Я ещё раз заглянул за скамейку и заметил в куче мусора причудливо изогнутый кусок проволоки.';
        end
        if s._examined == 6 then
            return 'Копаться в этой куче этого дерьма было неприятным занятием. Ничего, что могло бы заинтересовать меня.';
        end
    end,
}:disable();


porcupine_paper = iobj {
    nam = 'бумажка',
    _examined = false,
    dsc = function(s)
        return 'Я вижу измятую {бумажку}.';
    end,
    exam = function(s)
        s._examined = true;
        return 'Ценная именная пятитысячная облигация банка «Золотая галактика» на имя Браз Дика.';
    end,
    take = function (s)
        return 'Я взял бумажку.';
    end,
    drop = function (s)
        return 'Я бросил бумажку.';
    end,
    give = function (s, w)
        if w == praggs_leader then
            return '— Я достал из кармана мятую облигацию и протянул её главарю. Но тот не взял её, а лишь сказал: «Оставь себе — пригодится на природе. Ха-ха-ха».', false;
        end
        if w == porcupine then
            porcupine._happy = true;
            return goto (porcupine_happy);
        end
    end,
};


wire = iobj {
    nam = 'проволока',
--    _examined = 0,
    dsc = 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,
};


r_222 = room {
    nam = 'Центр города',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
--    _beginning = true,
    north = 'r_232',
    east = 'r_223',
    south = 'r_212',
    west = 'r_221',
    pic = function (s)
        if status._clock == NIGHT then
            return 'images/222_night.png';
        else
            return 'images/222_day.png';
        end
    end,
    enter = function (s, from)
        set_music('music/21_poulsar_city.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_221 or from == r_232 or from == r_223 or from == r_212 then
            s._rested = 0;
            s._just_enter = true;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я находился в центральной части города. Ориентироваться здесь было трудно: огромные небоскрёбы закрывали большую часть неба. По многоярусным автострадам неслись потоки автокрафтов. В воздухе с низким гулом изредка пролетали тяжёлые аэротрейлеры.';
        end
        if s._visit == 2 then
            return 'Центральный район города жил своей привычной суетливой жизнью. Высокие многоярусные автострады были заполнены потоком автокрафтов самых разных марок. Здесь было довольно душно и неуютно.';
        end
    end,
--    way = { vroom ('Запад', 'r_221'), vroom ('Север', 'r_232'), vroom ('Восток', 'r_223'), vroom ('Юг', 'r_212') },
    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_221 or to == r_232 or to == r_223 or to == r_212 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};



r_223 = room {
    nam = 'Жилой район',
    _visit = 0,
    _rested = 0,
    _from_north = false,
    north = 'r_233',
    east = nil,
    south = 'r_213',
    west = 'r_222',
    pic = function (s)
        if s._from_north then
            return 'images/223b.png';
        else
            return 'images/223a.png';
        end
    end,
    enter = function (s, from)
        set_music('music/21_poulsar_city.ogg');
        if from == r_233 or from == r_213 or from == r_222 then
            s._rested = 0;
            s._visit = s._visit + 1;
            if s._visit > 2 then
                s._visit = 2;
            end
        end
        if from == r_233 then
            s._from_north = true;
        else
            s._from_north = false;
        end
    end,
    dsc = function (s)
        if s._visit == 1 then
            return 'Я зашёл в обыкновенный жилой район, который находился на восточной окраине города.^С востока к району прилегали высокие горы. На юге, в долине реки я видел взлётные площадки аэропорта. На западе виднелись коробки гигантских небоскрёбов. На север вела широкая многоярусная магистраль.';
        end
        if s._visit == 2 then
            return 'Этот район вплотную прилегал к горам, которые находились на востоке. Обыкновенный жилой район обыкновенного города, построенного человеческими колонистами ещё на заре освоения Дальнего Космоса.';
        end
    end,
--    way = { vroom ('Запад', 'r_222'), vroom ('Север', 'r_233'), vroom ('Юг', 'r_213') },
    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_222 or to == r_233 or to == r_213 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};




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

r_231 = room {
    nam = 'Парк',
    _visit = 0,
    _rested = 0,
    north = 'r_241',
    east = 'r_232',
    south = 'r_221',
    west = nil,
    pic = function (s)
        if seen (r_231_man) then
            return 'images/231_man.png';
        else
            return 'images/231_nobody.png';
        end
    end,
    enter = function (s, from)
        set_music('music/19_city_park.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
            return 'Вскоре я оказался в большом городском парке, расположенном на пологом холме за зданием порта. Здесь было не многолюдно.';
        end
        if s._visit == 2 then
            return 'Я находился в большом зелёном парке. Хотя парк и не казался заброшенным, я здесь не встретил ни души.';
        end
        if s._visit == 3 then
            return 'Я снова вернулся в парк.';
        end
    end,
    rest = function (s)
        if r_232_bar._captain_left_turns > 0 then
            r_232_bar._captain_left_turns = r_232_bar._captain_left_turns - 1;
        end
        if seen (r_231_man) then
            objs(r_231):del(r_231_man);
        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_241'), vroom ('Восток', 'r_232'), vroom ('Юг', 'r_221') },
    obj = { 'r_231_man' },
    exit = function (s, to)
        if to == r_232 or to == r_221 then
            if r_232_bar._captain_left_turns > 0 then
                r_232_bar._captain_left_turns = r_232_bar._captain_left_turns - 1;
            end
        end
        if seen (r_231_man) then
            objs(r_231):del(r_231_man);
        end
        if to == r_241 or to == r_232 or to == r_221 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_231_man = iobj {
    nam = 'человек',
    dsc = function(s)
        return 'Около старого фонтана я заметил {человека}, который сидел на лавочке и читал газету.';
    end,
    exam = function(s)
        return 'Похоже, что этот толстяк — коренной житель города.';
    end,
    talk = function (s)
        if status._biomask then
            return goto (r_231_man_dlg_on);
        else
            return goto (r_231_man_dlg_off);
        end
    end,
};


r_231_man_dlg_on = dlg{
    nam = 'Парк',
    pic = function(s)
        return 'images/231_man.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('Уважаемый, не подскажете как мне добраться до Тарана?', 'Толстяк долго пытался что-то из себя выжать, но так ничего и не сказал. В конце концов он поднялся со скамейки и чуть ли не бегом помчался прочь.', [[objs(r_231):del(r_231_man); poff(1, 2); me():enable_all();]]),
            [2] = phr('Здравствуйте, мне нужно с Вами поговорить (произнести на языке артангов).', '— Только не убивайте, я прошу Вас! — завопил толстяк на ломаном языке артангов. — Я сделаю всё, что Вы скажете.', [[poff(1, 2); return goto (r_231_man_dlg_on_2);]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_231_man_dlg_on_2 = dlg{
    nam = 'Парк',
    pic = function(s)
        return 'images/231_man.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('А вот это Вы зря — я же ничего не собирался с Вами делать (произнести на языке артангов).', '— Тогда я пойду, ладно? — с этими словами толстяк выскочил и, с неестественной полным людям скоростью, помчался прочь.', [[objs(r_231):del(r_231_man); poff(1, 2); me():enable_all(); back ();]]),
            [2] = phr('Тебя, свинья, никто не просит на меня работать!!! Как мне добраться до Тарана?!', 'Я ещё только договаривал эту фразу, а запуганный толстяк уже мчался куда-то в сторону порта. Через несколько секунд он скрылся из виду.', [[objs(r_231):del(r_231_man); poff(1, 2); me():enable_all(); back ();]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_231_man_dlg_off = dlg{
    nam = 'Парк',
    pic = function(s)
        return 'images/231_man.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('Уважаемый, не подскажете как мне добраться до Тарана?', '— Лучше на аэро. Конечно, можно и пешком или на автокрафте, но это гораздо дольше. Если полетите на аэро, то Вам нужно идти в ту сторону. — Он показал рукой на юго-восток. — Там аэропорт...', [[poff(1); return goto (r_231_man_dlg_off_2);]]),
--            [2] = phr('Здравствуйте, мне нужно с Вами поговорить (произнести на языке артангов).', '', [[pon(2);]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_231_man_dlg_off_2 = dlg{
    nam = 'Парк',
    pic = function(s)
        return 'images/231_man.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    obj = {
            [1] = phr('Спасибо.', '— Не за что. Ну ладно, засиделся я здесь. Мне пора. — С этими словами мой собеседник поднялся и направился в сторону морского порта.', [[objs(r_231):del(r_231_man); poff(1, 2); me():enable_all(); back ();]]),
            [2] = phr('А если я пойду пешком?', '— Тогда Вам туда, — мой собеседник махнул рукой на восток, поднялся и, попрощавшись, направился в сторону морского порта.', [[objs(r_231):del(r_231_man); poff(1, 2); me():enable_all(); back ();]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


r_232 = room {
    nam = 'Улица',
    _visit = 0,
    _rested = 0,
--    _just_enter = true,
--    _kloreds_dead = false,
--    _kloreds_killed = false,
    _from_bar = false;
    north = nil,
    east = 'r_233',
    south = 'r_222',
    west = 'r_231',
    pic = function (s)
        if seen (kloreds) then
            if kloreds._dead then
                return 'images/232_kloreds_dead.png';
            else
                return 'images/232_kloreds.png';
            end
        else
            return 'images/232.png';
        end
    end,
    enter = function (s, from)
        set_music('music/20_blues.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_231 or from == r_222 or from == r_233 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_232_bar or from == r_232_kloreds_killed_good then
            s._from_bar = true;
        else
            s._from_bar = false;
        end
    end,
    dsc = function (s)
        if s._from_bar then
            if seen (kloreds) then
                return 'Я вышел из бара.';
            else
                return 'Я вышел из бара. Поблизости никого не было.';
            end
        end
        if s._visit == 1 then
            return 'Я прошёл по длинной зелёной аллее и оказался возле невысокого здания, утопающего в неоновых вывесках.';
        end
        if s._visit == 2 then
            return 'Я стоял возле знакомого бара. Поблизости никого не было.';
        end
        if s._visit == 3 then
            objs():add(kloreds);
            return 'Через несколько часов я подошёл к большому бару. Возле входа в бар стояли два подвыпивших клореда, судя по всему, пилоты. Они что-то живо обсуждали, не обращая на меня внимания.';
        end
        if s._visit == 4 then
            if seen (kloreds) then
                if kloreds._dead then
                    return 'Я находился около большого бара. Возле входа в бар лежали трупы клоредов.';
                else
                    return 'Через несколько часов я подошёл к большому бару. Возле входа в бар стояли два подвыпивших клореда, судя по всему, пилоты. Они что-то живо обсуждали, не обращая на меня внимания.';
                end
            else
                return 'Через несколько часов я подошёл к большому бару.';
            end
        end
    end,
--    way = { vroom ('Запад', 'r_231'), vroom ('Юг', 'r_222'), vroom ('Восток', 'r_233') },
    obj = { 'bar_door' },
    rest = function (s)
        if seen (kloreds) and kloreds._dead then
            if kloreds._just_killed then
                return goto (r_232_kloreds_killed_bad);
            else
                return goto (r_232_kloreds_killed_good);
            end
        end
--        if kloreds._just_killed then
--            return goto (r_232_kloreds_killed);
--        end
        if s._rested == 0 then
            s._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Перед баром находилось небольшое пустующее кафе под открытым небом. Я присел за пустой столик и немного отдохнул.';
        end

        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Перед баром находилось небольшое пустующее кафе под открытым небом. Я присел за пустой столик и немного отдохнул.';
            end
        end
    end,
    exit = function (s, to)
        if not (to == r_232_bar) then
            r_232_bar._captain_left_turns = 0;
        end
--        if to == r_232_kloreds_killed or to == r_232_kloreds_killed_search then
        if to == r_232_kloreds_killed_search then
            return;
        end
        if kloreds._just_killed then
            return goto (r_232_kloreds_killed_search);
        end
        if to == r_231 or to == r_222 or to == r_233 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


r_232_bar = room {
    nam = 'Бар',
--    _visit = 0,
--    _rested = 0,
--    _captain_in_bar = true,
    _captain_left_turns = 3;
--    _just_enter = true,
--    _kloreds_dead = false,
--    _kloreds_killed = false,
    _from_street = true,
    pic = function (s)
        return 'images/232_bar.png';
    end,
    enter = function (s, from)
--        set_music('music/20-Блюз.ogg');
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if s._captain_left_turns == 1 then
            s._captain_left_turns = 0;
--            s._captain_in_bar = false;
            objs(r_232_bar):add(captain_in_bar);
        end
        if from == r_232 then
            s._from_street = true;
        else
            s._from_street = false;
        end
    end,
    dsc = function (s)
--        return 'L='..s._captain_left_turns;
        if s._from_street then
            if seen (captain_in_bar) then
                return 'Я вошёл внутрь. Народу здесь было немного. Играла тихая музыка, все мирно отдыхали. За одним из столиков я увидел капитана того самого глайдера, на котором я приплыл в Пульсар.';
            else
                return 'Я вошёл внутрь. Народу здесь было немного. Играла тихая музыка, все мирно отдыхали.';
            end
        else
            if seen (captain_in_bar) then
                return 'Народу в баре было немного. Играла тихая музыка, все мирно отдыхали. За одним из столиков я сидел капитан глайдера, на котором я приплыл в Пульсар.';
            else
                return 'Народу в баре было немного. Играла тихая музыка, все мирно отдыхали.';
            end
        end
    end,
    rest = function (s)
        if kloreds._just_killed then
            return goto (r_232_kloreds_killed);
        end
        if kloreds._dead then
            objs(r_232):del(kloreds);
        end
        if r_232._rested == 0 then
            r_232._rested = 1;
            status_change (2, 1, 1, 0, 0);
            return 'Я немного посидел в баре и послушал тихую приятную музыку.';
        end
        if r_232._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_232_kloreds_killed or to == r_232_kloreds_killed_search then
--        if to == r_231 or to == r_222 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
    end,
    obj = { 'r_232_bar_door' },
};


r_232_bar_door = iobj {
    nam = 'дверь бара',
    dsc = function(s)
        return 'Я вижу {дверь бара}.';
    end,
    exam = function(s)
        return 'Дверь из особо прочных кварцелитов.';
    end,
    useit = function(s)
        return goto (r_232);
    end,
};


captain_in_bar = iobj {
    nam = 'капитан',
--    _examined = 0,
    dsc = function(s)
        return 'За одним из столиков я увидел {капитана} того самого глайдера, на котором я приплыл в Пульсар.';
    end,
    exam = function(s)
        return 'Капитану было не более сорока. Он выглядел опытным, закалённым в передрягах морским волком.';
    end,
    used = function (s, w)
        if w == neurowhip then
            return goto (r_232_bar_captain_end_1);
        end
    end,
    talk = function (s)
       if status._biomask then
           return goto (captain_in_bar_dlg_on_1);
       else
           return goto (captain_in_bar_dlg_off_1);
       end
    end,
};


captain_in_bar_dlg_off_1 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я прошёл через зал и сел за столик капитана.';
    end,
    obj = {
            [1] = phr('Я очень хотел найти Вас, нам нужно поговорить.', '— Извините, я Вас не знаю. — сказал капитан, посмотрел на часы, поднялся из-за стола и вышел из бара.', [[objs(r_232_bar):del(captain_in_bar); poff(1, 2); back();]]),
            [2] = phr('Приветствую, как дела?', '— Спасибо, хорошо, дружище, — ответил капитан. Он встал из-за стола и направился к выходу. Я остался один.', [[objs(r_232_bar):del(captain_in_bar); poff(1, 2); back();]]),
          },
    exit = function (s, t)
        me():enable_all();
    end,
};


captain_in_bar_dlg_on_1 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    enter = function (s, t)
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я прошёл через зал и сел за столик капитана.';
    end,
    obj = {
            [1] = phr('Я очень хотел найти Вас, нам нужно поговорить.', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_21);]]),
            [2] = phr('Приветствую, как дела? (произнести на языке артангов).', '— Нам не о чем разговаривать. — Капитан поморщился, встал из-за стола, пересёк зал и вышел на улицу.', [[objs(r_232_bar):del(captain_in_bar); poff(1, 2); me():enable_all(); return goto (r_232_bar);]]),
          },
};


captain_in_bar_dlg_on_21 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    dsc = 'Капитан некоторое время молчал, разглядывая моё «артанговское» лицо. Поняв в чём дело, он посмотрел по сторонам и, наклонившись ко мне, сказал: «Я, конечно, извиняюсь, но, по-моему, Вы — тот, кого искали артанги на острове?';
    obj = {
            [1] = phr('Нет.', '— Тогда извините. До свидания. — Сказал капитан, поднялся из-за стола и вышел из бара.', [[objs(r_232_bar):del(captain_in_bar); poff(1, 2); me():enable_all(); return goto (r_232_bar);]]),
            [2] = phr('Да.', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_32);]]),
          },
};


captain_in_bar_dlg_on_32 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    dsc = '— Я чувствовал, что Вы — наш человек. Ходят слухи, что Вы уничтожили патруль Службы Обороны артангов, — тихо произнёс капитан. — Но... Постойте, у Вас ничего не пропало, когда мы были в море?';
    obj = {
            [1] = phr('Нет, ничего.', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_41);]]),
            [2] = phr('Да, одна важная вещь.', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_42);]]),
          },
};


captain_in_bar_dlg_on_41 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    dsc = 'Странно, я сам лично видел, как один из пассажиров вытаскивал у Вас из поясной сумки какой-то небольшой чёрный футляр. Вы ничего не заметили, а я не стал говорить. Сами понимаете — артанги это... — он не договорил.';
    obj = {
            [1] = phr('Кто этот человек? Вы запомнили его?', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_51);]]),
          },
};


captain_in_bar_dlg_on_42 = dlg{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    dsc = 'Я видел, как один из пассажиров вытащил у Вас из поясной сумки какой-то небольшой чёрный футляр. Вы даже ничего не заметили. А я, к сожалению, не был уверен, что Вы не артанг.';
    obj = {
            [1] = phr('Кто этот человек? Вы запомнили его?', nil, [[poff(1, 2); return goto (captain_in_bar_dlg_on_51);]]),
          },
};


captain_in_bar_dlg_on_51 = room{
    nam = 'Бар',
    pic = function(s)
        return 'images/232_bar_captain.png';
    end,
    dsc = '— Не очень хорошо. Судя по одежде и внешности — этот человек местный. Конечно, в таком большом городе найти его практически невозможно, но у меня кое-что есть для Вас. — Капитан хитро подминул и вытащил из нагрудного кармана пластиковый ключ.^— Это я нашёл в его каюте. Не знаю от чего этот ключик, но, может быть, он пригодится Вам. — Капитан отдал ключ мне.^Мы плотно поели и мой собеседник, посмотрев на часы, встал из-за стола.^— Ну, мне пора. Желаю удачи. — Сказал капитан и вышел из бара.';
    obj = { vway('1', '{Далее}', 'r_232_bar') },
    exit = function (s, t)
        objs(r_232_bar):del(captain_in_bar);
        inv():add(electronic_key);
        me():enable_all();
        status_change (7, 4, 3, 0, 0); -- NB change this!
    end,
};


electronic_key = iobj {
    nam = 'электр. ключ',
--    dsc = 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,
};



r_232_bar_captain_end_1 = room {
    nam = 'Бар',
    pic = function (s)
        return 'images/232_bar.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Меня раздражал этот артанговский прихвостень и я решил расправиться с ним... Через секунду капитан лежал на полу.';
    end,
    obj = { vway('1', '{Далее}', 'r_232_bar_captain_end_2') },
};


r_232_bar_captain_end_2 = room {
    nam = 'Бар',
    pic = function (s)
        return 'images/artangs.png';
    end,
    dsc = function (s)
        return 'Однако кто-то вызвал охрану, и через минуту меня арестовали...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};



r_232_bar_mask_off_1 = room {
    nam = 'Бар',
    pic = function (s)
        return 'images/232_bar.png';
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я быстро снял маску и огляделся. Вокруг всё было тихо.';
    end,
    obj = { vway('1', '{Далее}', 'r_232_bar_mask_off_2') },
};


r_232_bar_mask_off_2 = room {
    nam = 'Бар',
    pic = function (s)
        return 'images/artangs.png';
    end,
    dsc = function (s)
        return 'Однако, похоже кто-то в баре заметил моё перевоплощение и вызвал охрану. Через несколько минут меня арестовали...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_232_biomask_off_end = room {
    nam = 'Улица',
    pic = function (s)
        if seen (kloreds) then
            if r_232._kloreds_dead then
                return 'images/232_kloreds_dead.png';
            else
                return 'images/232_kloreds.png';
            end
        else
            return 'images/232.png';
        end
    end,
    enter = function (s, from)
        set_music('music/02_invasion.ogg');
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я быстро снял маску и огляделся вокруг. По-моему, никто не заметил моего перевоплощения.';
    end,
    obj = { vway('1', '{Далее}', 'r_232_biomask_off_end_2') },
};


r_232_biomask_off_end_2 = room {
    nam = 'Улица',
    pic = function (s)
        return 'images/police.png';
    end,
    dsc = function (s)
        return 'Внезапно за углом завизжала сирена. Из подлетевшего автокрафта выскочили полицейские-артанги и без объяснения бросили меня в свою машину...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
    exit = function (s, to)
        me():enable_all();
    end,
};


r_232_kloreds_killed_bad = room {
    nam = 'Улица',
    pic = function (s)
        return 'images/police.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_232_kloreds_killed_good = room {
    nam = 'Улица',
    pic = function (s)
        return 'images/police.png';
    end,
    enter = function (s)
        objs(r_232):del(kloreds);
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я вошёл в небольшое пустующее кафе, находившееся рядом с баром и сел за первый попавшийся столик. Пока я отдыхал, к бару подъехал полицейский автокрафт. Из него вышли артанги и, погрузив трупы клоредов в машину, уехали. На меня артанги не обратили никакого внимания.';
    end,
    obj = { vway('1', '{Далее}', 'r_232') },
    exit = function (s, to)
        me():enable_all();
    end,
};



r_232_kloreds_killed_search = room {
    nam = 'Улица',
    pic = function (s)
        return 'images/police.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,
};


kloreds = iobj {
    nam = 'клореды',
    _dead = false,
    _just_killed = false,
    _searched = false,
--    dsc = function(s)
--        if not s._dead then
--            return 'Возле входа в бар стояли два подвыпивших {клореда}, судя по всему, пилоты. Они что-то живо обсуждали, не обращая на меня внимания.';
--        else
--            return 'Возле входа в бар лежали трупы двух {клоредов}.';
--        end
--    end,
    exam = function(s)
        if not s._dead then
            return 'Эти двое были типичными представителями расы клоредов. Цивилизация насекомообразных клоредов одна из первых перешла на сторону артангов.';
        else
            if status._biomask then
                if s._searched then
                    return 'Я обыскал карманы убитых, но не нашёл ничего интересного.';
                else
                    s._searched = true;
                    coin:enable();
                    return 'У меня было всего несколько секунд на то, чтобы осмотреть трупы. В кармане у одного из убитых я обнаружил трёхкредовую монету.';
                end
            else
                return goto (r_232_kloreds_killed_search);
            end
        end
    end,
    talk = function(s)
        return 'Кажется, они меня не понимают.';
    end,
    used = function (s, w)
        if w == neurowhip then
            s._dead = true;
            s._just_killed = true;
            return 'Улучив момент, я выхватил нейрохлыст и открыл огонь по клоредам. Через секунду с несчастными тварями было покончено.';
        end
    end,
    obj = { 'coin' },
};


coin = iobj {
    nam = 'монета',
    dsc = 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
            inv():del(coin);
            return 'Прэг удовлетворённо хмыкнул, схватил монету и, внимательно осмотрев её, сунул себе в карман. «Ещё деньги есть?» — спросил громила сиплым голосом.';
        end
    end,
}:disable();


bar_door = iobj {
    nam = 'дверь бара',
    dsc = function(s)
        return 'Я вижу {дверь бара}.';
    end,
    exam = function(s)
        return 'Дверь из особо прочных кварцелитов.';
    end,
    useit = function(s)
        return goto (r_232_bar);
    end,
};



r_233 = room {
    nam = 'Северная окраина',
    _visit = 0,
    _rested = 0,
    _from_north = false,
    north = 'r_243',
    east = nil,
    south = 'r_223',
    west = 'r_232',
    pic = function (s)
        if not s._from_north then
            return 'images/233a.png';
        else
            return 'images/233b.png';
        end
    end,
    enter = function (s, from)
        set_music('music/20_blues.ogg');
        if from == r_243 then
            s._from_north = true;
        else
            s._from_north = false;
        end
        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
            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 (-2, -1, -1, 0, 0);
                return 'Я нашёл свободную скамейку, прилёг и немного вздремнул. Проснулся я лишь через несколько часов.';
            end
        end
    end,
--    way = { vroom ('Север', 'r_243'), vroom ('Запад', 'r_232'), vroom ('Юг', 'r_223') },
    exit = function (s, to)
        if to == r_243 or to == r_232 or to == r_223 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


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

r_241 = room {
    nam = 'Порт',
    _visit = 0,
    _rested = 0,
    _just_enter = true,
--    _beginning = true,
    north = nil,
    east = nil,
    south = 'r_231',
    west = nil,
    pic = function (s)
        return 'images/241.png';
    end,
    enter = function (s, from)
        set_music('music/18_harbour.ogg');
        inv():del(black_case);
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
        if from == r_200 or from == r_231 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
            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,
    obj = { 'r_241_glider', 'r_241_port', 'r_241_doors' },
--    way = { vroom ('Юг', 'r_231') },
    rest = function (s)
        if s._rested == 0 then
            objs(r_241):del(r_241_glider);
            s._rested = 1;
            status_change (-18, -12, -10, 0, 0);
            if status._health == 0 then
                status_change (1, 0, 0, 0, 0);
            end
            return 'Я разместился на газоне перед входом в зал ожидания. Сколько прошло времени я не знаю, но проснулся я от того, что меня довольно грубо тряс за плечо артанг-полицейский.^«Ты, вставай! Здесь нельзя лежать!» — сказал он и чувствительно ударил меня по голове. Тут его кто-то окликнул, и он отошёл в сторону.';
        end
        if s._rested == 1 then
            return goto (r_241_rest_end);
        end
    end,
    exit = function (s, to)
        if to == r_231 then
            if r_232_bar._captain_left_turns > 0 then
                r_232_bar._captain_left_turns = r_232_bar._captain_left_turns - 1;
            end
            if seen (r_241_glider) then
                objs(r_241):del(r_241_glider);
            end
            r_241_waiting_room._rested = 0;
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};


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


r_241_glider = iobj {
    nam = 'глайдер',
    _examined = false,
    dsc = function(s)
        return 'В порту стоит {глайдер} на котором я прибыл в Пульсар.';
    end,
    exam = function(s)
        if not s._examined then
            s._examined = true;
            return 'Пассажиры уже покинули глайдер. Последним вышел капитан и подошёл к служащему порта. «Отгоняйте глайдер в док», — сказал ему капитан.^После чего добавил: «А я с сегодняшнего дня в отпуске. Только отдохну немного в своём любимом баре и всё. Завтра лечу отдыхать на Пальские спутники». Капитан развернулся и пошёл к служебной стоянке автокрафтов.';
        else
            return 'Глайдер, на котором я прибыл в Пульсар.';
        end
    end,
};


r_241_port = iobj {
    nam = 'здание порта',
    dsc = function(s)
        return 'Современное {здание порта} стоит напротив причала.';
    end,
    exam = function(s)
        r_241_doors:enable();
        return 'Большой современный порт. Сквозь стеклянные двери видна обычная пассажирская суета.';
    end,
};


r_241_doors = iobj {
    nam = 'двери',
    dsc = function(s)
        return 'Сквозь {стеклянные двери} здания порта видна обычная пассажирская суета.';
    end,
    exam = function(s)
        return 'Высокие стеклянные двери.';
    end,
    useit = function (s)
        return goto (r_241_waiting_room);
    end,
}:disable();


r_241_waiting_room = room {
    nam = 'Зал ожидания',
    _from_dream = false;
    pic = function (s)
        return 'images/241_w_room.png';
    end,
--    _visit = 0,
    _rested = 0,
    _seen_dream = false,
--    _just_enter = true,
--    _beginning = true,
    enter = function (s, from)
--        set_music('music/18-Порт.ogg');
--        inv():del(black_case);
--        if from == i101 then
--            s._beginning = true;
--        else
--            s._beginning = false;
--        end
--        if from == r_241 or from == r_241_dream_3 then
--            s._rested = 0;
--            s._just_enter = true;
--            s._visit = s._visit + 1;
--            if s._visit > 3 then
--                s._visit = 3;
--            end
--        end
        if from == r_241_dream_3 then
            s._from_dream = true;
        else
            s._from_dream = false;
        end
    end,
    dsc = function (s)
        if not s._from_dream then
            return 'Я вошёл в зал ожидания. Здесь было полно народу. Кроме людей я заметил нескольких представителей инопланетных рас. Никто не обращал на меня внимания.';
        else
            return 'Вокруг всё было по-прежнему: суетились пассажиры, важно прохаживались артанги-полицейские.';
        end
    end,
    obj = { 'r_241_room_doors' },
    rest = function (s)
        if r_232_bar._captain_left_turns > 0 then
            r_232_bar._captain_left_turns = r_232_bar._captain_left_turns - 1;
        end
        if s._rested == 0 then
            if s._seen_dream then
                s._rested = 1;
                status_change (2, 1, 1, 0, 0);
                return 'Я решил немного отдохнуть, нашёл свободное кресло и немного вздремнул. ';
            else
                objs(r_241):del(r_241_glider);
                s._rested = 1;
                s._seen_dream = true;
                status_change (2, 1, 1, 0, 0);
                return goto (r_241_dream_1);
            end
        end
        if s._rested == 1 then
            if status._health == 1 then
                health_finish._from = deref(here());
                return goto (health_finish);
            else
                status_change (-1, -1, -1, 0, 0);
                return 'Я решил немного отдохнуть, нашёл свободное кресло и немного вздремнул. ';
            end
        end
    end,
--    exit = function (s, to)
--        if to == r_231 then
--            health_finish._from = deref(here());
--            clock_next ();
--            status_change (-2, -1, -1, 0, 0);
--            return check_health();
--        end
--    end,
};


r_241_room_doors = iobj {
    nam = 'двери',
    dsc = function(s)
        return 'Сквозь {стеклянные двери} здания порта видна обычная пассажирская суета.';
    end,
    exam = function(s)
        return 'Высокие стеклянные двери.';
    end,
    useit = function (s)
        return goto (r_241);
    end,
};


r_241_dream_1 = room {
    nam = 'Зал ожидания',
    pic = function (s)
        return 'images/241_w_room.png';
    end,
    enter = function (s)
--        set_music('music/02-Вторжение.ogg');
        ACTION_TEXT = nil;
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я почувствовал, что страшно устал. Буквально свалившись в свободное мягкое кресло, я сразу же погрузился в глубокий сон...^Мне снилось, что я сижу за пультом истребителя «Сириус» и пытаюсь поймать в перекрестие прицела грузовой контейнер. Но пальцы плохо меня слушаются. В самый последний момент контейнер уплывает в сторону.';
    end,
    obj = { vway('1', '{Далее}', 'r_241_dream_2') },
};


r_241_dream_2 = room {
    nam = 'Зал ожидания',
    pic = function (s)
        return 'images/241_dream.png';
    end,
--    enter = function (s)
--        set_music('music/02-Вторжение.ogg');
--        ACTION_TEXT = nil;
--        me():disable_all();
--    end,
    dsc = function (s)
        return 'А рядом сидит мой отец и смеётся каким-то неприятным, демоническим смехом. Я поворачиваюсь к нему, чтобы что-то спросить, но он медленно растворяется в туманной пелене, заполнившей тесную кабину. Когда я снова смотрю на экран, то с ужасом вижу, что он пуст.';
    end,
    obj = { vway('1', '{Далее}', 'r_241_dream_3') },
};


r_241_dream_3 = room {
    nam = 'Зал ожидания',
    pic = function (s)
        return 'images/241_w_room.png';
    end,
--    enter = function (s)
--        set_music('music/02-Вторжение.ogg');
--        ACTION_TEXT = nil;
--        me():disable_all();
--    end,
    dsc = function (s)
        return 'Ледяные, колючие звёзды и пустота... Я проснулся в холодном поту.';
    end,
    obj = { vway('1', '{Далее}', 'r_241_waiting_room') },
    exit = function (s)
        me():enable_all();
    end,
};



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


r_243 = room {
    nam = 'КПП',
    _visit = 0,
    _rested = 0,
    north = nil,
    east = nil,
    south = 'r_233',
    west = nil,
    pic = function (s)
        return 'images/243.png';
    end,
    enter = function (s, from)
--        set_music('music/19-Городской парк.ogg');
        s._rested = 0;
        s._visit = s._visit + 1;
        if s._visit > 2 then
            s._visit = 1;
        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 (-2, -1, -1, 0, 0);
                return 'Расположившись на траве неподалёку от дороги, я немного вздремнул.';
            end
        end
    end,
--    way = { vroom ('Юг', 'r_233') },
    obj = { 'r_243_policeman' },
    exit = function (s, to)
        if to == r_233 then
            health_finish._from = deref(here());
            clock_next ();
            status_change (-2, -1, -1, 0, 0);
            return check_health();
        end
    end,
};

r_243_policeman = iobj {
    nam = 'полицейский',
    dsc = 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_243_end);
        end
    end,
};


r_243_end = room {
    nam = 'КПП',
    pic = function (s)
        return 'images/artangs.png';
    end,
    enter = function (s)
        set_music('music/02_invasion.ogg');
        ACTION_TEXT = nil;
        me():disable_all();
    end,
    dsc = function (s)
        return 'Я выхватил нейрохлыст и бросился к полицейскому. Тот среагировал быстро — волна узконаправленной гравитационной струи ударила мне прямо в лицо...';
    end,
    obj = { vway('1', '{Далее}', 'the_end') },
};
