Changeset - 49463fad5b5b
[Not reviewed]
default
0 1 0
Silverwing - 5 years ago 2019-07-24 17:14:09

Typo
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
atlantis_iyhehevjiarr.lua
Show inline comments
 
atl_lev_first_sail = room {
 
    nam = "Левиафан";
 
    hideinv = true;
 
    dsc = [[
 
        Вы поднимаетесь на борт Левиафана и ждете, когда соберется команда. Меньше, чем через пятнадцать минут все поднимаются на борт и вы можете отправляться.
 
    ]];
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "leviathan_captains_cabin");
 
    };
 
};
 
 
iyh_far_from_entrance_foot = room {
 
    nam = "Океан";
 
    handwheel_room = "iyh_far_from_entrance";
 
    underwater = true;
 
    no_exit = [[
 
        Нет смысла покидать Левиафан здесь.
 
    ]];
 
    dsc = [[
 
        Вы видите вдалеке высокую скалу, простирающуюся на многие километры в обе стороны. Прямо перед вами, в скале вы видите массивные каменные двери храма, застывшие в открытом состоянии. Над дверьми вы видите небольшой козырек, поддерживаемый массивными колоннами.
 
    ]];
 
    view = [[Через иллюминаторы вы видите вдалеке высокую скалу, простирающуюся на многие километры в обе стороны. Прямо перед вами, в скале вы видите массивные каменные двери храма, застывшие в открытом состоянии. Над дверьми вы видите небольшой козырек, поддерживаемый массивными колоннами. ]];
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
    };
 
};
 
 
iyh_far_from_entrance = dlg {
 
    var {
 
        visited = false;
 
    };
 
    no_exit = [[
 
        Нет смысла покидать Левиафан здесь.
 
    ]];
 
    nam = "Левиафан, рубка";
 
    hideinv = true;
 
    leviathan = true;
 
    entered = function(s)
 
        make_snapshot();
 
        if atl_iyh_shockfish_left then
 
            poff('wait');
 
        end;
 
 
        if (not s.visited) then
 
            atl_iyh_state = 7;
 
            return [[Вы прибываете на место. ]];
 
        end;
 
    end;
 
    dsc = function(s)
 
        if atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left then
 
            pr [[Через иллюминаторы вы видите высокую скалу, простирающуюся на многие километры в обе стороны. В скале вырезаны массивные каменные двери храма, застывшие в открытом состоянии. Над дверьми вы видите небольшой козырек, поддерживаемый массивными колоннами. Отсюда вы видите, как время от времени из дверей храма выплывает огромный скат. ]];
 
        elseif atl_iyh_entrance_destroyed then
 
            pr [[Через иллюминаторы вы видите высокую скалу, простирающуюся на многие километры в обе стороны. В одном из мест скалы недавно произошел обвал, похоронив под собой вход в древний навьярский храм. ]];
 
        else
 
            pr [[Через иллюминаторы вы видите высокую скалу, простирающуюся на многие километры в обе стороны. В скале вырезаны массивные каменные двери храма, застывшие в открытом состоянии. Над дверьми вы видите небольшой козырек, поддерживаемый массивными колоннами. ]];
 
        end;
 
 
        if (not s.visited) then
 
            s.visited = true;
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                pr [[Леарр поднимается в рубку. При виде храма, она восклицает: "Мы должны-попасть туда!" ]];
 
            end;
 
        end;
 
    end;
 
    phr = {
 
        {tag="advance", always=true, "[Подойти ближе]", [[Послушные вашей воле, двигатели Левиафана приводят субмарину в движение и вы плавно приближаетесь ко входу в храм. ]], code [[
 
            move(submarine_leviathan, "iyh_near_temple_foot");
 
            walk('iyh_near_temple');
 
        ]]};
 
        {tag="wait", "[Ждать]", [[Вы решаете подождать до наступления ночи и это правдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту. Без сомнения, он вернется утром, но у вас есть целая ночь, чтобы сделать все, что нужно. ]], code [[
 
        {tag="wait", "[Ждать]", [[Вы решаете подождать до наступления ночи и это оправдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту. Без сомнения, он вернется утром, но у вас есть целая ночь, чтобы сделать все, что нужно. ]], code [[
 
            lifeon(iyh_far_from_entrance);
 
            atl_iyh_shockfish_away = 30;
 
        ]]};
 
        {tag="light_temple", always=true, "[Осветить вход в храм]", function(s)
 
            if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
                iyh_fight.distance = 1000; walk('iyh_fight');
 
                return [[Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат. ]];
 
            else
 
                return [[Мощный луч света падает на вход в храм. Ничего не происходит. ]];
 
            end;
 
        end};
 
        {tag="light_wall_r", "[Осветить скалы справа от храма]", [[Мощный луч света освещает скалы по правую сторону от храма. Он плавно скользит по поверхности скалы, пока вы не натыкаетесь на то, что отсюда кажется вам каким-то ущельем. Возможно следует изучить его? ]], code [[
 
            iyh_near_temple:pon('ravine');
 
            pon('ravine');
 
        ]]};
 
        {tag="light_wall_l", "[Осветить скалы слева от храма]", [[Мощный луч света освещает скалы по левую сторону от храма. Он плавно скользит по поверхности скалы, однако так и не натыкается ни на что интересное. ]]};
 
        {tag="ravine", false, always=true, "[Подойти ко входу в ущелье]", [[Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье. ]], code [[
 
            move(submarine_leviathan, "iyh_ravine_entry_foot");
 
            walk('iyh_ravine_entry'); 
 
        ]]};
 
        {tag="away", always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {tag="return", always=true, "[Покинуть храм]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
    };
 
    life = function(s)
 
        if (not atl_iyh_shockfish_left) then
 
            atl_iyh_shockfish_away = atl_iyh_shockfish_away - 1;
 
            if (atl_iyh_shockfish_away == 0) then
 
                lifeoff(iyh_far_from_entrance);
 
                if (where(pl) == iyh_temple_main_hall_entry or where(pl) == iyh_temple_main_hall_middle or where(pl) == iyh_temple_main_hall_end or where(pl) == iyh_near_temple_foot) and not have(iyh_item_amulet) then
 
                    walk("game_over_shockfish");
 
                elseif (where(pl).leviathan == true and (where(submarine_leviathan) == iyh_near_temple_foot)) then
 
                    pr [[Скат возвращается и, заметив Левиафан, тут же нападает на субмарину. Вы поднимаетесь на мостик, чтобы принять управление. ]];
 
                    walk("iyh_fight");
 
                end;
 
            elseif atl_iyh_shockfish_away < 5 and (where(pl).temple or where(pl).leviathan and where(submarine_leviathan) == iyh_near_temple_foot) then
 
                pr "Уже почти рассвело. Скат вот-вот вернется. ";
 
            elseif atl_iyh_shockfish_away < 10 and (where(pl).temple or (pl).leviathan and where(submarine_leviathan) == iyh_near_temple_foot) then
 
                pr "Приближается рассвет. Скат скоро вернется. ";
 
            end;
 
        end;
 
    end;
 
};
 
 
iyh_fight = room {
 
    var {
 
        temple_distance = 0;
 
        distance = 0;
 
        shockfish_health = 100;
 
        timing = 0;
 
    };
 
    nam = "Штурвал Левиафана";
 
    entered = function(s)
 
        s.temple_distance = s.distance;
 
        s.shockfish_health = 100;
 
    end;
 
    hideinv = true;
 
    forcedsc = true;
 
    leviathan = true;
 
    nosave = true;
 
    noautosave = true;
 
    dsc = function(s)
 
        pr("Вы находитесь от ската на расстоянии около "..tostring(math.abs(s.distance)).." метров. ");
 
        pr("Храм находится примерно на расстоянии " .. tostring(math.abs(s.temple_distance)) .. " метров. ");
 
        pr("На приборной панели вы видите, что ");
 
        iyh_fight_torpedo:enable();
 
        iyh_fight_recharge:disable();
 
        if (submarine_leviathan.torpedoes == 2) then
 
            pr "оба торпедных аппапата заряжены и готовы к бою. ";
 
        elseif (submarine_leviathan.torpedoes == 1) then
 
            pr "только один из торпедных аппаратов заряжен. ";
 
        else
 
            iyh_fight_recharge:enable();
 
            iyh_fight_torpedo:disable();
 
            pr "у вас не осталось заряженных торпед. ";
 
        end;
 
        if (submarine_leviathan.electric_integrity < 30) then
 
            pr "Свет в рубке периодически моргает, чувствуется запах горелой проводки, часть проводов искрит. ";
 
        elseif (submarine_leviathan.electric_integrity < 70) then
 
            pr "Свет в рубке периодически моргает. ";
 
        end;
 
        if (submarine_leviathan.hull_integrity < 30) then
 
            pr "Обшивка Левиафана сильно повреждена. ";
 
        elseif (submarine_leviathan.hull_integrity < 70) then
 
            pr "Обшивка Левиафана повреждена. ";
 
        end;
 
    end;
 
    maketurn = function(s)
 
        if (s.distance > 1000 or s.distance < -1000) then
 
            if (s.shockfish_health < 20 or atl_iyh_entrance_destroyed) then
 
                pr "Скат уплывает и вы остаетесь одни. ";
 
                atl_iyh_shockfish_left = true;
 
                submarine_leviathan.hull_integrity = 100;
 
                submarine_leviathan.electric_integrity = 100;
 
                submarine_leviathan.torpedoes = 2;
 
                walk("iyh_far_from_entrance");
 
                return;
 
            else
 
                pr "Вы удаляетесь достаточно далеко и скат возвращается к себе в жилище. ";
 
                s.shockfish_health = 100;
 
                submarine_leviathan.hull_integrity = 100;
 
                submarine_leviathan.electric_integrity = 100;
 
                submarine_leviathan.torpedoes = 2;
 
                walk("iyh_far_from_entrance");
 
                return;
 
            end;
 
        end;
 
        if (s.shockfish_health < 20 or (atl_iyh_entrance_destroyed and s.shockfish_health < 70)) then
 
            if (s.distance < 0) then
 
                s.distance = s.distance - 75;
 
            else
 
                s.distance = s.distance + 75;
 
            end;
 
            pr "Скат пытается сбежать от вас. ";
 
        else
 
            if (math.abs(s.distance) <= 75) then
 
                if (math.abs(s.distance) > 0) then
 
                    s.distance = 0;
 
                    pr "Скат приближается к вам. ";
 
                end;
 
 
                if (s.timing <= 0) then
 
                    s.timing = 5;
 
                    pr "Скат атакует Левиафан электрическим разрядом. ";
 
                    submarine_leviathan.electric_integrity = submarine_leviathan.electric_integrity - 10;
 
                    if (submarine_leviathan.electric_integrity > 50) then
 
                        pr "Атака не оказывает видимого эффекта на субмарину. ";
 
                    elseif (submarine_leviathan.electric_integrity > 0) then
 
                        pr "Свет моргает, проводка искрит. ";
 
                        if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
                            pr "По телефону вы слышите встревоженный голос Райта: \"Мы так долго не протянем\". ";
 
                        elseif (ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0) then
 
                            pr "По телефону вы слышите встревоженный голос Рэдклиффа: \"Мы так долго не протянем\". ";
 
                        end;
 
                    else
 
                        walk('game_over_powerless');
 
                    end;
 
                else
 
                    s.timing = s.timing - 1;
 
                    pr "Скат пытается пробить обшивку Левиафана хвостовым шипом";
 
                    submarine_leviathan.hull_integrity = submarine_leviathan.hull_integrity - 5;
 
                    if (submarine_leviathan.hull_integrity > 50) then
 
                        pr ", но не наносит ощутимого ущерба. ";
 
                    elseif (submarine_leviathan.hull_integrity > 0) then
 
                        pr ". Сильный удар повреждает внешнюю обшивку, в резервуары проникает вода. ";
 
                    else
 
                        walk('game_over_sunk');
 
                    end;
 
                end;
 
            else
 
                pr "Скат приближается к вам. ";
 
                if (s.distance < 0) then
 
                s.distance = s.distance + 75;
 
            else
 
                s.distance = s.distance - 75;
 
            end;
 
            end;
 
        end;
 
    end;
 
    obj = {
 
        'iyh_fight_torpedo_temple',
 
        'iyh_fight_torpedo',
 
        'iyh_fight_sonic',
 
        'iyh_fight_recharge',
 
        'iyh_advance_full',
 
        'iyh_advance_half',
 
        'iyh_advance_quarter',
 
        'iyh_retreat_full',
 
        'iyh_retreat_half',
 
        'iyh_retreat_quarter'
 
    };
 
};
 
 
iyh_fight_torpedo_temple = obj {
 
    nam = "iyh_fight_torpedo_temple";
 
    dsc = "{Выстрелить торпедой в храм}^";
 
    act = function(s)
 
        if (math.abs(iyh_fight.temple_distance) < 50) then
 
            return [[Цель слишком близко. ]];
 
        elseif (math.abs(iyh_fight.temple_distance) > 200) then
 
            return [[Цель слишком далеко. ]];
 
        else
 
            atl_iyh_entrance_destroyed = true;
 
            
 
            pr [[Торпеда попадает в аккурат над храмом и вход оказывается завален тяжелыми глыбами. ]];
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                pr [[Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь?!"^Она с неприязнью смотрит на вас и удаляется к себе в каюту. ]];
 
                rel_learr = rel_learr - 1;
 
                remove(char_learr, char_learr.home);
 
                char_learr.home = "leviathan_cabin_3";
 
                put(char_learr, "leviathan_cabin_3");
 
                leviathan_cabin_3.lock = true;
 
            end;
 
            s:disable();
 
        end;
 
    end;
 
};
 
 
iyh_fight_torpedo = obj {
 
    nam = "iyh_fight_torpedo";
 
    dsc = "{Выстрелить торпедой в ската}^";
 
    act = function(s)
 
        if (math.abs(iyh_fight.distance) < 50) then
 
            return [[Цель слишком близко. ]];
 
        elseif (math.abs(iyh_fight.distance) > 200) then
 
            return [[Цель слишком далеко. ]];
 
        else
 
            if (iyh_fight.shockfish_health > 70) then
 
                local meters = 25 * rnd(3) + 25;
 
                iyh_fight.shockfish_health = iyh_fight.shockfish_health - 70;
 
                if (iyh_fight.distance >= 0) then
 
                    iyh_fight.distance = iyh_fight.distance + meters;
 
                else
 
                    iyh_fight.distance = iyh_fight.distance - meters;
 
                end;
 
                pr("Вы стреляете торпедой в ската. Торпеда достигает цели. Ската отбрасывает назад на ".. tostring(meters) .. " метров. ");
 
            else
 
                iyh_fight.shockfish_health = 100;
 
                submarine_leviathan.hull_integrity = 100;
 
                submarine_leviathan.electric_integrity = 100;
 
                submarine_leviathan.torpedoes = 2;
 
 
                iyh_fight.shockfish_health = 0;
 
                atl_iyh_shockfish_dead = true;
 
                pr "Вы стреляете торпедой в ската. Торпеда взрывается достигнув цели и разрывает ската. Вода краснеет от крови, а вы теперь можете безопасно приблизиться к храму. ";
 
 
                if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                    pr [[Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь ненавистный-a'rr?!"^После этого она убегает к себе в каюту. ]];
 
                    rel_learr = -99;
 
                    remove(char_learr, char_learr.home);
 
                    char_learr.home = "leviathan_cabin_3";
 
                    put(char_learr, "leviathan_cabin_3");
 
 
                    leviathan_cabin_3.lock = true;
 
                end;
 
                if (math.abs(iyh_fight.temple_distance) < 100) then
 
                    walk("iyh_near_temple");
 
                else
 
                    walk("iyh_far_from_entrance");
 
                end;
 
 
                return;
 
            end;
 
            return iyh_fight:maketurn();
 
        end;
 
    end;
 
};
 
 
iyh_fight_sonic = obj {
 
    nam = "iyh_fight_sonic";
 
    dsc = "{Выстрелить из звуковой пушки}^";
 
    act = function(s)
 
        if (math.abs(iyh_fight.distance) > 200) then
 
            return [[
 
                Цель слишком далеко
 
            ]];
 
        else
 
            if (iyh_fight.shockfish_health > 50) then
 
                iyh_fight.shockfish_health = iyh_fight.shockfish_health - 10;
 
                pr "Вы стреляете в ската из звуковой пушки. Это лишь слегка ранит его. ";
 
            else
 
                pr "Вы стреляете в ската из звуковой пушки. Это не наносит ему серьезного ущерба. ";
 
            end;
 
            return iyh_fight:maketurn();
 
        end;
 
    end;
 
};
 
 
iyh_fight_recharge = obj {
 
    nam = "iyh_fight_torpedo";
 
    dsc = "{Перезарядить торпеды}^";
 
    act = function(s)
 
        --Если в партии нет никого кроме Леарр/Аикерьярра, то игрок перезаряжает торопеды сам, иначе -- отдает приказ
 
        if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0 or ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0) then
 
            pr "Вы отдаете по телефону приказ перезарядить торпедные аппараты. ";
 
        else
 
            pr "Вы спускаетесь вниз, чтобы перезарядить торпедные аппараты. ";
 
            iyh_fight:maketurn();
 
            iyh_fight:maketurn();
 
            pr "Вы возвращаетесь в рубку, чтобы продолжить бой. "
 
        end;
 
    end;
 
};
 
 
iyh_advance_full = obj {
 
    nam = "iyh_advance_full";
 
    dsc = "{Полный вперед}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на полную мощность. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance - 100;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 100;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance + 100;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 100;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_advance_half = obj {
 
    nam = "iyh_advance_half";
 
    dsc = "{1/2 вперед}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на половину мощности. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance - 50;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 50;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance + 50;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 50;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_advance_quarter = obj {
 
    nam = "iyh_advance_quarter";
 
    dsc = "{1/4 вперед}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на четверть мощности. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance - 25;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 25;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance + 25;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 25;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_retreat_full = obj {
 
    nam = "iyh_retreat_full";
 
    dsc = "{Полный назад}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на полную мощность. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance + 100;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 100;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance - 100;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 100;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_retreat_half = obj {
 
    nam = "iyh_retreat_half";
 
    dsc = "{1/2 назад}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на половину мощности. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance + 50;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 50;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance - 50;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 50;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_retreat_quarter = obj {
 
    nam = "iyh_retreat_quarter";
 
    dsc = "{1/4 назад}^";
 
    act = function(s)
 
        pr "Вы включаете двигатели на четверть мощности. ";
 
        if (iyh_fight.distance >= 0) then
 
            iyh_fight.distance = iyh_fight.distance + 25;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance + 25;
 
            if (iyh_fight.distance < 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        else
 
            iyh_fight.distance = iyh_fight.distance - 25;
 
            iyh_fight.temple_distance = iyh_fight.temple_distance - 25;
 
            if (iyh_fight.distance >= 0) then
 
                pr "Вы проплываете мимо противника и разворачиваете субмарину. "
 
            end;
 
        end;
 
        iyh_fight:maketurn();
 
    end;
 
};
 
 
iyh_ravine_entry = dlg {
 
    nam = "Штурвал Левиафана";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    hideinv = true;
 
    leviathan = true;
 
    phr = {
 
        {always = true, "[Направить Левиафан в ущелье]", function(s)
 
            iyh_labyrinth.position = "1";
 
            walk("iyh_labyrinth");
 
            return false;
 
        end};
 
        {always = true, "[Отвести Левиафан от ущелья]", function(s)
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            walk("iyh_far_from_entrance");
 
            return false;
 
        end};
 
        {always = true, "[Подвести Левиафан ко входу в храм]", function(s)
 
            move(submarine_leviathan, "iyh_near_temple_foot");
 
            walk("iyh_near_temple");
 
            return false;
 
        end};
 
        {always = true, "[Отойти от штурвала]", function(s)
 
            walk("leviathan_wheelhouse");
 
            return false;
 
        end};
 
        {tag="return", always=true, "[Покинуть храм]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
    };
 
    entered = function(s)
 
        move(submarine_leviathan, iyh_ravine_entry_foot);
 
        return [[Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. ]];
 
    end;   
 
};
 
 
iyh_ravine_entry_foot = room {
 
    nam = "Ущелье";
 
    no_exit = [[
 
        Нет смысла покидать Левиафан здесь. 
 
    ]];
 
 
    view = [[Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. ]];
 
    handwheel_room = 'iyh_ravine_entry';
 
};
 
 
iyh_labyrinth = labyrinth {
 
    var {
 
        position = "1";
 
    };
 
 
    nam = "Штурвал Левиафана";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    leviathan = true;
 
 
    dir = {
 
        'На север';
 
        'На северо-восток';
 
        'На восток';
 
        'На юго-восток';
 
        'На юг';
 
        'На юго-запад';
 
        'На запад';
 
        'На северо-запад';
 
    };
 
 
    disp = "Штурвал Левиафана";
 
    dsc = function(s)
 
        return [[Вы находитесь где-то в переплетении узких ущелий. Вверху скалы сужаются почти вплотную, не давая вам возможности подняться над ущельем и осмотреться. ]];
 
    end;
 
 
    map = {
 
        ["1"] = {
 
            e8 = "2";
 
            e7 = "32";
 
            ex4 = "iyh_ravine_entry";
 
        };
 
        ["2"] = {
 
            e4 = "1";
 
            e7 = "3";
 
        };
 
        ["3"] = {
 
            e7 = "5";
 
            e8 = "4";
 
            e3 = "2";
 
        };
 
        ["4"] = {
 
            e4 = "3";
 
        };
 
        ["5"] = {
 
            e3 = "3";
 
            e5 = "37";
 
            e6 = "6";
 
        };
 
        ["6"] = {
 
            e2 = "5";
 
            e5 = "33";
 
            e7 = "7";
 
        };
 
        ["7"] = {
 
            e3 = "6";
 
            e6 = "12";
 
            e7 = "11";
 
            e8 = "8";
 
        };
 
        ["8"] = {
 
            e4 = "7";
 
            e7 = "10";
 
            e8 = "9";
 
        };
 
        ["9"] = {
 
            e4 = "8";
 
        };
 
        ["10"] = {
 
            e3 = "8";
 
            e4 = "11";
 
        };
 
        ["11"] = {
 
            e3 = "7";
 
            e8 = "10";
 
        };
 
        ["12"] = {
 
            e2 = "7";
 
            e5 = "14";
 
            e6 = "13";
 
        };
 
        ["13"] = {
 
            e2 = "12";
 
        };
 
        ["14"] = {
 
            e1 = "12";
 
            e5 = "20";
 
            e6 = "15";
 
        };
 
        ["15"] = {
 
            e2 = "14";
 
            e5 = "17";
 
            e6 = "16";
 
        };
 
        ["16"] = {
 
            e2 = "15";
 
        };
 
        ["17"] = {
 
            e1 = "15";
 
            e4 = "19";
 
            e5 = "18";
 
        };
 
        ["18"] = {
 
            e1 = "17";
 
        };
 
        ["19"] = {
 
            e8 = "19";
 
        };
 
        ["20"] = {
 
            e1 = "14";
 
            e4 = "22";
 
            e5 = "21";
 
        };
 
        ["21"] = {
 
            e1 = "20";
 
        };
 
        ["22"] = {
 
            e3 = "25";
 
            e4 = "23";
 
            e8 = "20";
 
        };
 
        ["23"] = {
 
            ex3 = "iyh_rear_entrance";
 
            e4 = "24";
 
            e8 = "22";
 
        };
 
        ["24"] = {
 
            e8 = "23";
 
        };
 
        ["25"] = {
 
            e2 = "27";
 
            e3 = "26";
 
            e7 = "22";
 
        };
 
        ["26"] = {
 
            e7 = "25";
 
        };
 
        ["27"] = {
 
            e1 = "30";
 
            e2 = "29";
 
            e4 = "28";
 
            e6 = "25";
 
        };
 
        ["28"] = {
 
            e8 = "27";
 
        };
 
        ["29"] = {
 
            e6 = "27";
 
        };
 
        ["30"] = {
 
            e2 = "31";
 
            e5 = "27";
 
            e6 = "36";
 
        };
 
        ["31"] = {
 
            e2 = "32";
 
            e6 = "30";
 
            e7 = "35";
 
        };
 
        ["32"] = {
 
            e3 = "1";
 
            e6 = "31";
 
            e7 = "34";
 
        };
 
        ["33"] = {
 
            e1 = "6";
 
            e2 = "37";
 
        };
 
        ["34"] = {
 
            e3 = "32";
 
        };
 
        ["35"] = {
 
            e3 = "31";
 
        };
 
        ["36"] = {
 
            e2 = "30";
 
        };
 
        ["37"] = {
 
            e1 = "5";
 
            e6 = "33";
 
        }
 
    }
 
}
 
 
iyh_rear_entrance = room {
 
    nam = "Левиафан";
 
    leviathan = true;
 
    dsc = [[Вы находитесь в конце ущелья. Луч прожектора освещает небольшой проход в скале. ]];
 
    way = {
 
        kh_vroom("В ущелье", function(s)
 
            iyh_labyrinth.position = "23";
 
            return "iyh_labyrinth";
 
        end);
 
        kh_vroom("Отойти от штурвала", "leviathan_wheelhouse");
 
    };
 
    entered = function(s)
 
        move(submarine_leviathan, iyh_rear_entrance_foot);
 
    end;
 
};
 
 
iyh_rear_entrance_foot = room {
 
    nam = "Ущелье";
 
    temple = true;
 
    dsc = [[Узкое глубокое ущелье. Вы находитесь в одном из его концов. В скале вы видите небольшой проход явно искусственного происхождения. ]];
 
    view = [[Левиафан находится в одном из тупиков изкого глубокого ущелья. В скале перед субмариной виден небольшой проход искусственного происхождения. Практически неприметный проем сейчас освещен ярким лучом прожектора вашей субмарины. ]];
 
    underwater = true;
 
    handwheel_room = "iyh_rear_entrance";
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В проход", "iyh_temple_rear_corridor_entry");
 
    };
 
    entered = function(s)
 
        if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and not char_learr.follow and where(submarine_leviathan) == here() and char_learr.home ~= "leviathan_cabin_3") then
 
            pr [[Леарр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду". ]];
 
            char_learr:accompany(true);
 
            char_radcliffe:accompany(false);
 
            char_wright:accompany(false);
 
            char_anna:accompany(false);
 
        end;
 
 
        path("В Левиафан"):disable();
 
        if (where(submarine_leviathan) == here()) then
 
            make_snapshot();
 
            path("В Левиафан"):enable();
 
        end;
 
    end;
 
};
 
 
iyh_temple_rear_corridor_entry = room {
 
    nam = "Коридор";
 
    temple = true;
 
    dsc = [[Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("Выйти", "iyh_rear_entrance_foot");
 
        kh_vroom("В комнату слева", "iyh_left_room_1");
 
        kh_vroom("В комнату справа", "iyh_right_room_1");
 
        kh_vroom("Пройти дальше", "iyh_temple_rear_corridor_middle");
 
    };
 
};
 
 
iyh_temple_rear_corridor_middle = room {
 
    nam = "Коридор";
 
    temple = true;
 
    dsc = [[Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("К задней двери", "iyh_temple_rear_corridor_entry");
 
        kh_vroom("В комнату слева", "iyh_left_room_2");
 
        kh_vroom("В комнату справа", "iyh_right_room_2");
 
        kh_vroom("К главному залу", "iyh_temple_rear_corridor_end");
 
    };
 
};
 
 
iyh_temple_rear_corridor_end = room {
 
    nam = "Коридор";
 
    temple = true;
 
    dsc = [[Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. Перед вами расположен проход, ведущий в основное помещение храма. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("К задней двери", "iyh_temple_rear_corridor_middle");
 
        kh_vroom("В комнату слева", "iyh_left_room_3");
 
        kh_vroom("В комнату справа", "iyh_right_room_3");
 
        kh_vroom("В главный зал", "iyh_temple_main_hall_end");
 
    };
 
};
 
 
iyh_left_room_1 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_entry");
 
    };
 
};
 
 
iyh_right_room_1 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_entry");
 
    };
 
    obj = {
 
        "item_legend_of_hunter"
 
    };
 
};
 
 
iyh_left_room_2 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_middle");
 
    };
 
};
 
 
iyh_right_room_2 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_middle");
 
    };
 
    obj = {
 
        "item_legend_of_first_city"
 
    };
 
};
 
 
iyh_left_room_3 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_end");
 
        kh_vroom("В скрытый проход", "iyh_temple_hidden_room_1"):disable();
 
    };
 
    obj = {
 
        "iyh_old_navjiarr_body",
 
        "iyh_item_record",
 
        "iyh_room_wall",
 
        "iyh_room_wall_gap"
 
    };
 
};
 
 
iyh_old_navjiarr_body = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "iyh_old_navjiarr_body";
 
    dsc = [[В одной из ниш справа от входа лежит старый {навьяр}. Серая чешуя давно поблекла, глаза закрыты. Руки сложены на груди. ]];
 
    act = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            put(iyh_item_amulet, pl);
 
            return [[Навьяр никак не реагирует на вас. Он мертв. В руках его вы замечаете небольшой металлический амулет, который вы забираете себе. ]];
 
        else
 
            return [[Навьяр никак не реагирует на вас. Он мертв. ]];
 
        end;
 
    end;
 
};
 
 
iyh_item_record = obj {
 
    nam = "iyh_item_record";
 
    disp = "Каменная табличка";
 
    dsc = [[Рядом с ним лежит каменная {табличка} с письменами. ]];
 
    tak = [[Вы забираете табличку. ]];
 
    inv = function(s)
 
        --Написать исходный навьярский вариант таблички
 
        if (language_known) then
 
            return [[Табличка гласит: "Те, кто найдут это, пусть знают, что здесь покоится истинный глаз Дипатреанотра, служащий разгадкой этого храма. Знайте, читающие это, что реликвию я взял для способствования осуществления пророчества о спящем в глубине. Для открытия храма, взгляните истинным глазом напротив моего ложа. Другие фрагменты карты, ведущей к цели лежат в двух близлежащих городах. Еще два -- в далеких землях, в местах известных как Венаэданотр и Нлейисланотр". Чуть ниже дописано: "Если Вилрьярр еще здесь, отпустите его. Ему незачем оставаться здесь". ]];
 
        else
 
            return [[Табличка содержит навьярские письмена, которые вы не понимаете. ]];
 
        end;
 
    end;
 
};
 
 
iyh_item_amulet = obj {
 
    nam = "iyh_item_amulet";
 
    disp = "Амулет";
 
    inv = [[Небольшой металлический додекаэдр на цепочке. На нем выгравирован причудливый орнамент, а на одной из граней изображен скат. Амулет слегка вибрирует в ваших руках, издавая низкий едва заметный гул. ]];
 
};
 
 
iyh_room_wall = obj {
 
    nam = "iyh_room_wall";
 
    dsc = function(s)
 
        if disabled(iyh_room_wall_gap) then
 
            return [[Одна из стен комнаты раздвинулась в стороны, открывая проход в скрытое помещение храма. ]];
 
        else
 
            return [[{Стена} слева от входа не содержит ниш, в отличие от стен в других комнатах. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if disabled(iyh_room_wall_gap) then
 
            return [[Гладкая каменная стена раздвинулась в стороны, открывая проход в скрытое помещение храма. ]];
 
        else
 
            return [[Гладкая каменная стена. Глубокая трещина от потолка до пола пересекает ее посередине. Вы не видите ничего необычного. ]];
 
        end;
 
    end;
 
};
 
 
iyh_room_wall_gap = obj {
 
    nam = "iyh_room_wall_gap";
 
    dsc = [[Глубокая {трещина} от потолка до пола пересекает ее посередине. ]];
 
    act = function(s)
 
        if (iyh_looking_glass.seen) then
 
            path('В скрытый проход'):enable();
 
            s:disable();
 
            return [[Вы осторожно нащупываете скрытую внутри трещины кнопку и нажимаете ее. Каменные плиты отодвигаются в стороны, образуя проход в скрытое помещение храма. ]];
 
        else
 
            return [[Просто трещина, ничего интересного. ]];
 
        end;
 
    end;
 
};
 
 
iyh_looking_glass = obj {
 
    var {
 
        seen = false;
 
    };
 
    nam = "iyh_looking_glass";
 
    disp = "Подзорная труба";
 
    dsc = [[]];
 
    inv = [[Короткая подзорная труба из неизвестного вам металла, такого же, из какого сделаны многие другие старые артефакты навьяров. ]];
 
    use = function(s, o)
 
        if (o == iyh_room_wall or o == iyh_room_wall_gap) then
 
            s.seen = true;
 
            return "Через трубу стена выглядит совсем иначе -- картинка странным образом искажается, позволяя видеть детали, скрытые от обычного взора. Стоя прямо напротив трещины и глядя внутрь, вы замечаете небольшой прямоугольный выступ, примерно на уровне шеи. ";
 
        end;
 
    end;
 
};
 
 
iyh_right_room_3 = room {
 
    nam = "Комната";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
    way = {
 
        kh_vroom("В коридор", "iyh_temple_rear_corridor_end");
 
        kh_vroom("В скрытое помещение", "iyh_temple_hidden_room_2"):disable();
 
    };
 
    obj = {
 
        "item_legend_of_temple"
 
    };
 
};
 
 
iyh_temple_hidden_room_1 = room {
 
    nam = "iyh_temple_hidden_room_1";
 
    temple = true;
 
    underwater = true;
 
    disp = "Скрытая комната";
 
    dsc = [[Небольшая комната, вытесанная в скале. Надежно спрятанная от посторонних глаз, она хранила свои тайны многие столетия, пока вы не открыли ее. Сейчас одна из стен ее раскрылась, открывая проход внутрь. ]];
 
    way = {
 
        kh_vroom("К задним комнатам", "iyh_left_room_3");
 
        kh_vroom("К главному залу", "iyh_temple_left_hall"):disable();
 
    };
 
    obj = {
 
        "iyh_temple_hidden_wall_1",
 
        "iyh_temple_lever_1"
 
    };
 
};
 
 
iyh_temple_lever_1 = obj {
 
    var {
 
        state = false;
 
    };
 
    nam = "iyh_temple_lever_1";
 
    dsc = [[У стены, напротив проема находится массивный {рычаг}. ]];
 
    act = function(s)
 
        if (s.state) then
 
            return [[Вам больше незачем его трогать. ]];
 
        else
 
            s.state = true;
 
            path("К главному залу"):enable();
 
            path("В скрытое помещение", iyh_temple_left_hall):enable();
 
            return [[Вы дергаете за рычаг и одна из плит в стене рядом с ним отодвигается, открывая проход. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_hidden_wall_1 = obj {
 
    nam = "iyh_temple_hidden_wall_1";
 
    dsc = [[Одна из стен комнаты покрыта навьярскими {письменами}, отлично сохранившимися. ]];
 
    act = function(s)
 
        if (language_known) then
 
            iyh_temple_right_hall.question_seen = true;
 
            return [[Слова на стене складываются во фразу: "Многие покинули этот дом, чтобы поселиться рядом с ним и никогда более не вернуться. Многие другие навещают его регулярно, не оставляя надолго. Остальные же, так и остались там, не покидая его никогда". ]];
 
        else
 
            return [[Вы не понимаете написанного. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_hidden_room_2 = room {
 
    nam = "iyh_temple_hidden_room_2";
 
    underwater = true;
 
    disp = "Скрытая комната";
 
    dsc = [[Небольшая комната, вытесанная в скале. Надежно спрятанная от посторонних глаз, она хранила свои тайны многие столетия, пока вы не открыли ее. ]];
 
    way = {
 
        kh_vroom("К задним комнатам", "iyh_right_room_3"):disable();
 
        kh_vroom("К главному залу", "iyh_temple_right_hall")
 
    };
 
    obj = {
 
        "iyh_temple_lever_2",
 
        "iyh_temple_lever_3"
 
    };
 
};
 
 
iyh_temple_stairs_l = obj {
 
    nam = "iyh_temple_stairs_l";
 
    dsc = [[В стене, слева от входа вы видите темный проем, за которым начинается длинная каменная {лестница}, ведущая куда-то вниз, под храм. ]];
 
};
 
 
iyh_temple_stairs_r = obj {
 
    nam = "iyh_temple_stairs_r";
 
    dsc = [[В стене, справа от входа вы видите темный проем, за которым начинается длинная каменная {лестница}, ведущая куда-то вниз, под храм. ]];
 
};
 
 
iyh_temple_lever_2 = obj {
 
    var {
 
        state = false;
 
    };
 
    nam = "iyh_temple_lever_1";
 
    dsc = [[У стены, напротив проема находится массивный {рычаг}. ]];
 
    act = function(s)
 
        if (s.state) then
 
            return [[Вам больше незачем его трогать. ]];
 
        else
 
            s.state = true;
 
            path("К задним комнатам"):enable();
 
            path("В скрытое помещение", iyh_right_room_3):enable();
 
            return [[Вы дергаете за рычаг и одна из плит в стене рядом с ним отодвигается, открывая проход. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_lever_3 = obj {
 
    var {
 
        state = false;
 
    };
 
    nam = "iyh_temple_lever_1";
 
    dsc = [[В центре комнаты находится еще один, такой же, {рычаг}. ]];
 
    act = function(s)
 
        if (s.state) then
 
            return [[Вам больше незачем его трогать. ]];
 
        else
 
            s.state = true;
 
            iyh_temple_stairs_l:enable();
 
            iyh_temple_stairs_r:enable();
 
            path("Вниз по лестнице", iyh_temple_left_hall):enable();
 
            path("Вниз по лестнице", iyh_temple_right_hall):enable();
 
            return [[Вы дергаете за рычаг и слышите скрежет каменных плит где-то неподалеку. В комнате ничего не изменилось. ]];
 
        end;
 
    end;
 
};
 
 
iyh_shockfish = obj {
 
    nam = "iyh_shockfish";
 
    dsc = [[В центре зала завис огромный {скат}. Громадная рыба спокойно наблюдает за вами и, кажется, не собирается нападать. ]];
 
    noshoot = [[Вряд ли вы серьезно повредите гиганта своим выстрелом. ]];
 
    act = [[Скат наблюдает за вами, однако не стремится нападать. Возможно, дело в вашем амулете?]];
 
    used = function(s, o)
 
        if (o == iyh_item_amulet) then
 
            remove(iyh_item_amulet, pl);
 
            remove(iyh_shockfish, here());
 
            atl_iyh_shockfish_left = true;
 
            return [[Вы бросаете амулет скату и гигантская рыба легко подхватывает его. Взмахнув хвостом, он выплывает из храма и устремляется куда-то вдаль. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_main_hall_enter = function(s)
 
    remove(iyh_shockfish, here());
 
    if (atl_iyh_shockfish_away == 0 and atl_iyh_shockfish_away and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
        if have(iyh_item_amulet) then
 
            put(iyh_shockfish, here());
 
        else
 
            walk("game_over_shockfish_2");
 
        end;
 
    end;
 
end;
 
 
iyh_temple_main_hall_end = room {
 
    nam = "Храм";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь в дальнем конце зала. Массивная дверь ведет в задние помещения храма. ]];
 
    enter = iyh_temple_main_hall_enter;
 
    way = {
 
        kh_vroom("В центр зала", "iyh_temple_main_hall_middle");
 
        kh_vroom("В заднюю дверь", "iyh_temple_rear_corridor_end");
 
    };
 
};
 
 
iyh_temple_main_hall_middle = room {
 
    nam = "Храм";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[
 
        Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Слева и справа от вас вы видите небольшие проемы, ведущие в боковые помещения.
 
    ]];
 
    obj = {
 
        "iyh_pedestal"
 
    };
 
    enter = iyh_temple_main_hall_enter;
 
    way = {
 
        kh_vroom("К выходу из храма", "iyh_temple_main_hall_entry");
 
        kh_vroom("В конец зала", "iyh_temple_main_hall_end");
 
        kh_vroom("Налево", "iyh_temple_left_hall");
 
        kh_vroom("Направо", "iyh_temple_right_hall");
 
    };
 
};
 
 
iyh_temple_main_hall_entry = room {
 
    nam = "Храм";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[
 
        Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь у входа в зал.
 
    ]];
 
    enter = iyh_temple_main_hall_enter;
 
    entered = function(s)
 
        if (atl_iyh_entrance_destroyed) then
 
            path("Выйти из храма"):disable();
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("Выйти из храма", "iyh_near_temple_foot");
 
        kh_vroom("В центр зала", "iyh_temple_main_hall_middle");
 
    };
 
    obj = {
 
        "item_temple_disk"
 
    };
 
};
 
 
iyh_temple_left_hall = room {
 
    nam = "Храм";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Вы находитесь в одной из боковых комнат храма. Небольшое помещение -- не более десятка метров в ширину. ]];
 
    way = {
 
        kh_vroom("В главный зал", "iyh_temple_main_hall_middle");
 
        kh_vroom("В скрытое помещение", "iyh_temple_hidden_room_1"):disable();
 
        kh_vroom("Вниз по лестнице", "iyh_temple_descent_l"):disable();
 
    };
 
    obj = {
 
        "iyh_temple_rubble_left",
 
        "iyh_temple_niche_left",
 
        "iyh_temple_question_hall_plaque"
 
    };
 
};
 
 
iyh_temple_right_hall = room {
 
    var {
 
        question_seen = false;
 
        question_message_seen = false;
 
    };
 
    nam = "Храм";
 
    temple = true;
 
    underwater = true;
 
    dsc = [[Вы находитесь в одной из боковых комнат храма. Небольшое помещение -- не более десятка метров в ширину. ]];
 
    checkCoder = function(s, phrase)
 
        if (phrase == "aed'rr") then
 
            if s.question_seen then
 
                path('В скрытое помещение', s):enable();
 
                return [[Стоит последней лампочке погаснуть, как одна из плит в стене комнаты сдвигается, открывая проход в скрытое помещение. ]];
 
            else
 
                return [[Лампочки кодировщика зажигаются в заданной последовательности, но ничего не происходит. Нельзя ответить на незаданный вопрос. ]];
 
            end;
 
        else
 
            return [[Лампочки кодировщика зажигаются в заданной последовательности, но ничего не происходит. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В главный зал", "iyh_temple_main_hall_middle");
 
        kh_vroom("В скрытое помещение", "iyh_temple_hidden_room_2"):disable();
 
        kh_vroom("Вниз по лестнице", "iyh_temple_descent_r"):disable();
 
    };
 
    obj = {
 
        "iyh_temple_rubble_right",
 
        "iyh_temple_niche_right",
 
        "iyh_temple_answer_hall_plaque"
 
    };
 
};
 
 
iyh_temple_question_hall_plaque = obj {
 
    nam = "iyh_temple_question_hall_plaque";
 
    dsc = [[На противоположной от входа стене зала висит небольшая {табличка} с нанесенными на нее цветными полосами. ]];
 
    act = function(s)
 
        if (language_known) then
 
            return [[Надпись гласит: "Вопрос скрыт в этом храме, но не в этой комнате". ]];
 
        else
 
            return [[К сожалению, вы не понимаете, что здесь написано. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_answer_hall_plaque = obj {
 
    nam = "iyh_temple_answer_hall_plaque";
 
    dsc = [[На противоположной от входа стене зала висит небольшая {табличка} с нанесенными на нее цветными полосами. ]];
 
    act = function(s)
 
        if (language_known) then
 
            iyh_temple_right_hall.question_message_seen = true;
 
            return [[Надпись гласит: "Ответь на вопрос и ты войдешь". ]];
 
        else
 
            return [[К сожалению, вы не понимаете, что здесь написано. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_descent_l = darkroom {
 
    nam = "Храм, спуск";
 
    temple = true;
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
        kh_vroom("Вверх", "iyh_temple_left_hall", 2);
 
        kh_vroom("Вниз", "iyh_temple_under_corridor_1", 1);
 
    };
 
};
 
 
 
iyh_temple_descent_r = darkroom {
 
    nam = "Храм, спуск";
 
    temple = true;
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то в глубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
        kh_vroom("Вверх", "iyh_temple_right_hall", 2);
 
        kh_vroom("Вниз", "iyh_temple_under_corridor_1", 1);
 
    };
 
};
 
 
iyh_temple_under_corridor_1 = darkroom {
 
    nam = "Под храмом";
 
    temple = true;
 
    underwater = true;
 
    dsc_halflit = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. Слева и справа вы видите проходы, ведущие к лестницам наверх. ]];
 
    dsc_dark = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. В темноте вы различаете едва уловимое свечение откуда-то в конце коридора. ]];
 
    way = {
 
        kh_vroom("На лестницу слева", "iyh_temple_descent_l", 1);
 
        kh_vroom("На лестницу справа", "iyh_temple_descent_r", 1);
 
        kh_vroom("Дальше по коридору", "iyh_temple_under_corridor_2", 2);
 
    };
 
};
 
 
iyh_temple_under_corridor_2 = darkroom {
 
    nam = "Под храмом";
 
    temple = true;
 
    underwater = true;
 
    dsc_halflit = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. ]];
 
    dsc_dark = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. ]];
 
    obj = {
 
        'iyh_temple_under_plaque'
 
    };
 
    checkCoder = function(s, phrase)
 
        if (phrase == "i'yhe'he'vji'a'rr" or phrase == "he'vji'a'rr") then
 
            iyh_temple_under_plaque:disable();
 
            path("В дверь", s):enable();
 
            return [[Лампочки кодировщика зажигаются в заданной последовательности и каменная дверь медленно поднимается, открывая проход дальше. ]];
 
        else
 
            return [[Лампочки кодировщика зажигаются в заданной последовательности, но ничего не происходит. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("Назад, к лестницам", "iyh_temple_under_corridor_1", 1);
 
        kh_vroom("В дверь", "iyh_temple_under_room", 1):disable();
 
    };
 
};
 
 
iyh_temple_under_plaque = obj {
 
    nam = "iyh_temple_under_plaque";
 
    seen_level = 2;
 
    dsc = function(s)
 
        if (me().has_light) then
 
            return [[Проход дальше закрывает массивная каменная дверь. Вы не видите никаких способов открыть ее. На двери расположена небольшая черная {табличка} из неизвестного материала. ]];
 
        elseif (language_known) then
 
            return [[Проход дальше закрывает массивная каменная дверь. Вы не видите никаких способов открыть ее. На двери расположена небольшая {табличка} из неизвестного материала. В темноте вы видите на табличке едва заметные светящиеся полосы -- очевидно они утратили свою яркость от времени. Надпись гласит: "Назови себя и ты войдешь". ]];
 
        else
 
            return [[Проход дальше закрывает массивная каменная дверь. Вы не видите никаких способов открыть ее. На двери расположена небольшая {табличка} из неизвестного материала. В темноте вы видите на табличке едва заметные светящиеся полосы -- очевидно они утратили свою яркость от времени. К сожалению, вы не понимаете, что они значат. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (me().has_light) then
 
            return [[Табличка из неизвестного материала. На ней нанесены едва заметные светящиеся полосы. Даже при слабом свете лампы их свечение еле заметно. ]];
 
        else
 
            return [[Табличка из неизвестного материала. Cветящиеся полосы, нанесенные на нее достаточно различимы в темноте. ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_under_room = darkroom {
 
    nam = "iyh_temple_under_room";
 
    temple = true;
 
    underwater = true;
 
    disp = "Под храмом";
 
    dsc_halflit = [[Небольшая темная комната, скрытая в глубинах древнего навьярского храма. Вы первые, кто потревожил ее за долгие столетия. В центре находится каменный пьедестал. ]];
 
    dsc_dark = [[Небольшая темная комната, скрытая в глубинах древнего навьярского храма. В темноте вы с трудом различаете очертания предметов. ]];
 
    obj = {
 
        "item_lse_map";
 
    };
 
    way = {
 
        kh_vroom("Назад, в коридор", "iyh_temple_under_corridor_2", 1);
 
    };
 
};
 
 
iyh_temple_rubble_left = obj {
 
    nam = "iyh_temple_rubble";
 
    dsc = [[
 
        В углу валяется {груда обломков}.
 
    ]];
 
    act = [[
 
        Здесь ничего нет.
 
    ]];
 
};
 
 
iyh_temple_niche_left = obj {
 
    var {
 
        taken = false;
 
    };
 
    nam = "iyh_temple_deep_niche_left";
 
    dsc = [[
 
        В одной из стен вы замечаете глубокую {нишу}.
 
    ]];
 
    act = function(s)
 
        if (s.taken) then
 
            return [[
 
                Здесь ничего нет.
 
            ]];
 
        else
 
            s.taken = true;
 
            take(item_statuette);
 
            return [[
 
                Внутри вы находите металлическую статуэтку, изображающую навьяра.
 
            ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_rubble_right = obj {
 
    var {
 
        taken = false;
 
    };
 
    nam = "iyh_temple_rubble";
 
    dsc = [[
 
        В углу валяется {груда обломков}.
 
    ]];
 
    act = function(s)
 
        if (s.taken) then
 
            return [[
 
                Здесь ничего нет.
 
            ]];
 
        else
 
            s.taken = true;
 
            take(item_legend_of_dark_source);
 
            return [[
 
                В куче обломков вы находите металлическую табличку.
 
            ]];
 
        end;
 
    end;
 
};
 
 
iyh_temple_niche_right = obj {
 
    nam = "iyh_temple_deep_niche_left";
 
    dsc = [[
 
        В одной из стен вы замечаете глубокую {нишу}.
 
    ]];
 
    act = [[
 
        Здесь ничего нет.
 
    ]];
 
};
 
 
iyh_pedestal = obj {
 
    var {
 
        taken = false;
 
    };
 
    nam = "iyh_pedestal";
 
    dsc = function(s)
 
        if (s.taken) then
 
            return [[В центре комнаты расположен пустой {пьедестал}. ]];
 
        else
 
            return [[В центре комнаты расположен {пьедестал}, на котором покоится самая обычная, на первый взгляд, подзорная труба. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (s.taken) then
 
            return [[Пьедестал пуст. ]];
 
        else
 
            s.taken = true;
 
            take(iyh_looking_glass);
 
            p [[Вы поднимаете покоящуюся на пьедестале подзорную трубу. ]];
 
            if ArrayUtils.indexOf(pl.party, 'learr') and where(char_learr) == here() then
 
                if language_known then
 
                    p [[Когда вы берете трубу, по головным плавникам Леарр пробегают цветные полосы: "Это из храма в Дипатреанотре!" Вы решаете, что стоит осмотреть весь храм, пока есть возможность. ]];
 
                else
 
                    p [[По головным плавникам Леарр пробегают цветные полосы, но вы не понимаете, что они значат. Вы решаете, что стоит осмотреть весь храм, пока есть возможность. ]];
 
                end;
 
            else
 
                p [[Она подходит под описание реликвии Дипатреанотра. Вы решаете, что стоит осмотреть весь храм, пока есть возможность. ]];
 
            end;
 
        end;
 
    end;
 
};
 
 
iyh_near_temple = dlg {
 
    nam = "Штурвал Левиафана";
 
    dsc = function(s)
 
        if atl_iyh_entrance_destroyed then
 
            return [[Через иллюминаторы вы видите прямо перед собой обрушившуюся под воздействием мощного взрыва скалу. Мало что указывает, что здесь еще недавно был вход в древний храм навьяров ]];
 
        else
 
            return [[Через иллюминаторы вы видите прямо перед собой массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
        end;
 
    end;
 
    enter = function(s)
 
        if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
            pr [[Как только вы приближаетесь, скат выплывает из свого жилища, чтобы прогнать посмевших приблизиться к нему. ]];
 
            iyh_fight.temple_distance = 50;
 
            iyh_fight.distance = 50;
 
            walk(iyh_fight);
 
        end;
 
    end;
 
    entered = function(s)
 
        move(submarine_leviathan, iyh_near_temple_foot);
 
    end;
 
    phr = {
 
        {tag="ravine", false, always=true, "[Ко входу в ущелье]", [[
 
            Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье.
 
        ]], code [[
 
            move(submarine_leviathan, "iyh_ravine_entry_foot");
 
            walk('iyh_ravine_entry'); 
 
        ]]};
 
        {tag="back", always=true, "[Вернуться к исходной позиции]", code = [[
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            walk('iyh_far_from_entrance');
 
        ]]};
 
        {tag="away", always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {tag="return", always=true, "[Покинуть храм]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
    };
 
};
 
 
iyh_near_temple_foot = room {
 
    nam = "Вход в храм";
 
    temple = true;
 
    underwater = true;
 
    handwheel_room = 'iyh_near_temple';
 
    dsc = function(s)
 
        if atl_iyh_entrance_destroyed then
 
            return [[Скала перед вами обрушилась под воздействием мощного взрыва. Мало что указывает, что здесь еще недавно был вход в древний храм навьяров. ]];
 
        else
 
            return [[Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
        end;
 
    end;
 
    view = function(s)
 
        if atl_iyh_entrance_destroyed then
 
            return [[Скала перед вами обрушилась под воздействием мощного взрыва. Мало что указывает, что здесь еще недавно был вход в древний храм навьяров. ]];
 
        else
 
            return [[Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        if (atl_iyh_entrance_destroyed) then
 
            path("В храм"):disable();
 
        end;
 
 
        if (not atl_iyh_entrance_destroyed and ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and char_learr.follow) then
 
            if language_known then
 
                pr [[Леарр поднимает взгляд на место над входом храма, по ее головным плавникам бегут цветные полосы: "Здесь не указан город! Интересно, кто построил этот храм?"]];
 
            else
 
                pr [[Леарр поднимает взгляд на место над входом храма, по ее головным плавникам бегут цветные полосы. ]];
 
            end;
 
        end;
 
 
        if (not atl_iyh_entrance_destroyed and ArrayUtils.indexOf(pl.party, 'anna') ~= 0 and char_learr.follow) then
 
            pr [[Анна внимательно окидывает взглядом храм. В динамиках раздается ее голос: "Здесь не указано, какому городу принадлежит этот храм. Это необычно для навьяров. Интересно, для чего он был построен?"]];
 
        end;
 
        
 
        path("В Левиафан"):disable();
 
        if (where(submarine_leviathan) == here()) then
 
            path("В Левиафан"):enable();
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В храм", "iyh_temple_main_hall_entry");
 
    };
 
};
 
 
iyh_outro_svetlova = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
 
        pr [[При выходе из Левиафана, вас встречает Екатерина Светлова. Вы рассказываете ей обо всем произошедшем. ]];
 
        if (atl_iyh_shockfish_dead) then
 
            pr [[Она забирает у вас артефакты для изучения, но крайне недовольна убийством ската: "Артефакты, конечно, будут полезны, но то что вы сделали ставит под угрозу дальнейшее существование станции. Хвала небесам, что рыбни об этом не знают и, надеюсь, не узнают никогда".^ ]];
 
        elseif (atl_iyh_entrance_destroyed) then
 
            pr [[Она забирает у вас артефакты для изучения, но огорчена разрушением святилища: "Очень жаль, что пришлось разрушить храм -- там наверняка было еще много интересного".^ ]];
 
        else
 
            pr [[Она забирает у вас артефакты для изучения и благодарит вас: "Отлично, вы оказали нам неоценимую услугу. Скоро я верну реликвию в Дипатреанотр и ситуация будет исчерпана".^ ]];
 
        end;
 
 
        pr [[Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
    end;
 
    entered = function(s)
 
        atl_iyh_artifacts_on_atlantis = true;
 
        remove(iyh_looking_glass, pl);
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
                  
 
    end;
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
    };
 
};
 
 
iyh_outro_learr_shockfish_dead = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
 
        return [[При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр, вышедшая за вами следом, объявляет: "Я забираю-артефакты-в-Ираафаанотр". Светлова спрашивает: "Вы не разрешите нам оставить их на несколько дней для изучения?"^ Леарр отрезает: "Нет", -- и выходит из дока. Светлова вопросительно смотрит на вас и вы пересказываете ей произошедшее. Она лишь тяжело вздыхает глядя на вас, после чего уходит, махнув рукой.^Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
    end;
 
    hideinv = true;
 
    entered = function(s)
 
        for i = 1, #pl.party do
 
            if pl.party[i] == 'learr' then 
 
                table.remove(pl.party, i);
 
                break;
 
            end;
 
        end;
 
 
        atl_rep_iraa = atl_rep_iraa - 1;
 
        atl_rep_dyp = atl_rep_dyp - 1;
 
 
        leviathan_cabin_3.lock = false;
 
 
        remove(char_learr, where(char_learr));
 
        remove(iyh_looking_glass, pl);
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
    end;
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
    };
 
};
 
 
iyh_outro_learr_temple_destroyed = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
 
        return [[При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр, вышедшая за вами следом, объявляет: "Я забираю-артефакты-в-Ираафаанотр". Светлова спрашивает: "Вы не разрешите нам оставить их на несколько дней для изучения?"^ Леарр отрезает: "Нет", -- и выходит из дока. Светлова вопросительно смотрит на вас и вы пересказываете ей произошедшее. Она задумчиво чешет подбородок и сообщает: "Я поговорю с Леарр, отправляйтесь в свою комнату. Думаю, мне удастся все уладить".^Вы следуете ее совету и отправляетесь к себе. Утром, она вызывает вас по телефону: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
    end;
 
    hideinv = true;
 
    entered = function(s)
 
        for i = 1, #pl.party do
 
            if pl.party[i] == 'learr' then 
 
                table.remove(pl.party, i);
 
                break;
 
            end;
 
        end;
 
        move(char_learr_atlantis, atl_oculus_lab_a);
 
        leviathan_cabin_3.lock = false;
 
        
 
        char_learr.home = "leviathan_wardroom";
 
        remove(iyh_looking_glass, pl);
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
    end;
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
    };
 
};
 
 
iyh_outro_learr = dlg {
 
    nam = "Атлантида, док Левиафана";
 
    entered = function(s)
0 comments (0 inline, 0 general)