Changeset - fd091a0ad8cd
[Not reviewed]
default
1 8 2
Silverwing - 5 years ago 2018-11-25 18:58:42

nleyyslanotrr - entry(partial)
10 files changed with 248 insertions and 1983 deletions:
0 comments (0 inline, 0 general)
atlantis_dyp.lua
Show inline comments
 
@@ -1194,11 +1194,11 @@ dyp_temple_navigation = dlg {
 
dyp_temple_cave_entrance = room {
 
    nam = "dyp_temple_cave_entrance";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Вы стоите у выхода из глубокой пещеры, расположенной неподалеку от храма Дипатреанотра. Перед вами длинный коридор, ведущий куда-то вглубь скалы. Вдалеке, в коридоре вы видите слабое свечение. ]];
 
    dsc = [[Вы стоите у выхода из глубокой пещеры, расположенной неподалеку от храма Дипатреанотра. Перед вами длинный коридор, ведущий куда-то в глубь скалы. Вдалеке, в коридоре вы видите слабое свечение. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("Выйти из пещеры", "dyp_temple_east");
 
        kh_vroom("Вглубь пещеры", "preview_unavailable_dypatreanotrr");
 
        kh_vroom("В глубь пещеры", "dyp_temple_cave_deep");
 
    };
 
};
 

	
 
@@ -1223,7 +1223,7 @@ dyp_temple_cave_main = room {
 
        "dyp_temple_cave_main_pedestal";
 
    };
 
    way = {
 
        kh_vroom("К выходу", dyp_temple_cave_deep);
 
        kh_vroom("К выходу", 'dyp_temple_cave_deep');
 
    };
 
}
 

	
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -1223,8 +1223,8 @@ iyh_temple_answer_hall_plaque = obj {
 
iyh_temple_descent_l = darkroom {
 
    nam = "Храм, спуск";
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. В темноте вы ничего не видите. ]];
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
        kh_vroom("Вверх", "iyh_temple_left_hall", 2);
 
        kh_vroom("Вниз", "iyh_temple_under_corridor_1", 1);
 
@@ -1235,8 +1235,8 @@ iyh_temple_descent_l = darkroom {
 
iyh_temple_descent_r = darkroom {
 
    nam = "Храм, спуск";
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. В темноте вы ничего не видите. ]];
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
        kh_vroom("Вверх", "iyh_temple_right_hall", 2);
 
        kh_vroom("Вниз", "iyh_temple_under_corridor_1", 1);
game_over.lua
Show inline comments
 
@@ -18,9 +18,11 @@ game_over_kraken = game_over("game_over_kraken", [[От сильных ударов корпус субмарины начал расходиться по швам. В помещения хлынула вода. Озверевший кракен продолжает хлестать Левиафан своими щупальцами. Наконец, чудовище хватает подлодку и отправляется вместе с ней в бездну. К этому времени на борту уже не осталось никого живого, кроме, быть может, навьяров. ]]);
 
 
game_over_za_fight = game_over("game_over_za_fight", [[Стражники навьяров -- опасные противники. Очередной удар копья проделывает дыру в вашем скафандре и он наполняется водой. Вскоре вы задыхаетесь. ]]);
 
 
game_over_za_learr = game_over("game_over_za_learr", [[Леарр пытается оттолкнуть вас от штурвала и остановить Левиафан. Вы делаете резкий поворот и субмарина кренится на бок. Леарр, не удержавшись на ногах, падает. Навьярка кричит в бессильной ярости, когда вы пролетаете над воротами Нлейисланотра. Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Еще через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
game_over_nley_learr = game_over("game_over_nley_learr", [[Леарр пытается оттолкнуть вас от штурвала и остановить Левиафан. Вы делаете резкий поворот и субмарина кренится на бок. Леарр, не удержавшись на ногах, падает. Навьярка кричит в бессильной ярости, когда вы пролетаете над воротами Нлейисланотра. Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Еще через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
 
game_over_za_anna = game_over("game_over_za_learr", [[Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Вы слышите едва различимый среди шума двигателей голос Анны: "Это была плохая идея". Через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
game_over_nley_anna = game_over("game_over_nley_anna", [[Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Вы слышите едва различимый среди шума двигателей голос Анны: "Это была плохая идея". Через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
 
game_over_nley_caught = game_over('game_over_nley_caught', [[Едва вы попадаете в поле зрения стражников Нлейисланотра, город оживает. Вы не успеваете понять, как оказываетесь окружены и схвачены. Поиски Лсэрианотра для вас закончены. ]])
 
 
game_over_eaten_by_octopus = game_over("game_over_eaten_by_octopus", [[Гигантский спрут мгновенно опутывает вас своими щупальцами. Вы не можете вырваться из стальной хватки чудовища. Металл скафандра скрипит, не выдерживая давления и вы понимаете, что ваши дни сочтены. ]]);
 
journey_nleyyslanotrr.lua
Show inline comments
 
global {
 
    za_convoy_gone = false;
 
};
 
nley_intro = cutscene('Левиафан, рубка', 'Левиафан, рубка', [[Добраться до расположенного в глубоком ущелье Нлейисланотра непросто, но после долгих часов плутаний, вы наконец-то нашли дорогу к громадному навьярскому городу. При вашем приближении массивные каменные ворота города начинают закрываться. а в вашем направлении выдвигается вооруженный отряд, состоящий из сотни навьяров. ]], 'nley_intro_2');
 

	
 
za_gate_foot = room {
 
    nam = "Вход в Нлейисланотр";
 
    handwheel_room = "za_gate";
 
    underwater = true;
 
    no_exit = [[
 
        Нет смысла покидать Левиафан здесь. 
 
    ]];
 
    view = [[
 
        Через иллюминаторы вы видите перед собой высокие металлические ворота Нлейисланотра. С обеих сторон от них стоят две смотровые башни, на вершинах которых горят красные огоньки. 
 
    ]];
 
};
 

	
 
za_gate = dlg {
 
    var {
 
        state = 0;
 
    };
 
    nam = "Левиафан, рубка";
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
nley_intro_2 = dlg {
 
    nam = 'Левиафан, рубка';
 
    entered = [[Один навьяр отделяется от группы и подплывает к иллюминатору, так, что вы отчетливо видите полосы, бегущие по его планикам: "Уходите отсюда. Вам здесь не место". ]];
 
    phr = {
 
        {'[Кодировщик Левиафана]Не препятствуйте нам, иначе дело закончится кровопролитием![Сделать выстрел из звуковой пушки по окрестным скалам]', [[Кажется, ваши действия напугали навьяров, однако посланец повторяет свое требование: "Уходите. Вам здесь не место. Мы будем сражаться до последнего навьяра, но не пропустим вас в город". ]] };
 
        {'[Кодировщик Левиафана]Нам нужно посетить ваш город. Мы не возьмем ничего ценного для вас. Мы можем предложить что-нибудь взамен. ', [[Посланец отвечает: "Нам ничего не нужно от хевьяров. Убирайтесь". ]]};
 
        {'[Полный вперед]', code = [[
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                psub("learr");
 
                return [[
 
                    Как только Левиафан приближается к городу, массивные металлические ворота начинают закрываться. Огни на башнях окрашиваются красным, а по всему городу начинается какое-то волнение. В рубку поднимается Леарр. Она встает рядом с вами и, окидывая взглядом город, произносит: "Мы туда-не-идем. Они не-пускают-нас".
 
                ]];
 
                walk("game_over_nley_learr");
 
            else
 
                psub("anna");
 
                return [[
 
                    Как только Левиафан приближается к городу, массивные металлические ворота начинают закрываться. Огни на башнях окрашиваются красным, а по всему городу начинается какое-то волнение. В рубку поднимается Анна. Она встает рядом с вами и, окидывая взглядом город, произносит: "Кажется, нам здесь не рады".
 
                ]];
 
            end;
 
        else
 
            psub("control");
 
            return [[
 
                Левиафан находится перед массивными металлическими воротами Нлейисланотра. Огни на башнях горят ярко-красным, сообщая вам что пути нет. 
 
            ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="learr"};
 
        {"[Остановить субмарину] И что нам делать?", [[
 
            Леарр пожимает плечами: "Мы незаметными-пройти-должны. Сильнее-они так-как много-их".
 
        ]], code [[ psub("control"); ]]};
 
        {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_learr"); ]]};
 
        {tag="anna"};
 
        {"[Остановить субмарину] И что нам делать?", [[
 
            Анна пожимает плечами: "Понятия не имею".
 
        ]], code [[ psub("control"); ]]};
 
        {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_anna"); ]]};
 
        {tag="control"};
 
        {always = true, "[Проплыть над воротами]", code = [[
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                walk("game_over_za_learr");
 
            else
 
                walk("game_over_za_anna");
 
                walk("game_over_nley_anna");
 
            end;
 
        ]]};
 
        {always = true, "[Двигаться вдоль стен]", code = [[
 
            move(submarine_leviathan, "za_crack_foot");
 
            walk("za_crack");
 
        ]]};
 
        {always = true, "[Отправиться в другое место]", code = [[
 
            walk("leviathan_handwheel");
 
        ]]};
 
        {always = true, "[Отойти от штурвала]", code = [[
 
            walk("leviathan_wheelhouse");
 
        ]]};
 
        {'[Полный назад]', function(s)
 
            walk('nley_intro_3')
 
        end};
 
    };
 
};
 

	
 
za_crack_foot = room {
 
    nam = "Вход в Нлейисланотр";
 
    handwheel_room = "za_crack";
 
    underwater = true;
 
    dsc = [[
 
        Перед вами возвышается каменная стена древнего города. Через широкую трещину в ней вы вполне можете попытаться попасть на другую сторону. 
 
    ]];
 
    view = [[
 
        Через иллюминаторы вы видите высокие стены Нлейисланотра. Мощный луч прожектора освещает едва заметную трещину в стене. Быть может, вы сможете незаметно пробраться через нее в город. 
 
    ]];
 
    way = {
 
        kh_vroom("В Левиафан", leviathan_airlock);
 
        kh_vroom("В трещину", "za_crack_inside");
 
    };
 
};
 

	
 
za_crack = dlg {
 
    nam = "Левиафан, рубка";
 
    entered = [[
 
        Левиафан находится у стены Нлейисланотра. Огни на башнях погашены, сообщая что навьяры скорее всего не придают значения вашему присутствию. 
 
    ]];
 
    phr = {
 
        {always = true, "[Вернуться к воротам]", code = [[
 
            move(submarine_leviathan, "za_gate_foot");
 
            walk("za_gate");
 
        ]]};
 
        {always = true, "[Отправиться в другое место]", code = [[
 
            walk("leviathan_handwheel");
 
        ]]};
 
        {always = true, "[Отойти от штурвала]", code = [[
 
            walk("leviathan_wheelhouse");
 
        ]]};
 
    };
 
};
 
}
 

	
 
za_convoy_route = {
 
    "za_cross_6",
 
    "za_street_11",
 
    "za_cross_5",
 
    "za_street_13",
 
    "za_cross_24",
 
    "za_street_15",
 
    "za_cross_7",
 
    "za_street_16",
 
    "za_cross_8",
 
    "za_street_22",
 
    "za_cross_11",
 
    "za_street_23",
 
    "za_cross_12",
 
    "za_street_41",
 
    "za_cross_22",
 
    "za_street_42",
 
    "za_cross_23",
 
    "za_street_44",
 
    "za_cross_15",
 
    "za_street_27",
 
    "za_prison_entrance",
 
    "za_prison"
 
};
 

	
 
za_convoy = {
 
    position = null;
 
    direction = 'za_cross_6';
 
    index = 1;
 
    life = function(s)
 
        local loc = stead.deref(here());
 
        for i = 1, #za_convoy_messages do
 
            if (za_convoy_messages[i][1] == loc and za_convoy_messages[i][2] == za_convoy.position) then
 
                pr(za_convoy_messages[i][3]);
 
            end;
 
        end;
 
        if (za_convoy.index > #za_convoy_route) then
 
            --TODO Конвой ушол
 
            za_convoy_gone = true;
 
            timer:stop();
 
            game.timer = nil;
 
            lifeoff(za_convoy);
 
        else
 
            za_convoy.direction  = za_convoy_route[za_convoy.index];
 
            if (loc == za_convoy.position) then
 
                --TODO Бой начинается
 
                timer:stop();
 
                game.timer = nil;
 
                lifeoff(za_convoy);
 
                enter(za_phaetlarr_fight_intro);
 
nley_intro_3 = dlg {
 
    nam = 'Левиафан, кают-компания';
 
    entered = function(s)
 
        pr [[Навьяры покидают вас, когда им становится очевидно, что вы не пытаетесь пробраться в город. ^^ Экипаж Левиафана собирается в кают-компании с целью обдумать и обсудить сложившуюся ситуацию. ]];
 
        if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
            pr [[Леарр предлагает свое решение: "Я пойти-могу. Они не-в-связях-с-вами-меня-заподозрят". ]];
 
            if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
                pr [[Райт высказывает несогласие: "Они легко узнают, что ты не из их города и как ты ответить на вопрос об этом? Нам нужно другое решение"]];
 
            elseif (ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0) then
 
                pr [[Уолтер качает головой: "Они тебя мигом раскусят, а что будет дальше -- сама понимаешь. Нет, тебя одну мы не отпустим". ^При слове "раскусят" Леарр заволновалась, так что Уолтер поспешно добавляет: "Раскусят -- раскроют, что ты с нами". ]];
 
            end;
 
        end;
 
    end;
 
};
 
    phr = {
 
        {'Мы дождемся ночи и отправимся в город своим ходом. Большая часть навьяров будет спать и мы сможем практически беспепятственно пробраться к центру. ', [[Немного посовещавшись, все приходят к выводу, что это наилучший вариант. ]], code [[walkin('leviathan_wardroom');]]};
 
    }
 
}
 

	
 
nley_near_cliff_1 = room {
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К северу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom('В Левиафан', 'leviathan_airlock');
 
        kh_vroom('Отойти от скалы', 'nley_ravine');
 
        kh_vroom('На восток, вдоль скалы', 'nley_near_cliff_2');
 
    }
 
}
 

	
 
za_convoy_messages = {
 
    --here--new_position--message--
 
    {"za_street_12", "za_cross_6", "Конвой выходит на перекресток к северу от вас. Навьяры поворачивают в противоположную от вас сторону и продолают свой путь. "},
 
    {"za_street_11", "za_cross_6", "Конвой выходит на перекресток к северу от вас. Навьяры поворачивают в вашу сторону и продолают свой путь. "},
 
    {"za_street_12", "za_street_11", "Конвой удаляется на север. "},
 
    {"za_cross_6", "za_street_11", "Конвой движется на север. "},
 
    {"za_cross_5", "za_street_11", "Конвой приближается к вам. "},
 
    {"za_cross_6", "za_cross_5", "Конвой удаляется на север. "},
 
    {"za_street_11", "za_cross_5", "Конвой движется на север. "},
 
    {"za_street_10", "za_cross_5", "Конвой приближается к вам. "},
 
    {"za_street_13", "za_cross_5", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_10", "za_street_13", "Конвой сворачивает на улицу к западу. "},
 
    {"za_street_11", "za_street_13", "Конвой сворачивает на улицу к западу. "},
 
    {"za_cross_24", "za_street_13", "Конвой приближается к вас с востока. "},
 
    {"za_street_14", "za_cross_24", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_15", "za_cross_24", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_street_14", "za_street_15", "Конвой удаляется от вас на юг. "},
 
    {"za_cross_24", "za_street_15", "Конвой движется от вас на юг. "},
 
    {"za_cross_7", "za_street_15", "Конвой приближается к вас с севера. "},
 
    {"za_deadend_3n", "za_cross_7", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_cross_24", "za_cross_7", "Конвой удаляется на юг. "},
 
    {"za_street_15", "za_cross_7", "Конвой движется на юг. "},
 
    {"za_street_16", "za_cross_7", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_deadend_3n", "za_street_16", "Конвой уходит на запад. "},
 
    {"za_street_15", "za_street_16", "Конвой уходит на запад. "},
 
    {"za_cross_7", "za_street_16", "Конвой уходит на запад. "},
 
    {"za_cross_8", "za_street_16", "Конвой приближается с востока. "},
 
    {"za_street_17", "za_cross_8", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_22", "za_cross_8", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_16", "za_cross_8", "Конвой уходит на запад. "},
 
    {"za_cross_7", "za_cross_8", "Конвой удаляется на запад. "},
 
    {"za_cross_7", "za_street_22", "Конвой удаляется на запад. "},
 
    {"za_street_16", "za_street_22", "Конвой движется на запад. "},
 
    {"za_street_17", "za_street_22", "Конвой движется на запад. "},
 
    {"za_cross_11", "za_street_22", "Конвой приближается с востока. "},
 
    {"za_cross_8", "za_cross_11", "Конвой удаляется на запад. "},
 
    {"za_street_22", "za_cross_11", "Конвой движется на запад. "},
 
    {"za_street_21", "za_cross_11", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_36", "za_cross_11", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_23", "za_cross_11", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_street_22", "za_street_23", "Конвой движется на юг. "},
 
    {"za_street_21", "za_street_23", "Конвой удаляется на юг. "},
 
    {"za_street_36", "za_street_23", "Конвой движется на юг. "},
 
    {"za_cross_11", "za_street_23", "Конвой движется на юг. "},
 
    {"za_cross_12", "za_street_23", "Конвой приближается с севера. "},
 
    {"za_cross_11", "za_cross_12", "Конвой удаляется на юг. "},
 
    {"za_street_23", "za_cross_12", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_46", "za_cross_12", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_24", "za_cross_12", "Конвой выходит на перекресток к западу от вас. "},
 
    {"za_street_41", "za_cross_12", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_street_23", "za_street_41", "Конвой удаляется на юг. "},
 
    {"za_cross_12", "za_street_41", "Конвой движется на юг. "},
 
    {"za_street_46", "za_street_41", "Конвой движется на юг. "},
 
    {"za_street_24", "za_street_41", "Конвой движется на юг. "},
 
    {"za_cross_22", "za_street_41", "Конвой приближается с севера. "},
 
    {"za_cross_12", "za_cross_22", "Конвой удаляется на юг. "},
 
    {"za_street_41", "za_cross_22", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_45", "za_cross_22", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_42", "za_cross_22", "Конвой выходит на перекресток к западу от вас. "},
 
    {"za_street_40", "za_cross_22", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_street_41", "za_street_42", "Конвой движется на восток. "},
 
    {"za_street_40", "za_street_42", "Конвой движется на восток. "},
 
    {"za_cross_22", "za_street_42", "Конвой движется на восток. "},
 
    {"za_street_45", "za_street_42", "Конвой удаляется на восток. "},
 
    {"za_cross_23", "za_street_42", "Конвой приближается с запада. "},
 
    {"za_cross_22", "za_cross_23", "Конвой удаляется на восток. "},
 
    {"za_street_42", "za_cross_23", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_43", "za_cross_23", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_44", "za_cross_23", "Конвой выходит на перекресток к западу от вас. "},
 
    {"za_street_42", "za_street_44", "Конвой удаляется на восток. "},
 
    {"za_cross_23", "za_street_44", "Конвой движется на восток. "},
 
    {"za_street_43", "za_street_44", "Конвой движется на восток. "},
 
    {"za_cross_15", "za_street_44", "Конвой приближается с запада. "},
 
    {"za_cross_23", "za_cross_15", "Конвой удаляется на восток. "},
 
    {"za_street_44", "za_cross_15", "Конвой выходит на перекресток к востоку от вас. "},
 
    {"za_street_26", "za_cross_15", "Конвой выходит на перекресток к югу от вас. "},
 
    {"za_street_35", "za_cross_15", "Конвой выходит на перекресток к северу от вас. "},
 
    {"za_street_27", "za_cross_15", "Конвой выходит на перекресток к западу от вас. "},
 
    {"za_street_44", "za_street_27", "Конвой удаляется на восток. "},
 
    {"za_cross_15", "za_street_27", "Конвой движется на восток. "},
 
    {"za_street_26", "za_street_27", "Конвой движется на восток. "},
 
    {"za_street_35", "za_street_27", "Конвой движется на восток. "},
 
    {"za_prison_entrance", "za_street_27", "Конвой приближается с запада. "},
 
    {"za_cross_15", "za_prison_entrance", "Конвой удаляется на восток. "},
 
    {"za_street_27", "za_prison_entrance", "Конвой приближается ко входу в здание. "},
 
    {"za_deadend_2s", "za_prison_entrance", "Конвой приближается ко входу в здание к югу от вас. "},
 
    {"za_street_28", "za_prison_entrance", "Конвой приближается ко входу в здание. "},
 
    {"za_street_27", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "},
 
    {"za_deadend_2s", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "},
 
    {"za_street_28", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "}
 
};
 
nley_near_cliff_2 = room {
 
    state = 0;
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К северу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom('На запад, вдоль скалы', 'nley_near_cliff_1');
 
        kh_vroom('На восток, вдоль скалы', 'nley_near_cliff_3');
 
        kh_vroom('Отойти от скалы', function(s)
 
            if nley_near_cliff_2.state == 0 then
 
                nley_near_cliff_2.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
    }
 
}
 

	
 
za_timer = function()
 
    local loc = stead.deref(here());
 
    za_convoy.index = za_convoy.index + 1;
 
    za_convoy.position = za_convoy.direction;
 
    for i = 1, #za_convoy_messages do
 
        if (za_convoy_messages[i][1] == loc and za_convoy_messages[i][2] == za_convoy.position) then
 
            pr(za_convoy_messages[i][3]);
 
        end;
 
    end;
 
    if (za_convoy.index > #za_convoy_route) then
 
        --TODO Конвой ушол
 
        print("Konvoy left");
 
        timer:stop();
 
        game.timer = nil;
 
        lifeoff(za_convoy);
 
    else
 
        za_convoy.direction  = za_convoy_route[za_convoy.index];
 
        if (loc == za_convoy.position) then
 
            --TODO Бой начинается
 
            timer:stop();
 
            game.timer = nil;
 
            lifeoff(za_convoy);
 
            enter(za_phaetlarr_fight_intro);
 
        end;
 
    end;
 
end;
 

	
 
za_alley = inherit(room, function(s) 
 
    if (not s.disp) then
 
        s.disp = "Нлейисланотр, проулок";
 
    end;
 
    if (not s.dsc) then
 
        s.dsc = [[
 
            Вы находитесь посреди узкого проулка где-то в Нлейисланотре. 
 
        ]];
 
    end;
 
    
 
    return s;
 
end);
 

	
 
za_street = inherit(room, function(s) 
 
    if (not s.disp) then
 
        s.disp = "Нлейисланотр, улица";
 
    end;
 
    if (not s.dsc) then
 
        s.dsc = [[
 
            Вы находитесь посреди улицы где-то в Нлейисланотре. 
 
        ]];
 
    end;
 
    
 
    return s;
 
end);
 

	
 
za_deadend = inherit(room, function(s) 
 
    if (not s.disp) then
 
        s.disp = "Нлейисланотр, тупик";
 
    end;
 
    if (not s.dsc) then
 
        s.dsc = [[
 
            Вы находитесь в тупике где-то в Нлейисланотре. 
 
        ]];
 
    end;
 
    
 
    return s;
 
end);
 
nley_near_cliff_3 = room {
 
    state = 0;
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К северу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom('На запад, вдоль скалы', 'nley_near_cliff_2');
 
        kh_vroom('На восток, вдоль скалы', 'nley_near_cliff_4');
 
        kh_vroom('Отойти от скалы', function(s)
 
            if nley_near_cliff_3.state == 0 then
 
                nley_near_cliff_3.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
    }
 
}
 

	
 
za_cross = inherit(room, function(s) 
 
    if (not s.disp) then
 
        s.disp = "Нлейисланотр, перекресток";
 
    end;
 
    if (not s.dsc) then
 
        s.dsc = [[
 
            Вы находитесь на перекрестке где-то в Нлейисланотре. 
 
        ]];
 
    end;
 
    
 
    return s;
 
end);
 

	
 
za_crack_inside = za_alley {
 
    nam = "za_crack_inside";
 
    disp = "Нлейисланотр, у трещины в стене";
 
    dsc = [[
 
        Вы находитесь в небольшом проулке на окраине Нлейисланотра. К западу от вас возвышается городская стена, а с востока и севера вы видите стены домов. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", "za_alley_1");
 
        kh_vroom("В трещину", "za_crack_foot");
 
    };
 
};
 

	
 
za_alley_1 = za_alley {
 
    nam = "za_alley_1";
 
    way = {
 
        kh_vroom("На юг", "za_alley_2");
 
        kh_vroom("На север", "za_crack_inside");
 
    };
 
};
 

	
 
za_alley_2 = za_alley {
 
    nam = "za_alley_2";
 
nley_near_cliff_4 = room {
 
    state = 0;
 
    stat2 = 0;
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К северу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom("На юг", "za_deadend_1n");
 
        kh_vroom("На север", "za_alley_1");
 
        kh_vroom("На восток", "za_street_1");
 
    };
 
};
 

	
 
za_deadend_1n = za_deadend{
 
    nam = "za_deadend_1n";
 
    way = {
 
        kh_vroom("На север", "za_alley_2");
 
    };
 
};
 

	
 
za_street_1 = za_street {
 
    nam = "za_street_1";
 
    way = {
 
        kh_vroom("На запад", "za_alley_2");
 
        kh_vroom("На восток", "za_cross_1");
 
    };
 
};
 

	
 
za_cross_1 = za_cross {
 
    var {
 
        state = 0;
 
    };
 
    nam = "za_cross_1";
 
    enter = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            walkin("za_cutscene_1");
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("На юг", "za_street_20");
 
        kh_vroom("На север", "za_street_2");
 
        kh_vroom("На запад", "za_street_1");
 
        kh_vroom("На восток", "za_street_4");
 
    };
 
};
 

	
 
za_cutscene_1 = cutscene("za_cutscene_1", "Нлейисланотр, перекресток", [[
 
    Из темной невзрачной улицы вы выходите в город. Древние каменные и металлические сооружения возвышаются над вами. Вы стоите посреди просторного перекрестка. Дороги ведут во все стороны. Сейчас посреди ночи улицы города пустынны и вы можете спокойно обследовать их. 
 
]], "za_cross_1");
 

	
 
za_street_2 = za_street {
 
    nam = "za_street_2";
 
    way = {
 
        kh_vroom("На юг", "za_cross_1");
 
        kh_vroom("На север", "za_street_3");
 
    };
 
};
 
        kh_vroom('На запад, вдоль скалы', 'nley_near_cliff_2');
 
        kh_vroom('На восток, вдоль скалы', function(s)
 
            if nley_near_cliff_4.state2 == 0 then
 
                nley_near_cliff_4.state2 = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
        kh_vroom('Отойти от скалы', function(s)
 
            if nley_near_cliff_4.state == 0 then
 
                nley_near_cliff_4.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
    }
 
}
 

	
 
za_street_3 = za_street {
 
    nam = "za_street_3";
 
    dsc = [[
 
        Вы находитесь посреди улицы где-то в Нлейисланотре. К северу от вас стоят несколько навьяров, опершись на стену дома. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", "za_street_2");
 
        kh_vroom("На север", function()
 
            pr [[
 
                Если они меня увидят, то поднимут тревогу. 
 
            ]];
 
            return false;
 
        end);
 
    };
 
};
 

	
 
za_street_4 = za_street {
 
    nam = "za_street_4";
 
nley_ravine = room {
 
    state = 0;
 
    nam = 'Нлейисланотр, ущелье';
 
    dsc = [[Широкое ущелье ведет прямо к воротам Нлейисланотра. Окруженный высокими скалами со всех сторон, навьярский город хорошо защищен. ]];
 
    way = {
 
        kh_vroom("На запад", "za_cross_1");
 
        kh_vroom("На восток", "za_cross_2");
 
    };
 
};
 
        kh_vroom('На восток, к городу', function(s)
 
            if nley_ravine.state == 0 then
 
                nley_ravine.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
        kh_vroom('На север, к скале', 'nley_near_cliff_1');
 
        kh_vroom('На юг, к скале', 'nley_near_cliff_5');
 
    }
 
}
 

	
 
za_cross_2 = za_cross {
 
    nam = "za_cross_2";
 
nley_near_cliff_5 = room {
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К югу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom("На юг", "za_street_18");
 
        kh_vroom("На север", "za_street_5");
 
        kh_vroom("На запад", "za_street_4");
 
        kh_vroom("На восток", "za_street_6");
 
    };
 
};
 
        kh_vroom('Отойти от скалы', 'nley_ravine');
 
        kh_vroom('На восток, вдоль скалы', 'nley_near_cliff_6');
 
    }
 
}
 

	
 
za_street_5 = za_street {
 
    nam = "za_street_5";
 
    way = {
 
        kh_vroom("На юг", "za_cross_2");
 
    };
 
};
 

	
 
za_street_6 = za_street {
 
    nam = "za_street_6";
 
    way = {
 
        kh_vroom("На запад", "za_cross_2");
 
        kh_vroom("На северо-восток", "za_street_7");
 
nley_near_cliff_6 = room {
 
    var {
 
        distraction = false;
 
    };
 
};
 

	
 
za_street_7 = za_street {
 
    nam = "za_street_7";
 
    way = {
 
        kh_vroom("На юго-запад", "za_street_6");
 
        kh_vroom("На восток", "za_cross_3");
 
    };
 
};
 

	
 
za_cross_3 = za_cross {
 
    nam = "za_cross_3";
 
    way = {
 
        kh_vroom("На юго-восток", "za_street_9");
 
        kh_vroom("На запад", "za_street_7");
 
        kh_vroom("На северо-запад", "za_street_8");
 
    };
 
};
 

	
 
za_street_8 = za_street {
 
    nam = "za_street_8";
 
    state = 0;
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К югу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    way = {
 
        kh_vroom("На юго-восток", "za_cross_3");
 
    };
 
};
 

	
 
za_street_9 = za_street {
 
    nam = "za_street_9";
 
    way = {
 
        kh_vroom("На северо-запад", "za_cross_3");
 
        kh_vroom("На юг", "za_cross_4");
 
    };
 
};
 

	
 
za_cross_4 = za_cross {
 
    nam = "za_cross_4";
 
    dsc = [[
 
        Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на востоке завалена камнями и заросла водорослями. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", "za_street_10");
 
        kh_vroom("На север", "za_street_9");
 
        kh_vroom("На восток", function(s)
 
            pr [[
 
                Я не пройду здесь.
 
            ]];
 
            return false;
 
        kh_vroom('Отойти от скалы', function(s)
 
            if nley_near_cliff_6.state == 0 then
 
                nley_near_cliff_6.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
        kh_vroom('На восток, вдоль скалы', function(s)
 
            if nley_near_cliff_6.state == 0 then
 
                nley_near_cliff_6.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                if nley_near_cliff_6.distraction then
 
                    return 'nley_near_cliff_7';
 
                else
 
                    return 'game_over_nley_caught';
 
                end;
 
            end;
 
        end);
 
    };
 
};
 

	
 
za_street_10 = za_street {
 
    nam = "za_street_10";
 
    way = {
 
        kh_vroom("На юг", "za_cross_5");
 
        kh_vroom("На север", "za_cross_4");
 
    };
 
};
 

	
 
za_cross_5 = za_cross {
 
    nam = "za_cross_5";
 
    way = {
 
        kh_vroom("На юг", "za_street_11");
 
        kh_vroom("На север", "za_street_10");
 
        kh_vroom("На запад", "za_street_13");
 
    };
 
};
 

	
 
za_street_11 = za_street {
 
    nam = "za_street_11";
 
    way = {
 
        kh_vroom("На юг", "za_cross_6");
 
        kh_vroom("На север", "za_cross_5");
 
    };
 
};
 

	
 
za_cross_6 = za_cross {
 
    var {
 
        state = 0;
 
    };
 
    nam = "za_cross_6";
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            pr("С востока к вам приближается группа навьяров. Четверо из них вооружены копьями с ними идет еще один, не вооруженный. Судя по тому, как они обращаются с ним - он пленник. ");
 
            game.timer = za_timer;
 
            timer:set(2000);
 
            lifeon(za_convoy);
 
        end;
 
    end;
 
    dsc = [[
 
        Вы находитесь посреди улицы где-то в Нлейисланотре. На востоке вы видите нескольких навьярских воинов. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", "za_street_12");
 
        kh_vroom("На север", "za_street_11");
 
        kh_vroom("На восток", function(s)
 
            pr [[
 
                Если они меня увидят, то поднимут тревогу. 
 
            ]];
 
        end);
 
    };
 
};
 

	
 
za_street_12 = za_street {
 
    nam = "za_street_12";
 
    way = {
 
        kh_vroom("На юг", "za_deadend_2n");
 
        kh_vroom("На север", "za_cross_6");
 
    };
 
};
 

	
 
za_deadend_2n = za_deadend {
 
    nam = "za_deadend_2n";
 
    way = {
 
        kh_vroom("На север", "za_street_12");
 
    };
 
};
 

	
 
za_street_13 = za_street {
 
    nam = "za_street_13";
 
    way = {
 
        kh_vroom("На запад", "za_cross_24");
 
        kh_vroom("На восток", "za_cross_5");
 
    };
 
};
 

	
 
za_cross_24 = za_cross {
 
    nam = "za_cross_24";
 
    way = {
 
        kh_vroom("На юг", "za_street_15");
 
        kh_vroom("На север", "za_street_14");
 
        kh_vroom("На восток", "za_street_13");
 
    };
 
};
 

	
 
za_street_14 = za_street {
 
    nam = "za_street_14";
 
    way = {
 
        kh_vroom("На юг", "za_cross_24");
 
    };
 
};
 

	
 
za_street_15 = za_street {
 
    nam = "za_street_15";
 
    way = {
 
        kh_vroom("На юг", "cross_7");
 
        kh_vroom("На север", "za_cross_24");
 
    };
 
};
 
}
 

	
 
za_cross_7 = za_cross {
 
    nam = "za_cross_7";
 
    way = {
 
        kh_vroom("На юг", "za_deadend_3n");
 
        kh_vroom("На север", "za_street_15");
 
        kh_vroom("На запад", "za_street_16");
 
    };
 
};
 

	
 
za_deadend_3n = za_deadend {
 
    nam = "za_deadend_3n";
 
    way = {
 
        kh_vroom("На север", "za_cross_7");
 
    };
 
};
 

	
 
za_street_16 = za_street {
 
    nam = "za_street_16";
 
    way = {
 
        kh_vroom("На запад", "za_cross_8");
 
        kh_vroom("На восток", "za_cross_7");
 
    };
 
};
 

	
 
za_cross_8 = za_cross {
 
    nam = "za_cross_8";
 
    way = {
 
        kh_vroom("На север", "za_street_17");
 
        kh_vroom("На запад", "za_street_22");
 
        kh_vroom("На восток", "za_street_16");
 
    };
 
};
 

	
 
za_street_17 = za_street {
 
    nam = "za_street_17";
 
    way = {
 
        kh_vroom("На юг", "za_cross_8");
 
        kh_vroom("На север", "za_cross_9");
 
    };
 
};
 

	
 
za_cross_9 = za_cross {
 
    nam = "za_cross_9";
 
    way = {
 
        kh_vroom("На юг", "za_street_17");
 
        kh_vroom("На север", "za_street_18");
 
        kh_vroom("На запад", "za_street_19");
 
    };
 
};
 

	
 
za_street_18 = za_street {
 
    nam = "za_street_18";
 
    way = {
 
        kh_vroom("На юг", "za_cross_9");
 
        kh_vroom("На север", "za_cross_2");
 
    };
 
};
 

	
 
za_street_19 = za_street {
 
    nam = "za_street_19";
 
    way = {
 
        kh_vroom("На запад", "za_cross_10");
 
        kh_vroom("На восток", "za_cross_9");
 
    };
 
};
 

	
 
za_cross_10 = za_cross {
 
    nam = "za_cross_10";
 
    way = {
 
        kh_vroom("На юг", "za_street_21");
 
        kh_vroom("На север", "za_street_20");
 
        kh_vroom("На запад", "za_street_31");
 
        kh_vroom("На восток", "za_street_19");
 
    };
 
};
 

	
 
za_street_20 = za_street {
 
    nam = "za_street_20";
 
    way = {
 
        kh_vroom("На юг", "za_cross_10");
 
        kh_vroom("На север", "za_cross_1");
 
    };
 
};
 

	
 
za_street_31 = za_street {
 
    nam = "za_street_31";
 
    way = {
 
        kh_vroom("На запад", "za_alley_3");
 
        kh_vroom("На восток", "za_cross_10");
 
    };
 
};
 

	
 
za_alley_3 = za_alley {
 
    nam = "za_alley_3";
 
    way = {
 
        kh_vroom("На восток", "za_street_31");
 
        kh_vroom("На север", "za_deadend_1s");
 
    };
 
};
 

	
 
za_deadend_1s = za_deadend{
 
    nam = "za_deadend_1s";
 
    way = {
 
        kh_vroom("На юг", "za_alley_3");
 
    };
 
};
 

	
 
za_street_21 = za_street {
 
    nam = "za_street_21";
 
    way = {
 
        kh_vroom("На юг", "za_cross_11");
 
        kh_vroom("На север", "za_cross_10");
 
    };
 
};
 

	
 
za_cross_11 = za_cross {
 
    nam = "za_cross_11";
 
nley_near_cliff_7 = room {
 
    state = 0;
 
    state2 = 0;
 
    nam = 'Нлейисланотр, у скалы';
 
    dsc = [[Вы стоите в широком ущелье. К югу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. В скале имеется глубокая трещина, ведущая в глубокую пещеру. ]];
 
    way = {
 
        kh_vroom("На юг", "za_street_23");
 
        kh_vroom("На север", "za_street_21");
 
        kh_vroom("На запад", "za_street_36");
 
        kh_vroom("На восток", "za_street_22");
 
    };
 
};
 

	
 
za_street_22 = za_street {
 
    nam = "za_street_22";
 
    way = {
 
        kh_vroom("На запад", "za_cross_11");
 
        kh_vroom("На восток", "za_cross_8");
 
    };
 
};
 

	
 
za_street_36 = za_street {
 
    nam = "za_street_36";
 
    dsc = [[
 
        Западным концом эта улица упирается в городскую стену. 
 
    ]];
 
    way = {
 
        kh_vroom("На восток", "za_cross_11");
 
    };
 
};
 

	
 
za_street_46 = za_street {
 
    nam = "za_street_46";
 
    dsc = [[
 
        Западным концом эта улица упирается в городскую стену. 
 
    ]];
 
    way = {
 
        kh_vroom("На восток", "za_cross_12");
 
    };
 
};
 

	
 
za_street_23 = za_street {
 
    nam = "za_street_23";
 
    way = {
 
        kh_vroom("На юг", "za_cross_12");
 
        kh_vroom("На север", "za_cross_11");
 
    };
 
};
 

	
 
za_cross_12 = za_cross {
 
    nam = "za_cross_12";
 
    way = {
 
        kh_vroom("На юг", "za_street_41");
 
        kh_vroom("На север", "za_street_23");
 
        kh_vroom("На запад", "za_street_46");
 
        kh_vroom("На восток", "za_street_24");
 
    };
 
};
 

	
 
za_street_24 = za_street {
 
    nam = "za_street_24";
 
    way = {
 
        kh_vroom("На запад", "za_cross_12");
 
        kh_vroom("На восток", "za_cross_13");
 
    };
 
};
 

	
 
za_cross_13 = za_cross {
 
    nam = "za_cross_13";
 
    way = {
 
        kh_vroom("На юг", "za_street_43");
 
        kh_vroom("На запад", "za_street_24");
 
        kh_vroom("На восток", "za_street_25");
 
    };
 
};
 

	
 
za_street_25 = za_street {
 
    nam = "za_street_25";
 
    way = {
 
        kh_vroom("На запад", "za_cross_13");
 
        kh_vroom("На восток", "za_cross_14");
 
    };
 
};
 

	
 
za_cross_14 = za_cross {
 
    nam = "za_cross_14";
 
    way = {
 
        kh_vroom("На юг", "za_street_26");
 
        kh_vroom("На север", "za_deadend_3s");
 
        kh_vroom("На запад", "za_street_25");
 
    };
 
};
 

	
 
za_deadend_3s = za_deadend {
 
    nam = "za_deadend_3s";
 
    way = {
 
        kh_vroom("На юг", "za_cross_14");
 
    };
 
};
 

	
 
za_street_26 = za_street {
 
    nam = "za_street_26";
 
    way = {
 
        kh_vroom("На юг", "za_cross_15");
 
        kh_vroom("На север", "za_cross_14");
 
    };
 
};
 

	
 
za_cross_15 = za_cross {
 
    nam = "za_cross_15";
 
    way = {
 
        kh_vroom("На юг", "za_street_35");
 
        kh_vroom("На север", "za_street_26");
 
        kh_vroom("На запад", "za_street_44");
 
        kh_vroom("На восток", "za_street_27");
 
    };
 
};
 
        kh_vroom('Отойти от скалы', function(s)
 
            if nley_near_cliff_7.state == 0 then
 
                nley_near_cliff_7.state = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
        kh_vroom('На запад, вдоль скалы', 'nley_near_cliff_6');
 
        kh_vroom('На восток, вдоль скалы', function(s)
 
            if nley_near_cliff_7.state2 == 0 then
 
                nley_near_cliff_7.state2 = 1;
 
                pr [[Вас там легко заметят. ]];
 
                return false;
 
            else
 
                return 'game_over_nley_caught';
 
            end;
 
        end);
 
        kh_vroom('В пещеру', 'nley_cave_entrance');
 
    }
 
}
 

	
 
za_street_27 = za_street {
 
    nam = "za_street_27";
 
    way = {
 
        kh_vroom("На запад", "za_cross_15");
 
        kh_vroom("На восток", "za_prison_entrance");
 
    };
 
};
 

	
 
za_prison_entrance = room {
 
    nam = "za_prison_entrance";
 
    disp = "Нлейисланотр, у входа в тюрьму";
 
    dsc = [[
 
        Перед вами вход в большое металлическое здание. Похоже, оно гораздо старше остальных зданий в городе - на это указывают многочисленные следы коррозии на стенах и явно не раз восстановленная дверь. Именно сюда навьяры завели пленника. 
 
    ]];
 
    way = {
 
        kh_vroom("На запад", "za_street_27");
 
        kh_vroom("На восток", "za_street_28");
 
    };
 
};
 

	
 
za_deadend_2s = za_deadend {
 
    nam = "za_deadend_2s";
 
    way = {
 
        kh_vroom("На юг", "za_prison_entrance");
 
    };
 
};
 

	
 
za_street_28 = za_street {
 
    nam = "za_street_28";
 
    way = {
 
        kh_vroom("На запад", "za_prison_entrance");
 
        kh_vroom("На восток", "za_cross_16");
 
    };
 
};
 

	
 
za_cross_16 = za_cross {
 
    nam = "za_cross_16";
 
    way = {
 
        kh_vroom("На юг", "za_street_29");
 
        kh_vroom("На запад", "za_street_28");
 
        kh_vroom("На восток", "za_deadend_4");
 
    };
 
};
 

	
 
za_deadend_4 = za_deadend {
 
    nam = "za_deadend_4";
 
    way = {
 
        kh_vroom("На запад", "za_cross_16");
 
    };
 
};
 

	
 
za_street_29 = za_street {
 
    nam = "za_street_29";
 
    way = {
 
        kh_vroom("На юг", "za_street_30");
 
        kh_vroom("На север", "za_cross_16");
 
    };
 
};
 

	
 
za_street_30 = za_street {
 
    nam = "za_street_30";
 
    way = {
 
        kh_vroom("На юг", "za_cross_17");
 
        kh_vroom("На север", "za_street_29");
 
    };
 
};
 

	
 
za_cross_17 = za_cross {
 
    nam = "za_cross_17";
 
    dsc = [[
 
        Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", function()
 
            pr [[
 
                Мне с ними не справиться. 
 
            ]];
 
            return false;
 
        end);
 
        kh_vroom("На север", "za_street_30");
 
        kh_vroom("На запад", "za_street_32");
 
        kh_vroom("На восток", "za_deadend_5");
 
    };
 
};
 

	
 
za_deadend_5 = za_deadend {
 
    nam = "za_deadend_5";
 
    way = {
 
        kh_vroom("На запад", "za_cross_17");
 
    };
 
};
 

	
 
za_street_32 = za_street {
 
    nam = "za_street_32";
 
    way = {
 
        kh_vroom("На запад", "za_cross_18");
 
        kh_vroom("На восток", "za_cross_17");
 
    };
 
};
 

	
 
za_cross_18 = za_cross {
 
    nam = "za_cross_18";
 
    dsc = [[
 
        Вы находитесь посреди перекрестка рядом с тюрьмой Нлейисланотра. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", "za_deadend_6");
 
        kh_vroom("На запад", "za_street_33");
 
        kh_vroom("На восток", "za_street_32");
 
    };
 
    obj = {
 
        "za_prison_window";
 
    };
 
};
 

	
 
za_prison_window = obj {
 
nley_cave_entrance = darkroom {
 
    var {
 
        state = 0;
 
    };
 
    nam = "za_prison_window";
 
    dsc = [[
 
        Рядом с собой в стене здания вы видите небольшой зарешеченное {окошко}. 
 
    ]];
 
    act = function(s)
 
        if (s.state == 0) then
 
            if (za_convoy_gone) then    
 
                return [[
 
                    В камере по ту сторону окна находится тот самый навьяр, которого вы видели в сопровождении конвоя. 
 
                ]];
 
            else 
 
                return [[
 
                    Здесь нет ничего интересного. 
 
                ]];
 
            end;
 
        else
 
            return [[
 
                Вам здесь больше нечего делать. 
 
            ]];
 
        end;
 
    end;
 
    used = function (s, o)
 
        if (o == item_toolbox) then
 
            walk("za_phaetlarr_free");
 
        end;
 
    end;
 
};
 

	
 
za_deadend_6 = za_deadend {
 
    nam = "za_deadend_6";
 
    way = {
 
        kh_vroom("На север", "za_cross_18");
 
    };
 
};
 

	
 
za_street_33 = za_street {
 
    nam = "za_street_33";
 
    way = {
 
        kh_vroom("На запад", "za_cross_19");
 
        kh_vroom("На восток", "za_cross_18");
 
    };
 
};
 

	
 
za_cross_19 = za_cross {
 
    nam = "za_cross_19";
 
    dsc = [[
 
        Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", function()
 
            pr [[
 
                Мне с ними не справиться. 
 
            ]];
 
            return false;
 
        end);
 
        kh_vroom("На север", "za_street_34");
 
        kh_vroom("На запад", "za_street_37");
 
        kh_vroom("На восток", "za_street_33");
 
    };
 
};
 

	
 
za_street_34 = za_street {
 
    nam = "za_street_34";
 
    way = {
 
        kh_vroom("На юг", "za_cross_19");
 
        kh_vroom("На север", "za_street_35");
 
    };
 
};
 

	
 
za_street_35 = za_street {
 
    nam = "za_street_35";
 
    way = {
 
        kh_vroom("На юг", "za_street_34");
 
        kh_vroom("На север", "za_cross_15");
 
    };
 
};
 

	
 
za_street_37 = za_street {
 
    nam = "za_street_37";
 
    way = {
 
        kh_vroom("На северо-запад", "za_street_38");
 
        kh_vroom("На восток", "za_cross_19");
 
    };
 
};
 

	
 
za_street_38 = za_street {
 
    nam = "za_street_38";
 
    way = {
 
        kh_vroom("На север", "za_cross_20");
 
        kh_vroom("На юго-восток", "za_street_37");
 
    };
 
};
 

	
 
za_street_47 = za_street {
 
    nam = "za_street_47";
 
    dsc = [[
 
        Вы находитесь на углу двух улиц Нлейисланотра. 
 
    ]];
 
    way = {
 
        kh_vroom("На запад", "za_street_39");
 
        kh_vroom("На юг", "za_street_38");
 
    };
 
};
 

	
 
za_street_39 = za_street {
 
    nam = "za_street_39";
 
    way = {
 
        kh_vroom("На запад", "za_cross_21");
 
        kh_vroom("На восток", "za_street_47");
 
    };
 
};
 

	
 
za_cross_21 = za_cross {
 
    nam = "za_cross_21";
 
    dsc = [[
 
        Вы находитесь посреди перекрестка где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. 
 
    ]];
 
    way = {
 
        kh_vroom("На юг", function()
 
            pr [[
 
                Мне с ними не справиться. 
 
            ]];
 
            return false;
 
        end);
 
        kh_vroom("На север", "za_street_40");
 
        kh_vroom("На восток", "za_street_39");
 
    };
 
};
 

	
 
za_street_40 = za_street {
 
    nam = "za_street_40";
 
    way = {
 
        kh_vroom("На юг", "za_cross_21");
 
        kh_vroom("На север", "za_cross_22");
 
    };
 
};
 

	
 
za_cross_22 = za_cross {
 
    nam = "za_cross_22";
 
    way = {
 
        kh_vroom("На юг", "za_street_40");
 
        kh_vroom("На север", "za_street_41");
 
        kh_vroom("На запад", "za_street_45");
 
        kh_vroom("На восток", "za_street_42");
 
    };
 
};
 

	
 
za_street_42 = za_street {
 
    nam = "za_street_42";
 
    way = {
 
        kh_vroom("На запад", "za_cross_22");
 
        kh_vroom("На восток", "za_cross_23");
 
    };
 
};
 

	
 
za_cross_23 = za_cross {
 
    nam = "za_cross_23";
 
    way = {
 
        kh_vroom("На север", "za_street_43");
 
        kh_vroom("На запад", "za_street_42");
 
        kh_vroom("На восток", "za_street_44");
 
    };
 
};
 

	
 
za_street_41 = za_street {
 
    nam = "za_street_41";
 
    way = {
 
        kh_vroom("На юг", "za_cross_22");
 
        kh_vroom("На север", "za_cross_12");
 
    };
 
};
 

	
 
za_street_43 = za_street {
 
    nam = "za_street_43";
 
    way = {
 
        kh_vroom("На юг", "za_cross_23");
 
        kh_vroom("На север", "za_cross_13");
 
    };
 
};
 

	
 
za_street_44 = za_street {
 
    nam = "za_street_44";
 
    way = {
 
        kh_vroom("На запад", "za_cross_23");
 
        kh_vroom("На восток", "za_cross_15");
 
    };
 
};
 

	
 
za_street_45 = za_street {
 
    nam = "za_street_45";
 
    way = {
 
        kh_vroom("На запад", "za_alley_4");
 
        kh_vroom("На восток", "za_cross_22");
 
    };
 
};
 

	
 
za_alley_4 = za_alley {
 
    nam = "za_alley_4";
 
    way = {
 
        kh_vroom("На восток", "za_street_45");
 
        kh_vroom("На юг", "za_deadend_7");
 
    };
 
};
 

	
 
za_deadend_7 = za_deadend {
 
    nam = "za_deadend_7";
 
    way = {
 
        kh_vroom("На север", "za_alley_4");
 
    };
 
};
 

	
 
za_phaetlarr_fight_intro = cutscene("za_phaetlarr_fight_intro_a", "Нлейисланотр, улица",[[Конвой замечает вас и переходит в атаку. Внезапно пленник выхватывает копье у одного из стражников и бросается в бой. ]], "za_plaetlarr_fight");
 

	
 
za_plaetlarr_victory = cutscene("za_phaetlarr_victory", "Нлейисланотр, улица", function(s)
 
    if (char_learr.follow) then
 
        return [[
 
            Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" Глядя на Леарр он немного успокаивается и внимательно следит за ее словами: "Они что-хотели?"
 
        ]];
 
    elseif (char_anna.follow) then
 
        return [[
 
            Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Анны: "Он явно не расположен к нам. Но у нас мало выбора. Спроси его, знает ли он где храм"?
 
        ]];
 
    elseif (char_wright.follow) then
 
        return [[
 
            Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Джека: "Я думаю, пора возвращаться на корабль. Я надеюсь, он даст нам всю необходимую информацию".
 
        ]];
 
    elseif (char_radcliffe.follow) then
 
        return [[
 
            Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Уолтера: "Здесь слишком опасно оставаться. Надо доставить его на Левиафан и там решить, что делать дальше".
 
        ]];
 
    else
 
        return [[
 
            Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?"
 
        ]];
 
    end;
 
end, "za_phaetlarr_dlg");
 

	
 
za_plaetlarr_fight = battlefield {
 
    nam = "Нлейисланотр, улица";
 
    plX = 4;
 
    plY = 1;
 
    map = {
 
        {2,0,0,0,0,0,2};
 
        {2,0,0,0,0,0,2};
 
        {2,1,1,0,0,0,2};
 
        {2,0,0,0,1,1,2};
 
        {2,0,0,0,0,0,2};
 
        {2,0,0,0,0,0,2};
 
        {2,0,0,0,0,0,2};
 
    };
 
    obstacle = "images/stones.png";
 
    lose = "game_over_za_fight";
 
    win = "za_plaetlarr_victory";
 
    underwater = true;
 
    entered = function(s)
 
        if (char_learr.follow) then
 
            table.insert(s.obj, 2, za_cmbt_learr);
 
            s.plX = 3;
 
        elseif (char_anna.follow) then
 
            table.insert(s.obj, 2, za_cmbt_anna);
 
            s.plX = 3;
 
        elseif (char_wright.follow) then
 
            table.insert(s.obj, 2, za_cmbt_wright);
 
            s.plX = 3;
 
        elseif (char_radcliffe.follow) then
 
            table.insert(s.obj, 2, za_cmbt_radcliffe);
 
            s.plX = 3;
 
        end;
 
    end;
 
    obj = {
 
        'za_cmbt_phaetlarr',
 
        'za_cmbt_guard1',
 
        'za_cmbt_guard2',
 
        'za_cmbt_guard3',
 
        'za_cmbt_guard4'
 
    };
 
};
 
 
 
za_cmbt_phaetlarr = combatant {
 
    nam = "za_cmbt_phaetlarr";
 
    disp2 = "Фаэтларра";
 
    disp3 = "Фаэтларру";
 
    x = 4;
 
    y = 6;
 
    pic = "images/phaetlarr.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasSpear = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Фаэтларр ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        -- AI Order:
 
        -- If has spear and enemy is far   - throw spear
 
        -- If has spear and enemy is close - hit with spear
 
        -- if spear is nearer than any enemy - walk towards spear
 
        -- walk towards nearest enemy
 
        -- If enemy close and enemy has spear - take spear from enemy
 
        -- If enemy close and enemy doesn't have spear - hit with claws
 

	
 
        if s.hasSpear then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Фаэтларр бросает копье в " .. enemy.disp2 .. " и попадает. ");
 
                else
 
                    pn("Фаэтларр бросает копье в " .. enemy.disp2 .. ", но промахивается. ");
 
                end;
 
                return;
 
            end;
 
        else
 
            if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                if (enemy.hasSpear) then
 
                    enemy.hasSpear = false;
 
                    s.hasSpear = true;
 
                    pn("Фаэтларр забирает копье у " .. enemy.disp2 .. ". ");
 
                else
 
                    enemy.hp = enemy.hp - 1;
 
                    pn("Фаэтларр бьет " .. enemy.disp2 .. " и попадает. ");
 
                end;
 
            end;
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Фаэтларр идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Фаэтларр} готов к бою. ]];
 
        else
 
            return [[ {Фаэтларр} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
za_cmbt_learr = combatant {
 
    nam = "za_cmbt_learr";
 
    disp2 = "Леарр";
 
    disp3 = "Леарр";
 
    x = 5;
 
    y = 1;
 
    pic = "images/learr.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasSpear = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Леарр ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        for i = 1,#enemies do
 
            print(enemies[i].p.l);
 
        end;
 
        -- AI Order:
 
        -- If has spear and enemy is far   - throw spear
 
        -- If has spear and enemy is close - hit with spear
 
        -- if spear is nearer than any enemy - walk towards spear
 
        -- walk towards nearest enemy
 
        -- If enemy close and enemy has spear - take spear from enemy
 
        -- If enemy close and enemy doesn't have spear - hit with claws
 

	
 
        if s.hasSpear then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                return;
 
            end;
 
        else
 
            if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                enemy.hp = enemy.hp - 1;
 
                pn("Леарр бьет " .. enemy.disp2 .. " и попадает. ");
 
                return;
 
            end;
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Леарр идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Леарр} готова к бою. ]];
 
        else
 
            return [[ {Леарр} без сознания. ]];
 
    nam = 'Нлейисланотр, пещера';
 
    enter = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            walkin(nley_phaetlarr_intro_dlg);
 
        end;
 
    end;
 
};
 
    dsc_halflit = [[Небольшой проход ведет в глубокую пещеру, ведущую далеко в недра скалы. Луч прожектора, установленного в вашем скафандре позволяет ориентироваться в темных катакомбах. ]];
 
    dsc_dark = [[Небольшой проход ведет в глубокую пещеру, ведущую далеко в недра скалы. В темноте забытой каверны вы с трудом различаете очертания стен. ]];
 
    obj = {
 
        'nley_char_phaetlarr_cave';
 
    };
 
    way = {
 
        kh_vroom('Выйти из пещеры', 'nley_near_cliff_7', 'Выйти из пещеры', 2);
 
        kh_vroom('В глубь пещеры', 'nley_cave_1', 'В глубь пещеры', 1);
 
    };
 
}
 

	
 
za_cmbt_wright = combatant {
 
    nam = "za_cmbt_wright";
 
    disp2 = "Райта";
 
    disp3 = "Райту";
 
    x = 5;
 
    y = 1;
 
    pic = "images/jack.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Райт ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Райт идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Райт перезаряжает ружье. ");
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Райт идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Райт} готов к бою. ]];
 
        else
 
            return [[ {Райт} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
za_cmbt_radcliffe = combatant {
 
    nam = "za_cmbt_radcliffe";
 
    disp2 = "Рэклиффа";
 
    disp3 = "Рэдклиффу";
 
    x = 5;
 
    y = 1;
 
    pic = "images/walter.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Рэдклифф ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Рэдклифф идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Рэдклифф перезаряжает ружье. ");
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Рэдклифф идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Рэдклифф} готов к бою. ]];
 
        else
 
            return [[ {Рэдклифф} без сознания. ]];
 
        end;
 
    end;
 
};
 
nley_char_phaetlarr_cave = npc {
 
    nam = 'nley_char_phaetlarr_cave';
 
    dsc = [[У стены стоит {навьяр}. Он выглядит очень утомленным и исхудалым. В одной руке он держит светящийся мягким светом камень, в другой - коралловое копье. ]];
 
    dlg = 'nley_phaetlarr_dlg';
 
}
 

	
 
za_cmbt_anna = combatant {
 
    nam = "za_cmbt_anna";
 
    disp2 = "Анну";
 
    disp3 = "Анне";
 
    x = 5;
 
    y = 1;
 
    pic = "images/anna.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Анна ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Анна идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Анна перезаряжает ружье. ");
 
        end;
 
        
 
        local plpath = here():getWalkDistance(s.x, s.y, pl.x, pl.y);
 
        if (plpath.l > 2) then
 
            s.x = plpath.p[2][1];
 
            s.y = plpath.p[2][2];
 
            pn("Анна идет к вам. ");
 
        end;
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Анна} готова к бою. ]];
 
        else
 
            return [[ {Анна} без сознания. ]];
 
        end;
 
    end;
 
};
 
nley_phaetlarr_intro_dlg = dlg {
 
    nam = 'Нлейисланотр, пещера';
 
    entered = [[В темноте пещеры вы с трудом различаете очертания предметов. Неожиданно, перед вами возникает фигура навьяра, держащего в руке небольшой светящийся камень. По его плавникам бегут цветные полосы: "Я наконец-то дождался вас. Вы вернулись за мной?"]];
 
    phr = {
 
        {'[Кодировщик]Вернулись?', [[Вы плохо видите лицо навьяра, но кажется, ваши слова удивили его. Цветные полосы на его плавниках гласят: "Кто вы?"]], code [[psub('who_are_we');]] };
 
        {tag='who_are_we'};
 
        {'[Кодировщик]Мы ищем Уильяма Дрейка и Адриана Блэка.', [[Навьяр кажется растерянным. По его плавникам бегут цветные полосы: "Возможно, я смогу вам помочь, если вы возьмете меня с собой". ]], code [[ psub('accept_phaetlarr'); ]]};
 
        {tag='accept_phaetlarr'};
 
        {'[Кодировщик]Хорошо, мы продолжим путешествие вместе.', code [[
 
            walk('nley_phaetlarr_dlg_join');
 
        ]]};
 
        {'[Кодировщик]Мне нужно подумать.', [[Навьяр отходит в сторону, пропуская вас. По его плавникам бегут цветные полосы: "Я расскажу вам, что знаю и помогу найти карту, если вы примете мое предложение". ]], code [[walk('nley_cave_entrance');]]};
 
    };
 
}
 

	
 
za_cmbt_guard = function(nam, index, x, y, spear) 
 
    return combatant {
 
        nam = nam;
 
        disp2 = "стражника " .. tostring(index);
 
        disp3 = "стражника " .. tostring(index);
 
        x = x;
 
        y = y;
 
        hp = 6;
 
        pic = "images/navjiarr_guard".. index ..".png";
 
        shootHit = "Вы стреляете в стражника и попадаете в него. ";
 
        shootMiss = "Вы стреляете в стражника, но не попадаете в него. ";
 
        shootKill = "Вы стреляете в стражника и он падает замертво. ";
 
        handHit = "Вы ударяете стражника. ";
 
        handKill = "После вашего удара стражник падает. ";
 
        handFar = "Слишком далеко. ";
 
        hasSpear = spear;
 
        enemy = true;
 
        dsc = function(s)
 
            if (s.hp > 0) then
 
                if (s.hasSpear) then
 
                    return "{Стражник " .. tostring(index).. "} вооружен копьем готов к бою. ";
 
                else
 
                    return "{Стражник " .. tostring(index).. "} готов к бою. ";
 
                end;
 
            else
 
                return false;
 
            end;
 
        end;
 
        make_turn = function(s)
 
            local enemies = {  };
 
            for item=1,#here().obj do
 
                local obj = here().obj[item];
 
                if (obj.ally and obj.hp > 0) then
 
                    local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                    if (p) then
 
                        table.insert(enemies, {
 
                            o = obj,
 
                            p = p
 
                        });
 
                    end;
 
                end;
 
            end;
 
            table.sort(enemies, function(a, b)
 
                return (a.p.l < b.p.l);
 
            end);
 
            
 
            local enemy = enemies[1];
 
            local path = here():getWalkDistance(s.x, s.y, here().plX, here().plY);
 
            if (not enemy or path and enemy.p.l > path.l ) then
 
                enemy = pl;
 
            else
 
                path = enemy.p;
 
                enemy = enemy.o;
 
            end;
 
            
 
            if (not enemy or not path) then
 
                pn("Стражник ".. tostring(index).. " ждет. ");
 
                return;
 
            end;
 
            
 
            -- AI Order:
 
            -- If has spear and enemy is close - hit with spear
 
            -- walk towards nearest enemy
 
            -- If enemy close - hit with claws
 
            
 
            if (s.hasSpear) then
 
                here():canShoot(s.x,s.y, enemy.x, enemy.y);
 
                
 
                if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                    if (math.abs(s.x - enemy.x) == 2 or math.abs(s.y - enemy.y) == 2) then
 
                        --50%
 
                        if (rnd(2) > 1) then
 
                            enemy.hp = enemy.hp - 2;
 
                            pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                        else
 
                            pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                        end;
 
                        return;
 
                    elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                        --75%
 
                        if (rnd(4) > 1) then
 
                            enemy.hp = enemy.hp - 2;
 
                            pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                        else
 
                            pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                        end;
 
                        return;
 
                    elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                    s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                        --100%
 
                        enemy.hp = enemy.hp - 2;
 
                        pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                        return;
 
                    end;
 
                end;
 
            else
 
                if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                    s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                    enemy.hp = enemy.hp - 1;
 
                    pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " и попадает. ");
 
                    return;
 
                end;
 
            end;
 
            print("fug2",path);
 
            s.x = path.p[2][1];
 
            s.y = path.p[2][2];
 
            pn("Стражник ".. tostring(index).. " идет к " .. enemy.disp3 .. ". ");
 
        end;
 
nley_phaetlarr_dlg = dlg {
 
    nam = 'Нлейисланотр, пещера';
 
    entered = [[Навьяр не двигается, по его головным плавникам бегут цветные полосы: "Вы решили принять мои условия?"]];
 
    phr = {
 
        {'[Кодировщик]Да, нам потребуется твоя помощь.', code [[
 
            walk('nley_phaetlarr_dlg_join');
 
        ]]};
 
        {'[Кодировщик]Думаю, я справлюсь один.', [[Навьяр остается неподвижен. ]], code [[walk('nley_cave_entrance');]]};
 
    };
 
end;
 

	
 
za_cmbt_guard1 = za_cmbt_guard("za_cmbt_guard1", 1, 3, 5, true);
 
za_cmbt_guard2 = za_cmbt_guard("za_cmbt_guard2", 2, 5, 5, false);
 
za_cmbt_guard3 = za_cmbt_guard("za_cmbt_guard3", 3, 3, 7, true);
 
za_cmbt_guard4 = za_cmbt_guard("za_cmbt_guard4", 4, 5, 7, true);
 
}
 

	
 
za_phaetlarr_dlg = dlg {
 
    var {
 
        state = 0;
 
    };
 
    nam = "za_phaetlarr_dlg";
 
    disp = "Фаэтларр";
 
    entered = function(s)
 
        psub("intro");
 
        if (char_learr.follow) then
 
            s.state = 1;
 
            return [[
 
                Навьяр смотрит попеременно на Леарр и на вас, после чего отвечает: "Я Фаэтларр из Венаэданотра. Хевьяры обманули их и меня. Но как вы здесь оказались? Они закрыли хевьярам путь в город". Обращаясь к Леарр, он продолжает: "Ты осторожна будь. Хевьярам нельзя доверять".
 
            ]];
 
        else
 
            return [[
 
                Навьяр представляется: "Я Фаэтларр из Венаэданотра". После чего повторяет свой вопрос: "Что вы здесь хотите?"
 
            ]];
 
        end;
 
    end;
 
nley_phaetlarr_dlg_join = dlg {
 
    nam = 'Фаэтларр';
 
    entered = [[Навьяр начинает рассказывать: "Мое имя -- Фаэтларр. Я родом из Венаэданотра, где и примкнул к экспедиции Уильяма Дрейка. Мы прибыли сюда около двух недель назад. Уильям рассказывал, что его корабль может идти со скоростью гораздо большей, но, поскольку многие навьяры решили отправиться с ним, не исключая и меня, он двагился с нашей скоростью. Другой руководитель, Адриан Блэк, уговаривал нас дождаться их возвращения как раз из-за этого, но большинство из нас, при поддержке Уильяма Дрейка, решило отправиться вместе с хевьярами. ^Здесь, в Нлейисланотре нас приняли хорошо, однако местные правители строжайше запретили нам посещать их храм, где хранилась искомая Уильямом Дрейком карта. ^Мы проникли в храм тихо. Все, казалось, шло хорошо, однако когда мы вышли из храма, нас встретила армия Нлейисланотра. Корабль Уильяма Дрейка нещадно расстреливал врагов, прикрывая наш отход и, наверное, почти всем удалось выбраться. Мне и еще нескольким навьярам не повезло. Мы оказались отрезаны от Надежды и погребены под обрушившимися скалами. Я единственный смог выбраться. Догнать Надежду не представлялось возможным и я направился к Нлейисланотру, в стремлении найти там укрытие и набраться сил на обратный путь домой. И вот, я встретил вас, идущих по следу Уильяма Дрейка". ]];
 
    phr = {
 
        {tag="intro"};
 
        {"[Цветокод] Венаэданотр неблизко. Как ты оказался здесь?", 
 
            function(s)
 
                if (char_learr.follow) then
 
                    return [[
 
                        Фаэтларр больше обращается к Леарр, чем к вам: "Другие хевьяры взяли меня на свой корабль. Пойдем со мной, сестра, вместе мы вернемся в Венаэданотр". Потом он гневно смотрит на вас: "Уходите, мы справимся сами". Видя, что Леарр не двигается, он застывает в удивлении. 
 
                    ]];
 
                else
 
                    return [[
 
                        "Другие хевьяры взяли меня на свой корабль. Больше я не повторю такой ошибки. Уходите, я справлюсь сам".
 
                    ]];
 
                end;
 
            end, code [[ 
 
                if (char_learr.follow) then 
 
                    psub("on_my_own_learr");
 
                else
 
                    psub("on_my_own");
 
                end;
 
        ]]};
 
        {"[Цветокод] Мы ищем Лсэрианотр", 
 
            function(s)
 
                if (char_learr.follow) then
 
                    return [[
 
                        Фаэтларр больше обращается к Леарр, чем к вам: "Пойдем сестра. Эти такие же, как и те, с которыми был я. Вернемся в Венаэданотр". Потом он гневно смотрит на вас: "Уходите. Я не стану помогать вам".
 
                    ]];
 
                else
 
                    return [[
 
                        "Вы заодно с ними. Уходите, я не стану помогать вам".
 
                    ]];
 
                end;
 
            end, code [[
 
                psub("on_my_own");
 
        ]]};
 
        {tag="on_my_own"};
 
        {"[Цветокод] Расскажи больше о них", [[
 
            "Что вы хотите знать?"
 
        ]], code [[ psub("more_on_them"); ]]};
 
        {"[Цветокод] Мы не враги тебе", [[
 
            "Почему я должен вам верить?"
 
        ]], code [[ psub("trust");]]};
 
        {tag="more_on_them", empty = code [[ pret(); ]]};
 
        {"[Цветокод] Куда они направились?", [[
 
            "Они идут в Лсэрианотр. Их цель - пробудить Наэтвьирра. Блэк хочет с его помощью стать правителем мира. Дрейк хотел найти древние знания. Но сейчас он мертв".
 
        ]], code [[ pon("black");pon("drake"); ]]};
 
        {"[Цветокод] Сколько их было?", [[
 
            "Хевьяров было пятеро. Но на борту также были навьяры. Нас было много. Большинство из них свято верят в Наэтвьирра, способного возродить старый мир. Хотя Уильям Дрейк не одобрял этого, Адриан Блэк всячески поощрял это".
 
        ]]};
 
        {"[Цветокод] Почему они оставили тебя?", [[
 
            "Мы должны были взять ключ. Я, Дрейк и Блэк. Местные были против, но у нас не было выбора - ключ нужен для открытия врат Лсэрианотра. Мы пробрались в храм без проблем. Потом начались проблемы. Когда я взял ключ, я оказался в ловушке. К сожалению, у них не было инструментов, чтобы вытащить меня. Тогда я отдал ключ Дрейку и они ушли за инструментами. Они не вернулись. А потом пришли местные. От них я узнал, что Дрейк был убит". 
 
        ]], code [[ pon("drake"); ]]};
 
        {tag="black", false, "[Цветокод] Теперь Блэк главный?", [[
 
            "Да. У других хевьяров нет выбора, а навьяры на его корабле почти поклоняются ему". 
 
        ]]};
 
        {tag="drake", false, "[Цветокод] Что случилось с Дрейком?", [[
 
            Фаэтларр долго молчал. Наконец он собрался с силами и ответил: "Его убили местные во время их отступления с ключем".
 
        ]], code [[ pon("i_am_drake"); ]]};
 
        {tag="i_am_drake", false, "[Цветокод] Я Дэвид Дрэйк. Сын Уильяма", [[
 
            Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки".
 
        ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; poff("i_am_drake2"); ]]};
 
        {tag="trust"};
 
        {"[Цветокод] Мы хотим остановить Блэка", [[Фаэтларр
 
            Фаэтларр кажется сильно удивленным. Он долго молчит, обдумывая ваши слова. Наконец, навьяр кивает. 
 
        ]], code [[ pon("need_help"); ]]};
 
        {tag="need_help", false, "[Цветокод] Нам нужна твоя помощь", [[
 
            Фаэтларр делает вам знак продолжать. 
 
        ]], code [[ psub("not_sure"); ]]};
 
        {tag="i_am_drake2", "[Цветокод] Я сын Уильяма Дрейка", [[
 
            Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки".
 
        ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; ]]};
 
        {tag="not_sure"};
 
        {"[Цветокод] Нам нужно знать, где находится храм Нлейисланотра", [[
 
            Фаэтларр уверенно говорит: "Вы спасли меня. Я помогу в ответ. Но я прошу вас еще об одном. Я хочу на борт вашего корабля".
 
        ]], code [[ pon('join'); pon('go'); ]]};
 
        {tag="join", false, "[Цветокод] Хорошо, мы согласны", code = [[
 
            nleyyslanotrr_temple_found = true;
 
            walk("za_phaetlarr_final");
 
        ]]};
 
        {tag="go", false, "[Цветокод] Что, если мы откажемся?", [[
 
            "Я не скажу вам где храм, и каждый идет своей дорогой".
 
        {'[Кодировщик]Мы ищем карту пути в Лсэрианотр.', [[Фаэтларр отвечает: "Телхиарр говорил что-то о том, что карта осталась в Нлейисланотре. Думаю он сможет нам помочь". ]], code [[
 
            remove(nley_char_phaetlarr_cave, nley_cave_entrance);
 
            table.insert(pl.party, 'phaetlarr');
 
            char_phaetlarr:accompany(true);
 
            walk('nley_cave_entrance');
 
        ]]};
 
    };
 
};
 

	
 
za_char_phaetlarr = npc {
 
    nam = "za_char_phaetlarr";
 
    dsc = [[
 
        {Фаэтларр} стоит рядом и ждет ваших действий. 
 
    ]];
 
    phrases = {
 
        "Фаэтларр ждет ваших действий. "
 
    };
 
};
 

	
 
za_phaetlarr_final = cutscene("za_phaetlarr_final", "Левиафан, Кают-компания", [[
 
    Вы возвращаетесь на Левиафан, где уже собрался весь экипаж. Фаэтларр рассказывает вам как попасть в храм
 
]], "leviathan_wardroom");
 

	
 
za_phaetlarr_free = cutscene("za_phaetlarr_free", "Нлейисланотр, улица", function(s)
 
    if (char_learr.follow) then
 
        return [[
 
            При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" Глядя на Леарр он немного успокаивается и внимательно следит за ее словами: "Они что-хотели?"
 
        ]];
 
    elseif (char_anna.follow) then
 
        return [[
 
            При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Анны: "Он явно не расположен к нам. Но у нас мало выбора. Спроси его, знает ли он где храм"?
 
        ]];
 
    elseif (char_wright.follow) then
 
        return [[
 
            При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Джека: "Я думаю, пора возвращаться на корабль. Я надеюсь, он даст нам всю необходимую информацию".
 
        ]];
 
    elseif (char_radcliffe.follow) then
 
        return [[
 
            При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Уолтера: "Здесь слишком опасно оставаться. Надо доставить его на Левиафан и там решить, что делать дальше".
 
        ]];
 
    else
 
        return [[
 
            При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?"
 
        ]];
 
    end;
 
end, za_phaetlarr_dlg);
 
\ No newline at end of file
 
}
 
\ No newline at end of file
journey_nleyyslanotrr_old.lua
Show inline comments
 
file copied from journey_nleyyslanotrr.lua to journey_nleyyslanotrr_old.lua
journey_nleyyslanotrr_temple_old.lua
Show inline comments
 
file renamed from journey_nleyyslanotrr_temple.lua to journey_nleyyslanotrr_temple_old.lua
journey_venaedanotrr.lua
Show inline comments
 
@@ -1289,8 +1289,8 @@ ven_char_phanearr_dlg = dlg {
 
            pon("ray_box");
 
        ]]};
 
        {tag="ray_box", false, "[Кодировщик]Как мне найти коробочку лучей?", [[Фанеарр дает вам маленький металлический кубик. На его гранях высечены глубокие бороздки, предназначения которых вы не понимаете. Навьяр сообщает вам: "Мы были почти у цели. Если бы не ирфирр, мы открыли бы вход". ]], code [[
 
            ven_box_of_light_known;
 
            take(ven_item_key);
 
            ven_box_of_light_known = true;
 
            take('ven_item_key');
 
        ]]};
 
        {always=true, "[Кодировщик]Я пойду.", [[Фанееарр отвечает: "Ты возвращайся". ]], code [[
 
            back();
journey_venaedanotrr_labyrinth.lua
Show inline comments
 
@@ -876,7 +876,7 @@ ven_cache = obj {
 
            if (o == ven_item_tablet) then
 
                s.state = 1;
 
                remove(ven_item_tablet, pl);
 
                return "Пластинка легко уходит вглубь прорези. Вы слышите щелчок и в стене открывается выемка, в которой лежит ключ. ";
 
                return "Пластинка легко уходит в глубь прорези. Вы слышите щелчок и в стене открывается выемка, в которой лежит ключ. ";
 
            end;
 
        end;
 
    end;
main.lua
Show inline comments
 
@@ -43,7 +43,6 @@ dofile "atlantis_iyhehevjiarr.lua"
 
dofile "journey_venaedanotrr.lua"
 
dofile "journey_venaedanotrr_labyrinth.lua"
 
dofile "journey_nleyyslanotrr.lua"
 
dofile "journey_nleyyslanotrr_temple.lua"
 
dofile "journey_temple.lua"
 
-- Часть 4: Пробуждение. Эпилог
 
dofile "lseryanotrr_intro.lua"
startup.lua
Show inline comments
 
@@ -177,14 +177,13 @@ function init()
 
    ---game init
 
    pl.where = intro;
 
    ---debug
 
    pl.where = "ven_temple_entrance";
 
    nley_cave_entrance.state = 1;
 
    pl.where = "nley_phaetlarr_dlg_join";
 
    move("submarine_leviathan", "ven_temple_entrance");
 

	
 
    take(ven_item_green_key);
 
    take(ven_item_red_key);
 
    take(ven_item_tablet);
 

	
 
    pl.where = "ven_temple_labyrinth_l1";
 
    ven_temple_labyrinth_l1.position = '17';
 

	
 
    -- leviathan
0 comments (0 inline, 0 general)