Files @ b18117337c89
Branch filter:

Location: games/Awakening/atlantis_dyp_night.lua

Silverwing
Fix logic issues with taking Wright aboard Leviathan
--[[
 Дипатреанотр, ночь
]]

dyp_entry_night = lcutscene("dyp_entry_night", "Левиафан, рубка", [[Левиафан прибывает в Дипетранотр под покровом ночи. Вы останавливаетесь на южной окраине спящего поселения. Прожектор субмарины выключен, во избежание привлечения лишнего внимания, и пространство вокруг Левиафана затянуто кромешной тьмой. ]], "Вы прибыли в Дипатреанотр ночью. ", leviathan_wheelhouse);

dyp_night_south = room {
    nam = 'Дипатреанотр, южная окраина (ночь)';
    underwater = true;
    disp = 'Дипатреанотр, южная окраина';
    view = [[Левиафан завис чуть в стороне от Дипатреанотра. На севере горят яркие огни центральных зданий поселения -- библиотеки и дома вождя. Покрытый тьмой город представляет собой нагромождение каменных домиков без четко выраженных улиц или проходов. ]];
    dsc = [[Вы стоите на южной окраине Дипатреанотра. К северу от вас расположены неказистые каменные дома жителей города. ]];
    way = {
        kh_vroom("В Левиафан", "leviathan_airlock");
        kh_vroom("К центру", "dyp_night_center");
    };
}

dyp_night_center = room {
    var {
        state = 0;
    };
    nam = "Дипатреанотр, центр (ночь)";
    underwater = true;
    disp = 'Дипатреанотр, центр';
    entered = function(s)
        dyp_obelisk_puzzle.where_from = 'dyp_night_center';
        if s.state == 0 then
            s.state = 1;
            pr [[С трудом пробираясь в темноте среди хаотично наставленных каменных домиков, вы добираетесь до центра города. ]];
        end;
    end;
    dsc = [[Центральная площадь Дипатреанотра пустынна -- навьяры мирно спят в своих домах. На востоке ярко сияют окна библиотеки, а на западе -- вход в дом вождя. ]];
    view = [[Центральная площадь Дипатреанотра пустынна -- навьяры мирно спят в своих домах. На востоке ярко сияют окна библиотеки, а на западе -- вход в дом вождя. Прожектор Левиафана выключен, чтобы ваше присутствие было менее заметно в темноте. ]];
    obj = {
        'dyp_obelisk';
    };
    way = {
        kh_vroom('К библиотеке', 'dyp_night_library_entrance');
        kh_vroom('К дому вождя', 'dyp_night_chief_house_entrance');
        kh_vroom('На юг', 'dyp_night_south');
    };
}

dyp_night_library_entrance = room {
    var {
        anna_state = 0;
        jack_state = 0;
        walter_state = 0;
    };
    nam = "Дипатреанотр, вход в библиотеку (ночь)";
    underwater = true;
    disp = 'Дипатреанотр, вход в библиотеку';
    dsc = [[Двухэтажное здание библиотеки -- старейшее в Дипатреанотре. Выстроенное из массивных каменных плит и хорошо обслуживаемое, оно сохранилось в превосходном состоянии. Двери здания распахнуты, изнутри исходит слабый свет. ]];
    entered = function(s)
        if s.state == 0 then
            if char_anna.follow and s.anna_state == 0 then
                if rel_anna > 0 then
                    s.anna_state = 1;
                    return [[Из динамика доносится голос Анны: "Удивительно. Жаль, что у меня нет времени изучить это место как следует".]];
                end;
            elseif char_wright.follow and s.jack_state == 0 then
                if rel_jack > 0 then
                    s.jack_state = 1;
                    return [[Из динамика доносится голос Джека: "Сколько же времени нужно, чтобы изучить все, хранящееся здесь". ]];
                end;
            elseif char_radcliffe.follow and s.walter_state == 0 then
                s.walter_state = 1;
                return [[Из динамика доносится голос Уолтера: "Дрейк, у нас есть всего пара часов до рассвета. Не думаю, что за это время мы найдем то что мы ищем". ]];
            end;
        end;
    end;
    way = {
        kh_vroom("К центру", "dyp_night_center");
        kh_vroom("В библиотеку", "dyp_night_library_floor1");
    }
}

dyp_night_library_floor1 = room {
    nam = "Дипатреанотр, библиотека, первый этаж (ночь)";
    disp = 'Дипатреанотр, библиотека, первый этаж';
    underwater = true;
    dsc = [[Огромный зал библиотеки освещен ровным светом водорослей, покрывающих потолок и колонны, ровные ряды которых поддерживают тяжелый каменный потолок. Повсюду стоят массивные стеллажи, заполненные каменными табличками, изредка перемежающимися древними металлическими. Одна из полок полностью заполнена небольшими блестящими дисками. ]];
    obj = {
        'dyp_library_statue';
    };
    way = {
        kh_vroom("Наружу", "dyp_night_library_entrance");
        kh_vroom("На второй этаж", "dyp_night_library_floor2");
    };
}

dyp_night_library_floor2 = room {
    nam = "Дипатреанотр, библиотека, второй этаж (ночь)";
    disp = 'Дипатреанотр, библиотека, второй этаж';
    underwater = true;
    dsc = [[Второй этаж библиотеки мало чем отличается от первого -- точно такие же колонны, покрытый водорослями, точно такие же стеллажи с табличками. Здесь гораздо больше полок содержат блестящие диски и металлические таблички. ]];
    obj = {
        'dyp_night_tablets';
    };
    way = {
        kh_vroom("На первый этаж", "dyp_night_library_floor1");
    };
}

dyp_night_tablets = obj {
    var {
        state = 0;
    };
    nam = "dyp_night_tablets";
    dsc = 'В углу аккуратно разложены в несколько стопок каменные и металлические {таблички}. ';
    act = function(s)
        if s.state == 0 then
            if char_anna.follow then
                s.state = 1;
                pr [[Вы аккуратно берете верхнюю табличку из стопки. Анна опускается на пол рядом с вами и начинает рассматривать таблички, одну за другой. Из динамика доносится ее голос: "Дэвид, я нашла". ^]];
                walk("dyp_night_anna_hint");
            else
                return [[Вы аккуратно берете верхнюю табличку из стопки. Вы почти ничего не понимаете из того, что на ней написано. Вам нужен кто-то, кто достаточно хорошо знает язык навьяров. ]];
            end;
        else
            return [[На одной из этих табличек записано, что недалеко от храма Дипатреанотра есть пещера, но чтобы войти в нее, нужны три ключа. Ключи спрятаны в городе. ]];
        end;

    end;
}

dyp_night_anna_hint = dlg {
    nam = 'dyp_night_anna_hint';
    disp = 'Анна Рэдклифф';
    entered = function(s)
        dyp_stones_known = true;
        dyp_lib_stone_state = 1;
        return [[Анна поднимается с пола и поворачивается к вам. В динамике вы слышите ее взволнованный голос: "Я нашла то, что мы искали. Недалеко от храма есть пещера, но чтобы войти в нее, нужны три ключа. Ключи спрятаны здесь, в Дипатреанотре". ]];
    end;
    phr = {
        {'Хорошо, будем искать.', 'Анна молча кладет табличку на место. ', code [[back();]]};
        {'Как выглядят эти ключи?', 'Анна отвечает: "Не знаю. Здесь не указано, но здесь есть изображение статуи, похожей на ту, что мы видели внизу".'}
    };
}

dyp_night_chief_house_entrance = room {
    var {
        jack_state = 0;
        walter_state = 0;
    };
    nam = 'Дипатреанотр, перед домом вождя (ночь)';
    disp = 'Дипатреанотр, перед домом вождя';
    underwater = true;
    dsc = [[Дом вождя Дипатреанотра не уступает размерами библиотеке. Двухэтажное здание не раз расширялось и достраивалось. Часть его сложена из обработанных каменных плит, другая -- из булыжников, как большинство зданий города. Широкая выложенная камнем улица ведет отсюда к центральной площади города. Из главного зала исходит слабый свет. ]];
    entered = function(s)
        if char_radcliffe.follow and rel_walter > 0 and s.walter_state == 0 then
            s.walter_state = 1;
            return [[Из динамиков доносится голос Уолтера: "Неслабый себе домик вождя отгрохал. Сразу видно, заботится о населении". ]];
        elseif char_wright.follow and rel_jack > 0 and s.jack_state == 0 then
            s.jack_state = 1;
            return [[Из динамиков доносится голос Джека: "Не думал, что современные навьяры не способны даже нормально обработать камень". ]];
        end;
    end;
    way = {
        kh_vroom("К центру", "dyp_night_center");
        kh_vroom("В дом", "dyp_night_chief_house_hall");
    };
}

dyp_night_chief_house_hall = room {
    nam = 'Дипатреанотр, дом вождя, приемная (ночь)';
    disp = 'Дипатреанотр, дом вождя, приемная';
    underwater = true;
    dsc = [[Приемная вождя слабо освещена водорослями, покрывающими ровные ряды колонн, поддерживающих тяжелый каменный потолок. В дальнем конце зала установлены каменный трон и массивный каменный стол. В углу зала вы видите лестницу, ведущую на второй этаж. К вашему удивлению, она не охраняется. ]];
    way = {
        kh_vroom("Наружу", "dyp_night_chief_house_entrance");
        kh_vroom('Наверх', 'dyp_night_chief_house_2nd_floor')
    };
}

dyp_night_chief_house_2nd_floor = room {
    nam = 'Дипатреанотр, дом вождя, второй этаж (ночь)';
    disp = 'Дипатреанотр, дом вождя, второй этаж';
    dsc = [[Коридор второго этажа пуст. Слабый свет водорослей, покрывающих пол и стены позволяет вам легко ориентироваться внутри. Справа от вас расположена дверь. Впереди коридор поворачивает направо. ]];
    nolamp = true;
    entered = function(s)
        make_snapshot();
    end;
    way = {
        kh_vroom('За угол', 'dyp_night_chief_house_2nd_floor2');
        kh_vroom('На первый этаж', 'dyp_night_chief_house_hall');
        kh_vroom('В дверь', 'dyp_night_chief_house_treasury');
    }

}

dyp_night_chief_guard = obj {
    var {
        state = 0;
    };
    nam = 'dyp_night_chief_guard';
    disp2 = "охранника";
    dsc = function(s)
        if s.state == 0 then
            return [[Рядом с дверью стоит {охранник}. Он с недоумением смотрит на вас. У вас есть несколько мгновений, чтобы что-нибудь предпринять. ]];
        else
            return [[Рядом с дверью лежит труп охранника. ]];
        end;
    end;
    canshoot = true;
    onshoot = function(s)
        s.state = 1;
        lifeoff(dyp_night_chief_house_2nd_floor2);
        return [[Вы убиваете охранника. ]];
    end
};

dyp_night_chief_house_2nd_floor2 = room {
    var {
        state = 0;
    };
    underwater = true;
    nam = 'Дипатреанотр, дом вождя, второй этаж (ночь)';
    disp = 'Дипатреанотр, дом вождя, второй этаж';
    dsc = [[Слабый свет водорослей, покрывающих пол и стены позволяет вам легко ориентироваться внутри. Перед вами расположена дверь. ]];
    nolamp = true;
    entered = function(s)
        if dyp_night_chief_guard.state == 0 then
            s.state = 2;
            lifeon(s);
        end;
    end;
    exit = function(s)
        lifeoff(s);
        if dyp_night_chief_guard.state == 0 then
            walk("game_over_dyp_night_caught");
        end;
    end;
    life = function(s)
        if dyp_night_chief_guard.state == 0 then
            s.state = s.state - 1;
            if s.state == 0 then
                walk("game_over_dyp_night_caught");
            end
        end;
    end;
    obj = {
        'dyp_night_chief_guard';
    };
    way = {
        kh_vroom('За угол', 'dyp_night_chief_house_2nd_floor');
        kh_vroom('В дверь', 'dyp_night_chief_house_bedroom');
    };
}

dyp_night_chief_house_treasury = darkroom {
    nam = 'Дипатреанотр, дом вождя, сокровищница (ночь)';
    disp = 'Дипатреанотр, дом вождя, сокровищница';
    dsc_dark = [[Большая темная комната. Вы с трудом различаете очертания предметов. ]];
    dsc_halflit = [[Большая комната уставлена всевозможными вещами, должно быть, ценными по навьярским меркам. Найти здесь что-то будет крайне сложно, если не невозможно. ]];
    way = {
        kh_vroom('В коридор', function(s)
            if pl.has_light then
                pr [[Вас заметят, если вы не выключите свет. ]];

                return false;
            end;
            return 'dyp_night_chief_house_2nd_floor';
        end, 2);
    };
};

item_scepter = obj {
    var {
        state = 0;
    };
    nam = 'item_scepter';
    disp = 'Жезл';
    dsc = function(s)
        if s.state == 0 then
            return [[У изголовья кровати стоит {жезл}, в навершии которого укреплен светящийся зеленым светом камень. ]];
        else
            return [[У изголовья кровати стоит {жезл}. ]];
        end;
    end;
    tak = [[Вы аккуратно берете жезл. ]];
    inv = function(s)
        if s.state == 0 then
            s.state = 1;
            take(dyp_item_stone_green);
            return [[Вы аккуратно вынимаете камень из навершия жезла. ]];
        else
            return [[Искусно сделанный золотистый жезл. Вы не можете определить металл, из которого он сделан. ]];
        end;
    end;
};

dyp_night_bed = obj {
    nam = 'dyp_night_bed';
    dsc = [[В центре комнаты стоит большая {кровать}, посреди которой мирно спит вождь Дипатреанотра. ]];
    used = function(s, o)
        if o == item_scepter then
            remove(item_scepter, pl);
            put(item_scepter, here());
            return [[Вы возвращаете жезл на место. ]];
        end;
    end;
};

dyp_night_chief_house_bedroom = room {
    nam = 'Дипатреанотр, дом вождя, спальня (ночь)';
    nolamp = true;
    disp = 'Дипатреанотр, дом вождя, спальня';
    dsc = [[Просторная комната, практически пустая. ]];
    obj = {
        'dyp_night_bed',
        'item_scepter'
    };
    way = {
        kh_vroom("В коридор", 'dyp_night_chief_house_2nd_floor2');
    };
};