Changeset - b3755f6595f0
[Not reviewed]
atlantis_dyp.lua
Show inline comments
 
@@ -440,9 +440,9 @@ dyp_chief = npc {
 
    nam = "dyp_chief";
 
    dsc = function(s)
 
        if s.wand then
 
            return [[{Вождь Дипатреанотра} сидит на троне с закрытыми глазами. Руки его лежат на колянях. Светло-синяя чешуя покрыта узором из татуировок. Как и другие навьяры он одет в костюм из водорослей. На левой руке дремлюего вождя вы видите искусный браслет из блестящего металла. ]];
 
            return [[{Вождь Дипатреанотра} сидит на троне с закрытыми глазами. Руки его лежат на колянях. Светло-синяя чешуя покрыта узором из татуировок. Как и другие навьяры он одет в костюм из водорослей. На левой руке дремлющего вождя вы видите искусный браслет из блестящего металла. ]];
 
        else
 
            return [[{Вождь Дипатреанотра} сидит на троне с закрытыми глазами. Руки его лежат на колянях. В правой он держит небольшой золотистый жезл, в навершии которого укреплен круглый камень, излучающий яркий зеленый свет. Светло-синяя чешуя покрыта узором из татуировок. Как и другие навьяры он одет в костюм из водорослей. На левой руке дремлюего вождя вы видите искусный браслет из блестящего металла. ]];
 
            return [[{Вождь Дипатреанотра} сидит на троне с закрытыми глазами. Руки его лежат на колянях. В правой он держит небольшой золотистый жезл, в навершии которого укреплен круглый камень, излучающий яркий зеленый свет. Светло-синяя чешуя покрыта узором из татуировок. Как и другие навьяры он одет в костюм из водорослей. На левой руке дремлющего вождя вы видите искусный браслет из блестящего металла. ]];
 
        end;
 
    end;
 
    dlg = "dyp_chief_dlg";
 
@@ -574,7 +574,7 @@ dyp_temple_entrance = room {
 

	
 
dyp_temple_east = room {
 
    nam = "Океан";
 
    view = [[Вы находитесь у подножья скалы, протянувшейся на многие километры на восток от вас. На западе она сворачивает к югу. В освещенной мощным прожектором Левиафана скале вы видите раверзшуюся пасть пещеры. ]];
 
    view = [[Вы находитесь у подножья скалы, протянувшейся на многие километры на восток от вас. На западе она сворачивает к югу. В освещенной мощным прожектором Левиафана скале вы видите разверзшуюся пасть пещеры. ]];
 
    dsc = [[Вы находитесь у подножья скалы, протянувшейся на многие километры на восток от вас. На западе она сворачивает к югу. Перед собой вы видите разверзшуюся пасть пещеры. ]];
 
    underwater = true;
 
    handwheel_room = 'dyp_temple_navigation';
 
@@ -725,7 +725,7 @@ dyp_temple_cliff_1 = room {
 

	
 
dyp_temple_cliff_1_footprints = obj {
 
    nam = "dyp_temple_cliff_1_footprints";
 
    dsc = [[На илистом дне хорошо сохранились {следы} множества тонких ног. ]];
 
    dsc = [[На илистом дне хорошо сохранились {следы} множества маленьких острых ног. ]];
 
    act = [[Следы множества тонких ног, тянущиеся с востока, ведут в пещеру. ]];
 
};
 

	
 
@@ -751,7 +751,7 @@ dyp_temple_cliff_2 = room {
 
dyp_temple_cliff_2_footprints = obj {
 
    nam = "dyp_temple_cliff_2_footprints";
 
    dsc = [[Здесь {следы} навьяра обрываются. ]];
 
    act = [[Следы обрываются, но не просто так. Здесь явно произошла драка, скорее всего с каким-то морским животным. Вы замечаете следы множества тонких ног, ведущие на запад. ]];
 
    act = [[Следы обрываются, но не просто так. Здесь явно произошла драка, скорее всего с каким-то морским животным. Вы замечаете следы множества маленьких острых ног, ведущие на запад. ]];
 
};
 

	
 
dyp_temple_cliff_3 = room {
 
@@ -1333,6 +1333,11 @@ dyp_temple_red_room = room {
 
            return "images/dyp_redroom_on_bg.png";
 
        end;
 
    end;
 
    entered = function(s)
 
        if s.state == 1 then
 
            s.state = 2;
 
        end
 
    end;
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Пол пещеры разделен на 25 квадратных ячеек, совершенно одинаковых на первый взгляд. ]];
 
@@ -1913,6 +1918,7 @@ dyp_temple_cave_blue = room {
 
        "dyp_temple_statue_blue";
 
    };
 
    entered = function(s)
 
        make_snapshot();
 
        dyp_temple_blue_room.position = "02";
 
    end;
 
    way = {
 
@@ -1927,6 +1933,7 @@ dyp_temple_statue_blue = obj {
 
    used = function(s, o)
 
        if o == dyp_item_stone_blue then
 
            remove(dyp_item_stone_blue, me());
 
            make_snapshot();
 
            path("В дверь"):enable();
 
            return [[Вы помещаете камень в отверстие на поясе статуи и массивная металлическая дверь опускается под пол, открывая проход в большое помещение.]];
 
        end;
 
@@ -2004,6 +2011,11 @@ dyp_temple_blue_room = labyrinth {
 
            e2 = "04";
 
            e3 = "13";
 
            e4 = "02";
 
            enter = function(s)
 
                if dyp_temple_red_room.state < 2 then
 
                    walk("dyp_temple_cave_dead");
 
                end
 
            end;
 
        };
 
        ["04"] = {
 
            name = [[Вы находитесь в северо-восточном углу большой комнаты. Стены покрыты водорослями, источающими слабый свет. Пол в комнате разделен на двадцать пять квадратных ячеек. ]];
 
@@ -2038,6 +2050,11 @@ dyp_temple_blue_room = labyrinth {
 
            e2 = "13";
 
            e3 = "22";
 
            e4 = "11";
 
            enter = function(s)
 
                if dyp_temple_red_room.state < 2 then
 
                    walk("dyp_temple_cave_dead");
 
                end
 
            end;
 
        };
 
        ["13"] = {
 
            name = [[Вы находитесь в северо-восточной части большой комнаты. Стены покрыты водорослями, источающими слабый свет. Пол в комнате разделен на двадцать пять квадратных ячеек. ]];
 
@@ -2099,7 +2116,7 @@ dyp_temple_blue_room = labyrinth {
 
            e1 = "13";
 
            e2 = "24";
 
            e3 = "33";
 
            e4 = "12";
 
            e4 = "22";
 
        };
 
        ["24"] = {
 
            name = [[Вы находитесь у восточной стены большой комнаты. Стены покрыты водорослями, источающими слабый свет. Пол в комнате разделен на двадцать пять квадратных ячеек. ]];
 
@@ -2276,6 +2293,11 @@ dyp_crab_cave = labyrinth {
 
            name = [[Вы находитесь где-то в переплетении длинных коридоров. Кто знает, куда они приведут? ]];
 
            e2 = "43";
 
            e3 = "21";
 
            enter = function(s)
 
                if not s.fight then
 
                    make_snapshot()
 
                end;
 
            end;
 
        };
 
        ["33"] = {
 
            name = [[Вы находитесь где-то в переплетении длинных коридоров. Кто знает, куда они приведут? ]];
 
@@ -2337,7 +2359,7 @@ dyp_crab_cave = labyrinth {
 
    };
 
};
 

	
 
dyp_temple_cave_dead = game_over("Игра окончена", [[Потолок резко опускается на вас, придавливая к полу. Стекло шлема трескается, а сочленения скафандра гнутся, сдавливая ваше тело. Холодная вода начинает наполнять скафандр... ]])
 
dyp_temple_cave_dead = game_over("dyp_temple_cave_dead", [[Потолок резко опускается на вас, придавливая к полу. Стекло шлема трескается, а сочленения скафандра гнутся, сдавливая ваше тело. Холодная вода начинает наполнять скафандр... ]])
 

	
 
dyp_scepter_chest = obj {
 
    var {
atlantis_dyp_night.lua
Show inline comments
 
@@ -2,7 +2,7 @@
 
 Дипатреанотр, ночь
 
]]
 

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

	
 
dyp_night_south = room {
 
    nam = 'Дипатреанотр, южная окраина(ночь)';
 
@@ -178,6 +178,9 @@ dyp_night_chief_house_2nd_floor = room {
 
    disp = 'Дипатреанотр, дом вождя, второй этаж';
 
    dsc = [[Коридор второго этажа пуст. Слабый свет водорослей, покрывающих пол и стены позволяет вам легко ориентироваться внутри. Справа от вас расположена дверь. Впереди коридор поворачивает направо. ]];
 
    nolamp = true;
 
    entered = function(s)
 
        make_snapshot();
 
    end;
 
    way = {
 
        kh_vroom('За угол', 'dyp_night_chief_house_2nd_floor2');
 
        kh_vroom('На первый этаж', 'dyp_night_chief_house_hall');
 
@@ -202,6 +205,7 @@ dyp_night_chief_guard = obj {
 
    canshoot = true;
 
    onshoot = function(s)
 
        s.state = 1;
 
        lifeoff(dyp_night_chief_house_2nd_floor2);
 
        return [[Вы убиваете охранника. ]];
 
    end
 
};
 
@@ -215,11 +219,26 @@ dyp_night_chief_house_2nd_floor2 = room 
 
    disp = 'Дипатреанотр, дом вождя, второй этаж';
 
    dsc = [[Слабый свет водорослей, покрывающих пол и стены позволяет вам легко ориентироваться внутри. Перед вами расположена дверь. ]];
 
    nolamp = true;
 
    entered = function(s)
 
        if dyp_night_chief_guard.state == 0 then
 
            s.state = 2;
 
            lifeon(s);
 
        end;
 
    end;
 
    exit = function(s)
 
        lifeoff(s);
 
        if dyp_night_chief_guard.state == 0 then
 
            walk("game_over_dyp_night_caught");
 
        end;
 
    end;
 
    life = function(s)
 
        if dyp_night_chief_guard.state == 0 then
 
            s.state = s.state - 1;
 
            if s.state == 0 then
 
                walk("game_over_dyp_night_caught");
 
            end
 
        end;
 
    end;
 
    obj = {
 
        'dyp_night_chief_guard';
 
    };
atlantis_from_the_ashes.lua
Show inline comments
 
@@ -11,6 +11,7 @@ atl_fta_is_terra_solis = room {
 
	nam = "Атлантида, межсекционный кодидор";
 
	dsc = [[Небольшой коридор, соединяющий секции Терра и Солис. Яркий свет электрических ламп освещает помещение.  ]];
 
	entered = function(s)
 
        make_snapshot();
 
		if (s.state == 0) then
 
			return [[
 
				Вы входите в межсекционный коридор Солиса и в этот момент станцию сотрясает взрыв. Свет на мгновение моргает. Раздается звонок телефона. 
 
@@ -57,7 +58,7 @@ atl_fta_is_terra_solis = room {
 
 
item_atl_fta_suit = suit {
 
	var {
 
		dlg = nil;
 
		dlg = false;
 
	};
 
	nam = "Скафандр";
 
	dsc = [[В углу, так же как и в других межсекционных коридорах стоит {скафандр}, который используется в случае чрезвычайной ситуации. ]];
 
@@ -122,7 +123,7 @@ atl_fta_dlg_radio = dlg {
 
			"Что вы видите?"
 
		]], code [[ atl_fta_dlg_radio.state = 2; psub("what_i_see"); ]]};
 
		{tag="what_i_see"};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. ", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с южной стороны. Вы увидите несколько вентилей. Просто перекройте тот, в котором давление слишком большое". ]], code [[ psub("clear"); ]]};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. ", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с южной стороны. Вы увидите несколько вентилей. Вам нужно будет скорректировать давление в системе. Инструкцию найдете на месте. Если давление в каких-то трубах будет завышено -- отключите только их". ]], code [[ psub("clear"); ]]};
 
		{tag="next"};
 
		{always=true, "Что мне делать?", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с южной стороны. Вы увидите несколько вентилей. Вам нужно будет скорректировать давление в системе. Инструкцию найдете на месте. Если давление в каких-то трубах будет завышено -- отключите только их". ]], code [[ psub("clear"); ]]};
 
        {"Конец связи. ", "", code [[ back(); ]]};
 
@@ -130,7 +131,7 @@ atl_fta_dlg_radio = dlg {
 
		{"Тут еще что-то взорвалось", [[Райт подтверждает: "Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[Райт отвечает: "На юге есть шлюз, выйдете через него". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
        {tag="clear"};
 
        {"Вас понял. Конец связи.", "", code [[ back(); ]]}
 
        {"Вас понял. Конец связи.", "", code [[ stead.need_scene(); back(); ]]}
 
	};
 
};
 
 
@@ -230,7 +231,7 @@ atl_fta_solis_sw = room {
 
	entered = function(s)
 
		if (s.state == 0) then
 
			s.state = 1;
 
			item_atl_fta_suit.dlg = nil;
 
			item_atl_fta_suit.dlg = false;
 
			pr([[
 
				Позади вас раздается еще один взрыв. Вы с трудом удерживаетесь на ногах, видите, что часть секции на севере завалена и сквозь дым, пар и пыль видите начавшийся пожар.
 
			]]);
atlantis_iraa.lua
Show inline comments
 
@@ -10,7 +10,7 @@
 
Ираафаанотр.Город
 
]]
 

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

	
 
iraa_near_city_west = room {
 
    nam = "iraa_near_city_west";
 
@@ -362,7 +362,7 @@ iraa_rytlarr_dlg = dlg {
 
Ираафаанотр.Храм
 
]]
 

	
 
iraa_temple_entry = lcutscene("dyp_entry", "Левиафан, рубка", [[После недолгого путешествия, вы оказываетесь у цели. Храм Ираафаанотра вырезан в толще скалы, как и остальные, виденные вами храмы. Массивные ворота, вытесанные из камня заперты. Рисунок над ними указывает путь к Ираафаанотру. ]], "Вы прибыли в храм Ираафаанотра ", leviathan_wheelhouse);
 
iraa_temple_entry = lcutscene("dyp_entry", "Левиафан, рубка", [[После недолгого путешествия, вы оказываетесь у цели. Храм Ираафаанотра вырезан в толще скалы, как и остальные, виденные вами храмы. Массивные ворота, вытесанные из камня заперты. Рисунок над ними указывает путь к Ираафаанотру. ]], "Вы прибыли в храм Ираафаанотра. ", leviathan_wheelhouse);
 

	
 
player_learr = player {
 
    nam = "player_learr";
 
@@ -526,6 +526,7 @@ iraa_temple_north_3 = room {
 
        kh_vroom("Вдоль скалы на юг", "iraa_temple_north_2");
 
    };
 
    entered = function(s)
 
        make_snapshot();
 
        lifeoff(iraa_temple_shark);
 
    end;
 
};
 
@@ -551,6 +552,9 @@ iraa_temple_shark = obj {
 
    life = function(s)
 
        s.wait = s.wait + 1;
 
        if (s.wait < 3) then
 
            if s.cycle[s.position] == here().index then
 
                walk("game_over_eaten_by_shark");
 
            end;
 
            return;
 
        end;
 
        s.wait = 0;
 
@@ -558,7 +562,7 @@ iraa_temple_shark = obj {
 
        if (s.position > #s.cycle) then
 
            s.position = 1;
 
        end;
 
        if s.position == here().index then
 
        if s.cycle[s.position] == here().index then
 
            walk("game_over_eaten_by_shark");
 
        end;
 
    end;
 
@@ -588,13 +592,13 @@ iraa_temple_shark = obj {
 
                if s.cycle[s.position] == 3 then
 
                    return [[С востока к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 6 then
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает движение от вас. ]];
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает удаляться от вас. ]];
 
                end;
 
            elseif here().index == 6 then
 
                if s.cycle[s.position] == 2 then
 
                    return [[С юга к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 7 then
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает движение от вас. ]];
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает удаляться от вас. ]];
 
                end;
 
            elseif here().index == 7 then
 
                if s.cycle[s.position] == 6 then
 
@@ -635,7 +639,7 @@ iraa_temple_ravine_1 = room {
 
    index = 1;
 
    nam = "iraa_temple_ravine_1";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_north_3");
 
@@ -655,7 +659,7 @@ iraa_temple_ravine_2 = room {
 
    index = 2;
 
    nam = "iraa_temple_ravine_2";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_1");
 
@@ -671,7 +675,7 @@ iraa_temple_ravine_3 = room {
 
    index = 3;
 
    nam = "iraa_temple_ravine_3";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_2");
 
@@ -686,7 +690,7 @@ iraa_temple_ravine_4 = room {
 
    index = 4;
 
    nam = "iraa_temple_ravine_4";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_3");
 
@@ -702,7 +706,7 @@ iraa_temple_ravine_5 = room {
 
    index = 5;
 
    nam = "iraa_temple_ravine_5";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_4");
 
@@ -717,7 +721,7 @@ iraa_temple_ravine_6 = room {
 
    index = 6;
 
    nam = "iraa_temple_ravine_6";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На юг", "iraa_temple_ravine_2");
 
@@ -732,7 +736,7 @@ iraa_temple_ravine_7 = room {
 
    index = 7;
 
    nam = "iraa_temple_ravine_7";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На юг", "iraa_temple_ravine_6");
 
@@ -748,7 +752,7 @@ iraa_temple_ravine_8 = room {
 
    index = 8;
 
    nam = "iraa_temple_ravine_8";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_7");
 
@@ -764,7 +768,7 @@ iraa_temple_ravine_9 = room {
 
    index = 9;
 
    nam = "iraa_temple_ravine_9";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_8");
 
@@ -779,7 +783,7 @@ iraa_temple_ravine_10 = room {
 
    index = 10;
 
    nam = "iraa_temple_ravine_10";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На север", "iraa_temple_ravine_11");
 
@@ -794,7 +798,7 @@ iraa_temple_ravine_10 = room {
 
iraa_temple_ravine_11 = room {
 
    nam = "iraa_temple_ravine_11";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вашим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На север", "iraa_temple_ravine_11");
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -80,6 +80,7 @@ iyh_far_from_entrance = dlg {
 
    hideinv = true;
 
    leviathan = true;
 
    entered = function(s)
 
        make_snapshot();
 
        if atl_iyh_shockfish_left then
 
            poff('wait');
 
        end;
 
@@ -800,6 +801,7 @@ iyh_rear_entrance_foot = room {
 
 
        path("В Левиафан"):disable();
 
        if (where(submarine_leviathan) == here()) then
 
            make_snapshot();
 
            path("В Левиафан"):enable();
 
        end;
 
    end;
 
@@ -1582,6 +1584,7 @@ iyh_outro_svetlova = room {
 
    };
 
};
 
 
--[[Remove in 0.8.0]]
 
iyh_outro_aikerrjarr = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
ending.lua
Show inline comments
 
global {
 
    naethvjirr_state = nil; -- 1 - alive, me; 2 - alive, father; 3 - destroyed, aedhyarr lives; 4 - destroyed, aedhyarr dead; 5 - naethvjirr wins
 
    atlantis_state = nil; -- 1 - wand returned; 2 - map returned to Iraa; 3 - map returned to Dyp; 4 - atlantis destroyed by saboteur; 5 - atlantis destroyed by navjiarrs
 
    naethvjirr_state = false; -- 1 - alive, me; 2 - alive, father; 3 - destroyed, aedhyarr lives; 4 - destroyed, aedhyarr dead; 5 - naethvjirr wins
 
    atlantis_state = false; -- 1 - wand returned; 2 - map returned to Iraa; 3 - map returned to Dyp; 4 - atlantis destroyed by saboteur; 5 - atlantis destroyed by navjiarrs
 
}
 

	
 
-- naethvjirr 5
 
@@ -26,7 +26,7 @@ ending_naethvjirr_prevails_david_atlantis = cutscene('Пробуждение', 'Пробуждение', function(s)
 
    end;
 
end, 'ending_naethvjirr_prevails_david_final');
 

	
 
ending_naethvjirr_prevails_david_final = game_over('Пробуждение', [[По указанию Наэтвьирра, вы быстро налаживаете отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Как он и предсказывал, люди очень нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. Перед смертью вы передаете ему все полномочия по дальнейшему управлению планетой, заметив, что все равно ничего не изменится -- Наэтвьирр и так принимает все значимые решения. ]], 'Пробуждение');
 
ending_naethvjirr_prevails_david_final = ending('Пробуждение', [[По указанию Наэтвьирра, вы быстро налаживаете отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Как он и предсказывал, люди очень нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. Перед смертью вы передаете ему все полномочия по дальнейшему управлению планетой, заметив, что все равно ничего не изменится -- Наэтвьирр и так принимает все значимые решения. ]], 'Пробуждение');
 

	
 
--[[
 
-- Naethvjirr prevails under drake
 
@@ -54,7 +54,7 @@ ending_naethvjirr_prevails_final = cutscene('Пробуждение', 'Пробуждение', function(s)
 
    end;
 
end, 'ending_naethvjirr_prevails_final_2');
 

	
 
ending_naethvjirr_prevails_final_2 = game_over('Пробуждение', [[Наэтьвирр быстро налаживает отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Люди нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. ]], 'Пробуждение');
 
ending_naethvjirr_prevails_final_2 = ending('Пробуждение', [[Наэтьвирр быстро налаживает отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Люди нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. ]], 'Пробуждение');
 

	
 
--[[
 
-- Naethvjirr destroyed
 
@@ -151,7 +151,7 @@ end, function(s)
 
    end;
 
end);
 

	
 
ending_atlantis_destroyed = game_over('Пробуждение', function(s)
 
ending_atlantis_destroyed = ending('Пробуждение', function(s)
 
    if rel_jack > 0 then
 
        pr [[Вы возвращаетесь в Лондон, где встречаетесь с Майклом и Джеком Райтами. Совместно, вы решаете основать новую судостроительную компанию. Компания успешно развивается, а вы не оставляете попыток восстановить контакт с другими людьми с Атлантиды. К сожалению, вам не удается никого найти. ]];
 
    else
 
@@ -159,7 +159,7 @@ ending_atlantis_destroyed = game_over('Пробуждение', function(s)
 
    end;
 
end, 'Пробуждение');
 

	
 
ending_lseryanotrr_aedhyarr = game_over('Пробуждение', function(s)
 
ending_lseryanotrr_aedhyarr = ending('Пробуждение', function(s)
 
    if atlantis_state == 1 then
 
        pr [[В Лсэрианотре вас ждет разочарование. Врата города остаются закрытыми для посторонних. Вам удалось вступить в контакт с несколькими навьярами, оставшимися снаружи и выяснить, что Аэдхиарр приказал закрыть город для посторонних, будь то хевьяры или навьяры. Вам не остается ничего, кроме как вернуться на Атлантиду. По дороге вы посещаете Венаэданотр, где вас ждет теплый прием. Через несколько лет регулярные экспедиции в разные города позволяют не только наладить отношения между навьярами и Атлантидой, но и создают возможность для навьяров из удаленных городов общаться друг с другом. ]];
 
    elseif atlantis_state == 2 then
 
@@ -169,7 +169,7 @@ ending_lseryanotrr_aedhyarr = game_over('Пробуждение', function(s)
 
    end;
 
end, 'Пробуждение');
 

	
 
ending_lseryanotrr_phaetlarr = game_over('Пробуждение', function(s)
 
ending_lseryanotrr_phaetlarr = ending('Пробуждение', function(s)
 
    if atlantis_state == 1 then
 
        pr [[В Лсэрианотре вас встречают с распростертыми объятиями. Под руководством Фаэтларра город начали стремительно восстанавливать. Были отправлены послы во все известные поселения навьяров с целью наладить контакт с ними. Фаэтларр не ограничивает вам доступ в библиотеку Лсэрианотра, поставив условием лишь то, что все восстановленные знания должны остаться достоянием навьяров. ]];
 
    elseif atlantis_state == 2 then
 
@@ -191,4 +191,4 @@ ending_naethvjirr_prevails_william_final = cutscene('Пробуждение', 'Пробуждение', function(s)
 
    end;
 
end, 'ending_naethvjirr_prevails_william_final_2');
 

	
 
ending_naethvjirr_prevails_william_final_2 = game_over('Пробуждение', [[По указанию Наэтвьирра, Уильям быстро налаживает отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Как он и предсказывал, люди очень нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. Перед смертью ваш отец передает ему все полномочия по дальнейшему управлению планетой, заметив, что все равно ничего не изменится -- он и так принимает все значимые решения. ]], 'Пробуждение');
 
ending_naethvjirr_prevails_william_final_2 = ending('Пробуждение', [[По указанию Наэтвьирра, Уильям быстро налаживает отношения с навьярами по всему земному шару. Спустя несколько лет, он готовится показать себя и людям с поверхности. Как он и предсказывал, люди очень нехотя принимали блага, даруемые морем, но за считанные месяцы, крунейшие экономики мира оказались в серьезной зависимости от Наэтвьирра, поэтому земным правителям пришлось признать его главенство. До вас доходят отрывочные сведения о вспыхивающих тут и там восстаниях, однако где бы вы ни оказывались, вы видите сильно улучшившиеся условия жизни как навьяров так и людей. Десятилетия спустя, Наэтвьирр дает землянам возможность выбраться за пределы родной планеты -- многолетние исследования, проводимые людьми и навьярами при поддержке Наэтвьирра дали свои плоды -- первые люди выходят в открытый космос и перед жителями земли открываются невиданные перспективы. К сожалению, Наэтвьирр не всесилен и, хотя продолжительность жизни сильно увеличилась, бессмертия достичь не удалось. Перед смертью ваш отец передает ему все полномочия по дальнейшему управлению планетой, заметив, что все равно ничего не изменится -- он и так принимает все значимые решения. ]], 'Пробуждение');
game_over.lua
Show inline comments
 
@@ -8,12 +8,15 @@ game_over_lse_guards = game_over("game_over_lse_guards", [[Охранник поднимает тревогу. Вы не успеваете ничего сделать и оказываетесь схвачены. ]]);
 
 
game_over_phaetlarr_caught = game_over("game_over_phaetlarr_caught", [[Едва увидев Фаэтларра, стражники бросаются к нему, не давая никаких шансов на спасение. Через некоторое время, он оказывается в тюрьме, рядом с остальными членами экипажа. Вы понимаете, что теперь все действительно кончено. Вы проиграли. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_phaetlarr_wrong_wire = game_over("game_over_phaetlarr_wrong_wire", [[Едва Фаэтларр обрезает провод, как свет в доке меняет цвет на красный, а со всех сторон доносятся громкие звуки сирены. Стражники среагировали моментально. Меткий бросок копья протыкает навьяра. Даже если он выжил, шансов спасти остальной экипаж или спастись самому у него не остается. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_za_temple = game_over("game_over_za_temple", [[Развернув субмарину вы подставили винт под удары ваших противников. Несколько попаданий в винт выводят его из строя и Левиафан оказывается обездвижен. Теперь вы совершенно беззащитны перед атаками противника. ]]);
 
 
game_over_kraken = game_over("game_over_kraken", [[От сильных ударов корпус субмарины начал расходиться по швам. В помещения хлынула вода. Озверевший кракен продолжает хлестать Левиафан своими щупальцами. Наконец, чудовище хватает подлодку и отправляется вместе с ней в бездну. К этому времени на борту уже не осталось никого живого, кроме, быть может, навьяров. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_za_fight = game_over("game_over_za_fight", [[Стражники навьяров -- опасные противники. Очередной удар копья проделывает дыру в вашем скафандре и он наполняется водой. Вскоре вы задыхаетесь. ]]);
 
 
game_over_nley_learr = game_over("game_over_nley_learr", [[Леарр пытается оттолкнуть вас от штурвала и остановить Левиафан. Вы делаете резкий поворот и субмарина кренится на бок. Леарр, не удержавшись на ногах, падает. Навьярка кричит в бессильной ярости, когда вы пролетаете над воротами Нлейисланотра. Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Еще через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
@@ -24,96 +27,63 @@ game_over_nley_caught = game_over('game_over_nley_caught', [[Едва вы попадаете в поле зрения стражников Нлейисланотра, город оживает. Вы не успеваете понять, как оказываетесь окружены и схвачены. Поиски Лсэрианотра для вас закончены. ]]);
 
 
game_over_nley_cat_caught = game_over('game_over_nley_cat_caught', [[Вас замечают стражники и тут же начинают погоню. Вам, облаченному в тяжелый скафандр, трудно тягаться с навьярами, всю жизнь проводящими в воде. Вас быстро ловят и помещают в камеру. Через несколько часов воздух закончится и вы умрете. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_nley_cat_ambush = game_over('game_over_nley_cat_ambush', [[Вы входите в комнату и на вас тут же наваливаются стражники. Вас помещают в камеру. Через несколько часов воздух закончится и вы умрете. ]]);
 
 
game_over_eaten_by_octopus = game_over("game_over_eaten_by_octopus", [[Гигантский спрут мгновенно опутывает вас своими щупальцами. Вы не можете вырваться из стальной хватки чудовища. Металл скафандра скрипит, не выдерживая давления и вы понимаете, что ваши дни сочтены. ]]);
 
 
game_over_eaten_by_shark = room {
 
    nam = "game_over_eaten_by_shark";
 
    disp = "Игра окончена";
 
    hideinv = true;
 
    dsc = [[Вы не успеваете заметить, как акула разгрызает ваш скафандр острыми зубами. Через несколько мгновений вы умираете. ]];
 
};
 
game_over_eaten_by_shark = game_over("game_over_eaten_by_shark", [[Вы не успеваете заметить, как акула разгрызает ваш скафандр острыми зубами. Через несколько мгновений вы умираете. ]]);
 
 
game_over_caught = room {
 
	nam = "game_over_caught";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Охранники склада обнаруживают вас. В мгновение вы оказываетесь схвачены. Ни в полиции ни в суде никому нет никакого дела до причин вашей попытки проникновения на склад. Ближайшие несколько лет вы проведете в тюрьме. ]];
 
};
 
game_over_caught = game_over("game_over_caught", [[Охранники склада обнаруживают вас. В мгновение вы оказываетесь схвачены. Ни в полиции ни в суде никому нет никакого дела до причин вашей попытки проникновения на склад. Ближайшие несколько лет вы проведете в тюрьме. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_banished = room {
 
	nam = "game_over_banished";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Охранники сопровождают вас до Левиафана. Без помощи Атлантиды, вы не сможете найти отца. Ваши поиски окончены. ]];
 
};
 
 
game_over_powerless = room {
 
	nam = "game_over_powerless";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Электрооборудование Левиафана выходит из строя и вы теряете всякую возможность управлять субмариной. Разъяренный скат продолжает атаковать субмарину, то испуская электрические разряды, то нанося удары хвостовым шипом. Через некоторое время обшивка не выдерживает и рубка Левиафана заполняется водой. ]];
 
};
 
game_over_powerless = game_over("game_over_powerless", [[Электрооборудование Левиафана выходит из строя и вы теряете всякую возможность управлять субмариной. Разъяренный скат продолжает атаковать вас, то испуская электрические разряды, то нанося удары хвостовым шипом. Через некоторое время обшивка не выдерживает и рубка Левиафана заполняется водой. ]]);
 
 
game_over_shockfish = room {
 
	nam = "game_over_shockfish";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Когда скат возвращается и обнаруживает вас, он мгновенно убивает вас, сперва проткнув хвостовым шипом и после чего выпустив мощный электрический разряд. ]];
 
};
 
game_over_shockfish = game_over("game_over_shockfish", [[Когда скат возвращается и обнаруживает вас, он мгновенно убивает вас, сперва проткнув хвостовым шипом и после чего выпустив мощный электрический разряд. ]]);
 
 
game_over_shockfish_2 = room {
 
	nam = "game_over_shockfish";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Вы входите в главный зал храма и не замечаете, как скат плавно опускается позади вас и протыкает вас своим шипом. Мощный электрически разряд убивает вас и вы падаете на пол древнего святилища. ]];
 
};
 
game_over_shockfish_2 = game_over("game_over_shockfish", [[Вы входите в главный зал храма и не замечаете, как скат плавно опускается позади вас и протыкает вас своим шипом. Мощный электрически разряд убивает вас и вы падаете на пол древнего святилища. ]]);
 
 
game_over_sunk = room {
 
	nam = "game_over_sunk";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Мощный удар хвостового шипа пробивает обшивку Левиафана насквозь. Вода быстро заполняет отсеки субмарины и у вас не остается никаких шансов спастись. ]];
 
};
 
game_over_sunk = game_over("game_over_sunk", [[Мощный удар хвостового шипа пробивает обшивку Левиафана насквозь. Вода быстро заполняет отсеки субмарины и у вас не остается никаких шансов спастись. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_shot = room {
 
	nam = "game_over_shot";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Блэк вскидывает пистолет и стреляет в вашу сторону. Вы чувствуете боль в груди. В глазах мутнеет и вы бессильно падаете на пол. Вскоре Наэтвьирр пробудится окончательно, но вас это уже не волнует. ]];
 
};
 
 
--[[Remove in 0.8.0]]
 
game_over_awakening = room {
 
	nam = "game_over_awakening";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Пробуждение Наэтвьирра завершено. Вы зря старались. ]];
 
};
 
 
game_over_pylon = room {
 
	nam = "game_over_pylon";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Мощный луч света, исходящий из пилона, испепеляет вас. Вскоре Наэтвьирр пробудится окончательно, но вас это уже не волнует. ]];
 
};
 
game_over_pylon = game_over("game_over_pylon", [[Мощный луч света, исходящий из пилона, испепеляет вас. Вскоре Наэтвьирр пробудится окончательно, но вас это уже не волнует. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_naethvjirr = room {
 
	nam = "game_over_naethvjirr";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Очередная атака Наэтвьирра оказывается для вас фатальной. Вы бессильно падаете на пол. Вскоре Наэтвьирр пробудится окончательно, но вас это уже не волнует. ]];
 
};
 
 
game_over_final_battle = game_over("game_over_final_battle", [[Вы падаете на холодный металлический пол зала. Наэтвьирр вскоре пробудится, но вам уже все равно. ]]);
 
 
--[[Remove in 0.8.0]]
 
game_over_shot_fb = room {
 
	nam = "game_over_shot_fb";
 
	disp = "Игра окончена";
 
	hideinv = true;
 
	dsc = [[Застреленный Адрианом Блэком, вы бессильно падаете на пол. Вскоре Наэтвьирр пробудится окончательно, но вас это уже не волнует. ]];
 
};
 
 
--[[Remove in 0.8.0]]
 
game_over_victory =room {
 
	nam = "game_over_victory";
 
	disp = "Вы победили";
 
@@ -121,13 +91,13 @@ game_over_victory =room {
 
	dsc = [[Как только последний генератор затихает, свет начинает медленно тускнеть. Вы слышите, как по всему городу экстренно открываются двери и понимаете, что у вас есть всего несколько минут прежде чем вода хлынет и в этот зал. Вы в спешке приводите в сознание ваших напарников и одеваете скафандр. ]];
 
};
 
 
--[[Remove in 0.8.0]]
 
game_over_trap = room {
 
	nam = "Игра окончена";
 
	disp = "Игра окончена";
 
	nam = "game_over_trap";
 
	hideinv = true;
 
	dsc = [[Вы делаете шаг  и не успеваете понять, как пол под вами проваливается и вы падаете в пропасть. ]];
 
};
 
 
game_over_sank = game_over("Игра окончена", [[Вы начинаете задыхаться и понимаете, что до поверхности уже не дотянете. Вскоре вы теряете сознание. Навсегда. ]]);
 
game_over_sank = game_over("game_over_sank", [[Вы начинаете задыхаться и понимаете, что до поверхности уже не дотянете. Вскоре вы теряете сознание. Навсегда. ]]);
 
 
game_over_dyp_night_caught = game_over("Игра окончена", [[Стражник бросается на вас и сбивает с ног, вы пытаетесь сопротивляться, но в тяжелом громоздком скафандре у вас нет шансов против ловкого навьяра, всю жизнь проведшего в воде. ]]);
 
\ No newline at end of file
 
game_over_dyp_night_caught = game_over("game_over_dyp_night_caught", [[Стражник бросается на вас и сбивает с ног, вы пытаетесь сопротивляться, но в тяжелом громоздком скафандре у вас нет шансов против ловкого навьяра, всю жизнь проведшего в воде. ]]);
 
\ No newline at end of file
items.lua
Show inline comments
 
@@ -611,6 +611,7 @@ item_lse_map = obj {
 
    end;
 
    tak = function(s)
 
        atl_iyh_state = 8;
 
		make_snapshot();
 
        return [[Вы забираете табличку себе. ]];
 
    end;
 
    dsc = [[На пьедестале посреди комнаты лежит металлическая {табличка}. ]];
 
@@ -821,9 +822,9 @@ item_raybox = obj {
 
	disp = 'Коробочка лучей';
 
	dsc = function(s)
 
		if stead.deref(here()) == 'ven_ravine_crypt' then
 
			return [[Среди множества приборов, расположенных вдоль стен комнаты, ваше внимание привлекает небольшая прозрачная {коробочка} с несколькими прорезями. Внутри ее непрерывно движутся тонкие лучики света. ]];
 
			return [[Среди множества приборов, расположенных вдоль стен комнаты, ваше внимание привлекает небольшая прозрачная {коробочка} с несколькими прорезями. Внутри нее беспрестанно мечутся тонкие лучики света. ]];
 
		else
 
			return [[В центре стола, опутанная паутиной проводов, установлена {коробочка лучей}. Внутри нее, в точности как там, в навьярском хранилище, движутся тонкие лучики света. ]];
 
			return [[В центре стола, опутанная паутиной проводов, установлена {коробочка лучей}. Внутри нее, в точности как там, в навьярском хранилище, сверкают тонкие лучики света. ]];
 
		end;
 
	end;
 
	inv = [[Навьярский прибор, известный вам как коробочка лучей. Осталось научиться пользоваться им. ]];
journey_nleyyslanotrr.lua
Show inline comments
 
@@ -2,7 +2,10 @@ nley_intro = cutscene('Левиафан, рубка', 'Левиафан, рубка', [[Добраться до расположенного в глубоком ущелье Нлейисланотра непросто, но после долгих часов плутаний, вы, наконец-то, нашли дорогу к громадному навьярскому городу. При вашем приближении массивные каменные ворота города начинают закрываться. а в вашем направлении выдвигается вооруженный отряд, состоящий из сотни навьяров. ]], 'nley_intro_2');
 

	
 
nley_intro_2 = dlg {
 
    nam = 'Левиафан, рубка';
 
    entered = [[Один навьяр отделяется от группы и подплывает к иллюминатору, так, что вы отчетливо видите полосы, бегущие по его плавникам: "Уходите отсюда. Вам здесь не место". ]];
 
    entered = function(s)
 
        make_snapshot();
 
        return [[Один навьяр отделяется от группы и подплывает к иллюминатору, так, что вы отчетливо видите полосы, бегущие по его плавникам: "Уходите отсюда. Вам здесь не место". ]];
 
    end;
 
    phr = {
 
        {'[Кодировщик Левиафана] Не препятствуйте нам, иначе дело закончится кровопролитием! [Сделать выстрел из звуковой пушки по окрестным скалам]', [[Кажется, ваши действия напугали навьяров, однако посланец повторяет свое требование: "Уходите. Вам здесь не место. Мы будем сражаться до последнего навьяра, но не пропустим вас в город". ]] };
 
        {'[Кодировщик Левиафана] Нам нужно посетить ваш город. Мы не возьмем ничего ценного для вас. Мы можем предложить что-нибудь взамен. ', [[Посланец отвечает: "Нам ничего не нужно от хевьяров. Убирайтесь". ]]};
 
@@ -13,7 +16,7 @@ nley_intro_2 = dlg {
 
                walk("game_over_nley_anna");
 
            end;
 
        ]]};
 
        {'[Полный назад]', function(s)
 
        {always=true, '[Полный назад]', function(s)
 
            walk('nley_intro_3')
 
        end};
 
    };
 
@@ -42,6 +45,11 @@ nley_near_cliff_1 = room {
 
    underwater = true;
 
    dsc = [[Вы стоите в широком ущелье. К северу от вас возвышается на несколько сотен метров практически отвесная стена каменной породы. На востоке от вас расположен Нлейисланотр. Здесь вы в относительной безопасности -- навьяры не патрулируют территорию на этом расстоянии от города. ]];
 
    view = [[Левиафан находится в широком ущелье. К северу и к югу от вас возвышаются на несколько сотен метров практически отвесные стены каменной породы. На востоке от вас расположен Нлейисланотр. ]];
 
    entered = function(s)
 
        if from(from()) == leviathan_airlock then
 
            make_snapshot();
 
        end;
 
    end;
 
    way = {
 
        kh_vroom('В Левиафан', 'leviathan_airlock');
 
        kh_vroom('Отойти от скалы', 'nley_ravine');
 
@@ -979,6 +987,9 @@ nley_catacombs_10 = room {
 
    obj = {
 
        'nley_cat_10_grate';
 
    };
 
    entered = function(s)
 
        make_snapshot();
 
    end;
 
    way = {
 
        kh_vroom('На восток, по коридору', 'nley_catacombs_13');
 
        kh_vroom('На юг, по коридору', 'nley_catacombs_9');
 
@@ -1165,11 +1176,6 @@ nley_cat_room_12 = room {
 
    nam = 'Нлейисланотр, катакомбы';
 
    underwater = true;
 
    dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. В центре комнаты стоит небольшой столик. ]];
 
    enter = function(s)
 
        if nley_sleeping_guard.state ~= 0 then
 
            walk(game_over_nley_cat_ambush);
 
        end;
 
    end;
 
    obj = {
 
        'nley_sleeping_guard'
 
    };
 
@@ -1186,6 +1192,7 @@ nley_sleeping_guard = obj {
 
    dsc = [[За столиком дремлет {навьяр}, слегка покачиваясь на плаву. ]];
 
    act = function(s)
 
        if s.state == 0 then
 
            make_snapshot();
 
            s.state = 1;
 
            take(nley_item_prison_key);
 
            return [[На поясе навьяра висит небольшой ключик. Вы аккуратно забираете его себе. ]];
journey_temple.lua
Show inline comments
 
@@ -148,7 +148,7 @@ dt_labyrinth_map = {
 
        where = dt_labyrinth_foot
 
    };
 
    ["19"] = {
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. ]],
 
        dsc = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. Над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. Здесь вы сможете высадиться. ]],
 
        ne = "15",
 
        w = "20",
 
        where = "dt_temple_ravine"
 
@@ -446,7 +446,7 @@ dt_temple_ravine = room {
 
    view = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. ]];
 
    way = {
 
        kh_vroom("В Левиафан", function(s)
 
            if dt_temple_bridge1.state == 2 then
 
            if dt_temple_bridge1.state == 2 and not dt_temple_done then
 
                dt_temple_done = true;
 
                return 'dt_fight_intro';
 
            else
 
@@ -650,7 +650,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 1) ~= 0 or dt_wires_room.connections[1] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[1]);
 
@@ -664,7 +664,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 2) ~= 0 or dt_wires_room.connections[2] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[2]);
 
@@ -678,7 +678,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 3) ~= 0 or dt_wires_room.connections[3] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[3]);
 
@@ -692,7 +692,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 4) ~= 0 or dt_wires_room.connections[4] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[4]);
 
@@ -706,7 +706,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 5) ~= 0 or dt_wires_room.connections[5] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[5]);
 
@@ -720,7 +720,7 @@ 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
 
        if (ArrayUtils.indexOf(dt_buttons, 6) ~= 0 or dt_wires_room.connections[6] == 0) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[6]);
 
@@ -749,7 +749,7 @@ dt_wires_room = dlg {
 
            5,
 
            6
 
        };
 
        selected = nil;
 
        selected = false;
 
    };
 
    not_follow = true;
 
    nam = "dt_wires_room";
 
@@ -782,7 +782,7 @@ dt_wires_room = dlg {
 
            tag = "w0", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                if (dt_wires_room.connections[1] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[1]] .. " разъем";
 
                    return "Отсоединить фиолетовый провод (".. connect .. ")";
 
                else
 
@@ -790,8 +790,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                    dt_wires_room.connections[1] = nil;
 
                if (dt_wires_room.connections[1] ~= 0) then
 
                    dt_wires_room.connections[1] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 1;
 
@@ -804,7 +804,7 @@ dt_wires_room = dlg {
 
            tag = "w1", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                if (dt_wires_room.connections[2] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[2]] .. " разъем";
 
                    return "Отсоединить синий провод (".. connect .. ")";
 
                else
 
@@ -812,8 +812,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                    dt_wires_room.connections[2] = nil;
 
                if (dt_wires_room.connections[2] ~= 0) then
 
                    dt_wires_room.connections[2] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 2;
 
@@ -826,7 +826,7 @@ dt_wires_room = dlg {
 
            tag = "w2", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                if (dt_wires_room.connections[3] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[3]] .. " разъем";
 
                    return "Отсоединить зеленый провод (".. connect .. ")";
 
                else
 
@@ -834,8 +834,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                    dt_wires_room.connections[3] = nil;
 
                if (dt_wires_room.connections[3] ~= 0) then
 
                    dt_wires_room.connections[3] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 3;
 
@@ -848,7 +848,7 @@ dt_wires_room = dlg {
 
            tag = "w3", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                if (dt_wires_room.connections[4] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[4]] .. " разъем";
 
                    return "Отсоединить желтый провод (".. connect .. ")";
 
                else
 
@@ -856,8 +856,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                    dt_wires_room.connections[4] = nil;
 
                if (dt_wires_room.connections[4] ~= 0) then
 
                    dt_wires_room.connections[4] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 4;
 
@@ -870,7 +870,7 @@ dt_wires_room = dlg {
 
            tag = "w4", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                if (dt_wires_room.connections[5] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[5]] .. " разъем";
 
                    return "Отсоединить оранжевый провод (".. connect .. ")";
 
                else
 
@@ -878,8 +878,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                    dt_wires_room.connections[5] = nil;
 
                if (dt_wires_room.connections[5] ~= 0) then
 
                    dt_wires_room.connections[5] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 5;
 
@@ -892,7 +892,7 @@ dt_wires_room = dlg {
 
            tag = "w5", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                if (dt_wires_room.connections[6] ~= 0) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[6]] .. " разъем";
 
                    return "Отсоединить красный провод (".. connect .. ")";
 
                else
 
@@ -900,8 +900,8 @@ dt_wires_room = dlg {
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                    dt_wires_room.connections[6] = nil;
 
                if (dt_wires_room.connections[6] ~= 0) then
 
                    dt_wires_room.connections[6] = 0;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 6;
 
@@ -998,7 +998,9 @@ dt_screens = obj {
 
    dsc = [[Вокруг пьедестала расположено множество экранов, на которых цветными полосами навьярского языка горят предупреждения об опасности использования предмета, хранящегося в этом зале. ]];
 
}
 

	
 
dt_fight_intro = cutscene('Левиафан', 'Левиафан', [[Оказавшись внутри Левиафана, вы со всех ног бросаетесь в рубку, чтобы увести корабль подальше от опасности, но не тут то было. Громадная туша нависла над Левиафаном, преграждая своими щупальцами пути отхода. ]], 'dt_fight');
 
dt_fight_intro = cutscene('Левиафан', 'Левиафан', [[Оказавшись внутри Левиафана, вы со всех ног бросаетесь в рубку, чтобы увести корабль подальше от опасности, но не тут то было. Громадная туша нависла над Левиафаном, преграждая своими щупальцами пути отхода. ]], 'dt_fight', function(s)
 
    make_snapshot();
 
end);
 

	
 
dt_fight = room {
 
    var {
journey_venaedanotrr.lua
Show inline comments
 
@@ -36,7 +36,7 @@ ven_intro = lcutscene('ven_intro', 'Левиафан, рубка', function(s)
 
    else
 
        return [[Дорога в Венаэданотр занимает несколько недель. Несмотря на низкую точность карты, вы с Анной и Уолтером успешно справляетесь с навигацией. Венаэданотр разительно отличается от небольших поселений, что вы видели прежде. Ровные ряды аккуратных каменных домиков расположились вокруг просторной центральной площади. Между ними вы то и дело замечаете навьяров, плывущих или идущих по своим делам. Вскоре, к вам отправляется небольшая группа навьяров, приблизившись к Левиафану, они просят вас следовать за ними к центру города. ]];
 
    end;
 
end, 'Вы прибыли в Венаэданотр', leviathan_wheelhouse);
 
end, 'Вы прибыли в Венаэданотр.', leviathan_wheelhouse);
 

	
 
ven_intro_2 = cutscene('ven_intro_2', 'Венаэданотр, центральная площадь', function(s)
 
        if ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and char_learr.follow then
 
@@ -870,7 +870,7 @@ ven_char_lead_explorer_dlg = dlg {
 
    end;
 
    phr = {
 
        {tag="generic"};
 
        {tag="quest_where", false, "[Кодировщик] Мы ищем группу пропавших исследователей. Вы можете сказать, куда именно они отправились?", [[Неаверр отвечает: "К северо-востоку от города находится ущелье. Некогда, наши предки возводили там различные сооружения, но сейчас они стоят заброшенными. Время от времени отряды наших исследователей отправляются туда, но это становится все более и более опасным -- вдобавок к ловушкам, оставленным чтобы отвадить нежеланных гостей, старые постройки начинают разрушаться. Я расскажу вам, где находится это место". Неаверр объясняет вам, как добраться до ущелья. ]], code [[ven_quest_status = 4; venaedanotrr_ravine_found = true; ]]};
 
        {tag="quest_where", false, "[Кодировщик] Мы ищем группу пропавших исследователей. Вы можете сказать, куда именно они отправились?", [[Неаверр отвечает: "К северо-востоку от города находится ущелье. Некогда наши предки возводили там различные сооружения, но сейчас они стоят заброшенными. Время от времени отряды наших исследователей отправляются туда, но это становится все более и более опасным -- вдобавок к ловушкам, оставленным чтобы отвадить нежеланных гостей, старые постройки начинают разрушаться. Я расскажу вам, где находится это место". Неаверр объясняет вам, как добраться до ущелья. ]], code [[ven_quest_status = 4; venaedanotrr_ravine_found = true; ]]};
 
        {"[Кодировщик] До новых встреч.", always=true, [[По плавникам Неаверра бегут цветные полосы: "Ты возвращайся". ]], code [[walk("ven_explorers_guild"); ]]};
 
    };
 
}
 
@@ -906,12 +906,12 @@ ven_char_lead_cartographer_dlg = dlg {
 
    end;
 
    phr = {
 
        {tag="generic"};
 
        {tag="quest_where", false, "[Кодировщик] Мы ищем группу пропавших исследователей. Мы знаем то, что они отправились на северо-восток. Вы можете нам помочь?", [[Арнрьярр отвечает: "К северо-востоку от города находится ущелье. Исследователи часто отправляются туда небольшими группами в поисках ценностей -- некогда, наши предки жили в этом ущелье и многое осталось. Сейчас это место небезопасно, но жажда найти утраченные ценности сильнее страха". Арнрьярр показывает вам путь к ущелью. ]], code [[ven_quest_status = 4; venaedanotrr_ravine_found = true; ]]};
 
        {tag="quest_where", false, "[Кодировщик] Мы ищем группу пропавших исследователей. Мы знаем то, что они отправились на северо-восток. Вы можете нам помочь?", [[Арнрьярр отвечает: "К северо-востоку от города находится ущелье. Исследователи часто отправляются туда небольшими группами в поисках ценностей -- некогда наши предки жили в этом ущелье и многое осталось. Сейчас это место небезопасно, но жажда найти утраченные ценности сильнее страха". Арнрьярр показывает вам путь к ущелью. ]], code [[ven_quest_status = 4; venaedanotrr_ravine_found = true; ]]};
 
        {"[Кодировщик] До новых встреч.", always=true, [[По плавникам Арнрьярра бегут цветные полосы: "Ты возвращайся". ]], code [[ walk("ven_cartographers_guild"); ]]};
 
    };
 
}
 

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

	
 
ven_ravine_entrance = room {
 
    nam = 'Ущелье, вход';
 
@@ -1424,7 +1424,7 @@ ven_item_potion = obj {
 
-- Temple
 
 ]]
 

	
 
ven_temple_intro = lcutscene('ven_ravine_intro', 'Левиафан, рубка', [[Храм лежит лишь в нескольких десятках километров от города. Вырезанные в толще скалы громадные двери, украшенные богатой резьбой издали привлекают внимание. ]], 'Вы прибыли в храм Венаэданотра', leviathan_wheelhouse);
 
ven_temple_intro = lcutscene('ven_ravine_intro', 'Левиафан, рубка', [[Храм лежит лишь в нескольких десятках километров от города. Вырезанные в толще скалы громадные двери, украшенные богатой резьбой издали привлекают внимание. ]], 'Вы прибыли в храм Венаэданотра.', leviathan_wheelhouse);
 

	
 
ven_temple_entrance = room {
 
    var {
 
@@ -1768,9 +1768,16 @@ ven_temple_qhall = room {
 
    obj = {
 
        'ven_qhall_altar'
 
    };
 
    entered = function(s)
 
        if s.state == 1 then
 
            make_snapshot();
 
        end
 
    end;
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
        kh_vroom('Наверх', 'ven_temple_labyrinth_l1'):disable();
 
        kh_vroom('Наверх', function(s)
 
            return 'ven_temple_labyrinth_l1';
 
        end):disable();
 
    };
 
};
 

	
journey_venaedanotrr_labyrinth.lua
Show inline comments
 
@@ -711,6 +711,9 @@ ven_chest_look = room {
 
    nam = "ven_chest_look";
 
    underwater = true;
 
    disp = "Венаэданотр, храм";
 
    not_follow = true;
 
    nosave = true;
 
    noautosave = true;
 
    pic = function(s)
 
        local p = "images/ven_chest.png";
 
        for i = 1, #s.state do
 
@@ -897,13 +900,13 @@ ven_skeleton = obj {
 
ven_item_temple_key_1 = obj {
 
    nam = "ven_item_temple_key_1";
 
    disp = "Ключ из храма";
 
    dsc = [[Металлический ключик, найденный вами в храме Венаэданотра. ]];
 
    inv = [[Небольшой ключик из неизвестного вам металла. Вы нашли его в храме Венаэданотра. ]];
 
};
 
        
 
ven_item_temple_key_2 = obj {
 
    nam = "ven_item_temple_key_2";
 
    disp = "Ключ из тайника";
 
    dsc = [[Металлический ключик, найденный вами в тайнике в храме Венаэданотра. ]];
 
    inv = [[Небольшой ключик из неизвестного вам металла. Вы нашли его в тайнике в храме Венаэданотра. ]];
 
}
 

	
 
item_ven_spear = obj {
leviathan.lua
Show inline comments
 
@@ -1010,7 +1010,7 @@ leviathan_dlg = dlg {
 
            walk(atl_entry);
 
		end},
 
		{tag="old_temple", always = "true", "Старый храм", function()
 
			return "Вы прибыли в старый храм";
 
			return "Вы прибыли в старый храм.";
 
		end, function()
 
			if raybox_task then
 
				raybox_task_finished = true;
lse_alliance.lua
Show inline comments
 
@@ -258,6 +258,7 @@ lse_naethvjirr_ask = dlg {
 
    nam = 'Наэтвьирр';
 
    disp = 'Наэтвьирр';
 
    entered = function(s)
 
        make_snapshot();
 
        if have(item_naethvjirr_key) then
 
            pon('use_key_self', 'use_key_william');
 
        end;
lse_confrontation.lua
Show inline comments
 
@@ -135,6 +135,9 @@ lse_leviathan_airlock_up = room {
 
    obj = {
 
        "lse_lev_guard"
 
    };
 
    entered = function(s)
 
        make_snapshot();
 
    end;
 
    way = {
 
        kh_vroom("Вниз", "lse_leviathan_airlock");
 
        kh_vroom("Наружу", function(s)
 
@@ -316,6 +319,9 @@ lse_prison_overseer_room = room {
 
        'lse_prison_table',
 
        'lse_prison_guard'
 
    };
 
    entered = function(s)
 
        make_snapshot();
 
    end;
 
    way = {
 
        kh_vroom("В тоннель", "service_tunnels_1");
 
        kh_vroom("В дверь", function(s)
 
@@ -1288,13 +1294,13 @@ lse_middle_4 = room {
 

	
 
lse_middle_library = room {
 
    var {
 
        indexa = nil;
 
        indexa = false;
 
    };
 
    nam = "lse_middle_library";
 
    disp = "Лсэрианотр, библиотека";
 
    dsc = [[Вы находитесь в просторном зале. ]];
 
    entered = function(s)
 
        if (not s.indexa) then
 
        if not s.indexa then
 
            s.indexa = tostring(rnd(6) - 1) .. tostring(rnd(6) - 1).. tostring(rnd(6) - 1);
 
        end;
 
    end;
 
@@ -1327,7 +1333,7 @@ lse_library_shelves_input = input_number
 
        if (input == "000") then
 
            pn([[Вы достаете табличку с номером 000 и обнаруживаете, что это каталог имеющихся материалов. Вы узнаете, что искомые вами сведения хранятся в записи номер ]] .. lse_middle_library.indexa .. ". ");
 
        elseif (input == lse_middle_library.indexa) then
 
            pn [[Бегло просмотрев найденную схему, вы узнаете, что через сервисные тоннели города вы можете попасть практически в любую его часть, в том числе и в центральный зал. Для того, чтобы попасть в центральный зал, вам придется сперва попасть во внутреннее кольцо. Кроме того, все проходы во внутреннее кольцо, кроме врат, ведут через нижний город, заполненный водой. ]];
 
            pn [[Бегло просмотрев найденную схему, вы узнаете, что через сервисные тоннели города вы можете попасть практически в любую его часть, в том числе и в центральный зал. Для того, чтобы попасть в центральный зал, вам придется сперва попасть во внутреннее кольцо. Наилучшим способом для вас будет воспользоваться сервисными тоннелями. Так же, вы отмечаете, что все, за исключением врат, проходы из внутреннего кольца в центр, ведут через нижний город, заполненный водой. ]];
 
            lse_powerplant_found = true;
 
        else
 
            pn [[Эти записи не содержат ничего интересного для вас. ]];
 
@@ -1447,6 +1453,9 @@ lse_power_station_dark = room {
 
    nam = 'Лсэрианотр, электростанция';
 
    disp = 'Лсэрианотр, электростанция';
 
    dsc = [[Вы находитесь в комнате управления энергоснабжением Лсэрианотра. Сейчас помещение погружено во мрак. Входная дверь открыта. ]];
 
    enter = function(s)
 
        make_snapshot();
 
    end;
 
    way = {
 
        kh_vroom("В город", 'lse_inner_1');
 
        kh_vroom("В сервиcный тоннель", function(s)
 
@@ -2021,6 +2030,12 @@ lse_inner_7_inside = room {
 
        
 
        return f;
 
    end;
 
    entered = function(s)
 
        if (game.timer ~= lse_timer) then
 
            game.timer = lse_timer;
 
            timer:set(6000);
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В город", "lse_inner_7");
 
    };
lse_final_battle.lua
Show inline comments
 
@@ -134,10 +134,10 @@ lse_final_battle = battlefield {
 
};
 

	
 
global {
 
    lse_generators_shield = nil;
 
    lse_generators_throw = nil;
 
    lse_generators_charge = nil;
 
    lse_generators_pylon = nil;
 
    lse_generators_shield = false;
 
    lse_generators_throw = false;
 
    lse_generators_charge = false;
 
    lse_generators_pylon = false;
 
    lse_generators_chPylon = 10;
 
    lse_generators_chThrow = 5;
 
    lse_generators_chCharge = 3;
 
@@ -167,30 +167,30 @@ lse_generator_update = function()
 
    
 
    if (cnt < 4 or lse_naethvjirr.hp <= 0) then
 
        if (stead.ref(lse_generators_shield) and not stead.ref(lse_generators_shield).broken) then
 
            stead.ref(lse_generators_shield).role = nil;
 
            stead.ref(lse_generators_shield).role = false;
 
        end;
 
        lse_generators_shield = nil;
 
        lse_generators_shield = false;
 
    end;
 
    
 
    if (cnt < 3 or lse_naethvjirr.hp <= 0) then
 
        if (stead.ref(lse_generators_throw) and not stead.ref(lse_generators_throw).broken) then
 
            stead.ref(lse_generators_throw).role = nil;
 
            stead.ref(lse_generators_throw).role = false;
 
        end;
 
        lse_generators_throw = nil;
 
        lse_generators_throw = false;
 
    end;
 
    
 
    if (cnt < 2 or lse_naethvjirr.hp <= 0) then
 
        if (stead.ref(lse_generators_charge) and not stead.ref(lse_generators_charge).broken) then
 
            stead.ref(lse_generators_charge).role = nil;
 
            stead.ref(lse_generators_charge).role = false;
 
        end;
 
        lse_generators_charge = nil;
 
        lse_generators_charge = false;
 
    end;
 
    
 
    if (lse_pylon1.hp <= 0 and lse_pylon2.hp <= 0) then
 
        if (stead.ref(lse_generators_pylon) and not stead.ref(lse_generators_pylon).broken) then
 
            stead.ref(lse_generators_pylon).role = nil;
 
            stead.ref(lse_generators_pylon).role = false;
 
        end;
 
        lse_generators_pylon = nil;
 
        lse_generators_pylon = false;
 
    end;
 
    
 
    if (lse_generators_pylon and stead.ref(lse_generators_pylon).broken) then
 
@@ -514,6 +514,10 @@ lse_naethvjirr = combatant {
 
        return p;
 
    end;
 
    make_turn = function(s)
 
        if here() ~= lse_final_battle then
 
            return
 
        end;
 

	
 
        if (lse_generators_chCharge <= 0) then
 
            lse_generators_chCharge = 3;
 
            p("Наэтвьирр отправляет в вас электрический разряд. ");
 
@@ -562,7 +566,7 @@ lse_naethvjirr = combatant {
 
        elseif (lse_generators_chThrow <= 0) then
 
            lse_generators_chThrow = 5;
 
            p("Наэтвьирр отправляет в вас мощную волну воздуха, которая отбрасывает вас в сторону. ");
 
            local plX = here().plX;
 
                local plX = here().plX;
 
                local plY = here().plY;
 
                if math.abs(here().plX - 4) > math.abs(here().plY - 4) then
 
                    if here().plX > 4 then
 
@@ -647,6 +651,10 @@ lse_drake = combatant {
 
        end;
 
    end;
 
    make_turn = function(s)
 
        if here() ~= lse_final_battle then
 
            return
 
        end;
 

	
 
        local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));
 
        if (dist < 6) then
 
            if (here():canShoot(s.x, s.y, here().plX, here().plY)) then
 
@@ -734,6 +742,9 @@ lse_aedhyarr = combatant {
 
        end;
 
    end;
 
    make_turn = function(s)
 
        if here() ~= lse_final_battle then
 
            return
 
        end;
 
        -- Аэдхиарр будет пытаться всеми силами париблизиться к игроку на расстояние выстрела и не будет отступать. 
 
        local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));
 
        if (dist < 4 and here():canShoot(s.x, s.y, here().plX, here().plY)) then
lse_intro.lua
Show inline comments
 
global {
 
    lse_key = false;
 
    lse_ending_state = nil;
 
    lse_ending_state = false;
 
};
 

	
 
lse_entered = cutscene("lse_entered", "Левиафан, рубка", [[После бесконечной череды скал и ущелий перед Левиафаном, наконец, открылось громадное плато с выросшим по центру колоссальных размеров городом, полностью накрытым прозрачным куполом, защищающим древние строения от проникновения посторонних. Приближаясь вы начинаете различать отдельные здания, выстроившиеся тремя кольцами вокруг центральной башни-обелиска. Ослепительно-ярким светом горят на этом маяке цветные символы древнего навьярского языка. К сожалению, сейчас вы можете понять только часть их. То, что вы читаете гласит: "Первый и главный город навьяров и хевьяров". Весь экипаж Левиафана собирается в рубке, не в силах оторвать взгляд от грандиозного зрелища. ]], "lse_entered2", function(s)
lse_service_tunnels.lua
Show inline comments
 
@@ -417,7 +417,7 @@ service_tunnels_3 = labyrinth {
 
    nam = "service_tunnels_3";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
        return [[Фаэтларр находится где-то в служебных тоннелях Лсэрианотра. Множество труб различной толщины тянутся во всех направлениях, образуя запутанный лабиринт. К счастью, секции и направления промаркированы определенным образом, позволяя попавшему в эти хитросплетения труб ориентироваться в них. Рядом с Фаэтларром висит табличка, на которую нанесены ]] .. s.map[s.position].name .. ". ";
 
        return [[Вы находитесь где-то в служебных тоннелях Лсэрианотра. Множество труб различной толщины тянутся во всех направлениях, образуя запутанный лабиринт. К счастью, секции и направления промаркированы определенным образом, позволяя попавшему в эти хитросплетения труб ориентироваться в них. Рядом с вами висит табличка, на которую нанесены ]] .. s.map[s.position].name .. ". ";
 
    end;
 
    enter = function(s)
 
        lse_sub_2.pdir = "0";
 
@@ -547,6 +547,9 @@ service_tunnels_3 = labyrinth {
 
            name = "желтая и красная полосы";
 
            e1 = "25";
 
            ex5 = "lse_sub_2";
 
            enter = function(s)
 
                make_snapshot();
 
            end;
 
        };
 
        ["40"] = {
 
            name = "оранжевая и фиолетовая полосы";
 
@@ -624,7 +627,7 @@ service_tunnels_4 = labyrinth {
 
    nam = "service_tunnels_4";
 
    disp = "Лсэрианотр, служебный тоннель";
 
    dsc = function(s)
 
        return [[Фаэтларр находится где-то в служебных тоннелях Лсэрианотра. Множество труб различной толщины тянутся во всех направлениях, образуя запутанный лабиринт. К счастью, секции и направления промаркированы определенным образом, позволяя попавшему в эти хитросплетения труб ориентироваться в них. Рядом с Фаэтларром висит табличка, на которую нанесены ]] .. s.map[s.position].name .. ". ";
 
        return [[Вы находитесь где-то в служебных тоннелях Лсэрианотра. Множество труб различной толщины тянутся во всех направлениях, образуя запутанный лабиринт. К счастью, секции и направления промаркированы определенным образом, позволяя попавшему в эти хитросплетения труб ориентироваться в них. Рядом с вами висит табличка, на которую нанесены ]] .. s.map[s.position].name .. ". ";
 
    end;
 
    enter = function(s)
 
        lse_sub_2.pdir = "1";
 
@@ -730,7 +733,12 @@ service_tunnels_4 = labyrinth {
 
        ["30"] = {
 
            name = "желтая и фиолетовая полосы";
 
            e1 = "20";
 
            ex5 = "lse_sub_2";
 
            ex5 = function(s)
 
                return "lse_sub_2";
 
            end;
 
            enter = function(s)
 
                make_snapshot();
 
            end
 
        };
 
        ["31"] = {
 
            name = "желтая и синяя полосы";
 
@@ -806,6 +814,9 @@ service_tunnels_4 = labyrinth {
 
        ["53"] = {
 
            name = "красная и желтая полосы";
 
            e4 = "54";
 
            enter = function(s)
 
                make_snapshot();
 
            end;
 
            ex5 = "lse_center";
 
            
 
        };
main.lua
Show inline comments
 
@@ -12,7 +12,7 @@ require "timer"
 
require "click"
 
require "prefs"
 
require "theme"
 
--require "dbg";
 
require "snapshots"
 
 
-- Код и ядро
 
dofile "utils.lua"
party.lua
Show inline comments
 
@@ -113,7 +113,7 @@ char_radcliffe = obj {
 
        home = "leviathan_engines";   
 
		follow = false;
 
        
 
        rel_on_join = nil;
 
        rel_on_join = 0;
 
        
 
        on_walter = 0;
 
        on_atlantis = 0;
 
@@ -207,7 +207,7 @@ char_anna = obj {
 
        venaedanotrr_asked = 0;
 
        nleyyslanotr_asked = 0;
 
        deep_temple_asked = 0;
 
        rel_on_join = nil;
 
        rel_on_join = 0;
 
	};
 
	nam = "anna";
 
	disp = "Анна Рэдклифф";
startup.lua
Show inline comments
 
@@ -77,7 +77,7 @@ player_drake = player {
 
        hp = 10;
 
        has_light = false;
 
        party = {};
 
        companion = nil;
 
        companion = false;
 
        money = 200;
 
    };
 
    nam = "player";
utils.lua
Show inline comments
 
@@ -2,36 +2,7 @@
 
	Общие утилиты для игр на Instead. Скорее всего будут повторно использоваться в следующих играх, если таковые будут.
 
]]
 
 
--[[
 
]]
 
ArrayUtils = {
 
	indexOf = function(array, item)
 
		for i = 1, #array do
 
			if (array[i] == item) then
 
				return i;
 
			end;
 
		end;
 
		return 0;
 
	end;
 
};
 
 
--[[
 
	
 
]]
 
PartyUtils = {
 
	addToParty = function(object)
 
		if (object.home) then 
 
			if (ArrayUtils.indexOf(pl.party, object.nam) == 0) then
 
				move(object, object.home);
 
				table.insert(pl.party, object.nam);
 
			end;
 
		end;
 
	end;
 
};
 
 
--[[
 
    Translate utils
 
 ]]
 
--[[Translate utils]]
 
 
language = "ru"
 
 
@@ -42,6 +13,33 @@ translate = function(table, key)
 
end;
 
 
--[[
 
    ]]
 
ArrayUtils = {
 
    indexOf = function(array, item)
 
        for i = 1, #array do
 
            if (array[i] == item) then
 
                return i;
 
            end;
 
        end;
 
        return 0;
 
    end;
 
};
 
 
--[[
 
 
]]
 
PartyUtils = {
 
    addToParty = function(object)
 
        if (object.home) then
 
            if (ArrayUtils.indexOf(pl.party, object.nam) == 0) then
 
                move(object, object.home);
 
                table.insert(pl.party, object.nam);
 
            end;
 
        end;
 
    end;
 
};
 
 
--[[
 
    functions, design to simplify some typical actions while developing Instead game
 
]]
 
EngineUtils = {
 
@@ -57,7 +55,7 @@ EngineUtils = {
 
    end;
 
 
    getValue = function(source, param)
 
        local value = nil;
 
        local value;
 
        if (type(source) == "function") then
 
            value = source(param);
 
        else
 
@@ -68,40 +66,27 @@ EngineUtils = {
 
    end;
 
};
 
 
room = inherit(room, function(v)
 
    v.entered = stead.hook(v.entered, function(f, s, ...)
 
        if s.showhp then
 
            hp_indicator:enable();
 
        else
 
            hp_indicator:disable();
 
        end;
 
        return f(s, ...)
 
    end)
 
 
    return v;
 
end)
 
 
--[[
 
	internal space
 
]]
 
        internal space
 
    ]]
 
_kh = {
 
	vroom_enter = function(s)
 
    vroom_enter = function(s)
 
        local v = EngineUtils.getValue(s.where);
 
		if (v) then
 
			walk(v);
 
		else
 
			return false;
 
		end;
 
	end;
 
	vroom_save = function(s)
 
		if need then
 
			local t = stead.string.format("%s = kh_vroom(%s, %q, %s);\n",
 
				name, stead.tostring(s.disp),
 
					stead.deref(s.where), stead.deref(s.nam));
 
			h:write(t);
 
		end
 
		stead.savemembers(h, s, name, false);
 
	end;
 
        if (v) then
 
            walk(v);
 
        else
 
            return false;
 
        end;
 
    end;
 
    vroom_save = function(s)
 
        if need then
 
            local t = stead.string.format("%s = kh_vroom(%s, %q, %s);\n",
 
                name, stead.tostring(s.disp),
 
                stead.deref(s.where), stead.deref(s.nam));
 
            h:write(t);
 
        end
 
        stead.savemembers(h, s, name, false);
 
    end;
 
};
 
 
function toggle(obj)
 
@@ -112,7 +97,7 @@ function toggle(obj)
 
    end;
 
end;
 
 
function kh_vobj(nam, dsc, act, used) 
 
function kh_vobj(nam, dsc, act, used)
 
    return obj {
 
        nam = nam;
 
        dsc = dsc;
 
@@ -122,13 +107,13 @@ function kh_vobj(nam, dsc, act, used)
 
end;
 
 
function kh_vway(disp, dsc, target, seen_level)
 
	local temp = vway(disp, dsc, target);
 
	temp.seen_level = seen_level;
 
	return temp;
 
    local temp = vway(disp, dsc, target);
 
    temp.seen_level = seen_level;
 
    return temp;
 
end;
 
 
--[[
 
	vroom with additional functionality
 
    vroom with additional functionality
 
]]
 
function kh_vroom(disp, target, nam, seen_level)
 
    if (type(nam) == "number") then
 
@@ -138,55 +123,72 @@ function kh_vroom(disp, target, nam, see
 
    if (not nam) then
 
        nam = disp;
 
    end;
 
	return room {
 
		nam = nam;
 
		disp = disp;
 
		where = target;
 
		enter = _kh.vroom_enter;
 
		seen_level = seen_level;
 
	};
 
    return room {
 
        nam = nam;
 
        disp = disp;
 
        where = target;
 
        enter = _kh.vroom_enter;
 
        seen_level = seen_level;
 
    };
 
end;
 
 
dlg = inherit(dlg, function(v)
 
    v.hideinv = true;
 
    v.nosave = true;
 
    v.noautosave = true;
 
    return v;
 
end);
 
if not kh_utils_installed then
 
    room = inherit(room, function(v)
 
        v.entered = stead.hook(v.entered, function(f, s, ...)
 
            if s.showhp then
 
                hp_indicator:enable();
 
            else
 
                hp_indicator:disable();
 
            end;
 
            return f(s, ...)
 
        end)
 
 
obj = inherit(obj, function(v)
 
	v.disable_implicit = hook(v.disable, function(f, s, ...)
 
		s._disabled_implicit = true;
 
		return f(s, unpack({...}));
 
	end);
 
        return v;
 
    end);
 
 
    dlg = inherit(dlg, function(v)
 
        v.hideinv = true;
 
        v.nosave = true;
 
        v.noautosave = true;
 
        return v;
 
    end);
 
 
    obj = inherit(obj, function(v)
 
        v.disable_implicit = hook(v.disable, function(f, s, ...)
 
            s._disabled_implicit = true;
 
            return f(s, unpack({...}));
 
        end);
 
 
	v.disable = hook(v.disable, function(f, s, ...)
 
		s._disabled_explicit = true;
 
		return f(s, unpack({...}));
 
	end);
 
	
 
	v.enable_implicit = hook(v.enable, function(f, s, ...)
 
		s._disabled_implicit = false;
 
		if (s._disabled_explicit) then
 
			return s; --mimic original enable() behavior
 
		else
 
			return f(s, unpack({...}));
 
		end;
 
	end);
 
	
 
	v.enable = hook(v.enable, function(f, s, ...)
 
		s._disabled_explicit = false;
 
		if (s._disabled_implicit) then
 
			return s; --mimic original enable() behavior
 
		else
 
			return f(s, unpack({...}));
 
		end;
 
	end);
 
    
 
    v.toggle = toggle;
 
	
 
	return v;
 
end);
 
        v.disable = hook(v.disable, function(f, s, ...)
 
            s._disabled_explicit = true;
 
            return f(s, unpack({...}));
 
        end);
 
 
        v.enable_implicit = hook(v.enable, function(f, s, ...)
 
            s._disabled_implicit = false;
 
            if (s._disabled_explicit) then
 
                return s; --mimic original enable() behavior
 
            else
 
                return f(s, unpack({...}));
 
            end;
 
        end);
 
 
        v.enable = hook(v.enable, function(f, s, ...)
 
            s._disabled_explicit = false;
 
            if (s._disabled_implicit) then
 
                return s; --mimic original enable() behavior
 
            else
 
                return f(s, unpack({...}));
 
            end;
 
        end);
 
 
        v.toggle = toggle;
 
 
        return v;
 
    end);
 
 
    kh_utils_installed = true;
 
end;
 
 
--[[
 
	character object
 
@@ -195,7 +197,7 @@ end);
 
function npc(tab)
 
	if (not tab.act) then
 
		tab.act = function(s)
 
            local dlg = nil;      
 
            local dlg;
 
			if s.dlg then
 
                dlg = EngineUtils.getValue(s.dlg, s);
 
		    end;
 
@@ -321,6 +323,29 @@ function game_over(nam, dsc, disp)
 
        end;
 
        hideinv = true;
 
        dsc = dsc;
 
        way = {
 
            kh_vroom("Попробовать еще раз", function(s)
 
                restore_snapshot();
 
                return false;
 
            end);
 
        }
 
    };
 
end;
 
 
function ending(nam, dsc, disp)
 
    return room {
 
        nam = nam;
 
        nosave = true;
 
        noautosave = true;
 
        not_follow = true;
 
        disp = function(s)
 
            if disp then
 
                return disp;
 
            end;
 
            return "Игра окончена";
 
        end;
 
        hideinv = true;
 
        dsc = dsc;
 
    };
 
end;
 
 
@@ -865,6 +890,7 @@ end;
 
			end;
 
		end};
 
		{5, always = "true", "Отмена", function(s)
 
            stead.need_scene();
 
			back();
 
			return "";
 
		end};
warehouse18.lua
Show inline comments
 
@@ -218,7 +218,7 @@ char_w18_sec_in = npc {
 
w18_box_act = function(s)
 
	if (s.item) then
 
		local item = s.item;
 
		s.item = nil;
 
		s.item = false;
 
		take(item);
 
		return stead.ref(item).disp;
 
	else
 
@@ -228,7 +228,7 @@ end;
 
 
w18_box1 = obj {
 
    var {
 
        item = nil;
 
        item = false;
 
    };
 
	nam = "w18_box1";
 
	disp = "Ящик";
 
@@ -238,7 +238,7 @@ w18_box1 = obj {
 
 
w18_box2 = obj {
 
    var {
 
        item = nil;
 
        item = false;
 
    };
 
	nam = "w18_box2";
 
	disp = "Ящик";
 
@@ -248,7 +248,7 @@ w18_box2 = obj {
 
 
w18_box3 = obj {
 
    var {
 
        item = nil;
 
        item = false;
 
    };
 
	nam = "w18_box3";
 
	disp = "Ящик";
 
@@ -258,7 +258,7 @@ w18_box3 = obj {
 
 
w18_box4 = obj {
 
    var {
 
        item = nil;
 
        item = false;
 
    };
 
	nam = "w18_box4";
 
	disp = "Ящик";
 
@@ -285,21 +285,21 @@ function warehouse18_init()
 
		local t = rnd(#w18_boxes);
 
		if (not w18_boxes[t].item) then
 
			w18_boxes[t].item = item1;
 
			item1 = nil;
 
			item1 = false;
 
		end;
 
	end;
 
	while item2 do
 
		local t = rnd(#w18_boxes);
 
		if (not w18_boxes[t].item) then
 
			w18_boxes[t].item = item2;
 
			item2 = nil;
 
			item2 = false;
 
		end;
 
	end;
 
	while item3 do
 
		local t = rnd(#w18_boxes);
 
		if (not w18_boxes[t].item) then
 
			w18_boxes[t].item = item3;
 
			item3 = nil;
 
			item3 = false;
 
		end;
 
	end;
 
end;
 
\ No newline at end of file
warehouse32.lua
Show inline comments
 
@@ -144,6 +144,7 @@ w32_backdoor = room {
 
    dsc = [[Над прочной деревянной дверью висит фонарь, дающий слабый свет. Площадка вокруг пуста, за исключением небольшой кучки обломков у забора. ]];
 
	entered = function(s)
 
		warehouse_32.pos = "01";
 
		make_snapshot();
 
	end;
 
	way = {
 
		kh_vroom("Внутрь", function(s)
 
@@ -171,6 +172,7 @@ w32_mgr = darkroom {
 
	dsc_dark = [[Вы находитесь в кабинете управляющего. В темноте вы можете лишь смутно различить очертания предметов. ]];
 
	dsc_halflit = [[Вы находитесь в кабинете управляющего. ]];
 
	entered = function(s)
 
		make_snapshot();
 
		warehouse_32.pos = "54";
 
	end;
 
	way = {
0 comments (0 inline, 0 general)