Changeset - f075f8fe6f27
[Not reviewed]
default
0 3 0
Silverwing - 8 years ago 2016-09-17 09:36:21

Venaedanotrr done
3 files changed with 321 insertions and 16 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -497,13 +497,13 @@ item_navjiarr_chart_1 = obj {
 
		Металлическая табличка, на которую нанесены странные обозначения. 
 
	]];
 
};
 
 
item_navjiarr_chart_iraa = obj {
 
	nam = "item_navjiarr_chart_iraa";
 
	disp = "Навьярская карта из Ираафаанотра";
 
	disp = "Карта из Ираафаанотра";
 
	dsc = [[
 
		На полу в углу валяется какой-то {предмет}.
 
	]];
 
	tak = [[
 
		Вы поднимаете предмет - это небольшая металлическая табличка.
 
	]];
 
@@ -511,13 +511,13 @@ item_navjiarr_chart_iraa = obj {
 
		Металлическая табличка, на которую нанесены странные обозначения. 
 
	]];
 
};
 
 
item_navjiarr_chart_dyp = obj {
 
	nam = "item_navjiarr_chart_dyp";
 
	disp = "Навьярская карта из Дипатреанотра";
 
	disp = "Карта из Дипатреанотра";
 
	dsc = [[
 
		На пьедестале лежит металлическая табличка. 
 
	]];
 
	tak = function(s)
 
		path("Выйти из храма"):enable();
 
		return [[
 
@@ -540,12 +540,20 @@ item_navjiarr_chart_2 = obj {
 
	]];
 
	inv = [[
 
		Металлическая табличка, на которую нанесены странные обозначения. 
 
	]];
 
};
 
 
item_navjiarr_chart_ven = obj {
 
    nam = "item_navjiarr_chart_ven";
 
    disp = "Карта из Венаэданотра";
 
    inv = [[
 
        Металлическая табличка с нанесенными обозначениями. 
 
    ]];
 
}
 
 
item_navjiarr_chart_3 = obj {
 
	nam = "item_navjiarr_chart_3";
 
	disp = "Навьярская табличка";
 
	dsc = [[
 
		На полу в углу валяется какой-то {предмет}.
 
	]];
journey_venaedanotrr.lua
Show inline comments
 
@@ -395,13 +395,13 @@ ven_tower_l1 = room {
 
        'ven_statue_monster',
 
        'ven_statue_human'
 
    };
 
    way = {
 
        kh_vroom("Выйти", "ven_east");
 
        kh_vroom("На второй этаж", function(s)
 
            if (s.state == 1) then
 
            if (ven_tower_l1.state == 1) then
 
                return "ven_tower_l2";
 
            else
 
                pr("Дверь не открывается.");
 
                return false;
 
            end;
 
        end);
 
@@ -419,31 +419,34 @@ ven_tower_l2 = room {
 
    obj = {
 
        kh_vway("В центре зала вы видите {пьедестал} с двумя выемками.", 'ven_l2_pedestal');
 
    };
 
    way = {
 
        kh_vroom("На первый этаж", "ven_tower_l1");
 
        kh_vroom("На третий этаж", function(s)
 
            if (s.state == 1) then
 
            if (ven_tower_l2.state == 1) then
 
                return "ven_tower_l3";
 
            else
 
                pr("Дверь не открывается.");
 
                return false;
 
            end;
 
        end );
 
    };
 
}
 
        
 
ven_tower_l3 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "Венаэданотр, башня, третий этаж";
 
    dsc = [[
 
        Третий этаж ничем не отличается от первых двух - это большой пустой зал с двумя дверьми в противоположных его концах.
 
    ]];
 
    way = {
 
        kh_vroom("На второй этаж", "ven_tower_l2");
 
        kh_vroom("На четвертый этаж", function(s)
 
            if (s.state == 1) then
 
            if (ven_tower_l3.state == 1) then
 
                return "ven_tower_l4";
 
            else
 
                pr("Дверь не открывается.");
 
                return false;
 
            end;
 
        end );
 
@@ -589,12 +592,208 @@ ven_l2_navjiarr = obj {
 
        else
 
            return "Это сюда не подходит. ";
 
        end;
 
    end;
 
};
 

	
 
ven_towers_machine = obj {
 
    nam = "ven_towers_machine";
 
    dsc = "В центре зала вы видите странную {машину} - три вращающихся оси, на которых установлено 4 шестеренки. Внизу вы видите какие-то рычаги";
 
    act = function(s)
 
        if (not ven_towers_machine_look.solved) then
 
            walkin(ven_towers_machine_look);
 
        end;
 
    end;
 
};
 

	
 
ven_towers_machine_look = room {
 
    var {
 
        gears = {1,1,1,1};
 
        from = 0;
 
        solved = false;
 
    };
 
    nam = "Венаэданотр, башня, третий этаж";
 
    pic = function(s)
 
        local p = "box:96x48,white,255;box:1x48,black,255@16,0;box:1x48,black,255@48,0;box:1x48,black,255@80,0";
 
        for g = 1,#s.gears do
 
            p = p .. ";box:" .. tostring(g * 8) .. "x11,green,255@" .. tostring((s.gears[g] - 1) * 32 + 16 - g * 4) .. "," .. tostring((g - 1) * 12 + 1);
 
        end;
 
        
 
        return p;
 
    end;
 
    move = function(s, target)
 
        local rv = "";
 
        local nums, numt;
 
        for g = 1, #s.gears do
 
            if (s.gears[g] == s.from) then
 
                nums = g;
 
                break;
 
            end;
 
        end;
 
        for g = 1, #s.gears do
 
            if (s.gears[g] == target) then
 
                numt = g;
 
                break;
 
            end;
 
        end;
 
        
 
        print("f");
 
        print(nums);
 
        print(numt);
 
        print("/f");
 
        
 
        if (not nums or numt and numt < nums) then
 
            rv = "Механизм издает легкий щелчок и ничего не происходит. ";
 
        else
 
            s.gears[nums] = target;
 
            rv = "Механизм издает легкий щелчок и одна из шестеренок перемещается на соседнюю ось. ";
 
        end;
 
        print(s.gears[1]);
 
        print(s.gears[2]);
 
        print(s.gears[3]);
 
        print(s.gears[4]);
 
        
 
        s.solved = true;
 
        for g = 1, #s.gears do
 
            if (s.gears[g] ~= 3) then
 
                s.solved = false;
 
            end;
 
        end;
 
        
 
        if (s.solved) then
 
            ven_tower_l3.state = 1;
 
            ven_towers_lever1:disable();
 
            ven_towers_lever2:disable();
 
            ven_towers_lever3:disable();
 
            rv = rv .. "Дверь наверх открывается. ";
 
        end;
 
                
 
        ven_towers_lever1.state = 0;
 
        ven_towers_lever2.state = 0;
 
        ven_towers_lever3.state = 0;
 
        ven_towers_machine_look.from = 0;
 
        return rv;
 
    end;
 
    dsc = [[
 
        Странная машина состоит из четырех шестеренок и трех вращающихся осей. Внизу вы видите три рычага.
 
    ]];
 
    obj = {
 
        'ven_towers_lever1',
 
        'ven_towers_lever2',
 
        'ven_towers_lever3'
 
    };
 
    way = {
 
        kh_vroom("Отойти", "ven_tower_l3");
 
    };
 
};
 

	
 
ven_towers_lever1 = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "ven_towers_lever1";
 
    dsc = function(s)
 
        if (s.state == 0) then
 
            return [[
 
                {Первый рычаг(выключен).}^
 
            ]];
 
        else
 
            return [[
 
                {Первый рычаг(включен).}^
 
            ]];
 
        end;
 
    end;
 
    act = function(s)
 
        local rv = [[
 
            Вы переключаете рычаг. 
 
        ]];
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (ven_towers_machine_look.from == 0) then
 
                ven_towers_machine_look.from = 1;
 
            else
 
                rv  = rv .. ven_towers_machine_look:move(1);
 
            end;
 
        else
 
            s.state = 0;
 
            ven_towers_machine_look.from = 0;
 
        end;
 
        return rv;
 
    end;
 
};
 

	
 
ven_towers_lever2 = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "ven_towers_lever2";
 
    dsc = function(s)
 
        if (s.state == 0) then
 
            return [[
 
                {Второй рычаг(выключен).}^
 
            ]];
 
        else
 
            return [[
 
                {Второй рычаг(включен).}^
 
            ]];
 
        end;
 
    end;
 
    act = function(s)
 
        local rv = [[
 
            Вы переключаете рычаг. 
 
        ]];
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (ven_towers_machine_look.from == 0) then
 
                ven_towers_machine_look.from = 2;
 
            else
 
                rv  = rv .. ven_towers_machine_look:move(2);
 
            end;
 
        else
 
            s.state = 0;
 
            ven_towers_machine_look.from = 0;
 
        end;
 
        return rv;
 
    end;
 
};
 

	
 
ven_towers_lever3 = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "ven_towers_lever3";
 
    dsc = function(s)
 
        if (s.state == 0) then
 
            return [[
 
                {Третий рычаг(выключен).}^
 
            ]];
 
        else
 
            return [[
 
                {Третий рычаг(включен).}^
 
            ]];
 
        end;
 
    end;
 
    act = function(s)
 
        local rv = [[
 
            Вы переключаете рычаг. 
 
        ]];
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (ven_towers_machine_look.from == 0) then
 
                ven_towers_machine_look.from = 3;
 
            else
 
                rv  = rv .. ven_towers_machine_look:move(3);
 
            end;
 
        else
 
            s.state = 0;
 
            ven_towers_machine_look.from = 0;
 
        end;
 
        return rv;
 
    end;
 
};
 

	
 
ven_wiseman = npc {
 
    nam = "ven_wiseman";
 
    dsc = [[
 
        Перед одним из окон сидит старый {навьяр}. Левой рукой он опирается на посох. Его глаза внимательно наблюдают за вами. 
 
    ]];
 
    dlg = "ven_wiseman_dlg";
 
@@ -791,15 +990,15 @@ ven_temple_l1 = labyrinth {
 
    dir3 = "На юг";
 
    dir4 = "На запад";
 
    ex = "Выйти";
 
    nam = "ven_temple_l1";
 
    disp = "Венаэданотр, храм";
 
    dsc = function(s)
 
        if true then
 
            return tostring(s.position);
 
        end;
 
        --if true then
 
        --    return tostring(s.position);
 
        --end;
 
        if (s.map[s.position].name) then
 
            return s.map[s.position].name;
 
        else
 
            return [[
 
                Вы стоите посреди запутанного лабиринта. Металлические стены по сторонам здесь ничем не отличаются от стен в других коридорах этого лабиринта. 
 
            ]];
 
@@ -808,13 +1007,13 @@ ven_temple_l1 = labyrinth {
 
    enter = function(s)
 
        if (exist(ven_shark, s) and ven_shark.active) then
 
            local no = s.map[ven_shark.position].e1;
 
            local ea = s.map[ven_shark.position].e2;
 
            local so = s.map[ven_shark.position].e3;
 
            local we = s.map[ven_shark.position].e4;
 
            if (no and s.oldposition == no) then
 
            if (no and s.oldposition == no or no and s.position == no) then
 
                walk(game_over_eaten_by_shark);
 
            end;
 
            if (no and s.oldposition == s.map[no].e1) then
 
                ven_shark.position = no;
 
            end;
 
            if (ea and s.oldposition == ea) then
 
@@ -869,20 +1068,28 @@ ven_temple_l1 = labyrinth {
 
        ["00"] = {
 
            e1 = "10";
 
            e2 = "01";
 
        };
 
        ["01"] = {
 
            e4 = "00";
 
            enter = function(s)
 
                if (not exist(ven_chest, s)) then
 
                    move(ven_chest, s);
 
                end;
 
            end;
 
            exit = function(s)
 
                remove(ven_chest, s);
 
            end;
 
        };
 
        ["02"] = {
 
            e1 = "12";
 
            e2 = "03";
 
        };
 
        ["03"] = { 
 
            name = [[
 
                Вы стоите у входа в храм
 
                Вы стоите у входа в храм. 
 
            ]];
 
            e1 = "13";
 
            e2 = "04";
 
            e4 = "02";
 
            ex = "ven_temple_entrance";
 
            e1lock = function(s)
 
@@ -946,12 +1153,20 @@ ven_temple_l1 = labyrinth {
 
        ["16"] = {
 
            e1 = "26";
 
            e3 = "06";
 
        };
 
        ["17"] = {
 
            e1 = "27";
 
            enter = function(s)
 
                if (not exist(ven_cache, s)) then
 
                    move(ven_cache, s);
 
                end;
 
            end;
 
            exit = function(s)
 
                remove(ven_cache, s);
 
            end;
 
        };
 
        ["20"] = {
 
            e1 = "30";
 
            e2 = "21";
 
            e3 = "10";
 
            enter = function(s)
 
@@ -1047,13 +1262,15 @@ ven_temple_l1 = labyrinth {
 
        };
 
        ["44"] = {
 
            e2 = "45";
 
            e4 = "43";
 
        };
 
        ["45"] = {
 
            dsc = "На юге вы видите закрытую дверь. ";
 
            name = [[
 
                 Вы стоите посреди запутанного лабиринта. Металлические стены по сторонам здесь ничем не отличаются от стен в других коридорах этого лабиринта, за исключением двери на юге. 
 
            ]];
 
            e3 = "35";
 
            e4 = "44";
 
            e3lock = function(s)
 
                return s.lock1;
 
            end;
 
            enter = function(s)
 
@@ -1103,12 +1320,15 @@ ven_temple_l1 = labyrinth {
 
        };
 
        ["55"] = {
 
            e2 = "56";
 
            e4 = "54";
 
        };
 
        ["56"] = {
 
            name = [[
 
                 Вы стоите посреди запутанного лабиринта. Металлические стены по сторонам здесь ничем не отличаются от стен в других коридорах этого лабиринта, за исключением двери на западе. 
 
            ]];
 
            e1 = "66";
 
            e3 = "46";
 
            e4 = "55";
 
            e4lock = function(s)
 
                return s.lock3;
 
            end;
 
@@ -1437,16 +1657,18 @@ ven_chest_away = kh_vobj("ven_chest_away", "{Отойти от сундука.}^", function(s)
 
    back();
 
end);
 

	
 
ven_first_lock = obj {
 
    nam = "ven_first_lock";
 
    dsc = "В двери вы видите {замочную скважину}. ";
 
    use = function(s, o)
 
    used = function(s, o)
 
        print "fuckersaurus"
 
        if (o == item_ven_temple_key_1) then
 
            remove(item_ven_temple_key_1);
 
            remove(item_ven_temple_key_1, pl);
 
            ven_temple_l1.lock1 = false;
 
            path('e3'):enable();
 
            return "Вы открываете дверь. ";
 
        end;
 
        return "Это сюда не подходит. ";
 
    end;
 
};
 

	
 
@@ -1459,21 +1681,58 @@ ven_lever = obj {
 
    end;
 
}
 
        
 
ven_second_lock = obj {
 
    nam = "ven_second_lock";
 
    dsc = "В двери вы видите {замочную скважину}. ";
 
    use = function(s, o)
 
    used = function(s, o)
 
        if (o == item_ven_temple_key_2) then
 
            remove(item_ven_temple_key_2);
 
            remove(item_ven_temple_key_2, pl);
 
            ven_temple_l1.lock3 = false;
 
            path('e4'):enable();
 
            return "Вы открываете дверь. ";
 
        end;
 
        return "Это сюда не подходит. ";
 
    end;
 
};
 
        
 
ven_cache = obj {
 
    var {
 
        state = 0
 
    };
 
    nam = "ven_cache";
 
    dsc = function(s)
 
        if (s.state >= 1) then
 
            return [[
 
                В южной стене открыта {выемка}.
 
            ]];
 
        else
 
            return [[
 
                В южной стене имеется небольшую {прорезь}.
 
            ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (s.state == 1) then
 
            s.state = 2;
 
            move(item_ven_temple_key_2, pl);
 
            return [[
 
                В выемке вы находите ключ. 
 
            ]];
 
        end;
 
    end;
 
    used = function(s, o)
 
        if (s.state == 0) then
 
            if (o == item_ven_tablet) then
 
                s.state = 1;
 
                remove(item_ven_tablet, pl);
 
                return "Пластинка легко уходит вглубь прорези. Вы слышите щелчок и в стене открывается выемка, в которой лежит ключ. ";
 
            end;
 
        end;
 
    end;
 
};
 

	
 
ven_skeleton = obj {
 
    nam = "ven_skeleton";
 
    dsc = [[
 
        У одной из стен вы видите {скелет навьяра}. 
 
    ]];
 
@@ -1536,7 +1795,44 @@ ven_octopus = obj {
 
};
 

	
 

	
 

	
 
ven_temple_l2 = room {
 
    nam = "Венаэданотр, храм, второй этаж";
 
    dsc = [[
 
        Второй этаж храма представляет собой небольшой зал с металлическими стенами. В западной стене вы видите несколько окон, через которые открывается вид на ущелье. В северной части вы видите едва заметный проход. 
 
    ]];
 
    obj = {
 
        'ven_pedestal'
 
    };
 
    way = {
 
        kh_vroom("На первый этаж", "ven_temple_l1");
 
        kh_vroom("В проход на севере", "ven_near_temple");
 
    };
 
};
 

	
 
ven_pedestal = obj {
 
    var {
 
        taken = false;
 
    };
 
    nam = "ven_pedestal";
 
    dsc = function(s)
 
        if (s.taken) then
 
            return [[
 
                Пьедестал в центре зала пуст. 
 
            ]];
 
        else 
 
            return [[
 
                На пьедестале в центре зала вы видите небольшую металлическую пластину - судя по обозначениям это {фрагмент карты}. 
 
            ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (not s.taken) then
 
            s.taken = true;
 
            put(item_navjiarr_chart_ven);
 
            return [[
 
                Вы забираете фрагмент карты себе. 
 
            ]];
 
        end;
 
    end;
 
};
 
\ No newline at end of file
main.lua
Show inline comments
 
@@ -220,14 +220,15 @@ function init()
 
	pl.where = "leviathan_airlock";
 
	atlantis_found = true;
 
	move(submarine_leviathan, "atl_aqua_leviathan_dock");
 
    submarine_leviathan:enable();   
 
    	   
 
    --ven_temple_l1.position = "66";   
 
    put(item_ven_tablet, pl);
 
    --ven_shark.position = "55";
 
	pl.where = "ven_temple_l1";
 
	pl.where = "ven_towers_machine_look";
 
    move(submarine_leviathan, "ven_center");
 
    --pl.where = "ven_chest_look";
 
    --move(ven_shark, "ven_temple_l1");
 
    
 
	--put(item_suit, pl);
 
	
0 comments (0 inline, 0 general)