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
 
@@ -45,835 +45,851 @@ dt_labyrinth_ravine_bridge_se_foot = roo
 
    handwheel_room = "dt_labyrinth";
 
};
 

	
 
--id, dsc, directions, where, leviathan_where
 
dt_labyrinth_map = {
 
    ["01"] = {
 
        dsc = [[Вы находитесь у входа в сложный лабиринт ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "02",
 
        where = dt_labyrinth_foot
 
    };
 
    ["02"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        sw = "01",
 
        e = "03",
 
        where = dt_labyrinth_foot
 
    };
 
    ["03"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        w = "02",
 
        ne = "04",
 
        where = dt_labyrinth_foot
 
    };
 
    ["04"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        sw = "03",
 
        nw = "05",
 
        e = "07",
 
        where = dt_labyrinth_foot
 
    };
 
    ["05"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        se = "04",
 
        n = "06",
 
        where = dt_labyrinth_foot
 
    };
 
    ["06"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        s = "05",
 
        where = dt_labyrinth_foot
 
    };
 
    ["07"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        w = "04",
 
        n = "08",
 
        se = "09",
 
        where = dt_labyrinth_foot
 
    };
 
    ["08"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        s = "07",
 
        where = dt_labyrinth_foot
 
    };
 
    ["09"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        w = "33",
 
        ne = "10",
 
        nw = "07",
 
        where = dt_labyrinth_foot
 
    };
 
    ["10"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "11",
 
        sw = "09",
 
        where = dt_labyrinth_foot
 
    };
 
    ["11"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Под вами с северо-запада на юго-восток простирается глубокая расщелина. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "13",
 
        se = "14",
 
        nw = "12",
 
        sw = "10",
 
        where = dt_labyrinth_ravine_foot
 
    };
 
    ["12"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Под вами простирается глубокая расщелина. Она продолжается на северо-запад настолько далеко, насколько хватает мощности прожектора Левиафана, однако, судя по карте, вам нет смысла двигаться в том направлении. ]],
 
        se = "11",
 
        where = dt_labyrinth_ravine_foot
 
    };
 
    ["13"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        sw = "11",
 
        where = dt_labyrinth_foot
 
    };
 
    ["14"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Под вами с северо-запада на юго-восток простирается глубокая расщелина. На юго-востоке вы видите узкий каменный мостик, протянувшийся над бездной. Из отверстия в скале напротив моста исходит яркий свет. ]],
 
        nw = "11",
 
        se = "15",
 
        where = dt_labyrinth_ravine_bridge_nw_foot
 
    };
 
    ["15"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Под вами с северо-запада на юго-восток простирается глубокая расщелина. Прямо под Левиафаном вы видите узкий каменный мостик, из отверстия в скале напротив которого исходит яркий свет. Мостик слишком узкий и вы не можете высадиться здесь. ]],
 
        nw = "14",
 
        se = "17",
 
        sw = "19",
 
        where = dt_labyrinth_bridge
 
    };
 
    ["16"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "35",
 
        where = dt_labyrinth_foot
 
    };
 
    ["17"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Под вами с северо-запада на юго-восток простирается глубокая расщелина. На северо-западе вы видите узкий каменный мостик, протянувшийся над бездной. Из отверстия в скале напротив моста исходит яркий свет. ]],
 
        nw = "15",
 
        where = dt_labyrinth_ravine_bridge_se_foot
 
    };
 
    ["18"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "31",
 
        where = dt_labyrinth_foot
 
    };
 
    ["19"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. ]],
 
        ne = "15",
 
        w = "20",
 
        where = "dt_temple_ravine"
 
    };
 
    ["20"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "19",
 
        s = "21",
 
        where = dt_labyrinth_foot
 
    };
 
    ["21"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        n = "20",
 
        se = "22",
 
        where = dt_labyrinth_foot
 
    };
 
    ["22"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        nw = "21",
 
        sw = "23",
 
        where = dt_labyrinth_foot
 
    };
 
    ["23"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "22",
 
        w = "24",
 
        where = dt_labyrinth_foot
 
    };
 
    ["24"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "23",
 
        sw = "25",
 
        where = dt_labyrinth_foot
 
    };
 
    ["25"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "24",
 
        nw = "26",
 
        where = dt_labyrinth_foot
 
    };
 
    ["26"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "27",
 
        se = "25",
 
        where = dt_labyrinth_foot
 
    };
 
    ["27"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        ne = "28",
 
        sw = "26",
 
        nw = "30",
 
        where = dt_labyrinth_foot
 
    };
 
    ["28"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        sw = "27",
 
        nw = "29",
 
        where = dt_labyrinth_foot
 
    };
 
    ["29"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        se = "28",
 
        where = dt_labyrinth_foot
 
    };
 
    ["30"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        se = "27",
 
        w = "31",
 
        where = dt_labyrinth_foot
 
    };
 
    ["31"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. Где-то здесь скрыт древний навьярский храм. ]],
 
        e = "30",
 
        n = "32",
 
        w = "34",
 
        sw = "18",
 
        where = dt_labyrinth_foot
 
    };
 
    ["32"] = {
 
        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;
 
};
 

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

	
 
dt_wire_colors = {
 
    "фиолетовый",
 
    "синий",
 
    "зеленый",
 
    "желтый",
 
    "оранжевый",
 
    "красный"
 
};
 

	
 
dt_wires_room = dlg {
 
    var {
 
        connections = {
 
            1,
 
            2,
 
            3,
 
            4,
 
            5,
 
            6
 
        };
 
        selected = nil;
 
    };
 
    not_follow = true;
 
    nam = "dt_wires_room";
 
    disp = "У входа в храм, панель";
 
    dsc = [[
 
        Перед вами открытая панель, за которой находятся шесть проводов, подключенные к своим разъемам. Провода отличаются цветами. 
 
    ]]; 
 
    choose_socket = function(s)
 
        pon("s0", "s1", "s2", "s3", "s4", "s5");
 
        for conn = 1, 6 do
 
            if (dt_wires_room.connections[conn] == 1) then
 
                poff("s0");
 
            elseif (dt_wires_room.connections[conn] == 2) then
 
                poff("s1");
 
            elseif (dt_wires_room.connections[conn] == 3) then
 
                poff("s2");
 
            elseif (dt_wires_room.connections[conn] == 4) then
 
                poff("s3");
 
            elseif (dt_wires_room.connections[conn] == 5) then
 
                poff("s4");
 
            elseif (dt_wires_room.connections[conn] == 6) then
 
                poff("s5");
 
            end;
 
        end;
 
        psub("socket");
 
    end;
 
    phr = { 
 
        {tag="wire"};
 
        {
 
            tag = "w0", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[1]] .. " разъем";
 
                    return "Отсоединить фиолетовый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать фиолетовый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                    dt_wires_room.connections[1] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 1;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w1", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[2]] .. " разъем";
 
                    return "Отсоединить синий провод (".. connect .. ")";
 
                else
 
                    return "Выбрать синий провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                    dt_wires_room.connections[2] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 2;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w2", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[3]] .. " разъем";
 
                    return "Отсоединить зеленый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать зеленый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                    dt_wires_room.connections[3] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 3;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w3", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[4]] .. " разъем";
 
                    return "Отсоединить желтый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать желтый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                    dt_wires_room.connections[4] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 4;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w4", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[5]] .. " разъем";
 
                    return "Отсоединить оранжевый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать оранжевый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                    dt_wires_room.connections[5] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 5;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w5", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[6]] .. " разъем";
 
                    return "Отсоединить красный провод (".. connect .. ")";
 
                else
 
                    return "Выбрать красный провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                    dt_wires_room.connections[6] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 6;
 
                    dt_wires_room:choose_socket();
0 comments (0 inline, 0 general)