Changeset - 25b358e1f394
[Not reviewed]
default
0 1 0
Silverwing - 6 years ago 2019-01-04 13:42:57

chapter 2: kraken now should be visible
1 file changed with 27 insertions and 11 deletions:
0 comments (0 inline, 0 general)
journey_temple.lua
Show inline comments
 
@@ -237,451 +237,467 @@ dt_labyrinth_map = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "33",
 
        s = "31",
 
        where = dt_labyrinth_foot
 
    };
 
    ["33"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "09",
 
        sw = "32",
 
        where = dt_labyrinth_foot
 
    };
 
    ["34"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "31",
 
        w = "35",
 
        where = dt_labyrinth_foot
 
    };
 
    ["35"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "34",
 
        sw = "16",
 
        where = dt_labyrinth_foot
 
    };
 
};
 

	
 
dt_labyrinth = room {
 
    var {
 
        location = "01";
 
    };
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    nam = "Штурвал Левиафана";
 
    not_follow = true;
 
    dsc = function(s)
 
        return dt_labyrinth_map[dt_labyrinth.location].dsc;
 
    end;
 
    entered = function(s)
 
        s:update();
 
    end;
 
    update = function(s)
 
        dt_north:disable();
 
        dt_north_east:disable();
 
        dt_east:disable();
 
        dt_south_east:disable();
 
        dt_south:disable();
 
        dt_south_west:disable();
 
        dt_west:disable();
 
        dt_north_west:disable();
 
        if (dt_labyrinth_map[dt_labyrinth.location].n) then
 
            dt_north:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].ne) then
 
            dt_north_east:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].e) then
 
            dt_east:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].se) then
 
            dt_south_east:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].s) then
 
            dt_south:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].sw) then
 
            dt_south_west:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].w) then
 
            dt_west:enable();
 
        end;
 
        if (dt_labyrinth_map[dt_labyrinth.location].nw) then
 
            dt_north_west:enable();
 
        end;
 
        move(submarine_leviathan, dt_labyrinth_map[dt_labyrinth.location].where);
 
    end;
 
    way = {
 
        kh_vroom("Отойти от штурвала", "leviathan_wheelhouse");
 
    };
 
    obj = {
 
        "dt_north",
 
        "dt_north_east",
 
        "dt_east",
 
        "dt_south_east",
 
        "dt_south",
 
        "dt_south_west",
 
        "dt_west",
 
        "dt_north_west"
 
    };
 
};
 

	
 
dt_north = obj {
 
    nam = "dt_north";
 
    dsc = "{На север}^";
 
    act = function(s)
 
        pr [[Вы движетесь на север. ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].n;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_north_east = obj {
 
    nam = "dt_north_east";
 
    dsc = "{На северо-восток}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на северо-восток.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].ne;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_east = obj {
 
    nam = "dt_east";
 
    dsc = "{На восток}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на восток.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].e;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_south_east = obj {
 
    nam = "dt_south_east";
 
    dsc = "{На юго-восток}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на юго-восток.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].se;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_south = obj {
 
    nam = "dt_south";
 
    dsc = "{На юг}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на юг.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].s;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_south_west = obj {
 
    nam = "dt_south_west";
 
    dsc = "{На юго-запад}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на юго-запад.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].sw;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_west = obj {
 
    nam = "dt_west";
 
    dsc = "{На запад}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на запад.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].w;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_north_west = obj {
 
    nam = "dt_north_west";
 
    dsc = "{На северо-запад}^";
 
    act = function(s)
 
        pr [[Вы движетесь на северо-запад. ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].nw;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_temple_ravine = room {
 
    nam = "dt_temple_ravine";
 
    handwheel_room = "dt_labyrinth";
 
    disp = "Ущелье";
 
    dsc = [[Вы стоите на дне расщелины. К северо-востоку от вас находится глубокое ущелье. Через ущелье переброшен узкий каменный мостик, на другом конце которого вы видите в скале прямоугольное отверстие явно искусственного происхождения. Из отверстия исходит яркий свет. ]];
 
    dsc = function(s)
 
        if dt_temple_bridge1.state == 2 then
 
            return [[Вы стоите на дне расщелины. К северо-востоку от вас находится глубокое ущелье, из которого прямо сейчас поднимается громадное морское чудовище. ]];
 
        else
 
            return [[Вы стоите на дне расщелины. К северо-востоку от вас находится глубокое ущелье. Через ущелье переброшен узкий каменный мостик, на другом конце которого вы видите в скале прямоугольное отверстие явно искусственного происхождения. Из отверстия исходит яркий свет. ]];
 
        end;
 
    end;
 
    view = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. ]];
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("На мост", "dt_temple_bridge1");
 
    };
 
};
 

	
 
dt_temple_bridge1 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple_bridge1";
 
    disp = "Мост над пропастью";
 
    dsc = [[Вы ступаете на хлипкий мостик. Камни ходят ходуном под вашими ногами, и кажется, что слабая конструкция вот вот рухнет, увлекая вас за собой в бездну. ]];
 
    dsc = function(s)
 
        if s.state == 2 then
 
            return [[Часть моста, ведущая к храму разрушена, а из бездны поднимается громадное чудище из древних легенд -- кракен. ]];
 
        else
 
            return [[Вы ступаете на хлипкий мостик. Камни ходят ходуном под вашими ногами, и кажется, что слабая конструкция вот вот рухнет, увлекая вас за собой в бездну. ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        char_radcliffe:accompany(false);
 
        char_wright:accompany(false);
 
        char_anna:accompany(false);
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[Леарр с сомнением смотрит на шаткую постройку и по ее головным плавникам бегут цветные полосы: "Не думаю, что мост выдержит нас обоих, я поплыву сверху". ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[Фаэтларр осматривает мост и по его головным плавникам бегут цветные полосы: "Я бы не рискнул пойти по нему, но у тебя, хевьяр, кажется нет выбора", - навьяр смотрит на вас со странной ухмылкой. ]];
 
            end;
 
            if (char_radcliffe.follow) then
 
                pr [[В динамиках раздается голос Уолтера Рэдклиффа: "Я не думаю, что мост выдержит нас обоих. Если тебе нужен помощник, то навьяр здесь будет полезнее. К тому же, это их святилище". ]];
 
            end;
 
            if (char_wright.follow) then
 
                pr [[В динамиках раздается голос Джека Райта: "Нам точно стоит идти здесь? Мост не выглядит надежным. Думаю, тебе стоит взять навьяра, если тебе нужен спутник". ]];
 
            end;
 
            if (char_anna.follow) then
 
                pr [[В динамиках раздается голос Анны Рэдклифф: "Думаю, мост без проблем выдержит одного из нас. Удачи. Мне кажется, тебе лучше было бы идти с навьяром". ]];
 
            end;
 
        end;
 
        if have(item_naethvjirr_key) then
 
            s.state = 2;
 
            path('Дальше по мосту'):disable();
 
            path('На мост', dt_temple_ravine): disable();
 
            pr [[Мост позади вас рушится, а из глубины на поверхность поднимается громадная туша кракена. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В ущелье", "dt_temple_ravine");
 
        kh_vroom("Дальше по мосту", "dt_temple_bridge2");
 
    };
 
};
 

	
 
dt_temple_bridge2 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple_bridge2";
 
    disp = "Мост над пропастью";
 
    dsc = [[
 
        Вы почти дошли до проема в скале. Вам кажется, что внизу, в бездне движется что-то огромное. 
 
    ]];
 
    dsc = [[Вы почти дошли до проема в скале. Вам кажется, что внизу, в бездне движется что-то огромное. ]];
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[
 
                    По головным плавникам Леарр бегут цветные полосы: "Что это? Там, внизу".
 
                ]];
 
                pr [[По головным плавникам Леарр бегут цветные полосы: "Что это? Там, внизу". ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[
 
                    По головным плавникам Фаэтларра бегут цветные полосы: "Ты видишь это, хевьяр?".
 
                ]];
 
                pr [[По головным плавникам Фаэтларра бегут цветные полосы: "Ты видишь это, хевьяр?". ]];
 
            end;
 
        end;
 

	
 
        if have(item_naethvjirr_key) then
 
            pr [[Мост под вами содрогается, глянув вниз, вы замечаете какое-то движение в глубине. Что бы это ни было, оно движется наверх. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("К ущелью", "dt_temple_bridge1");
 
        kh_vroom("В проем", "dt_temple_entrance");
 
    };
 
};
 

	
 
dt_temple_entrance = room {
 
    var {
 
        state = 0;
 
        open = false;
 
    };
 
    nam = "dt_temple_entrance";
 
    disp = "У входа в храм";
 
    dsc = function(s)
 
        if (dt_temple_entrance.open) then
 
            return [[
 
                Вы находитесь в небольшом помещении, ярко освещенном лампами в виде длинных трубок. Стены вокруг покрыты навьярскими письменами. Дверь во внутреннее помещение храма открыта. 
 
            ]];
 
        else
 
            return [[
 
                Вы находитесь в небольшом помещении, ярко освещенном лампами в виде длинных трубок. Стены вокруг покрыты навьярскими письменами. Тяжелая дверь во внутреннее помещение храма заблокирована.
 
            ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[
 
                    Леарр с интересом рассматривает древние письмена. По ее головным плавникам бегут цветные полосы: "Потрясающе! Это слова наших предков. Тех, кто видел Лсэрианотр собственными глазами, а может даже и самих создателей Спящего в Глубинах!".
 
                ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[
 
                    Фаэтларр бегло осматривает письмена: "Кажется, Дрейк кое-что упустил. Хорошо, что мы здесь хевьяр".
 
                ]];
 
            end;
 
        end;
 
    end;
 
    obj = {
 
        "dt_terminal",
 
        "dt_wires"
 
        
 
    };
 
    way = {
 
        kh_vroom("К ущелью", "dt_temple_bridge2");
 
        kh_vroom("В храм", function(s)
 
            if (dt_temple_entrance.open) then
 
                return "dt_temple";
 
            else
 
                pr [[Дверь заперта. ]];
 
                return false;
 
            end;
 
        end);
 
    };
 
};
 

	
 
dt_terminal = obj {
 
    nam = "dt_terminal";
 
    dsc = [[Рядом с дверью расположен небольшой {пульт} с шестью кнопками и светящимся экраном. ]];
 
    act = function(s)
 
        walkin("dt_terminal_room");
 
    end;
 
};
 

	
 
dt_wires = obj {
 
    nam = "dt_wires";
 
    dsc = [[Под пультом вы видите открытую {панель} с какими-то проводами. ]];
 
    act = function(s)
 
        walkin("dt_wires_room");
 
    end;
 
};
 

	
 
dt_terminal_room = room {
 
    var {
 
        code = {};
 
    };
 
    not_follow = true;
 
    nam = "dt_terminal_room";
 
    disp = "У входа в храм, пульт";
 
    forcedsc = true;
 
    dsc = function(s)
 
        local r = "";
 
        if (#s.code == 0) then
 
            r = "Вы стоите перед небольшим пультом. На экране пусто. ";
 
        else
 
            r = "Вы стоите перед небольшим пультом. На экране вы видите следующую последовательность цветов: ";
 
            for i = 1, #s.code - 1 do
 
                r = r .. dt_wire_colors[s.code[i]] .. ", ";
 
            end;
 
            r = r .. dt_wire_colors[s.code[#s.code]] .. ". ";
 
        end;
 
        r = r .. "Под экраном расположены шесть кнопок. "
 
        return r;
 
    end;
 
    way = {
 
        kh_vroom("Отойти от терминала", "dt_temple_entrance");
 
    };
 
    obj = {
 
        "dt_term1",
 
        "dt_term2",
 
        "dt_term3",
 
        "dt_term4",
 
        "dt_term5",
 
        "dt_term6"
 
    };
 
    check = function(s)
 
        if (#s.code == 4) then
 
            local test = true;
 
            for i = 1, #s.code do
 
                test = test and (s.code[i] == dt_code[i]);
 
            end;
 
            s.code = {};
 
            if (test) then
 
                dt_temple_entrance.open = true;
 
                pr [[ Через несколько мгновений дисплей гаснет. Дверь открывается почти бесшумно, открывая вам доступ к внутреннему залу древнего святилища. ]];
 
            else
 
                pr [[ Через несколько мгновений дисплей гаснет. ]];
 
            end;
 
        end;
 
    end;
 
};
 

	
 
dt_term1 = obj {
 
    nam = "dt_term1";
 
    dsc = "{Нажать фиолетовую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 1) ~= 0 or not dt_wires_room.connections[1]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[1]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
        end;
 
    end;
 
};
 

	
 
dt_term2 = obj {
 
    nam = "dt_term2";
 
    dsc = "{Нажать синюю кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 2) ~= 0 or not dt_wires_room.connections[2]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[2]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
        end;
 
    end;
 
};
 

	
 
dt_term3 = obj {
 
    nam = "dt_term3";
 
    dsc = "{Нажать зеленую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 3) ~= 0 or not dt_wires_room.connections[3]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[3]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
        end;
 
    end;
 
};
 

	
 
dt_term4 = obj {
 
    nam = "dt_term4";
 
    dsc = "{Нажать желтую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 4) ~= 0 or not dt_wires_room.connections[4]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[4]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
        end;
 
    end;
 
};
 

	
 
dt_term5 = obj {
 
    nam = "dt_term5";
 
    dsc = "{Нажать оранжевую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 5) ~= 0 or not dt_wires_room.connections[5]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[5]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
        end;
 
    end;
0 comments (0 inline, 0 general)