Changeset - 26c2ac6ed002
[Not reviewed]
default
0 5 0
Silverwing - 5 years ago 2019-06-19 20:44:41

Labyrinths redone
5 files changed with 310 insertions and 303 deletions:
0 comments (0 inline, 0 general)
atlantis_dyp.lua
Show inline comments
 
@@ -1930,11 +1930,12 @@ dyp_temple_blue_room = labyrinth {
 
        return "images/dyp_blueroom_bg.png;images/player.png@" .. y .. ',' .. x;
 
    end;
 
    --dsc = "Вы находитесь в большой комнате. Стены покрыты водорослями, източающими слабый свет. Пол в комнате разделен на двадцать пять квадратных ячеек. ";
 
    dir1 = "На север";
 
    dir2 = "На восток";
 
    dir3 = "На юг";
 
    dir4 = "На запад";
 
    ex = "На север";
 
    dir = {
 
        "На север";
 
        "На восток";
 
        "На юг";
 
        "На запад";
 
    };
 
    underwater = true;
 
    map = {
 
        ["00"] = {
 
@@ -1962,7 +1963,7 @@ dyp_temple_blue_room = labyrinth {
 
            e2 = "03";
 
            e3 = "12";
 
            e4 = "01";
 
            ex = "dyp_temple_cave_blue";
 
            ex1 = "dyp_temple_cave_blue";
 
        };
 
        ["03"] = {
 
            name = [[Вы находитесь у северной стены большой комнаты. Стены покрыты водорослями, источающими слабый свет. Пол в комнате разделен на двадцать пять квадратных ячеек. ]];
 
@@ -2184,18 +2185,20 @@ dyp_crab_cave = labyrinth {
 
    };
 
    nam = "Пещера";
 
    disp = "Пещера";
 
    dir1 = "На северо-запад";
 
    dir2 = "На северо-восток";
 
    dir3 = "На юго-запад";
 
    dir4 = "На юго-восток";
 
    ex = "Выйти";
 
    dir = {
 
        "На северо-запад";
 
        "На северо-восток";
 
        "На юго-запад";
 
        "На юго-восток";
 
        "Выйти";
 
    };
 
    underwater = true;
 
    map = {
 
        ["00"] = {
 
            name = [[Вы стоите у входа в глубокую пещеру. Стены здесь неровные и извилистые, образую причудливые переплетения длинных коридоров. Кто знает, куда они приведут? На каменистом полу едва ли можно заметить какие-либо следы. ]];
 
            e1 = "10";
 
            e2 = "11";
 
            ex = "dyp_temple_cliff_1";
 
            ex5 = "dyp_temple_cliff_1";
 
        };
 
        ["10"] = {
 
            name = [[Вы находитесь где-то в переплетении длинных коридоров. Кто знает, куда они приведут? ]];
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -538,20 +538,23 @@ iyh_ravine_entry = dlg {
 
    leviathan = true;
 
    phr = {
 
        {always = true, "[Направить Левиафан в ущелье]", function(s)
 
            iyh_labyrinth.position = 1;
 
            iyh_labyrinth.direction = 1;
 
            return "iyh_labyrinth";
 
            iyh_labyrinth.position = "1";
 
            walk("iyh_labyrinth");
 
            return false;
 
        end};
 
        {always = true, "[Отвести Левиафан назад]", function(s)
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            return "iyh_far_from_entrance";
 
            walk("iyh_far_from_entrance");
 
            return false;
 
        end};
 
        {always = true, "[Подвести Левиафан ко входу в храм]", function(s)
 
            move(submarine_leviathan, "iyh_near_temple_foot");
 
            return "iyh_near_temple";
 
            walk("iyh_near_temple");
 
            return false;
 
        end};
 
        {always = true, "[Отойти от штурвала]", function(s)
 
            return "leviathan_wheelhouse";
 
            walk("leviathan_wheelhouse");
 
            return false;
 
        end};
 
    };
 
    entered = function(s)
 
@@ -570,176 +573,186 @@ iyh_ravine_entry_foot = room {
 
    handwheel_room = 'iyh_ravine_entry';
 
};
 
 
--[[
 
    Описание структуры лабиринта. Каждый узел описан в двух направлениях
 
    1 - прямое
 
    2 - обратное
 
    направления обозначены как
 
    l - налево
 
    r - направо
 
    f - прямо
 
    выход описывается одной строкой, невыходы описываются парой "узел+направление"
 
]]
 
iyh_labyrinth_template = {
 
    [1]= {[1]={l={32, 1}, r={2, 1}}, 			[2]={f="iyh_ravine_entry"}};
 
    [2]= {[1]={f={3, 1}}, 						[2]={f={1,2}}};
 
    [3]= {[1]={l={5, 1}, f={4,1}},				[2]={f={2,2}}};
 
    [4]= {[1]={}, 								[2]={f={3,2}}};
 
    [5]= {[1]={l={37, 1}, f={6,1} },			[2]={f={3,2}}};
 
    [6]= {[1]={l={33, 1}, r={7,1}},  			[2]={f={5,2}}};
 
    [7]= {[1]={l={12,1}, f={11,1}, r={8,1}},	[2]={f={6,2}}};
 
    [8]= {[1]={l={10,1}, r={9,1}}, 				[2]={f={7,2}}};
 
    [9]= {[1]={}, 								[2]={f={8,2}}};
 
    [10]={[1]={}, 								[2]={f={8,2}, r={11,2}}};
 
    [11]={[1]={f={10,1}}, 						[2]={f={7,2}}};
 
    [12]={[1]={l={14,1}, f={13,1}}, 			[2]={f={7,2}}};
 
    [13]={[1]={}, 								[2]={f={12,2}}};
 
    [14]={[1]={f={15,1}, l={20,1}}, 			[2]={f={12,2}}};
 
    [15]={[1]={l={17,1}, r={16,1}}, 			[2]={f={14,2}}};
 
    [16]={[1]={}, 								[2]={f={15,2}}};
 
    [17]={[1]={l={19,1}, r={18,1}}, 			[2]={f={15,2}}};
 
    [18]={[1]={}, 								[2]={f={17,2}}};
 
    [19]={[1]={}, 								[2]={f={17,2}}};
 
    [20]={[1]={l={22,1}, f={21,1}}, 			[2]={f={14,2}}};
 
    [21]={[1]={}, 								[2]={f={20,2}}};
 
    [22]={[1]={l={25,1}, r={23,1}}, 			[2]={f={20,2}}};
 
    [23]={[1]={l="iyh_rear_entrance", r={24,1}},[2]={f={22,2}}};
 
    [24]={[1]={}, 								[2]={f={23,2}}};
 
    [25]={[1]={l={27,1},r={26,1}}, 				[2]={f={22,2}}};
 
    [26]={[1]={}, 								[2]={f={25,2}}};
 
    [27]={[1]={l={30,2}, f={29,1}, r={28,1}}, 	[2]={f={25,2}}};
 
    [28]={[1]={}, 								[2]={f={27,2}}};
 
    [29]={[1]={}, 								[2]={f={27,2}}};
 
    [30]={[1]={l={27,2}, r={36,1}}, 			[2]={f={31,2}}};
 
    [31]={[1]={l={30,1}, r={35,1}}, 			[2]={f={32,2}}};
 
    [32]={[1]={l={31,1}, r={34,1}}, 			[2]={f={1,2}}};
 
    [33]={[1]={}, 								[2]={l={6,2}, r={37,2}}};
 
    [34]={[1]={}, 								[2]={f={32,2}}};
 
    [35]={[1]={}, 								[2]={f={31,2}}};
 
    [36]={[1]={}, 								[2]={f={30,2}}};
 
    [37]={[1]={f={33,1}}, 						[2]={f={5,2}}};
 
};
 
iyh_labyrinth = labyrinth {
 
    var {
 
        position = "1";
 
    };
 
 
    nam = "Штурвал Левиафана";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
 
iyh_labyrinth = room {
 
    var {
 
        position = 1;
 
        direction = 1;
 
    dir = {
 
        'На север';
 
        'На северо-восток';
 
        'На восток';
 
        'На юго-восток';
 
        'На юг';
 
        'На юго-запад';
 
        'На запад';
 
        'На северо-запад';
 
    };
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    nam = "Штурвал Левиафана";
 
    leviathan = true;
 
    forcedsc = true;
 
    entered = function(s)
 
        s:update();
 
    end;   
 
 
    disp = "Штурвал Левиафана";
 
    dsc = function(s)
 
        pr [[Вы находитесь в глубоком и узком ущелье. ]];
 
        if (iyh_labyrinth_template[s.position][s.direction]["f"]) then
 
            pr [[Ущелье продолжается вперед. ]];
 
        end;
 
        if (iyh_labyrinth_template[s.position][s.direction]["l"] and iyh_labyrinth_template[s.position][s.direction]["r"]) then
 
            pr [[Влево и вправо уходят ответвления. ]];
 
        elseif (iyh_labyrinth_template[s.position][s.direction]["l"]) then
 
            pr [[Влево уходит ответвление. ]];
 
        elseif (iyh_labyrinth_template[s.position][s.direction]["r"]) then
 
            pr [[Вправо уходит ответвление. ]];
 
        elseif (not iyh_labyrinth_template[s.position][s.direction]["f"]) then
 
            pr [[Дальше пути нет. ]];
 
        end;
 
        return [[Вы находитесь где-то в переплетении узких ущелий. Вверху скалы сужаются почти вплотную, не давая вам возможности подняться над ущельем и осмотреться. ]];
 
    end;
 
    update = function(s)
 
        iyh_lab_forward:disable();
 
        iyh_lab_left:disable();
 
        iyh_lab_right:disable();
 
        if (iyh_labyrinth_template[s.position][s.direction]["f"]) then    
 
            iyh_lab_forward:enable();
 
        end;
 
        if (iyh_labyrinth_template[s.position][s.direction]["l"]) then    
 
            iyh_lab_left:enable();
 
        end;
 
        if (iyh_labyrinth_template[s.position][s.direction]["r"]) then    
 
            iyh_lab_right:enable();
 
        end;
 
    end;
 
    obj = {
 
        "iyh_lab_left",
 
        "iyh_lab_forward",
 
        "iyh_lab_right",
 
        "iyh_lab_turn"
 
    };
 
};
 
 
iyh_lab_forward = obj {
 
    nam = "iyh_lab_forward";
 
    dsc = "{Вперед}^";
 
    act = function(s)
 
        pr [[Вы продолжаете движение. ]];
 
        local p = iyh_labyrinth.position;
 
        local d = iyh_labyrinth.direction;
 
 
        if (type(iyh_labyrinth_template[p][d]["f"]) == 'string') then
 
            walk(iyh_labyrinth_template[p][d]["f"]);
 
        else
 
            iyh_labyrinth.position = iyh_labyrinth_template[p][d]["f"][1];
 
            iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["f"][2];
 
        end;
 
 
        iyh_labyrinth:update();
 
    end;
 
};
 
 
iyh_lab_left = obj {
 
    nam = "iyh_lab_left";
 
    dsc = "{Налево}^";
 
    act = function(s)
 
        pr [[Вы сворачиваете налево. ]];
 
        local p = iyh_labyrinth.position;
 
        local d = iyh_labyrinth.direction;
 
 
        if (type(iyh_labyrinth_template[p][d]["l"]) == 'string') then
 
            walk(iyh_labyrinth_template[p][d]["l"]);
 
        else
 
            iyh_labyrinth.position = iyh_labyrinth_template[p][d]["l"][1];
 
            iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["l"][2];
 
        end;
 
 
        iyh_labyrinth:update();
 
    end;
 
};
 
 
iyh_lab_right = obj {
 
    nam = "iyh_lab_right";
 
    dsc = "{Направо}^";
 
    act = function(s)
 
        pr [[Вы сворачиваете направо. ]];
 
        local p = iyh_labyrinth.position;
 
        local d = iyh_labyrinth.direction;
 
 
        if (type(iyh_labyrinth_template[p][d]["r"]) == 'string') then
 
            walk(iyh_labyrinth_template[p][d]["r"]);
 
        else
 
            iyh_labyrinth.position = iyh_labyrinth_template[p][d]["r"][1];
 
            iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["r"][2];
 
        end;
 
 
        iyh_labyrinth:update();
 
    end;
 
};
 
 
iyh_lab_turn = obj {
 
    nam = "iyh_lab_turn";
 
    dsc = "{Развернуться}^";
 
    act = function(s)
 
        pr [[Вы разворачиваете субмарину. ]];
 
        if (iyh_labyrinth.direction == 1) then
 
            iyh_labyrinth.direction = 2;
 
        else
 
            iyh_labyrinth.direction = 1;
 
        end;
 
 
        iyh_labyrinth:update();
 
    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";
 
        };
 
        ["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 = "Левиафан";
 
@@ -748,8 +761,7 @@ iyh_rear_entrance = room {
 
    way = {
 
        kh_vroom("Отойти от штурвала", "leviathan_wheelhouse");
 
        kh_vroom("В ущелье", function(s)
 
            iyh_labyrinth.position = 23;
 
            iyh_labyrinth.direction = 2;
 
            iyh_labyrinth.position = "23";
 
            return "iyh_labyrinth";
 
        end);
 
    };
journey_venaedanotrr_labyrinth.lua
Show inline comments
 
@@ -174,11 +174,13 @@ ven_temple_labyrinth_l1 = labyrinth {
 
        lock2 = true;
 
        lock3 = true;
 
    };
 
    dir1 = "На север";
 
    dir2 = "На восток";
 
    dir3 = "На юг";
 
    dir4 = "На запад";
 
    ex = "Выйти";
 
    dir = {
 
        "На север";
 
        "На восток";
 
        "На юг";
 
        "На запад";
 
        "Выйти";
 
    };
 
    nam = "Венаэданотр, храм, лабиринт";
 
    dsc = function(s)
 
        if (s.map[s.position].name) then
 
@@ -272,7 +274,7 @@ ven_temple_labyrinth_l1 = labyrinth {
 
            e1 = "13";
 
            e2 = "04";
 
            e4 = "02";
 
            ex = "ven_temple_qhall";
 
            ex5 = "ven_temple_qhall";
 
            e1lock = function(s)
 
                return lock03;
 
            end;
 
@@ -573,7 +575,7 @@ ven_temple_labyrinth_l1 = labyrinth {
 
        };
 
        ["73"] = {
 
            e2 = "74";
 
            ex = "ven_temple_labyrinth_l2";
 
            ex5 = "ven_temple_labyrinth_l2";
 
        };
 
        ["74"] = {
 
            e3 = "64";
lse_service_tunnels.lua
Show inline comments
 
@@ -2,11 +2,13 @@ service_tunnels_1 = labyrinth {
 
    var {
 
        position = "00";
 
    };
 
    dir1 = "#";
 
    dir2 = "O";
 
    dir3 = "\\^";
 
    dir4 = "|";
 
    ex = "Из тоннеля";
 
    dir = {
 
        "#";
 
        "O";
 
        "\\^";
 
        "|";
 
        "Из тоннеля";
 
    };
 
    nam = "service_tunnels_1";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
@@ -16,7 +18,7 @@ service_tunnels_1 = labyrinth {
 
        ["00"] = {
 
            name = "две фиолетовые полосы";
 
            e1 = "10";
 
            ex = "lse_outer_3";
 
            ex5 = "lse_outer_3";
 
        };
 
        ["01"] = {
 
            name = "фиолетовая и синяя полосы";
 
@@ -183,7 +185,7 @@ service_tunnels_1 = labyrinth {
 
        ["53"] = {
 
            name = "красная и желтая полосы";
 
            e4 = "54";
 
            ex = "lse_prison_overseer_room";
 
            ex5 = "lse_prison_overseer_room";
 
        };
 
        ["54"] = {
 
            name = "красная и оранжевая полосы";
 
@@ -203,11 +205,13 @@ service_tunnels_2 = labyrinth {
 
    var {
 
        position = "05";
 
    };
 
    dir1 = "#";
 
    dir2 = "O";
 
    dir3 = "\\^";
 
    dir4 = "|";
 
    ex = "Из тоннеля";
 
    dir = {
 
        "#";
 
        "O";
 
        "\\^";
 
        "|";
 
        "Из тоннеля";
 
    };
 
    nam = "service_tunnels_2";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
@@ -242,7 +246,7 @@ service_tunnels_2 = labyrinth {
 
        ["05"] = {
 
            name = "фиолетовая и красная полосы";
 
            e1 = "15";
 
            ex = "lse_middle_1";
 
            ex5 = "lse_middle_1";
 
        };
 
        
 
        ["10"] = {
 
@@ -362,7 +366,7 @@ service_tunnels_2 = labyrinth {
 
        ["45"] = {
 
            name = "оранжевая и красная полосы";
 
            e1 = "55";
 
            ex = "lse_power_station";
 
            ex5 = "lse_power_station";
 
        };
 
        ["50"] = {
 
            name = "красная и фиолетовая полосы";
 
@@ -403,11 +407,13 @@ service_tunnels_3 = labyrinth {
 
    var {
 
        position = "10";
 
    };
 
    dir1 = "#";
 
    dir2 = "O";
 
    dir3 = "\\^";
 
    dir4 = "|";
 
    ex = "Из тоннеля";
 
    dir = {
 
        "#";
 
        "O";
 
        "\\^";
 
        "|";
 
        "Из тоннеля";
 
    };
 
    nam = "service_tunnels_3";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
@@ -453,7 +459,7 @@ service_tunnels_3 = labyrinth {
 
        ["10"] = {
 
            name = "синяя и фиолетовая полосы";
 
            e2 = "20";
 
            ex = "lse_inner_7";
 
            ex5 = "lse_inner_7";
 
        };
 
        ["11"] = {
 
            name = "две синие полосы";
 
@@ -540,7 +546,7 @@ service_tunnels_3 = labyrinth {
 
        ["35"] = {
 
            name = "желтая и красная полосы";
 
            e1 = "25";
 
            ex = "lse_sub_2";
 
            ex5 = "lse_sub_2";
 
        };
 
        ["40"] = {
 
            name = "оранжевая и фиолетовая полосы";
 
@@ -608,11 +614,13 @@ service_tunnels_4 = labyrinth {
 
    var {
 
        position = "30";
 
    };
 
    dir1 = "#";
 
    dir2 = "O";
 
    dir3 = "\\^";
 
    dir4 = "|";
 
    ex = "Из тоннеля";
 
    dir = {
 
        "#";
 
        "O";
 
        "\\^";
 
        "|";
 
        "Из тоннеля";
 
    };
 
    nam = "service_tunnels_4";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
@@ -722,7 +730,7 @@ service_tunnels_4 = labyrinth {
 
        ["30"] = {
 
            name = "желтая и фиолетовая полосы";
 
            e1 = "20";
 
            ex = "lse_sub_2";
 
            ex5 = "lse_sub_2";
 
        };
 
        ["31"] = {
 
            name = "желтая и синяя полосы";
 
@@ -798,7 +806,7 @@ service_tunnels_4 = labyrinth {
 
        ["53"] = {
 
            name = "красная и желтая полосы";
 
            e4 = "54";
 
            ex = "lse_center";
 
            ex5 = "lse_center";
 
            
 
        };
 
        ["54"] = {
 
@@ -821,35 +829,37 @@ lse_sub_2 = labyrinth {
 
        breath = 12;
 
    };
 
    nam = "lse_sub_2";
 
    dir1 = function(s)
 
        if (lse_sub_2.pdir == "0") then
 
            return "Налево";
 
        else
 
            return "Направо";
 
    dir = {
 
        function(s)
 
            if (lse_sub_2.pdir == "0") then
 
                return "Налево";
 
            else
 
                return "Направо";
 
            end;
 
        end;
 
    end;
 
    dir2 = function(s)
 
        if (lse_sub_2.pdir == "0") then
 
            return "Вперед";
 
        else
 
            return "Назад";
 
        function(s)
 
            if (lse_sub_2.pdir == "0") then
 
                return "Вперед";
 
            else
 
                return "Назад";
 
            end;
 
        end;
 
    end;
 
    dir3 = function(s)
 
        if (lse_sub_2.pdir == "0") then
 
            return "Направо";
 
        else
 
            return "Налево";
 
        function(s)
 
            if (lse_sub_2.pdir == "0") then
 
                return "Направо";
 
            else
 
                return "Налево";
 
            end;
 
        end;
 
    end;
 
    dir4 = function(s)
 
        if (lse_sub_2.pdir == "0") then
 
            return "Назад";
 
        else
 
            return "Вперед";
 
        function(s)
 
            if (lse_sub_2.pdir == "0") then
 
                return "Назад";
 
            else
 
                return "Вперед";
 
            end;
 
        end;
 
    end;
 
    ex = "Наверх";
 
        "Наверх";
 
    };
 
    disp = "Подводный тоннель";
 
    dsc = function(s)
 
        pr [[Вы находитесь в узком подводном тоннеле. ]];
 
@@ -883,7 +893,7 @@ lse_sub_2 = labyrinth {
 
            e3 = "14";
 
        };
 
        ["10"] = {
 
            ex = "service_tunnels_3";
 
            ex5 = "service_tunnels_3";
 
            e1 = "00";
 
        };
 
        ["11"] = {
 
@@ -899,7 +909,7 @@ lse_sub_2 = labyrinth {
 
            e4  ="12";
 
        };
 
        ["14"] = {
 
            ex = "service_tunnels_4";
 
            ex5 = "service_tunnels_4";
 
            e1 = "04";
 
            e3 = "24";
 
        };
utils.lua
Show inline comments
 
@@ -131,7 +131,6 @@ function kh_vroom(disp, target, nam, see
 
		where = target;
 
		enter = _kh.vroom_enter;
 
		seen_level = seen_level;
 
		--enter = _kh.vroom_enter;
 
		--save = _kh.vroom_save;
 
	};
 
end;
 
@@ -889,34 +888,44 @@ labyrinth = function(tab)
 
    local exit = tab.exit;
 
    local dsc = tab.dsc;
 
    local lab;
 
 
    paths = {}
 
 
    for i = 1, #tab.dir do
 
        local ename = 'e' .. tostring(i)
 
        local exname = 'ex' .. tostring(i)
 
        paths[i] = kh_vroom(tab.dir[i], function()
 
            if lab.map[lab.position][ename] then
 
                lab.oldposition = lab.position;
 
                lab.position = lab.map[lab.position][ename];
 
                return lab;
 
            elseif lab.map[lab.position][exname] then
 
                return lab.map[lab.position][exname];
 
            else
 
                p "Labyrinth: Ходу нет! Если вы видите это сообщение -- это баг";
 
                return false;
 
            end;
 
        end, "e" .. tostring(i));
 
    end;
 
 
    paths[#tab.dir + 1] = kh_vroom("Ждать", function()
 
        lab.oldposition = lab.position;
 
        return lab;
 
    end, "wt");
 
 
    print(paths[1]);
 
    tab.way = paths;
 
 
    tab.enter = function(s)
 
        path('e1'):disable();
 
        path('e2'):disable();
 
        path('e3'):disable();
 
        path('e4'):disable();
 
        path('ex'):disable();
 
        
 
        local e1open = s.map[s.position].e1 and not EngineUtils.getValue(s.map[s.position].e1lock, s);
 
        local e2open = s.map[s.position].e2 and not EngineUtils.getValue(s.map[s.position].e2lock, s);
 
        local e3open = s.map[s.position].e3 and not EngineUtils.getValue(s.map[s.position].e3lock, s);
 
        local e4open = s.map[s.position].e4 and not EngineUtils.getValue(s.map[s.position].e4lock, s);
 
        local exopen = s.map[s.position].ex and not EngineUtils.getValue(s.map[s.position].exlock, s);
 
        
 
        if (e1open) then
 
            path('e1'):enable();
 
        for p = 1, #s.way - 1 do
 
            if (s.map[s.position]['e' .. tostring(p)] or s.map[s.position]['ex' .. tostring(p)])
 
                and not EngineUtils.getValue(s.map[s.position]['e' .. tostring(p) .. 'lock'], s) then
 
                s.way[p]:enable();
 
            else
 
                s.way[p]:disable();
 
            end;
 
        end;
 
        if (e2open) then
 
            path('e2'):enable();
 
        end;
 
        if (e3open) then
 
            path('e3'):enable();
 
        end;
 
        if (e4open) then
 
            path('e4'):enable();
 
        end;
 
        if (exopen) then
 
            path('ex'):enable();
 
        end;
 
 
        if (type(enter) == 'function') then
 
            enter(s);
 
        end;
 
@@ -941,35 +950,6 @@ labyrinth = function(tab)
 
            return dsc .. s.map[s.position].name;
 
        end;
 
    end;
 
    tab.way = {
 
        kh_vroom(tab.dir1, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e1;
 
            return lab;
 
        end, "e1");
 
        kh_vroom(tab.dir2, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e2;
 
            return lab;
 
        end, "e2");
 
        kh_vroom(tab.dir3, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e3;
 
            return lab;
 
        end, "e3");
 
        kh_vroom(tab.dir4, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e4;
 
            return lab;
 
        end, "e4");
 
        kh_vroom(tab.ex, function()
 
            return lab.map[lab.position].ex;
 
        end, "ex");
 
        kh_vroom("Ждать", function()
 
            lab.oldposition = lab.position;
 
            return lab;
 
        end, "wt");
 
    };
 
    
 
    lab = room(tab);
 
    if (not tab.position) then
0 comments (0 inline, 0 general)