Changeset - 5bf9665ad67c
[Not reviewed]
Merge preview
12 27 70
Silverwing - 7 years ago 2017-12-25 21:42:26

Merge with default
109 files changed with 8759 insertions and 6996 deletions:
atlantis.lua
479
177
dock2.lua
15
14
hope.lua
140
images/book_bones.png
bin+new file
images/book_city.png
bin+new file
images/book_cliff.png
bin+new file
images/book_ravine.png
bin+new file
images/book_stones.png
bin+new file
images/book_temple.png
bin+new file
images/book_weed.png
bin+new file
images/cavelock_0.png
bin+new file
images/cavelock_0p.png
bin+new file
images/cavelock_1.png
bin+new file
images/cavelock_1p.png
bin+new file
images/cavelock_2.png
bin+new file
images/cavelock_2p.png
bin+new file
images/cavelock_3.png
bin+new file
images/cavelock_3p.png
bin+new file
images/cavelock_4.png
bin+new file
images/cavelock_4p.png
bin+new file
images/cavelock_5.png
bin+new file
images/cavelock_5p.png
bin+new file
images/dyp15.png
bin+new file
images/dyp15_0.png
bin+new file
images/dyp15_1.png
bin+new file
images/dyp15_10.png
bin+new file
images/dyp15_11.png
bin+new file
images/dyp15_12.png
bin+new file
images/dyp15_13.png
bin+new file
images/dyp15_14.png
bin+new file
images/dyp15_15.png
bin+new file
images/dyp15_2.png
bin+new file
images/dyp15_3.png
bin+new file
images/dyp15_4.png
bin+new file
images/dyp15_5.png
bin+new file
images/dyp15_6.png
bin+new file
images/dyp15_7.png
bin+new file
images/dyp15_8.png
bin+new file
images/dyp15_9.png
bin+new file
images/king_crab.png
bin+new file
images/little_crab.png
bin+new file
images/wh32_bg.png
bin+new file
images/wh32_door.png
bin+new file
images/wh32_guard.png
bin+new file
images/wh32_mask.png
bin+new file
images/wh32_plan.png
bin+new file
images/wh32_player.png
bin+new file
images/wh32_wall.png
bin+new file
items.lua
243
71
london.lua
200
54
main.lua
5
133
party.lua
636
107
utils.lua
42
16
wright.lua
42
33
0 comments (0 inline, 0 general)
.hgignore
Show inline comments
 
syntax: glob
 
build/**
atlantis.lua
Show inline comments
 
@@ -10,9 +10,10 @@ global {
 
	
 
	atl_iyh_state = 0;
 
    atl_iyh_learr_spoken = false;
 
    atl_iyh_aikerjarr_spoken = false;
 
	atl_iyh_ryveerr_spoken = false;
 
    atl_iyh2_ryveerr_spoken = false;
 
    atl_iyh2_aikeryarr_spoken = false;
 
    atl_iyh2_aikerjarr_spoken = false;
 
	atl_iyh_shockfish_dead = false;
 
	atl_iyh_shockfish_left = false;
 
	atl_iyh_shockfish_away = 0;
 
@@ -28,13 +29,13 @@ global {
 
	atl_lfc_suspect = nil;
 
	atl_lfc_leroy_spoken = 0;
 
	atl_lfc_goldman_spoken = 0;
 
	atl_lfc_goldman_known = false;
 
	atl_lfc_goldman_exposed = false;
 
	atl_lfc_saboteur_known = false;
 
	atl_lfc_sab_active = false;
 
	atl_lfc_sab_alive = false;
 
    atl_lfc_court_allowed = false;
 
    atl_lfc_leroy_goldman = false;
 
 
	atl_fta_state = 0;
 
    atl_fta_darkstar_debrief = false;
 
	
 
	atl_rep_moreau = 0;
 
	atl_rep_darkstar = 0;
 
@@ -42,6 +43,9 @@ global {
 
	atl_rep_wright = 0;
 
    atl_rep_iraa = 0;
 
    atl_rep_dyp = 0;
 
    
 
    atl_ctt_iraa_refusal = false;
 
    atl_star_map_copied = false;
 
};
 
 
atl_illuminators = obj {
 
@@ -106,11 +110,11 @@ atl_aqua_corridor_b = room {
 
 
atl_entry = lcutscene("atl_entry", "Левиафан, рубка", function(s)
 
    if (ArrayUtils.indexOf(pl.party, "wright") ~= 0) then
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к танственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Хотя субмарина явно требует большего экипажа, вы неплохо справляетесь вдвое и добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, оставляя вас взаперти. ]];
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к таинственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. И хотя подводная лодка явно требует большего экипажа, чем вы с Райтом, вдвоем вы неплохо справляетесь. Добравшись до места назначения, вы обнаруживаете несколько больших металлических и стеклянных куполов, раскинувшихся на океанском дне и освещенных электрическими огнями. Приблизившись, вы находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, отрезая вас от внешнего мира. ]];
 
    else
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к танственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Управлять субмариной в одиночку нелегкая работа. Вы почти не спите, опасаясь оставлять движение корабль без внимания. К счатью, вы без проблем добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, оставляя вас взаперти. ]];
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к таинственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Управлять огромным кораблем в одиночку непросто. Вы почти не спите, опасаясь оставлять движение судна без внимания. Однако, вы без проблем добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, отрезая вас от внешнего мира. ]];
 
    end;
 
end, "Вы прибыли на Атлантиду", leviathan_wheelhouse);
 
end, "Вы прибыли на Атлантиду. ", leviathan_wheelhouse);
 
 
atl_aqua_leviathan_dock = room {
 
	var {
 
@@ -118,6 +122,10 @@ atl_aqua_leviathan_dock = room {
 
	};
 
	nam = "Атлантида, Аква, гостевой док A";
 
	enter = function(s)
 
        char_learr:accompany(false);
 
        char_radcliffe:accompany(false);
 
        char_anna:accompany(false);
 
        char_wright:accompany(false);
 
		if (not s.visited) then
 
			s.visited = true;
 
			walk(atlantis_intro_dock);
 
@@ -126,14 +134,19 @@ atl_aqua_leviathan_dock = room {
 
			atl_iyh_state = 9;
 
			if (atl_iof_learr_dead) then
 
				walk('iyh_outro_aikerjarr');
 
			else
 
				walk('iyh_outro_learr');
 
			elseif atl_iyh_shockfish_dead then
 
                walk('iyh_outro_learr_shockfish_dead');
 
            elseif atl_iyh_entrance_destroyed then
 
				walk('iyh_outro_learr_temple_destroyed');
 
            else
 
                walk('iyh_outro_learr');
 
			end;
 
		end;
 
	end;
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Левиафан. Под потолком, на высоте примерно в пять метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Снизу, под водой, огромный люк закрывает доступ внутрь дока. Несколько легких подвижных мостиков находятся на поверхности воды. ]];
 
	view = [[Левиафан находится в просторном доке. Под потолком на высоте пяти метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Внизу расположен закрытый люк, закрывающий вам путь наружу. ]];
 
	way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");   
 
		kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
	};
 
}; 
 
@@ -177,33 +190,68 @@ atl_aqua_corridor_a = room {
 
};
 
 
atl_aqua_main_corridor = room {
 
	nam = "Атлантида, Аква, центральный коридор";
 
	dsc = [[Широкий коридор, заполненный ярким светом электрических ламп. В одном конце коридора расположена шлюзовая дверь, ведущая, в секцию _"Доминус"_. По бокам коридора находятся еще несколько дверей, ведущих в другие помещения секции -- по большей части это склады. Еще две двери ведут в коридоры A и B. ]];
 
	way = {
 
		kh_vroom("На склад A", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("На склад B", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("На склад C", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("На склад D", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
		kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
		kh_vroom("В секцию \"Доминус\"", "atl_intersection_aqua_dom");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
		"atl_nih_tubes_aqua"
 
	};
 
    nam = "Атлантида, Аква, центральный коридор";
 
    dsc = [[Широкий коридор, заполненный ярким светом электрических ламп. В одном конце коридора расположена шлюзовая дверь, ведущая, в секцию _"Доминус"_. По бокам коридора находятся еще несколько дверей, ведущих в другие помещения секции -- по большей части это склады. Еще две двери ведут в коридоры A и B. ]];
 
    way = {
 
        kh_vroom("На склад A", function()
 
            pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
            return false;
 
        end);
 
        kh_vroom("На склад B", function()
 
            if atl_nih_state == 1 or atl_nih_state == 2 then
 
                return "atl_aqua_warehouse_b";
 
            else
 
                pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
                return false;
 
            end;
 
        end);
 
        kh_vroom("На склад C", function()
 
            pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
            return false;
 
        end);
 
        kh_vroom("На склад D", function()
 
            pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
            return false;
 
        end);
 
        kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
        kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
        kh_vroom("В секцию \"Доминус\"", "atl_intersection_aqua_dom");
 
    };
 
    obj = {
 
        "atl_illuminators",
 
        "atl_nih_tubes_aqua"
 
    };
 
};
 
 
atl_aqua_warehouse_b = darkroom {
 
    var {
 
        has_light = false;
 
    };
 
    nam = "Атлантида, Аква, склад B";
 
    dsc_dark = [[Большое помещение без окон погружено в кромешный мрак. В темноте вы с трудом различаете очертания предметов. ]];
 
    dsc_halflit = [[Слабый свет лампы позволяет вам с трудом ориентироваться в помещении,заставленном различными ящиками. ]];
 
    dsc_lit = [[Большое помещение без окон освещено яркими лектрическим лампами. По всему помещению аккуратно расставлено множество ящиков с различными материалами, необходимыми для поддержания жизнедеятельности станции. ]];
 
    way = {
 
        kh_vroom("В коридор", "atl_aqua_main_corridor", nil, 2);
 
    };
 
    obj = {
 
        "atl_aqua_warehouse_b_lightswitch";
 
        "atl_nih_tube_container2";
 
    };
 
};
 
 
atl_aqua_warehouse_b_lightswitch = obj {
 
    nam = "atl_aqua_warehouse_b_lightswitch";
 
    dsc = [[Рядом со входом расположен {выключатель}. ]];
 
    seen_level = 2;
 
    act = function(s)
 
        atl_aqua_warehouse_b.has_light = not atl_aqua_warehouse_b.has_light;
 
        if atl_aqua_warehouse_b.has_light then
 
            return [[Вы щелкаете выключателем и яркий свет электрических ламп заливает помещение. ]];
 
        else
 
            return [[Вы щелкаете выключателем и лампы гаснут, погружая помещение в кромешную тьму. ]];
 
        end;
 
    end;
 
};
 
 
atl_intersection = inherit(room, function(v)
 
@@ -235,6 +283,8 @@ atl_intersection = inherit(room, functio
 
    table.insert(v.obj, "atl_illuminator");
 
    table.insert(v.obj, "atl_intersect_phone");
 
    table.insert(v.obj, "atl_intersect_suit");
 
    
 
    return v;
 
end);
 
 
atl_intersection_aqua_dom = atl_intersection {
 
@@ -279,12 +329,21 @@ atl_dom_main_c = room {
 
	nam = "Атлантида, Доминус, центральный зал, центр";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Вы находитесь в центральной части зала, рядом с лифтом, ведущим в Игнис. ]];
 
	way = {
 
		kh_vroom("В лифт", "atl_dom_lift");
 
		kh_vroom("На север", "atl_dom_main_near_aqua");
 
		kh_vroom("На северо-восток", "atl_dom_main_near_adm");
 
		kh_vroom("На юго-восток", "atl_dom_main_se");
 
		kh_vroom("На юго-запад", "atl_dom_main_sw");
 
		kh_vroom("На северо-запад", "atl_dom_main_near_a");
 
		kh_vroom("В лифт", function(s)
 
            if atl_iof_completed then
 
                pr("Лифт не работает. ");
 
                return false;
 
            else      
 
                return "atl_dom_lift";
 
            end;
 
        end);
 
		kh_vroom("К секции Аква", "atl_dom_main_near_aqua");
 
		kh_vroom("К кабинету администратора", "atl_dom_main_near_adm");
 
		kh_vroom("К секции Арктос", "atl_dom_main_near_arctos");
 
        kh_vroom("К секции Терра", "atl_dom_main_near_terra");
 
        kh_vroom("К секции Окулус", "atl_dom_main_near_oculus");
 
        kh_vroom("К секции Луна", "atl_dom_main_near_luna");
 
		kh_vroom("К коридору А", "atl_dom_main_near_a");
 
		
 
	};
 
	obj = {
 
@@ -292,30 +351,6 @@ atl_dom_main_c = room {
 
	};
 
};
 
 
atl_dom_main_sw = room {
 
	nam = "Атлантида, Доминус, центральный зал, юго-запад";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Вы находитесь в юго-западной части секции. ]];
 
	way = {
 
		kh_vroom("К секции Окулус", "atl_dom_main_near_oculus");
 
		kh_vroom("К секции Луна", "atl_dom_main_near_luna");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_a");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_se");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
};
 
 
atl_dom_main_se = room {
 
	nam = "Атлантида, Доминус, центральный зал, юго-восток";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса.Вы находитесь в юго-восточной части секции. ]];
 
	way = {
 
		kh_vroom("К секции Арктос", "atl_dom_main_near_arctos");
 
		kh_vroom("К секции Терра", "atl_dom_main_near_terra");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_sw");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_near_adm");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
};
 
 
atl_dom_main_near_adm = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в кабинет администратора";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в кабинет администратора. ]];
 
@@ -333,10 +368,12 @@ atl_dom_main_near_adm = room {
 
 
atl_dom_main_near_luna = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию Луна";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса.Рядом с вами находится шлюз, ведущий в секцию "Луна". ]];
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Луна". ]];
 
	way = {
 
		kh_vroom("В секцию \"Луна\"", "atl_intersection_luna_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_a");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_oculus");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_panel_near_luna"
 
@@ -348,7 +385,9 @@ atl_dom_main_near_oculus = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Окулус". ]];
 
	way = {
 
		kh_vroom("В секцию \"Окулус\"", "atl_intersection_oculus_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_luna");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_terra");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_oculus"
 
@@ -360,7 +399,9 @@ atl_dom_main_near_terra = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Терра". ]];
 
	way = {
 
		kh_vroom("В секцию \"Терра\"", "atl_intersection_terra_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_oculus");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_arctos");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_terra"
 
@@ -372,7 +413,9 @@ atl_dom_main_near_arctos = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Арктос". ]];
 
	way = {
 
		kh_vroom("В секцию \"Арктос\"", "atl_intersection_arctos_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_terra");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_adm");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_tubes_near_arctos"
 
@@ -495,7 +538,14 @@ atl_arctos_main_corridor = room {
 
	nam = "Атлантида, Арктос, главный коридор";
 
	dsc = [[Узкий длинный коридор c дверьми, ведущими в комнаты персонала, по сторонам. Яркий свет электрических ламп заполняет помещение. ]];
 
	way = {
 
		kh_vroom("В комнату Голдмана", "atl_arctos_goldmans_room");
 
		kh_vroom("В комнату Голдмана", function(s)
 
            if goldman_state == 0 then
 
                return "atl_arctos_goldmans_room";
 
            else
 
                p([[Заперто. ]]);
 
                return false;
 
            end;
 
        end);
 
		kh_vroom("В комнату Джонса", "atl_arctos_jones_room");
 
	 	kh_vroom("В общую комнату", "atl_arctos_common_room");
 
		kh_vroom("В секцию \"Доминус\"", "atl_intersection_arctos_dom");
 
@@ -509,6 +559,9 @@ atl_arctos_main_corridor = room {
 
atl_arctos_goldmans_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
    way = {
 
        kh_vroom("В главный коридор", "atl_arctos_main_corridor");
 
    };
 
	obj = {
 
		"char_goldman"
 
	};
 
@@ -517,6 +570,9 @@ atl_arctos_goldmans_room = room {
 
atl_arctos_jones_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
    way = {
 
        kh_vroom("В главный коридор", "atl_arctos_main_corridor");
 
    };   
 
	obj = {
 
		"char_jones"
 
	};
 
@@ -559,26 +615,27 @@ atl_intersection_terra_dom = room {
 
};
 
 
atl_terra_main_corridor = room {
 
	nam = "Атлантида, Терра, главный коридор";
 
	dsc = [[Широкий просторный коридор, по обе стороны которого расположены двери, ведущие в мастерские. Вдоль стен стоят множество ящиков. В конце коридора находится дверь, ведущая в одну из технических секций станции. ]];
 
	way = {
 
		kh_vroom("В мастерскую A", "atl_terra_workshop_a");
 
		kh_vroom("В мастерскую B", "atl_terra_workshop_b");
 
		kh_vroom("В мастерскую C", "atl_terra_workshop_c");
 
		kh_vroom("В мастерскую D", "atl_terra_workshop_d");
 
		kh_vroom("В секцию Солис", function()
 
			if (atl_fta_state == 1) then
 
				return "atl_fta_is_terra_solis";
 
			else
 
				pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
				return false;
 
			end;
 
		end);
 
		kh_vroom("В секцию Доминус", "atl_intersection_terra_dom");
 
	};
 
	obj = {
 
		"atl_nih_boxes_terra"
 
	};
 
    nam = "Атлантида, Терра, главный коридор";
 
    dsc = [[Широкий просторный коридор, по обе стороны которого расположены двери, ведущие в мастерские. Вдоль стен стоят множество ящиков. В конце коридора находится дверь, ведущая в одну из технических секций станции. ]];
 
    way = {
 
        kh_vroom("В мастерскую A", "atl_terra_workshop_a");
 
        kh_vroom("В мастерскую B", "atl_terra_workshop_b");
 
        kh_vroom("В мастерскую C", "atl_terra_workshop_c");
 
        kh_vroom("В мастерскую D", "atl_terra_workshop_d");
 
        kh_vroom("В секцию Солис", function()
 
            if (atl_fta_state == 1) then
 
                return "atl_fta_is_terra_solis";
 
            else
 
                pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
                return false;
 
            end;
 
        end);
 
kh_vroom("В секцию Доминус", "atl_intersection_terra_dom");
 
    };
 
    obj = {
 
        "atl_nih_tube_container";
 
        "atl_nih_boxes_terra";
 
    };
 
};
 
 
atl_terra_workshop_a = room {
 
@@ -588,6 +645,7 @@ atl_terra_workshop_a = room {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
        item_electric_lamp:disable(),
 
		"char_michael_wright"
 
	};
 
};
 
@@ -620,6 +678,9 @@ atl_terra_workshop_d = room {
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
    obj = {
 
        "item_dynamo";
 
    };   
 
};
 
 
atl_intersection_oculus_dom = room {
 
@@ -767,7 +828,7 @@ char_darkstar = npc {
 
    };
 
	nam = "Винсент Даркстар";
 
	dsc = function(s)
 
        if (char_darkstar_dlg == 0) then
 
        if (char_darkstar_dlg.state == 0) then
 
            return [[В одном из кресел сидит средних лет {мужчина} с короткими черными волосами. Он одет в строгий деловой костюм черного цвета. Лицо его гладко выбрито. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
        else
 
            return [[В одном из кресел сидит {Винсент Даркстар}. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
@@ -861,17 +922,25 @@ char_learr_atlantis = npc {
 
	};
 
	nam = "Леарр";
 
	dsc = function(s)
 
        if (stead.deref(here()) == "atl_oculus_library") then
 
        if stead.deref(here()) == "atl_oculus_library" then
 
            return [[{Леарр} сидит за одним из столов, листая какую-то книгу. ]];
 
        elseif stead.deref(here()) == "atl_oculus_library" then
 
            return [[{Леарр} спокойно стоит рядом с Екатериной Светловой. ]];
 
        else
 
            if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
            if (stead.deref(where(char_jack_wright_atlantis)) == atl_ignis_hall_a) then
 
                return [[{Леарр} стоит перед иллюминатором и что-то рассказывает ]];
 
            else
 
                return [[{Леарр} стоит перед иллюминатором и смотрит вдаль. ]];
 
            end;
 
        end;
 
	end;
 
	dlg = "char_learr_atlantis_dlg";
 
	dlg = function(s)
 
        if stead.deref(where(s)) == atl_oculus_lab_a then
 
            return "char_svetlova_dlg";
 
        else
 
            return "char_learr_atlantis_dlg";
 
        end;
 
    end;
 
};
 
 
char_aikerjarr = npc {
 
@@ -1042,62 +1111,109 @@ char_jones = npc {
 
	dlg = "char_jones_dlg";
 
};
 
 
atl_nih_tubes_gen = function(nam, dsc)
 
	return obj {
 
		var {
 
			broken = false;
 
			fixed = false;
 
		};
 
		nam = nam;
 
		dsc = dsc;
 
		act = function(s)
 
			if (s.fixed) then
 
				return "Поврежденные трубы замотаны изолентой";
 
			elseif (s.broken) then
 
				return "Трубы повреждены и воздух со слабым шипением вырывается из них";
 
			else
 
				return "Трубы в порядке";
 
			end;
 
		end;
 
		use = function(s, o)
 
			if (o == item_ducttape and s.broken and not s.fixed) then
 
				s.fixed = true;
 
				atl_nih_state = 2;
 
				return [[
 
					Вы заматываете разрыв изолентой. На какое-то время такое решение сгодится. 
 
				]];
 
			end;
 
		end;
 
	};
 
atl_item_tube_spec = obj {
 
    nam = "atl_item_tube_spec";
 
    disp = "Документация по воздуховодам Атлантиды";
 
    inv = [[Внушительной толщины книжка описывает все особенности и случаи применения различных труб в качестве воздуховодов на станции. Пролистав ее, вы узнаете, что всего существует четыре типа соединения, маркируемые соответственно: RT, KT, NF и TQ. Полная маркировка трубы состоит из типа, длины, указываемой в дециметрах и диаметра, указываемого в миллиметрах. Например RT-17-7 означает трубку RT с длиной 17 дециметров и диаметром 7 миллиметров. Согласно документации, трубы каждого типа можно соединять только с трубами такого же типа, однако на последней странице вы замечаете карандашные пометки: ^При необходимости, можно заменять трубы одного типа на другой с учетом следующих правил: ^KT -> RT -- Диаметр на 1 меньше. ^NF -> KT -- Диаметр на 1 больше. ^TQ -> NF -- Диаметр на 2 больше. ^Другие замены недопустимы и могут вызвать поломки. ]];
 
};
 
 
atl_nih_tubes_gen = function(nam, dsc, tube_type, tube_len, tube_d)
 
    return obj {
 
        var {
 
            broken = false;
 
            fixed = false;
 
        };
 
        tube_type = tube_type;
 
        tube_len = tube_len;
 
        tube_d = tube_d;
 
        nam = nam;
 
        dsc = dsc;
 
        act = function(s)
 
            if (s.fixed) then
 
                return "Трубы в порядке. ";
 
            elseif (s.broken) then
 
                return "Трубы повреждены и воздух со слабым шипением вырывается из них. На трубе имеется маркировка: " .. tube_type .. "-" .. tube_len .. "-" .. tube_d;
 
            else
 
                return "Трубы в порядке. ";
 
            end;
 
        end;
 
        used = function(s, o)
 
            if s.broken and not s.fixed and o.is_tube and o.l == s.tube_len then
 
                print(s.tube_type, s.tube_d, o.t, o.d);
 
                local f = false;
 
                if o.t == s.tube_type and o.d == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "KT" and o.t == "RT" and o.d + 1 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "NF" and o.t == "KT" and o.d - 1 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "TQ" and o.t == "NF" and o.d - 2 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                end;
 
            end;
 
        end;
 
    };
 
end;
 
 
atl_nih_tubes_near_aqua = atl_nih_tubes_gen("atl_nih_tubes_near_aqua", [[Рядом со шлюзом из стены выходят несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_aqua = atl_nih_tubes_gen("atl_nih_tubes_near_aqua", [[Рядом со шлюзом из стены выходят несколько {труб}, по которым подается воздух. ]], "RT", 12, 8);
 
 
atl_nih_tubes_near_a = atl_nih_tubes_gen("atl_nih_tubes_near_a", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_a = atl_nih_tubes_gen("atl_nih_tubes_near_a", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "RT", 11, 9);
 
 
atl_nih_tubes_near_admin = atl_nih_tubes_gen("atl_nih_tubes_near_admin", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_admin = atl_nih_tubes_gen("atl_nih_tubes_near_admin", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "RT", 15, 7);
 
 
atl_nih_tubes_near_luna = atl_nih_tubes_gen("atl_nih_tubes_near_luna", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_luna = atl_nih_tubes_gen("atl_nih_tubes_near_luna", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "KT", 12, 6);
 
 
atl_nih_tubes_near_oculus = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_oculus = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]], "NF", 13, 7);
 
 
atl_nih_tubes_near_terra = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_terra = atl_nih_tubes_gen("atl_nih_tubes_near_terra", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]], "NF", 15, 9);
 
 
atl_nih_tubes_near_arctos = atl_nih_tubes_gen("atl_nih_tubes_near_arctos", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_arctos = atl_nih_tubes_gen("atl_nih_tubes_near_arctos", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "KT", 13, 7);
 
 
atl_nih_tubes_oculus = atl_nih_tubes_gen("atl_nih_tubes_oculus", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_oculus = atl_nih_tubes_gen("atl_nih_tubes_oculus", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "NF", 9, 8);
 
 
atl_nih_tubes_terra = atl_nih_tubes_gen("atl_nih_tubes_terra", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_terra = atl_nih_tubes_gen("atl_nih_tubes_terra", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "NF", 12, 6);
 
 
atl_nih_tubes_luna = atl_nih_tubes_gen("atl_nih_tubes_luna", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_luna = atl_nih_tubes_gen("atl_nih_tubes_luna", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "KT", 11, 5);
 
 
atl_nih_tubes_arctos = atl_nih_tubes_gen("atl_nih_tubes_arctos", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_arctos = atl_nih_tubes_gen("atl_nih_tubes_arctos", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "KT", 11, 7);
 
 
atl_nih_tubes_aqua = atl_nih_tubes_gen("atl_nih_tubes_aqua", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua = atl_nih_tubes_gen("atl_nih_tubes_aqua", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 11, 7);
 
 
atl_nih_tubes_aqua_a = atl_nih_tubes_gen("atl_nih_tubes_aqua_a", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua_a = atl_nih_tubes_gen("atl_nih_tubes_aqua_a", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 14, 4);
 
 
atl_nih_tubes_aqua_b = atl_nih_tubes_gen("atl_nih_tubes_aqua_b", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua_b = atl_nih_tubes_gen("atl_nih_tubes_aqua_b", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 10, 5);
 
 
atl_nih_panel_near_a = obscured_obj("atl_nih_panel_near_a", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_near_a", true);
 
 
@@ -1114,6 +1230,112 @@ atl_nih_boxes_near_terra = obscured_obj("atl_nih_boxes_near_terra", [[За грудой {ящиков}, вы замечаете несколько труб подачи воздуха. ]], [[Вы сдвигаете несколько ящиков, открывая себе доступ к трубам. ]], "atl_nih_tubes_near_terra", false, [[У стены расположена груда ящиков. ]], [[Вам незачем что-то еще здесь делать. ]]);
 
atl_nih_boxes_terra = obscured_obj("atl_nih_boxes_terra", [[За грудой {ящиков}, вы замечаете несколько труб подачи воздуха. ]], [[Вы сдвигаете несколько ящиков, открывая себе доступ к трубам. 
 
]], "atl_nih_tubes_terra", false, [[У стены расположена груда ящиков. ]], [[Вам незачем что-то еще здесь делать. ]]);
 
 
atl_nih_tube_container = obj {
 
    nam = "atl_nih_tube_container";
 
    dsc = [[Крышка одного из {ящиков} снята и вы видите внутри несколько труб. ]];
 
    act = function (s)
 
        walkin("atl_nih_tube_container_inv");
 
    end;
 
};
 
 
atl_nih_tube_container2 = obj {
 
    nam = "atl_nih_tube_container2";
 
    dsc = [[У одной из стен аккуратно сложены несколько {труб}. ]];
 
    act = function (s)
 
        walkin("atl_nih_tube_container2_inv");
 
    end;
 
};
 
 
tube = function(table)
 
    table.is_tube = true;
 
    table.dsc = "{" .. table.t .. "-" .. table.l .. "-" .. table.d .. "}^";
 
    table.inv = "Труба маркированная " .. table.t .. "-" .. table.l .. "-" .. table.d ;
 
    table.disp = "Труба " .. table.t .. "-" .. table.l .. "-" .. table.d ;
 
    table.tak = "Вы забираете трубу. ";
 
    return obj(table);
 
end;
 
 
tube_rt_12_8 = tube { nam = "tube_rt_12_8"; t = "RT"; l = 12; d = 8; };
 
tube_rt_11_9 = tube { nam = "tube_rt_11_9"; t = "RT"; l = 11; d = 9; };
 
tube_rt_15_7 = tube { nam = "tube_rt_15_7"; t = "RT"; l = 15; d = 7; };
 
tube_rt_12_5 = tube { nam = "tube_rt_12_5"; t = "RT"; l = 12; d = 5; };
 
tube_rt_13_6 = tube { nam = "tube_rt_13_6"; t = "RT"; l = 13; d = 6; };
 
tube_rt_11_4 = tube { nam = "tube_rt_11_4"; t = "RT"; l = 11; d = 4; };
 
tube_rt_11_6 = tube { nam = "tube_rt_11_6"; t = "RT"; l = 11; d = 6; };
 
tube_kt_13_8 = tube { nam = "tube_kt_13_8"; t = "KT"; l = 13; d = 8; };
 
tube_kt_15_10 = tube { nam = "tube_kt_15_10"; t = "KT"; l = 15; d = 10; };
 
tube_kt_9_9 = tube { nam = "tube_kt_9_9"; t = "KT"; l = 9; d = 9; };
 
tube_kt_12_7 = tube { nam = "tube_kt_12_7"; t = "KT"; l = 12; d = 7; };
 
tube_nf_16_7 = tube { nam = "tube_nf_16_7"; t = "NF"; l = 16; d = 7; };
 
tube_nf_11_7 = tube { nam = "tube_nf_11_7"; t = "NF"; l = 11; d = 7; };
 
tube_nf_12_9 = tube { nam = "tube_nf_12_9"; t = "NF"; l = 12; d = 9; };
 
tube_nf_15_7 = tube { nam = "tube_nf_15_7"; t = "NF"; l = 15; d = 7; };
 
tube_rt_12_6 = tube { nam = "tube_rt_12_6"; t = "RT"; l = 12; d = 6; };
 
tubes_terra = {
 
    tube_rt_12_8;
 
    tube_rt_11_9;
 
    tube_rt_15_7;
 
    tube_rt_12_5;
 
    tube_rt_13_6;
 
    tube_rt_11_4;
 
    tube_rt_11_6;
 
    tube_kt_13_8;
 
    tube_kt_15_10;
 
    tube_kt_9_9;
 
    tube_kt_12_7;
 
    tube_nf_16_7;
 
    tube_nf_11_7;
 
    tube_nf_12_9;
 
    tube_nf_15_7;
 
    tube_rt_12_6;
 
};
 
 
atl_nih_tube_container_inv = room {
 
    nam = "atl_nih_tube_container_inv";
 
    disp = "Атлантида, Терра, главный коридор";
 
    dsc = [[В ящике сложены трубы различных диаметров и размеров. Все трубы промаркированы:]];
 
    way = {
 
        kh_vroom("Отойти от ящика", "atl_terra_main_corridor");
 
    };
 
    obj = {
 
        
 
    };
 
};
 
 
tube_nf_14_6 = tube { nam = "tube_nf_14_6"; t = "NF"; l = 14; d = 6; };
 
tube_nf_10_7 = tube { nam = "tube_nf_10_7"; t = "NF"; l = 10; d = 7; };
 
tube_nf_11_9 = tube { nam = "tube_nf_11_9"; t = "NF"; l = 11; d = 9; };
 
tube_nf_14_7 = tube { nam = "tube_nf_14_7"; t = "NF"; l = 14; d = 7; };
 
tube_tq_14_6 = tube { nam = "tube_tq_14_6"; t = "TQ"; l = 14; d = 6; };
 
tube_tq_17_5 = tube { nam = "tube_tq_17_5"; t = "TQ"; l = 17; d = 5; };
 
tube_rt_12_7 = tube { nam = "tube_rt_12_7"; t = "RT"; l = 12; d = 7; };
 
tube_kt_13_9 = tube { nam = "tube_kt_13_9"; t = "KT"; l = 13; d = 9; };
 
 
tubes_aqua = {
 
    tube_nf_14_6;
 
    tube_nf_10_7;
 
    tube_nf_11_9;
 
    tube_nf_14_7;
 
    tube_tq_14_6;
 
    tube_tq_17_5;
 
    tube_rt_12_7;
 
    tube_kt_13_9;
 
};
 
 
atl_nih_tube_container2_inv = room {
 
    nam = "atl_nih_tube_container2_inv";
 
    disp = "Атлантида, Аква, склад B";
 
    dsc = [[У стены сложены трубы различных диаметров и размеров. Все трубы промаркированы:]];
 
    way = {
 
        kh_vroom("Отойти от ящика", "atl_aqua_warehouse_b");
 
    };
 
    obj = {
 
        
 
    };
 
};
 
 
atl_nih_tube_container:disable();
 
atl_nih_tube_container2:disable();
 
atl_nih_tubes_near_aqua:disable();
 
atl_nih_panel_near_a:disable();
 
atl_nih_panel_near_admin:disable();
 
@@ -1129,45 +1351,125 @@ atl_nih_tubes_aqua:disable();
 
atl_nih_tubes_aqua_a:disable();
 
atl_nih_tubes_aqua_b:disable();
 
 
nih_tubes_array = {
 
    atl_nih_tubes_near_aqua,
 
    atl_nih_panel_near_a,
 
    atl_nih_panel_near_admin,
 
    atl_nih_panel_near_luna,
 
    atl_nih_boxes_near_oculus,
 
    atl_nih_boxes_near_terra,
 
    atl_nih_tubes_near_arctos,
 
    atl_nih_panel_oculus,
 
    atl_nih_boxes_terra,
 
    atl_nih_tubes_luna,
 
    atl_nih_tubes_arctos,
 
    atl_nih_tubes_aqua,
 
    atl_nih_tubes_aqua_a,
 
    atl_nih_tubes_aqua_b,
 
};
 
 
nih_array = {
 
    atl_nih_tubes_near_aqua;
 
    atl_nih_tubes_near_a;
 
    atl_nih_tubes_near_admin;
 
    atl_nih_tubes_near_luna;
 
    atl_nih_tubes_near_oculus;
 
    atl_nih_tubes_near_terra;
 
    atl_nih_tubes_near_arctos;
 
    atl_nih_tubes_oculus;
 
    atl_nih_tubes_terra;
 
    atl_nih_tubes_luna;
 
    atl_nih_tubes_arctos;
 
    atl_nih_tubes_aqua;
 
    atl_nih_tubes_aqua_a;
 
    atl_nih_tubes_aqua_b;
 
    atl_nih_panel_near_a;
 
    atl_nih_panel_near_admin;
 
    atl_nih_panel_near_luna;
 
    atl_nih_panel_oculus;
 
    atl_nih_boxes_near_oculus;
 
    atl_nih_boxes_near_terra;
 
    atl_nih_boxes_terra;
 
    atl_nih_tube_container;
 
    atl_nih_tube_container2;
 
};
 
 
nih_array2 = {
 
    atl_nih_tubes_near_aqua,
 
    atl_nih_panel_near_a,
 
    atl_nih_panel_near_admin,
 
    atl_nih_panel_near_luna,
 
    atl_nih_boxes_near_oculus,
 
    atl_nih_boxes_near_terra,
 
    atl_nih_tubes_near_arctos,
 
    atl_nih_panel_oculus,
 
    atl_nih_boxes_terra,
 
    atl_nih_tubes_luna,
 
    atl_nih_tubes_arctos,
 
    atl_nih_tubes_aqua,
 
    atl_nih_tubes_aqua_a,
 
    atl_nih_tubes_aqua_b,
 
    atl_nih_tube_container,
 
    atl_nih_tube_container2,
 
};
 
 
disable_nih = function()
 
    remove(atl_item_tube_spec, pl);
 
    for i = 1, #nih_array do
 
        nih_array[i]:disable();
 
    end;
 
    
 
    for i = 1, #tubes_terra do
 
        remove(tubes_terra[i], pl);
 
    end;
 
    
 
    for i = 1, #tubes_aqua do
 
        remove(tubes_aqua[i], pl);
 
    end;
 
end;
 
 
function atlantis_init()
 
    print("init atl");
 
    for i = 1, #tubes_terra do
 
        put(tubes_terra[i], atl_nih_tube_container_inv);
 
    end;
 
    
 
    for i = 1, #tubes_aqua do
 
        put(tubes_aqua[i], atl_nih_tube_container2_inv);
 
    end;
 
end;
 
 
atl_nih_init = function()
 
	atl_nih_state = 1;
 
	local nih_array = {
 
		atl_nih_tubes_near_aqua,
 
		atl_nih_tubes_near_a,
 
		atl_nih_tubes_near_admin,
 
		atl_nih_tubes_near_luna,
 
		atl_nih_tubes_near_oculus,
 
		atl_nih_tubes_near_terra,
 
		atl_nih_tubes_near_arctos,
 
		atl_nih_tubes_oculus,
 
		atl_nih_tubes_terra,
 
		atl_nih_tubes_luna,
 
		atl_nih_tubes_arctos,
 
		atl_nih_tubes_aqua,
 
		atl_nih_tubes_aqua_a,
 
		atl_nih_tubes_aqua_b
 
	};
 
	
 
	local nih_array2 = {
 
		atl_nih_tubes_near_aqua,
 
		atl_nih_panel_near_a,
 
		atl_nih_panel_near_admin,
 
		atl_nih_panel_near_luna,
 
		atl_nih_boxes_near_oculus,
 
		atl_nih_boxes_near_terra,
 
		atl_nih_tubes_near_arctos,
 
		atl_nih_panel_oculus,
 
		atl_nih_boxes_terra,
 
		atl_nih_tubes_luna,
 
		atl_nih_tubes_arctos,
 
		atl_nih_tubes_aqua,
 
		atl_nih_tubes_aqua_a,
 
		atl_nih_tubes_aqua_b
 
	};
 
	
 
	nih_array[rnd(#nih_array)].broken = true;
 
	
 
	for i = 1, #nih_array2 do
 
		nih_array2[i]:enable();
 
	end;
 
    atl_nih_state = 1;
 
    local nih_array_rt = {
 
        atl_nih_tubes_near_aqua;
 
        atl_nih_tubes_near_a;
 
        atl_nih_tubes_near_admin;
 
    };
 
    local nih_array_kt = {
 
        atl_nih_tubes_near_luna;
 
        atl_nih_tubes_near_arctos;
 
        atl_nih_tubes_luna;
 
        atl_nih_tubes_arctos;
 
    };
 
    local nih_array_nf = {
 
        atl_nih_tubes_near_oculus;
 
        atl_nih_tubes_near_terra;
 
        atl_nih_tubes_oculus;
 
        atl_nih_tubes_terra;
 
    };
 
    local nih_array_tq = {
 
        atl_nih_tubes_aqua;
 
        atl_nih_tubes_aqua_a;
 
        atl_nih_tubes_aqua_b;
 
    };
 
 
    nih_array_rt[rnd(#nih_array_rt)].broken = true;
 
    nih_array_kt[rnd(#nih_array_kt)].broken = true;
 
    nih_array_nf[rnd(#nih_array_nf)].broken = true;
 
    nih_array_tq[rnd(#nih_array_tq)].broken = true;
 
 
    for i = 1, #nih_array2 do
 
        nih_array2[i]:enable();
 
    end;
 
end;
 
\ No newline at end of file
atlantis_catching_the_tail.lua
Show inline comments
 
deleted file
atlantis_dlg.lua
Show inline comments
 
char_darkstar_dlg = dlg {
 
	var {
 
		state = 0;
 
        fta = 0;      
 
	};
 
	nam = "Винсент Даркстар";
 
	disp = "Винсент Даркстар";
 
	entered = function(s)
 
    
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");
 
        if (atl_rep_darkstar < 0) then
 
            if (char_darkstar.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_darkstar.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_darkstar.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_darkstar.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_darkstar.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_darkstar.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_darkstar.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_darkstar.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_darkstar.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_darkstar.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_darkstar.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_darkstar.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_darkstar.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_darkstar.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_darkstar.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_darkstar.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_darkstar.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_darkstar.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_darkstar.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_darkstar.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            if (atl_iof_completed) then
 
                if (char_darkstar.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_darkstar.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_darkstar.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            if (char_darkstar.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_darkstar.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_darkstar.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_darkstar.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_darkstar.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_darkstar.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;
 
    
 
	enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Винсент Даркстар недовольно смотрит на вас: "Господин Дрейк. Вы вообще понимаете, что делаете? Это последнее предупреждение. В следующий раз я приму меры. Все ясно? "]];
 
        end;
 
    
 
		if (atl_lfc_leroy_spoken) then
 
		if atl_lfc_leroy_spoken and atl_lfc_leroy_spoken ~= 0 then
 
			pon("accuse_leroy");
 
		end;
 
		
 
		if (atl_lfc_goldman_spoken) then
 
		if atl_lfc_goldman_spoken and atl_lfc_goldman_spoken ~= 0 then
 
			pon("accuse_goldman");
 
		end;
 
 
		poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr");
 
      
 
        if (atl_rep_darkstar < 0) then
 
            if (char_darkstar.drake_asked == 0) then pon("on_drake"); end;
 
            if (char_darkstar.black_asked == 0) then pon("on_black"); end;
 
            if (char_darkstar.darkstar_asked == 0) then pon("on_darkstar"); end;
 
            if (char_darkstar.svetlova_asked == 0) then pon("on_svetlova"); end;
 
            if (char_darkstar.moreau_asked == 0) then pon("on_moreau"); end;
 
            if (char_darkstar.wright_asked == 0) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_darkstar.leroy_asked == 0) then pon("on_leroy"); end;
 
                if (char_darkstar.jones_asked == 0) then pon("on_jones"); end;
 
                if (char_darkstar.goldman_asked == 0) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_darkstar.atlantis_asked == 0) then pon("on_atlantis"); end;
 
            
 
            if (char_darkstar.navjiarr_asked == 0) then pon("on_navjiarr"); end;
 
            if (char_darkstar.learr_asked == 0) then pon("on_learr"); end;
 
            if (char_darkstar.ryveerr_asked == 0) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_darkstar.aikerjarr_asked == 0) then pon("on_aikerjarr"); end;
 
        else
 
            if (char_darkstar.drake_asked < 2) then pon("on_drake"); end;
 
            if (char_darkstar.black_asked < 2) then pon("on_black"); end;
 
            if (char_darkstar.darkstar_asked < 2) then pon("on_darkstar"); end;
 
            if (char_darkstar.svetlova_asked < 2) then pon("on_svetlova"); end;
 
            if (char_darkstar.moreau_asked < 2) then pon("on_moreau"); end;
 
            if (char_darkstar.wright_asked < 2) then pon("on_wright"); end;
 
            if (atl_iof_completed) then
 
                if (char_darkstar.leroy_asked < 2) then pon("on_leroy"); end;
 
                if (char_darkstar.jones_asked < 2) then pon("on_jones"); end;
 
                if (char_darkstar.goldman_asked < 2) then pon("on_goldman"); end;
 
            end;
 
            if (char_darkstar.atlantis_asked < 2) then pon("on_atlantis"); end;
 
            
 
            if (char_darkstar.navjiarr_asked < 2) then pon("on_navjiarr"); end;
 
            if (char_darkstar.learr_asked < 2) then pon("on_learr"); end;
 
            if (atl_iof_learr_dead and char_darkstar.learr_asked < 3) then pon("on_learr"); end;
 
            if (char_darkstar.ryveerr_asked < 2) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_darkstar.aikerjarr_asked < 2) then pon("on_aikerjarr"); end;
 
		s:reset_more();
 
        
 
        poff("accuse_saboteur", "accuse_saboteur_g", "show_clock", "show_clock_g");
 
        if (have(item_goldmans_clock)) then
 
            pon("show_clock", "show_clock_g");
 
        end;
 
        if (atl_lfc_saboteur_known and atl_lfc_state < 3) then
 
            pon("accuse_saboteur", "accuse_saboteur_g");
 
        end;
 
        
 
        
 
		if (s.state == 0) then
 
			psub("first_meeting");
 
            s.state = 1;         
 
			return [[За столом сидит средних лет мужчина с короткими черными волосами. Он одет в строгий деловой костюм черного цвета. Лицо его гладко выбрито. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он приветствует вас: "Добро пожаловать на Атлантиду, господин Дрейк. Я Винсент Даркстар, мы уже общались по радио. Я занимаю на Атлантиде пост начальника службы безопаности". ]];
 
		elseif (atl_fta_state == 2) then
 
			psub("fta");
 
		elseif (atl_fta_state == 2 or atl_fta_state == 3) and not atl_fta_darkstar_debrief then
 
	        atl_fta_darkstar_debrief = true;
 
            psub("fta");
 
			return [[Винсент Даркстар приказывает: "Рассказывайте". ]];
 
        elseif (atl_lfc_state == 3 or atl_lfc_state == 4) then
 
            if (atl_lfc_state == 3) then
 
                atl_lfc_state = 4;
 
                local r = 0;
 
                if (atl_rep_darkstar >= 0) then r = r + 1; end;
 
                if (atl_rep_svetlova >= 0) then r = r + 1; end;
 
                if (atl_rep_moreau >= 0) then r = r + 1; end;
 
                if (atl_rep_wright >= 0) then r = r + 1; end;
 
                atl_lfc_court_allowed = r > 0;
 
            end;
 
            if (atl_lfc_court_allowed) then
 
                psub("lfc_ending_court");
 
                if atl_lfc_goldman_exposed then
 
                    if leroy_state == 4 then
 
                        pon("goldman_only");
 
                        return [[Винсент Даркстар сообщает вам: "Дрейк. В ближайшее время мы будем решать, что делать с саботажником. Я рекомендую вам поговорить с руководителями станции, после чего возвращайтесь и мы приступим к совещанию". ]];
 
                    else
 
                        pon("leroy_and_goldman");
 
                        if (atl_lfc_leroy_goldman) then
 
                            return [[Винсент Даркстар сообщает вам: "Дрейк. Леруа сдал еще одного человека, замешанного в саботаже -- Леонарда Голдмана. В ближайшее время мы будем решать, что делать с саботажниками. Я рекомендую вам поговорить с руководителями станции, после чего возвращайтесь и мы приступим к совещанию". ]];
 
                        else
 
                            return [[Винсент Даркстар сообщает вам: "Дрейк. В ближайшее время мы будем решать, что делать с саботажниками. Я рекомендую вам поговорить с руководителями станции, после чего возвращайтесь и мы приступим к совещанию". ]];
 
                        end;
 
                    end;
 
                else
 
                    pon("leroy_only");
 
                    return [[Винсент Даркстар сообщает вам: "Дрейк. В ближайшее время мы будем решать, что делать с саботажником. Я рекомендую вам поговорить с руководителями станции, после чего возвращайтесь и мы приступим к совещанию". ]];
 
                end;
 
            else
 
                atl_lfc_state = 5;
 
                psub("generic");
 
                if (atl_lfc_goldman_exposed) then
 
                    return [[Винсент Даркстар сообщает вам: "Дрейк. Вы отлично помогли в поимке саботажников. Выражаю вам свою благодарность. Советом станции было принято решение заключить их под стражу на неопределенный срок. Моро сказал, что хочет с вами поговорить, так что отправляйтесь к нему". ]];
 
                end;
 
            end;
 
		else
 
			psub("generic");
 
			return [[Винсент Даркстар сообщает: "Я слушаю". ]];
 
		end;
 
	end;
 
    phr = {
 
        {tag="lfc_ending_court"};
 
        {tag="goldman_only", false, always = true, "Какое наказание ждет подсудимого?", [[Даркстар отвечает: "Я бы расстрелял его на месте, но я не могу принимать решения единолично". ]]};
 
        {tag="leroy_and_goldman", false, always = true, "Какое наказание ждет подсудимых?", [[Даркстар отвечает: "Я бы расстрелял их на месте, но я не могу принимать решения единолично". ]]};
 
        {tag="leroy_only", false, always = true, "Какое наказание ждет подсудимого?", [[Даркстар отвечает: "Я бы расстрелял его на месте, но я не могу принимать решения единолично". ]]};
 
        {always = true, "Я готов.", function(s)
 
            atl_lfc_state = 5;
 
            if atl_lfc_goldman_exposed then
 
                pr([[Даркстар поднимает трубку, поворачивает наборный диск, ждет немного и сообщает: "Моро, Светлова, Райт. Жду вас в своем кабинете". ^^]]);
 
            else
 
                pr([[Даркстар поднимает трубку, поворачивает наборный диск, ждет немного и сообщает: "Моро, Светлова, Райт. Жду вас в своем кабинете". ^^]]);
 
            end;
 
            walk("atl_lfc_court");
 
        end};
 
        {always = true, "Я вернусь когда буду готов.", function(s)
 
            back();
 
            return [[Даркстар кивает: "Я жду". ]];
 
        end};
 
        {tag="lfc_warning"};
 
        {always = true, "Так точно.", [[Даркстар кивает: "Отлично. Вам нужно что-то еще?"]], code[[ atl_lfc_panic_warning = 3; psub("generic")]]};
 
		{tag="first_meeting"};
 
		{"Что мне нужно сделать, чтобы мне вернули Левиафан?", [[Винсент Даркстар хлопает ладонями о стол и уверенно сообщает: "Вести себя хорошо и не делать глупостей". ]]};
 
		{"Когда мне вернут Левиафан?", [[Винсент Даркстар отвечает: "Всему свое время. Используйте это время с пользой. Если хотите найти Уильяма, сначала стоит выяснить где и как его искать. И вам не помешает узнать кое-что помимо этого". ]]};
 
		{"Я пришел кое-что спросить. ", [[Винсент Даркстар сообщает :"Я слушаю". ]], code [[psub("generic");]]};
 
		{"Я пришел кое-что спросить. ", [[Винсент Даркстар сообщает: "Я слушаю". ]], code [[psub("generic");]]};
 
        {tag="ask_more"};
 
        {tag="on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_darkstar < 0) then
 
@@ -141,7 +208,7 @@ char_darkstar_dlg = dlg {
 
                return [[Винсент Даркстар отвечает: "Мне нечего вам сказать". ]];
 
            else
 
                char_darkstar.leroy_asked = 2;
 
                return [[Винсент Даркстар отвечает: "Леруа много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он не выглядит настолько глупым, чтобы саботировать работу станции, однако он один из немногих подпадающих под подозрение. Вообще-то, интересоваться сотрудниками Атлантиды - моя работа, а не ваша". ]];
 
                return [[Винсент Даркстар отвечает: "Леруа много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он не выглядит настолько глупым, чтобы саботировать работу станции, однако он один из немногих подпадающих под подозрение. Вообще-то, интересоваться сотрудниками Атлантиды -- моя работа, а не ваша". ]];
 
            end;
 
        end};
 
        {tag="on_jones", false, "Что вы думаете о Чарли Джонсе? ", function()
 
@@ -150,7 +217,7 @@ char_darkstar_dlg = dlg {
 
                return [[Винсент Даркстар отвечает: "Мне нечего вам сказать". ]];
 
            else
 
                char_darkstar.jones_asked = 2;
 
                return [[Винсент Даркстар отвечает: "Джонс много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он недостаточно смел, чтобы попытаться саботировать работу станции, однако он один из немногих попадающих под подозрение. Вообще-то, интересоваться сотрудниками Атлантиды - моя работа, а не ваша". ]];
 
                return [[Винсент Даркстар отвечает: "Джонс много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он недостаточно смел, чтобы попытаться саботировать работу станции, однако он один из немногих попадающих под подозрение. Вообще-то, интересоваться сотрудниками Атлантиды -- моя работа, а не ваша". ]];
 
            end;
 
        end};
 
        {tag="on_goldman", false, "Что вы думаете о Леонарде Голдмане? ", function()
 
@@ -159,7 +226,7 @@ char_darkstar_dlg = dlg {
 
                return [[Винсент Даркстар отвечает: "Мне нечего вам сказать". ]];
 
            else
 
                char_darkstar.goldman_asked = 2;
 
                return [[Винсент Даркстар отвечает: "Голдман много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он эмоционально неуравновешен. Если бы он устроил аварию, он бы уже выдал себя. Однако, он один из немногих, кому хватает знаний, чтобы спланировать саботаж. Вообще-то, интересоваться сотрудниками Атлантиды - моя работа, а не ваша". ]];
 
                return [[Винсент Даркстар отвечает: "Голдман много знает об устройстве Атлантиды и он открыто выступает в пользу закрытия станции и возвращения на поверхность. Он эмоционально неуравновешен. Если бы он устроил аварию, он бы уже выдал себя. Однако, он один из немногих, кому хватает знаний, чтобы спланировать саботаж. Вообще-то, интересоваться сотрудниками Атлантиды -- моя работа, а не ваша". ]];
 
            end;
 
        end};
 
        {tag="on_atlantis", false, "Расскажите об Атлантиде. ", function()
 
@@ -168,7 +235,7 @@ char_darkstar_dlg = dlg {
 
                return [[Винсент Даркстар отвечает: "Мне нечего вам сказать". ]];
 
            else
 
                char_darkstar.atlantis_asked = 2;
 
                return [[Винсент Даркстар отвечает: "Атлантида построена на средства Вестхейвен Трансоушен -- компании вашего отца. Майкл Райт -- создатель станции, многое продумал, существенно облегчив мне работу. Конечно, периодически, мне приходится иметь дело с нарушениями правил -- я неоднократно просил не загромоздать коридоры; всегда закрывать за собой шлюзы, двери, щитки, панели; не перекрывать посторонними предметами доступ к важным узлам станции. Думаю, вы сами заметили, как исполняются эти указания". ]];
 
                return [[Винсент Даркстар отвечает: "Атлантида построена на средства Вестхейвен Трансоушен -- компании вашего отца. Майкл Райт -- создатель станции, многое продумал, существенно облегчив мне работу. Конечно, периодически, мне приходится иметь дело с нарушениями правил -- я неоднократно просил не загромождать коридоры; всегда закрывать за собой шлюзы, двери, щитки, панели; не перекрывать посторонними предметами доступ к важным узлам станции. Думаю, вы сами заметили, как исполняются эти указания". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах? ", function()
 
@@ -212,25 +279,60 @@ char_darkstar_dlg = dlg {
 
                return [[Винсент Даркстар отвечает: "Он будет создавать проблемы. Это не предположение, это -- факт". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Даркстар кивает: "Слушаю".]], code [[ pret(); ]]};
 
        {always=true, "Вернемся к делу.", [[Даркстар кивает: "Слушаю".]], code [[ char_darkstar_dlg:reset_more(); pret(); ]]};
 
		{tag="generic"};
 
		{tag="accuse_goldman", false, "Саботаж - дело рук Голдмана.", [[Даркстар недовольно отчитывает вас: "Во-первых, я вас просил не лезть в это дело. Во-вторых, я бы не был так уверен. В третьих, я еще раз прошу вас больше расследованию не мешать". ]], code [[ atl_lfc_suspect="goldman"; ]]};
 
		{tag="accuse_leroy", "Саботаж - дело рук Леруа.", [[Даркстар недовольно отчитывает вас: "Во-первых, я вас просил не лезть в это дело. Во-вторых, я бы не был так уверен. В третьих, я еще раз прошу вас больше расследованию не мешать". ]], code [[ atl_lfc_suspect="leroy"; ]]};
 
        {always=true, "У меня есть несколько вопросов.", [[Даркстар кивает: "Слушаю".]], code [[ psub('ask_more'); ]]};
 
		{always=true, "Я пойду", [[Даркстар прощается: "До встречи". ]], code [[ back(); ]]};
 
		{tag="fta"};
 
        {tag="show_clock_g", "[Показать часы] А еще я нашел там вот это.", [[Даркстар забирает часы и вертит их в руках: "Так-так-так. Франсуа Голдман. Леонард однозначно в этом замешан, но действовал он не один". ]], code [[ 
 
            atl_rep_darkstar = atl_rep_darkstar + 1;
 
            atl_lfc_goldman_exposed = true;
 
            remove("item_goldmans_clock", pl);
 
            walkin("atl_lfc_outro_expose_goldman"); 
 
        ]]};
 
        {tag="accuse_saboteur_g", "Голдман признался в саботаже и сдал Леруа... [Пересказать слова Голдмана]", [[Даркстар кивает: "Прекрасно. Вы далеко пойдете, Дрейк". ]], code [[
 
            atl_rep_darkstar = atl_rep_darkstar + 1;
 
            atl_lfc_goldman_exposed = true; 
 
            remove("item_goldmans_clock", pl); 
 
            walkin("atl_lfc_outro_expose"); 
 
        ]]};
 
		{tag="accuse_goldman", false, "Саботаж -- дело рук Голдмана.", [[Даркстар недовольно отчитывает вас: "Во-первых, я вас просил не лезть в это дело. Во-вторых, я бы не был так уверен. В третьих, я еще раз прошу вас больше расследованию не мешать". ]], code [[ atl_lfc_suspect="goldman"; ]]};
 
		{tag="accuse_leroy", false, "Саботаж -- дело рук Леруа.", [[Даркстар недовольно отчитывает вас: "Во-первых, я вас просил не лезть в это дело. Во-вторых, я бы не был так уверен. В третьих, я еще раз прошу вас больше расследованию не мешать". ]], code [[ atl_lfc_suspect="leroy"; ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Даркстар кивает: "Слушаю".]], code [[ psub('ask_more'); ]]};
 
		{always=true, "Я пойду.", [[Даркстар прощается: "До встречи". ]], code [[ back(); ]]};
 
        {tag="fta"};
 
		{"Что вы хотите услышать?", [[Даркстар поясняет: "Все, что произошло в Солисе и показалось вам подозрительным". ]]};
 
		{"Первый взрыв раздался, когда я был у входа в секцию[Кратко пересказать основные события]", [[Даркстар молча кивает. ]]};
 
		{"Один из клапанов работал неправильно - давление в нем было выше нормы", [[Даркстар с сомнением произносит: "Интересно. За десять лет работы станции такого никогда не было". ]]};
 
		{tag="clock", "[Показать часы]А еще я нашел там вот это", [[Даркстар забирает часы и вертит их в руках: "Так-так-так. Франсуа Голдман. Леонард однозначно в этом замешан, но действовал он не один. Я все еще думаю, что они попытаются вывести из строя одну из субмарин. Скорее всего их целью будет Наутилус". ]], code [[ atl_lfc_goldman_exposed = true; psub("why_nau"); ]]};
 
		{"Первый взрыв раздался, когда я был у входа в секцию... [Кратко пересказать основные события]", [[Даркстар молча кивает. ]], code [[
 
            char_darkstar_dlg.fta = char_darkstar_dlg.fta + 1;
 
            if char_darkstar_dlg.fta == 2 then
 
                psub("fta2");
 
            end;
 
        ]]};
 
		{"Один из клапанов работал неправильно: давление в нем было выше нормы.", [[Даркстар с сомнением произносит: "Интересно. За десять лет работы станции такого никогда не было". ]], code [[
 
            char_darkstar_dlg.fta = char_darkstar_dlg.fta + 1;
 
            if char_darkstar_dlg.fta == 2 then
 
                psub("fta2");
 
            end;
 
        ]]};
 
		{tag="show_clock", "[Показать часы] А еще я нашел там вот это.", [[Даркстар забирает часы и вертит их в руках: "Так-так-так. Франсуа Голдман. Леонард однозначно в этом замешан, но действовал он не один.". ]], code [[ 
 
            atl_rep_darkstar = atl_rep_darkstar + 1;
 
            atl_lfc_goldman_exposed = true;
 
            remove("item_goldmans_clock", pl); 
 
            walkin("atl_lfc_outro_expose_goldman"); 
 
        ]]};
 
        {tag="accuse_saboteur", "Голдман признался в саботаже и сдал Леруа... [Пересказать слова Голдмана]", [[Даркстар кивает: "Прекрасно. Вы далеко пойдете, Дрейк". ]], code [[ 
 
            atl_rep_darkstar = atl_rep_darkstar + 1; 
 
            atl_lfc_goldman_exposed = true; 
 
            remove("item_goldmans_clock", pl); 
 
            walkin("atl_lfc_outro_expose"); 
 
        ]]};
 
        {tag="fta2"};
 
        {"Что-то еще?", [[Даркстар скрещивает руки на груди и откидывается на спинку кресла, продолжая смотреть прямо вам в глаза. Он подтверждает: "Да, Дрейк. Мне понадобится ваша помощь. Я все еще считаю, что следующей целью саботажника станет Наутилус". ]], code [[ psub("why_nau"); ]]};
 
		{tag="why_nau"};
 
		{"Почему именно Наутилус?", [[Даркстар объясняет:"Саботажник хочет не убить всех, а поломать станцию. Он хочет наверх, а не умереть здесь. Наутилус - субмарина малого радиуса, а Энтерпрайз и Левиафан способны доставить нас на континенты". ]]};
 
		{"Соглашусь с вашим предположением", [[Даркстар кивает: "Хорошо. Я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]};
 
		{"Мне кажется, целью будет другая субмарина", [[Даркстар кивает: "Я это учел. Мы будем следить за всеми доками. Также, я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]};
 
		{"Почему именно Наутилус?", [[Даркстар объясняет:"Саботажник хочет не убить всех, а поломать станцию. Он хочет наверх, а не умереть здесь. Наутилус -- субмарина малого радиуса, а Энтерпрайз и Левиафан способны доставить нас на континенты". ]]};
 
		{"Соглашусь с вашим предположением.", [[Даркстар кивает: "Хорошо. Я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]};
 
		{"Мне кажется, целью будет другая субмарина.", [[Даркстар кивает: "Я это учел. Мы будем следить за всеми доками. Также, я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]};
 
		{tag="lfc_help"};
 
		{"Почему я?", [[Даркстар объясняет:"Я хочу свести количество людей, знающих о саботажах к минимуму, а вы уже в курсе ситуации". ]]};
 
		{"Что я должен сделать?", [[Даркстар рассказывает:"В семь часов вечера вы отправляетесь в док Наутилуса и наблюдаете за происходящим в течение ночи. Если вы замечаете что-то подозрительное - принимаете меры на ваше усмотрение", -- Даркстар достает из ящика стола револьвер и кладет перед вами: "Это вам не помешает".
 
		]], code [[
 
		{"Что я должен сделать?", [[Даркстар рассказывает:"Сейчас отправляетесь в док Наутилуса и наблюдаете за происходящим в течение ночи. Если вы замечаете что-то подозрительное -- принимаете меры на ваше усмотрение", -- Даркстар достает из ящика стола револьвер и кладет перед вами: "Это вам не помешает". ]], code [[
 
            remove(item_colt, "leviathan_captains_cabin");
 
			take(item_colt);
 
			atl_lfc_state = 2;
 
			back();
 
@@ -242,46 +344,89 @@ char_moreau_dlg = dlg {
 
	var {
 
		state = 0;
 
		lfc_dialog = false;
 
        lfc_out_dialog = false;
 
        lfc_goldman_imprison = 0;
 
        lfc_goldman_banish = 1;
 
        lfc_leroy_imprison = 0;
 
        lfc_leroy_banish = 1;
 
	};
 
	nam = "Фредерик Моро";
 
	disp = "Фредерик Моро";
 
	entered = function(s)
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");
 
        
 
        if (atl_rep_moreau < 0) then
 
            if (char_moreau.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_moreau.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_moreau.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_moreau.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_moreau.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_moreau.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_moreau.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_moreau.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_moreau.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            
 
            if (char_moreau.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_moreau.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_moreau.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if char_moreau.drake_asked < 2 then pon("on_drake"); pon("more_questions"); end;
 
            if char_moreau.black_asked < 2 then pon("on_black"); pon("more_questions"); end;
 
            if char_moreau.darkstar_asked < 2 then pon("on_darkstar"); pon("more_questions"); end;
 
            if char_moreau.svetlova_asked < 2 then pon("on_svetlova"); pon("more_questions"); end;
 
            if char_moreau.moreau_asked < 2 then pon("on_moreau"); pon("more_questions"); end;
 
            if char_moreau.wright_asked < 2 then pon("on_wright"); pon("more_questions"); end;
 
            if atl_iof_completed then
 
                if char_moreau.leroy_asked < 2 then pon("on_leroy"); pon("more_questions"); end;
 
                if char_moreau.jones_asked < 2 then pon("on_jones"); pon("more_questions"); end;
 
                if char_moreau.goldman_asked < 2 then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_moreau.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_moreau.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_moreau.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;   
 
	enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Фредерик Моро сообщает вам: "Месье Дрейк, добрый день. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
    
 
		if (atl_lfc_state == 3) then
 
			atl_lfc_state = 4;
 
			atl_lev_state = 1;
 
			local reputation = 0;
 
			if (atl_rep_darkstar > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_moreau > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_svetlova > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_wright > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			
 
			if (reputation > 2 and atl_rep_moreau >= 0) then
 
				psub("lfc_debrief_good");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Огромное спасибо. Посовещавшись, мы решили вернуть вам Левиафан. Также, вы можете посещать Атлантиду в любое удобное для вас время -- мы всегда будем рады вас видеть". ]];
 
			elseif (reputation > 2) then
 
				psub("lfc_debrief_good");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Посовещавшись, мы решили вернуть вам Левиафан. Также, мы решили не запрещать вам доступ на Атлантиду, но не думайте, что я рад вас видеть". ]];
 
			elseif (atl_rep_moreau >= 0) then
 
				psub("lfc_debrief_bad");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Огромное спасибо. Посовещавшись, мы решили вернуть вам Левиафан. К сожалению, совет решил ограничить вам доступ к станции, поэтому я прошу вас покинуть Атлантиду как можно скорее". ]];
 
			else
 
				psub("lfc_debrief_bad");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Посовещавшись, мы решили вернуть вам Левиафан. Убирайтесь и больше не возвращайтесь сюда". ]];
 
			end;
 
		end;
 
        
 
        if atl_lfc_state == 4 then
 
            if not s.lfc_out_dialog then
 
                s.lfc_out_dialog = true;
 
                if atl_rep_moreau >= 0 then
 
                    if atl_lfc_goldman_exposed then
 
                        poff("leroy");
 
                    else
 
                        poff("both", "goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
                    end;
 
                    psub("lfc_saboteur");
 
                    return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Даркстар сказал, что вы зайдете, чтобы обсудить поимку саботажников. Я вас слушаю". ]];
 
                else
 
                    psub("generic");
 
                    return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Даркстар сказал, что вы зайдете. Я не буду с вами ничего обсуждать, хоть совет и решил, что вы примете участие в суде". ]];
 
                end;
 
            end;
 
        elseif (atl_lfc_state == 5) then
 
            atl_lfc_state = 6;
 
            atl_lev_state = 1;
 
            
 
            psub("gratitude");
 
            return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы помогли нам с поимкой саботажника и мы приняли решение дать вам доступ к Левиафану. Он по-прежнему ждет вас в гостевом доке А секции Аква. Мы предоставм вам все необходимое, чтобы помочь в поисках отца. В настоящий момент Левиафан должен быть готов к отплытию". ]];
 
        end;
 
		
 
		if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
			s.lfc_dialog = true;
 
@@ -290,57 +435,13 @@ char_moreau_dlg = dlg {
 
            poff('sabotage', 'ignis_what');
 
		end;
 
        
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr");
 
        
 
        if (atl_rep_moreau < 0) then
 
            if (char_moreau.drake_asked == 0) then pon("on_drake"); end;
 
            if (char_moreau.black_asked == 0) then pon("on_black"); end;
 
            if (char_moreau.darkstar_asked == 0) then pon("on_darkstar"); end;
 
            if (char_moreau.svetlova_asked == 0) then pon("on_svetlova"); end;
 
            if (char_moreau.moreau_asked == 0) then pon("on_moreau"); end;
 
            if (char_moreau.wright_asked == 0) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_moreau.leroy_asked == 0) then pon("on_leroy"); end;
 
                if (char_moreau.jones_asked == 0) then pon("on_jones"); end;
 
                if (char_moreau.goldman_asked == 0) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked == 0) then pon("on_atlantis"); end;
 
            
 
            
 
            if (char_moreau.navjiarr_asked == 0) then pon("on_navjiarr"); end;
 
            if (char_moreau.learr_asked == 0) then pon("on_learr"); end;
 
            if (char_moreau.ryveerr_asked == 0) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked == 0) then pon("on_aikerjarr"); end;
 
        else
 
            if (char_moreau.drake_asked < 2) then pon("on_drake"); end;
 
            if (char_moreau.black_asked < 2) then pon("on_black"); end;
 
            if (char_moreau.darkstar_asked < 2) then pon("on_darkstar"); end;
 
            if (char_moreau.svetlova_asked < 2) then pon("on_svetlova"); end;
 
            if (char_moreau.moreau_asked < 2) then pon("on_moreau"); end;
 
            if (char_moreau.wright_asked < 2) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_moreau.leroy_asked < 2) then pon("on_leroy"); end;
 
                if (char_moreau.jones_asked < 2) then pon("on_jones"); end;
 
                if (char_moreau.goldman_asked < 2) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked < 2) then pon("on_atlantis"); end;
 
            
 
            if (char_moreau.navjiarr_asked < 2) then pon("on_navjiarr"); end;
 
            if (char_moreau.learr_asked < 2) then pon("on_learr"); end;
 
            if (atl_iof_learr_dead and char_moreau.learr_asked < 3) then pon("on_learr"); end;
 
            if (char_moreau.ryveerr_asked < 2) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked < 2) then pon("on_aikerjarr"); end;
 
        end;
 
        s:reset_more();
 
	
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[За столом перед вами сидит немолодой мужчина. Кудрявые седые волосы обрамляют его лицо. Он носит длинные седые усы. Одет человек в строгий деловой костюм бежевого цвета. Его серые глаза, скрытые очками, внимательно рассматривают вас. Вертя в руках перо он приветствует вас: "Добро пожаловать на Атлантиду, месье Дрейк. Мое имя - Фредерик Моро и я исполняю обязанности начальника станции в отсутствие Уильяма и Адриана. Ваше прибытие крайне удивило нас - мы думали, с поверхности найти нашу станцию невозможно. Пока мы думаем, что делать с вами дальше, вы можете воспользоваться ресурсами станции, чтобы узнать побольше о вашем отце и, быть может, понять, куда в точности он направился. Для начала, стоит немного ввести вас в курс дела".^
 
				Моро подходит к книжной полке и берет какую-то книгу. Вернувшись за стол, он раскрывает ее и приступает к рассказу: "Когда мы строили Надежду, нашей целью было создать быстрый и безопасный способ путешествий через Атлантику. Однако, все с самого начала пошло не так, как планировалось. Мы встретили племя подводных существ, именующих себя навьярами - они похожи на рыб и людей одновременно - ходят на двух ногах, используют две руки, но покрыты чешуей и имеют жабры. Тогда мы приняли решение исследовать их тщательнее. Были построены Энтерпрайз, Наутилус и сама Атлантида. Потом мы переселились сюда. Дрейк был захвачен одной из легенд этих рыбней и не так давно, наконец, решился отправиться в экспедицию". ]];
 
			return [[За столом перед вами сидит немолодой мужчина. Кудрявые седые волосы обрамляют его лицо. Он носит длинные седые усы. Одет человек в строгий деловой костюм бежевого цвета. Его серые глаза, скрытые очками, внимательно рассматривают вас. Вертя в руках перо он приветствует вас: "Добро пожаловать на Атлантиду, месье Дрейк. Мое имя -- Фредерик Моро, и я исполняю обязанности начальника станции в отсутствие Уильяма и Адриана. Ваше прибытие крайне удивило нас -- мы думали, с поверхности найти нашу станцию невозможно. Пока мы думаем, что делать с вами дальше, вы можете воспользоваться ресурсами станции, чтобы узнать побольше о вашем отце и, быть может, понять, куда в точности он направился. Для начала, стоит немного ввести вас в курс дела".^
 
				Моро подходит к книжной полке и берет какую-то книгу. Вернувшись за стол, он раскрывает ее и приступает к рассказу: "Когда мы строили Надежду, нашей целью было создать быстрый и безопасный способ путешествий через Атлантику. Однако, все с самого начала пошло не так, как планировалось. Мы встретили племя подводных существ, именующих себя навьярами -- они похожи на рыб и людей одновременно -- ходят на двух ногах, используют две руки, но покрыты чешуей и имеют жабры. Тогда мы приняли решение исследовать их тщательнее. Были построены Энтерпрайз, Наутилус и сама Атлантида. Потом мы переселились сюда. Дрейк был захвачен одной из легенд этих рыбней и не так давно, наконец, решился отправиться в экспедицию". ]];
 
		elseif (char_moreau.iof_reaction == 0 and atl_iof_completed) then
 
            char_moreau.iof_reaction = 1;      
 
            if (atl_iof_learr_dead) then
 
@@ -359,8 +460,63 @@ char_moreau_dlg = dlg {
 
		end;		
 
	end;
 
	phr = {
 
        {tag="gratitude"};
 
        {"Благодарю.", [[Моро говорит: "Вы хотите обсудить какие-то вопросы?"]], code [[psub("generic");]]};
 
        {tag="lfc_saboteur"};
 
        {tag="both","Что вы будете делать с саботажниками?", [[Фредерик Моро выдерживает паузу, после чего отвечает: "Я предлагаю высадить их где-нибудь в Северной Америке. На станции им не место". ]]};
 
        {tag="goldman_1", "Одному сумасшедшему никто не поверит, Голдмана стоит отпустить. ", [[Фредерик Моро кивает: "Я с вами полностью согласен". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_2", "Голдман -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Фредерик Моро кивает: "Поэтому я и предлагаю изгнать его". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_3", "Голдман хитер. На станции он представляет большую опасность, чем вне ее. ", [[Фредерик Моро пожимает плечами: "Не могу согласиться с вами. Голдман никогда не показывал себя с этой стороны". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_4", "Голдман просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[Фредерик Моро кивает: "Это заставляет меня пересмотреть мое решение". ]], code [[
 
            char_moreau_dlg.lfc_goldman_imprison = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_5", "Отпускать Голдмана на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Фредерик Моро отрицательно качает головой: "Что бы ни сделал Голдман, это неприемлемо". ]], code [[
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_6", "Голдман подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Фредерик Моро отрицательно качает головой: "Что бы ни сделал Голдман, это неприемлемо". ]], code [[
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_7", "Голдман хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Фредерик Моро пожимает плечами: "Не могу согласиться с вами. Голдман никогда не показывал себя с этой стороны". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="leroy", "Что вы будете делать с саботажником?", [[Фредерик Моро выдерживает паузу, после чего отвечает: "Я предлагаю высадить его где-нибудь в Северной Америке. На станции им не место". ]]};
 
        {tag="leroy_1", "Одному сумасшедшему никто не поверит, Леруа стоит отпустить. ", [[Фредерик Моро кивает: "Я с вами полностью согласен". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_2", "Леруа -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Фредерик Моро пожимает плечами: "Никак не могу согласиться с вами. Я могу назвать Мишеля кем угодно, но только не трусом". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_3", "Леруа хитер. На станции он представляет большую опасность, чем вне ее. ", [[Фредерик Моро кивает: "Поэтому я и предлагаю изгнать его". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_4", "Леруа просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[[Фредерик Моро отрицательно качает головой: "Это заставляет меня пересмотреть мое решение". ]], code [[
 
            char_moreau_dlg.lfc_goldman_imprison = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_5", "Отпускать Леруа на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Фредерик Моро отрицательно качает головой: "Что бы ни сделал Леруа, это неприемлемо". ]], code [[
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_6", "Леруа подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Фредерик Моро отрицательно качает головой: "Что бы ни сделал Леруа, это неприемлемо". ]], code [[
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_7", "Леруа хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Фредерик Моро кивает: "Соглашусь с вами. Лучше пусть посидит взаперти пока. А когда вернется Уильям, мы решим, что делать с ними". ]], code [[
 
            char_moreau_dlg.lfc_goldman_imprison = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {"Это все, что я хотел обсудить по данному вопросу. ", [[Фредерик Моро кивает и спрашивает: "Что-нибудь еще?"]], code [[ psub("generic");]] };
 
        {tag="lfc_warning"};
 
        {always = true, "Я пойду", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
        {always = true, "Я пойду.", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
        {tag="iof_learr_dead"};
 
        {"Я ничего не мог сделать. ", [[Фредерик Моро кивает: "Я понимаю". Немного помолчав он говорит: "Давайте к делу". ]], code [[psub("generic");]]};
 
        {"Давайте к делу. ", [[Фредерик Моро неодобрительно кивает: "Слушаю". ]], code [[
 
@@ -373,10 +529,9 @@ char_moreau_dlg = dlg {
 
        {"Рад, что никто не пострадал. ", [[Фредерик моро кивает: "Перейдем к делу". ]], code [[psub("generic");]]};
 
		{tag="first_meeting", empty = code[[ psub("generic"); ]]};
 
		{"Я не имею намерения раскрывать существование Атлантиды.", [[Фредерик Моро кивает: "Рад это слышать, но нам нужно больше чем ваши слова". ]]};
 
		{"Что за навьяры?", [[Фредерик Моро отвечает: _"Na'vji'a'rr -- с их языка это переводится, как ,,Живущие в глубинах''. Как я сказал, они чем-то похожи на людей, но по сути своей они -- рыбы. Подробнее о них вам стоит поговорить с нашими учеными в секции Окулус. Там же вы можете встретить Ривеерра и Леарр -- наших гостей из двух ближайших поселений навьяров"_. ]]};
 
		{"Как получилось, что Левиафан остался на поверхности?", [[Фредерик Моро задумчиво чешет подбородок. Через некоторое время он отвечает: _"Сложно сказать. Это было в ведении Майкла Райта. Скорее всего -- они с Дрейком сознательно спрятали его"_.
 
		]]};
 
        {"Куда конкретно направился Уильям?", [[Фредерик Моро вздыхает: "У нас нет точных данных. И похоже их не было и у Блэка с Дрейком. Мы знаем, что их цель - древний навьярский город". ]]};
 
		{"Что за навьяры?", [[Фредерик Моро отвечает: _"Na'vji'a'rr -- с их языка это переводится, как ,,Живущие в глубинах''. Как я сказал, они чем-то похожи на людей, но по сути своей они -- рыбы. Подробнее о них вам смогут нассказать наши ученые в секции Окулус. Там же вы можете встретить Ривеерра и Леарр -- наших гостей из двух ближайших поселений навьяров"_. ]]};
 
		{"Как получилось, что Левиафан остался на поверхности?", [[Фредерик Моро задумчиво чешет подбородок. Через некоторое время он отвечает: _"Сложно сказать. Это было в ведении Майкла Райта. Скорее всего, они с Дрейком сознательно спрятали его"_. ]]};
 
        {"Куда конкретно направился Уильям?", [[Фредерик Моро вздыхает: "У нас нет точных данных. И, похоже, их не было и у Блэка с Дрейком. Мы знаем, что их цель -- древний навьярский город". ]]};
 
        {tag="ask_more"};
 
        {tag="on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_moreau < 0) then
 
@@ -384,7 +539,7 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.drake_asked = 2;
 
                return [[Фредерик Моро отвечает: "Уильям Дрейк безусловно гениальный предприниматель и грамотный руководитель, однако он не достиг бы таких успехов, если бы работал один. Адриан Блэк всегда помогал ему управлять компанией. Майкл Райт придумал и построил многие суда компании. Уильям всегда понимал важность сотрудников Вестхейвен Трансоушен и оказывал и продолжает оказывать должное уважение всем нам". ]];
 
                return [[Фредерик Моро отвечает: "Уильям Дрейк, безусловно, гениальный предприниматель и грамотный руководитель, однако он не достиг бы таких успехов, если бы работал один. Адриан Блэк всегда помогал ему управлять компанией. Майкл Райт придумал и построил многие суда компании. Уильям всегда понимал важность сотрудников Вестхейвен Трансоушен и оказывал и продолжает оказывать должное уважение всем нам". ]];
 
            end;
 
        end};
 
        {tag="on_black", false, "Расскажите об Адриане Блэке. ", function()
 
@@ -393,7 +548,7 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.black_asked = 2;
 
                return [[Фредерик Моро отвечает: "Адриан Блэк -- один из основателей Вестхейвен Трансоушен. Он совсем не похож на Уильяма -- осторожный и рассчетливый, он часто вступал в спор с Дрейком по поводу особенно рискованных предприятий. Ему мы тоже многим обязаны, но, если говорить честно, Уильям был гораздо популярнее среди сотрудников". ]];
 
                return [[Фредерик Моро отвечает: "Адриан Блэк -- один из основателей Вестхейвен Трансоушен. Он совсем не похож на Уильяма -- осторожный и рассчетливый, он часто вступал в спор с Дрейком по поводу особенно рискованных предприятий. Ему мы тоже многим обязаны, но, если говорить честно, Уильям гораздо популярнее среди сотрудников". ]];
 
            end;
 
        end};
 
        {tag="on_darkstar", false, "Расскажите о Винсенте Даркстаре. ", function()
 
@@ -402,7 +557,7 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.darkstar_asked = 2;
 
                return [[Фредерик Моро отвечает: "О нем мало что известно, да он и неразговорчив. Впрочем он справляется со своими обязанностями и Дрейк доверяет ему". ]];
 
                return [[Фредерик Моро отвечает: "О нем мало что известно, да он и неразговорчив. Впрочем, он справляется со своими обязанностями, и Дрейк доверяет ему". ]];
 
            end;
 
        end};
 
        {tag="on_svetlova", false, "Расскажите о Екатерине Светловой. ", function()
 
@@ -411,7 +566,7 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.svetlova_asked = 2;
 
                return [[Фредерик Моро отвечает: "Екатерина здесь только из-за навьяров. Ваш отец пригласил ее в Вестхейвен Трансоушен сразу после первой экспедиции Надежды. Сейчас она руководит исследованиями на Атлантиде. Она может показаться вам циничной, но, поверьте, это не вполне так". ]];
 
                return [[Фредерик Моро отвечает: "Екатерина здесь только из-за навьяров. Ваш отец пригласил ее в Вестхейвен Трансоушен сразу после первой экспедиции Надежды. Сейчас она руководит исследованиями на Атлантиде и отлично справляется благодаря личной заинтересованности в этом". ]];
 
            end;
 
        end};
 
        {tag="on_moreau", false, "Расскажите о себе. ", function()
 
@@ -474,7 +629,7 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.navjiarr_asked = 2;
 
                return [[Фредерик Моро отвечает: "Интересные существа. Наши ученые говорят, что они ближе к рыбам, чем к кому бы то ни было еще. Однако, они ходят на двух ногах, имеют руки, и способны дышать воздухом! Более подробно вам лучше говорить с учеными, не со мной, -- он делает небольшую паузу, -- Атлантида обязана им своим существованием. Если бы мы не встретили их при первой экспедиции, вряд ли кто-то стал бы строить эту станцию, тем более здесь. Первое время они создавали нам проблемы, но, к счастью, нам удалось их разрешить и наладить отношения с ними. Двое из них сейчас находятся на станции и вы можете погвоорить с ними". ]];
 
                return [[Фредерик Моро отвечает: "Интересные существа. Наши ученые говорят, что они ближе к рыбам, чем к нам. Однако, они ходят на двух ногах, имеют руки, способны дышать воздухом и мыслить! Более подробно вам расскажут ученые, -- он делает небольшую паузу, -- Атлантида обязана им своим существованием. Если бы мы не встретили их при первой экспедиции, вряд ли кто-то стал бы строить эту станцию, тем более здесь. Первое время они создавали нам проблемы, но, к счастью, нам удалось их разрешить и наладить отношения с ними. Сейчас на станции проживают двое навьяров: Леарр и Ривеерр. Думаю, они не откажутся от разговора с вами". ]];
 
            end;
 
        end};
 
        {tag="on_learr", false, "Что вы думаете о Леарр?", function()
 
@@ -487,7 +642,7 @@ char_moreau_dlg = dlg {
 
                    return [[Фредерик Моро тяжело вздыхает: "Ее гибель -- большая потеря для всех нас. Кажется, даже Винсент Даркстар, не способный, как мне казалось на дружеские чувства, относился к ней с некоторой теплотой". ]];
 
                else
 
                    char_moreau.learr_asked = 2;
 
                    return [[Фредерик Моро отвечает: "Милая девушка, хоть и рыба. Она, конечно, порой бывает надоедлива в виду своей излишней, на мой взгляд любознательности, но вы себя на ее месте представьте -- она родилась и росла в своей примитивной деревне, а тут мы -- неспособные дышать в воде, зато способные строить поразительные машины. Нет ничего удивительного, что она только и делает, что носится между Игнисом, Окулусом и Террой, расспрашивая всех обо всем". ]];
 
                    return [[Фредерик Моро отвечает: "Милая девушка, хоть и рыба. Она, конечно, порой бывает надоедлива ввиду своей излишней, на мой взгляд, любознательности, но вы себя на ее месте представьте -- она родилась и росла в своей примитивной деревне, а тут мы -- неспособные дышать в воде, зато способные строить поразительные машины. Нет ничего удивительного, что она только и делает, что носится между Игнисом, Окулусом и Террой, расспрашивая всех обо всем". ]];
 
                end;
 
            end;
 
        end};
 
@@ -509,19 +664,19 @@ char_moreau_dlg = dlg {
 
                return [[Фредерик Моро отвечает: "Пренеприятный персонаж. Будь моя воля -- я бы прогнал его со станции, и большая часть руководителей со мной согласна. Однако, понимая, какие у этого будут последствия, я вынужден позволить ему находиться здесь". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Фредерик Моро спрашивает: "Вы что-то хотели?"]], code [[ pret(); ]]};
 
        {always=true, "Вернемся к делу.", [[Фредерик Моро спрашивает: "Вы что-то хотели?"]], code [[ char_moreau_dlg:reset_more(); pret(); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", false, "Вы знаете, что пожар начался из-за саботажа?", [[Фредерик Моро несколько раз стучит пальцем по столу. Недовольным тоном он делает вам замечание: "Месье Дрейк, -- он выдерживает небольшую паузу, -- Если вы хотите вернуть себе Левиафан, вам стоит следовать нашим правилам и, в частности, не нарушать прямых наших распоряжений". ]], code [[
 
			atl_rep_moreau = atl_rep_moreau - 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
		]]};
 
		{tag="ignis_what", false, "Почему начался пожар в Игнисе?", [[Фредерик Моро пожимает плечами и как-то неуверенно проговаривает: "Не знаю. Этим вопросом занимаются инженеры и служба безопасности. Будьте спокойны, наши специалисты не допустят повторения аварии". ]]};
 
        {always=true, "У меня есть несколько вопросов.", [[Моро кивает: "Да, конечно. Я слушаю".]], code [[ psub('ask_more'); ]]};    
 
		{always = true, "Я пойду", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Моро кивает: "Да, конечно. Я слушаю".]], code [[ psub('ask_more'); ]]};    
 
		{always = true, "Я пойду.", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
		{tag="lfc_debrief_good"};
 
		{always = true, "Спасибо, это все.", [[Моро спрашивает: "Вы что-то хотели?". ]], code [[ psub("generic");]]};
 
		{tag="lfc_debrief_bad"};
 
		{always = true, "Я пойду", [[Моро кивает. ]], code [[ walk("game_over_banished"); ]]};
 
		{always = true, "Я пойду.", [[Моро кивает. ]], code [[ walk("game_over_banished"); ]]};
 
	};
 
};
 
 
@@ -532,64 +687,95 @@ char_svetlova_dlg = dlg {
 
		lfc_dialog = false;
 
		flag_help = false;
 
		flag_explain = false;
 
        lfc_out_dialog = false;
 
        dyp_quest = false;
 
        lfc_goldman_execute = 0;
 
        lfc_goldman_imprison = 1;
 
        lfc_goldman_banish = 0;
 
        lfc_leroy_execute = 0;
 
        lfc_leroy_imprison = 1;
 
        lfc_leroy_banish = 0;
 
	};
 
	nam = "Екатерина Светлова";
 
	disp = "Екатерина Светлова";
 
	entered = function(s)
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");
 
        if (atl_rep_svetlova < 0) then
 
            if (char_svetlova.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_svetlova.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_svetlova.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_svetlova.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_svetlova.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_svetlova.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_svetlova.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_svetlova.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            
 
            if (char_svetlova.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_svetlova.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_svetlova.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_svetlova.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_svetlova.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_svetlova.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_svetlova.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_svetlova.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_svetlova.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_svetlova.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_svetlova.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_svetlova.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_svetlova.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_svetlova.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;
 
	enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Екатерина Светлова сообщает вам: "Добрый день, господин Дрейк. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
    
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr");
 
        if (atl_rep_svetlova < 0) then
 
            if (char_svetlova.drake_asked == 0) then pon("on_drake"); end;
 
            if (char_svetlova.black_asked == 0) then pon("on_black"); end;
 
            if (char_svetlova.darkstar_asked == 0) then pon("on_darkstar"); end;
 
            if (char_svetlova.svetlova_asked == 0) then pon("on_svetlova"); end;
 
            if (char_svetlova.moreau_asked == 0) then pon("on_moreau"); end;
 
            if (char_svetlova.wright_asked == 0) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked == 0) then pon("on_leroy"); end;
 
                if (char_svetlova.jones_asked == 0) then pon("on_jones"); end;
 
                if (char_svetlova.goldman_asked == 0) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked == 0) then pon("on_atlantis"); end;
 
            
 
            
 
            if (char_svetlova.navjiarr_asked == 0) then pon("on_navjiarr"); end;
 
            if (char_svetlova.learr_asked == 0) then pon("on_learr"); end;
 
            if (char_svetlova.ryveerr_asked == 0) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked == 0) then pon("on_aikerjarr"); end;
 
        else
 
            if (char_svetlova.drake_asked < 2) then pon("on_drake"); end;
 
            if (char_svetlova.black_asked < 2) then pon("on_black"); end;
 
            if (char_svetlova.darkstar_asked < 2) then pon("on_darkstar"); end;
 
            if (char_svetlova.svetlova_asked < 2) then pon("on_svetlova"); end;
 
            if (char_svetlova.moreau_asked < 2) then pon("on_moreau"); end;
 
            if (char_svetlova.wright_asked < 2) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked < 2) then pon("on_leroy"); end;
 
                if (char_svetlova.jones_asked < 2) then pon("on_jones"); end;
 
                if (char_svetlova.goldman_asked < 2) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked < 2) then pon("on_atlantis"); end;
 
            
 
            if (char_svetlova.navjiarr_asked < 2) then pon("on_navjiarr"); end;
 
            if (char_svetlova.learr_asked < 2) then pon("on_learr"); end;
 
            if (atl_iof_learr_dead and char_svetlova.learr_asked < 3) then pon("on_learr"); end;
 
            if (char_svetlova.ryveerr_asked < 2) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked < 2) then pon("on_aikerjarr"); end;
 
        s:reset_more();
 
        
 
        if have(dyp_item_star_map) and not have(dyp_item_star_map_copy) and not atl_star_map_copied then
 
            pon("copy_star_map");
 
        end;
 
        
 
        if (atl_star_map_copied) then
 
            pon("copy_star_map_2");
 
        end;
 
        
 
        if dyp_quest_state == 1 and not s.dyp_quest then
 
            s.dyp_quest = true;
 
            pon('dyp_quest');
 
        end;
 
        
 
        poff("iyh1_learr", "iyh1_aikerjarr");
 
        if (atl_iyh_state == 1 and atl_iyh_learr_spoken and atl_iyh_ryveerr_spoken) then
 
            pon('iyh1_learr');
 
        elseif (atl_iyh_state == 1 and atl_iyh_aikerjarr_spoken and atl_iyh_ryveerr_spoken) then
 
            pon('iyh1_aikerjarr');
 
        end;
 
    
 
		if (s.state == 0) then
 
			psub('first_meeting');
 
            s.state = 1;         
 
			return [[За столом сидит женщина лет сорока-пяти. Золотистые волосы собраны в пучок на затылке. Она одета в простое синее платье. В правой руке она держит карандаш, которым периодически делает пометки в бумагах, лежащих на столе. Она отрывает взгляд от бумаг и приветствует вас: _"Добрый день, господин Дрейк. Мое имя -- Екатерина Светлова, я управляю исследованиями на Атлантиде. Должна признать, вы нас всех узрядно напугали. Даркстар сказал, что вы зайдете. Думаю, вы будете полезны нам. У меня есть предложение для вас. Я знаю, что вы ищете своего отца. Уходя в экспедицию, он не оставил нам почти никаких материалов -- карты, схемы, переводы -- они забрали все с собой. Я прошу вас помочь нам с некоторыми проблемами. Взамен -- мы предоставим вам все имеющиеся у нас материалы. Возможно они помогут вам найти отца"_.]];
 
			return [[За столом сидит женщина лет сорока-пяти. Золотистые волосы собраны в пучок на затылке. Она одета в простое синее платье. В правой руке она держит карандаш, которым периодически делает пометки в бумагах, лежащих на столе. ^Она отрывает взгляд от бумаг и приветствует вас: _"Добрый день, господин Дрейк. Мое имя -- Екатерина Светлова, я управляю исследованиями на Атлантиде. Даркстар сказал, что вы зайдете. ^Должна признать, вы нас всех изрядно напугали, появившись вот так внезапно. Однако, думаю, вы будете полезны нам. ^У меня есть предложение для вас. Я знаю, что вы ищете своего отца. Уходя в экспедицию, он не оставил нам почти никаких материалов -- карты, схемы, переводы -- они забрали все с собой. Я прошу вас помочь нам с некоторыми проблемами. Взамен мы предоставим вам все имеющиеся у нас материалы. Возможно, они помогут вам найти отца"_.]];
 
        elseif (char_svetlova.iof_reaction == 0 and atl_iof_completed) then
 
            char_svetlova.iof_reaction = 1;
 
            if (atl_iof_learr_dead) then
 
@@ -606,19 +792,61 @@ char_svetlova_dlg = dlg {
 
			psub('ryveerr_on_steal');
 
			return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Ну как? Поговорили с Ривеерром?" ]];
 
        else
 
            if atl_lfc_state == 4 then
 
                if not s.lfc_out_dialog then
 
                    s.lfc_out_dialog = true;
 
                    if atl_rep_svetlova >= 0 then
 
                        if atl_lfc_goldman_exposed then
 
                            poff("leroy");
 
                        else
 
                            poff("both", "goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
                        end;
 
                        psub("lfc_saboteur");
 
                        return [[Екатерина Светлова открывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Даркстар сказал, что вы зайдете, чтобы обсудить поимку саботажников. Я вас слушаю". ]];
 
                    else
 
                        psub("generic");
 
                        return [[Екатерина Светлова открывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Если вы пришли обсудить поимку саботажников, то у меня нет на это времени". ]];
 
                    end;
 
                end;
 
            end;
 
        
 
			if (atl_iyh_state == 9) then
 
				atl_iyh_state = 10;
 
				psub('iyh_more');
 
				take("item_map_2");
 
				take("item_talk_device");
 
				take("item_navjiarr_chart_1");
 
				take("item_navjiarr_chart_2");
 
				take("item_navjiarr_chart_3");
 
				if (atl_iyh_artifacts_on_atlantis) then
 
					return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Добрый день, Дрейк. Мы изучили артефакты, найденные вами в храме. Среди всего прочего, мы нашли несколько фрагментов карты, которые я возвращаю вам - они понадобятся вам в ваших поисках. К сожалению, это именно что фрагменты и мы не можем по ним определить местоположение чего бы то ни было. Однако, недостающие фрагменты могут быть в расположенных неподалеку навьярских города - Дипатреанотре и Ираафаанотре". Она достает из-под стола небольшой чемоданчик с лампочками и кнопочками и вручает его вам: "Этот прибор позволит вам общаться с навьярами под водой. Просто набирайте слова как на клавиатуре печатной машинки, при этом будут последовательно зажигаться лампочки соответствующих цветов". Затем она достает карту, на которой отмечены Атлантида, Ираафаанотр и Дипатреанотр и так же отдает ее вам: "Вы можете взять эту карту". ]];
 
				else
 
					return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Добрый день, Дрейк. К сожалению, мы не смогли получить доступ к артефактам, добытым вами в храме. Поэтому, единственное, что вы можете сделать чтобы найти отца - это посетить навьярские города, расположенные неподалеку - Дипатреанотр и Ираафаанотр". Она достает из-под стола небольшой чемоданчик с лампочками и кнопочками и вручает его вам: "Этот прибор позволит вам общаться с навьярами под водой. Просто набирайте слова как на клавиатуре печатной машинки, при этом будут последовательно зажигаться лампочки соответствующих цветов". Затем она достает карту, на которой отмечены Атлантида, Ираафаанотр и Дипатреанотр и так же отдает ее вам: "Вы можете взять эту карту". ]];
 
				end;
 
                conflict_resolved = true;
 
                if atl_iyh_shockfish_dead then
 
                    psub('iyh_more');
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        -- навьяры не знают про гибель ската. Светловой пофиг
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        -- навьяры в ярости, светлова тоже
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Дрейк! Вы понимаете, что вы сделали?! Одним маленьким взрывом вы погубили годы работы по налаживанию отношений с навьярами! Конечно, вы решили проблему, но разве не было другого способа?!"^Чуть подождав, она сообщает: "К делу. Покажите фрагмент карты, который вы нашли". ]];
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        -- навьяры не знают про разрушение храма. Светловой пофиг
 
                        psub('iyh_more');
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        -- навьяры в ярости, светлова тоже
 
                        if iof_learr_dead then
 
                            psub('iyh_more');
 
                            return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Однако, из-за ваших поспешных действий они теперь гораздо хуже относятся к нам и, скорее всего, нам не придется расчитывать на их помощь в ближайшее время. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                        else
 
                            psub('learr_back');
 
                            return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Мы еще раз обсудили все с Леарр, она хотела бы вернуться в экипаж Левиафана. Вы возьмете ее?" ]]
 
                        end;
 
                    end;
 
                else
 
                    psub('iyh_more');
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        --Храм в целости, навьяры пляшут, Светлова довольна :)
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Ваши действия в храме были воистину потрясающи. Мы не зря отправили туда именно вас. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        --Храм в целости, навьяры пляшут, Светлова довольна, но без артефактов :(
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. К сожалению, мы не смогли получить доступ к артефактам, добытым вами в храме. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    end;
 
                end;
 
			else
 
				psub('generic');
 
				
 
@@ -630,19 +858,68 @@ char_svetlova_dlg = dlg {
 
					s.lfc_dialog = true;
 
					pon('sabotage', 'ignis_what');
 
				end;
 
				
 
                poff('iyh1');
 
                if (atl_iyh_state == 1 and atl_iyh_learr_spoken and atl_iyh_ryveerr_spoken) then
 
                    pon('iyh1');
 
                end;
 
                
 
				return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Добрый день". ]];
 
			end;
 
		end;
 
	end;
 
	phr = {
 
        {tag="lfc_saboteur"};
 
        {tag="both","Что вы будете делать с саботажниками?", [[Екатерина Светлова отвечает, не задумываясь: "Запереть их в темных камерах, пока не раскаются в своих действиях, а потом посмотрим". ]]};
 
        {tag="goldman_1", "Одному сумасшедшему никто не поверит, Голдмана стоит отпустить. ", [[Екатерина Светлова кивает: "Может так будет лучше. По-крайней мере нам не надо будет его охранять". ]], code [[
 
            char_svetlova_dlg.lfc_goldman_banish = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_2", "Голдман -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Екатерина Светлова кивает: "Может так будет лучше. По-крайней мере нам не надо будет его охранять". ]], code [[
 
            char_svetlova_dlg.lfc_goldman_banish = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_3", "Голдман хитер. На станции он представляет большую опасность, чем вне ее. ", [[Екатерина Светлова отвечает: "Вы и правда так думаете? Я считала вас более наблюдательным". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_4", "Голдман просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[Екатерина Светлова кивает: "Нельзя давать преступникам того, чего они хотят". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_5", "Отпускать Голдмана на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Екатерина Светлова кивает: "Не думаю, что Голдман заслуживает этого. Он просто попал под дурное влияние". ]], code [[
 
            atl_rep_svetlova = atl_rep_svetlova - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_6", "Голдман подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Екатерина Светлова кивает: "Не думаю, что Голдман заслуживает этого. Он просто попал под дурное влияние". ]], code [[
 
            atl_rep_svetlova = atl_rep_svetlova - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_7", "Голдман хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Екатерина Светлова отвечает: "Вы и правда так думаете? Я думала, вы наблюдательнее". ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="leroy", "Что вы будете делать с саботажником?", [[Екатерина Светлова отвечает, не задумываясь: "Запереть его в темной камере, пока не раскается в своих действиях, а потом посмотрим". ]]};
 
        {tag="leroy_1", "Одному сумасшедшему никто не поверит, Леруа стоит отпустить. ",  [[Екатерина Светлова кивает: "Может так будет лучше. По-крайней мере нам не надо будет его охранять". ]], code [[
 
            char_svetlova_dlg.lfc_leroy_banish = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_2", "Леруа -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Екатерина Светлова отвечает: "Вы и правда так думаете? Я считала вас более наблюдательным". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_3", "Леруа хитер. На станции он представляет большую опасность, чем вне ее. ", [[Екатерина Светлова кивает: "Может так будет лучше. По-крайней мере нам не надо будет его охранять". ]], code [[
 
            char_svetlova_dlg.lfc_leroy_banish = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_4", "Леруа просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[Екатерина Светлова кивает: "Нельзя давать преступникам того, чего они хотят". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_5", "Отпускать Леруа на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Екатерина Светлова задумчиво смотрит на вас: "Жестокое решение, но, вероятно, единственно верное. Не буду с вами спорить". ]], code [[
 
            char_svetlova_dlg.lfc_leroy_execute = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_6", "Леруа подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Екатерина Светлова задумчиво смотрит на вас: "Жестокое решение, но, вероятно, единственно верное. Не буду с вами спорить". ]], code [[
 
            char_svetlova_dlg.lfc_leroy_execute = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_7", "Леруа хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Екатерина Светлова кивает: "Отлично. Пусть немного посидит взаперти". ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {"Это все, что я хотел обсудить по данному вопросу. ", [[Екатерина Светлова кивает и спрашивает: "Что-нибудь еще?"]], code [[ psub("generic");]] };
 
        {tag="lfc_warning"};
 
        {always = true, "Я пойду", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {always = true, "Я пойду.", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {tag = "iof_learr_dead"};
 
        {"Я ничего не мог сделать. ", [[Екатерина Светлова опускает глаза: "Я понимаю". Вздохнув, она спрашивает: "Вам что-то нужно?" ]], code [[ psub("generic"); ]]};
 
        {"Перейдем к делу. ", [[Екатерина Светлова кивает: "Что вам нужно?" ]], code [[ 
 
@@ -654,19 +931,21 @@ char_svetlova_dlg = dlg {
 
        {tag = "iof_learr"};
 
        {"Рад, что никто не пострадал. ", [[Екатерина Светлова кивает и спрашивает: "Вам что-то нужно?"]], code [[ psub("generic"); ]]};
 
		{tag = "first_meeting"};
 
		{"Как так получилось, что не осталось никакой информации?", [[Екатерина Светлова поясняет: "Блэк сильно торопил Уильяма и едва они закончили минимальные исследования, они отправились в Венаэданотр -- отдаленный навьярский город к западу от Атлантиды. К сожалению, мы не знаем его точное местоположение". ]], code [[ pon('venaedanotrr'); ]]};
 
        {"В чем заключается цель экспедиции?", [[Екатерина Светлова отвечает: "Дрейк и Блэк ищут Лсэрианотр -- легендарный навьярский город". ]], code [[pon('lseryanotr')]]};
 
        {tag = "venaedanotrr", false, "Венаэданотр?", [[Екатерина светлова отвечает: "Один из множества навьярских городов. К сожалению, у нас нет почти никакой информации о нем, кроме предположений. Думаю Дрейк и Блэк смогут многое рассказать о нем, когда вернутся из своей экспедиции". ]]};
 
		{tag = "lseryanotr", false, "Лсэрианотр?", [[Екатерина Светлова отвечает: "По легенде -- это самый древний город навьяров. С ним связано множество легенд. Одна из них гласит, что Наэтвьирр -- существо великой мудрости, по одной из версий, призванное навьярами из другого мира -- должен был дать навьярам великие знания, которые позволили бы им войти в век процветания. Однако, один из мудрецов предостерег навьяров об обмане, задуманном Наэтвьирром. Но, к тому моменту, Наэтвьирр уже прибыл в Лсэрианотр. Навьяры испугались и запечатали город, навеки закрыв Наэтвьирра внутри". ]]};
 
		{"В чем заключается ваше предложение?", [[Екатерина Светлова откладывает бумаги в сторону, достает из ящика стола карту и раскладывает ее на столе. После чего продолжает: _"На самом деле, вы прибыли как нельзя вовремя. Наши отношения с навьярами несколько натянулись в последнее время, и, боюсь, разрешить разногласия поможете только вы. Я попробую кратко изложить ситуацию, задавайте вопросы по ходу рассказа, если вам потребуется дополнительная информация, -- Светлова делает небольшую паузу, -- Неподалеку от Атлантиды находятся два навьярских поселения - Ираафаанотр и Дипатреанотр. Первая встреча с жителями Дипатреанотра прошла не совсем гладко и в результате ее погибло несколько человек. К счастью, в дальнейшем отношения удалось наладить. Недавно, между Ираафаанотром и Дипатреанотром произошел конфликт, который может негативно повлиять на нас и наши отношения с этими городами. Мы пытались вмешаться, но это лишь обострило разногласия и в дальнейшем может поставить под угрозу само существование станции"_. ]], code [[ psub('help')]]};
 
		{"Как так получилось, что не осталось никакой информации?", [[Екатерина Светлова поясняет: "Блэк сильно торопил Уильяма и, едва закончив минимальные исследования, они отправились в Венаэданотр -- отдаленный навьярский город где-то к западу от Атлантиды. К сожалению, его точное местоположение нам неизвестно". ]], code [[ pon('venaedanotrr'); ]]};
 
        {"В чем заключается цель экспедиции?", [[Екатерина Светлова отвечает: "Дрейк и Блэк ищут Лсэрианотр -- легендарный навьярский город". ]], code [[pon('lseryanotrr')]]};
 
        {tag = "venaedanotrr", false, "Венаэданотр?", [[Екатерина светлова отвечает: "Поселения навьяров раскинулись по всему океанскому дну. Мы точно знаем, что Венаэданотр расположен далеко к западу отсюда и точно знаем, что он значительно больше, нежели Ираафаанотр или Дипатреанотр. Дрейк и Блэк смогут рассказать многое рассказать о нем, когда вернутся из своей экспедиции". ]], code [[ pon("dypatreanotrr", "iraaphaanotrr");]]};
 
		{tag = "lseryanotrr", false, "Лсэрианотр?", [[Екатерина Светлова отвечает: "По легенде Лсэрианотр -- древний навьярский город, хранящий какие-то тайные знания их народа. Описания разнятся. В одних источниках говорится о страшном монстре, по имени Наэтвьирр, охраняющем город. В других этот же Наэтвьирр предстает как хранитель города и его тайн, призванный самими навьярами. Однако, во всех вариантах легенды именно Наэтвьирр выступает причиной того, что навьяры покидают Лсэрианотр. Мы предполагаем, что Наэтвьирр это кракен или еще какое-то морское чудовище, с которым древние навьяры просто не могли справиться и вынуждены были покинуть Лсэрианотр". ]], code [[ pon("dypatreanotrr", "iraaphaanotrr");]]};
 
        {tag = "dypatreanotrr", false, "Дипатреанотр?", [[Екатерина Светлова отвечает: "Дипатреанотр расположен чуть дальше к северу от Атлантиды, чем Ираафаанотр. Как и Ираафаанотр, городом в полной мере он не является. В поселении нет даже улиц -- дома просто нагромождены вокруг центральной площади. Впрочем, как вы понимаете, улицы навьярам и ни к чему". ]]};
 
        {tag = "iraaphaanotrr", false, "Ираафаанотр?", [[Екатерина Светлова отвечает: "Ираафаанотр -- самое близкое к Атлантиде поселение навьяров. Мы называем его городом, хотя по нашим меркам это даже не деревня. Полтора десятка домов, да несколько полей вокруг. И все же, навьяры Ираафаанотра сильно помогают нам, обменивая ресурсы, которые они добывают здесь на более сложные вещи, производить которые самостоятельно они не способны". ]]};
 
		{"В чем заключается ваше предложение?", [[Екатерина Светлова откладывает бумаги в сторону, достает из ящика стола карту и раскладывает ее на столе. После чего продолжает: _"На самом деле, вы прибыли как нельзя вовремя. Наши отношения с навьярами несколько натянулись в последнее время, и, боюсь, разрешить разногласия поможете только вы. Я попробую кратко изложить ситуацию, задавайте вопросы по ходу рассказа, если вам потребуется дополнительная информация, -- Светлова делает небольшую паузу, -- Неподалеку от Атлантиды находятся два навьярских поселения: Ираафаанотр и Дипатреанотр. Первая встреча с жителями Дипатреанотра прошла не совсем гладко и в результате ее погибло несколько человек. К счастью, в дальнейшем отношения удалось наладить. Недавно, между Ираафаанотром и Дипатреанотром произошел конфликт, который может негативно повлиять на нас и наши отношения с этими городами. Мы пытались вмешаться, но это лишь обострило разногласия и в дальнейшем может поставить под угрозу само существование станции"_. ]], code [[ psub('help')]]};
 
		{tag = 'help'};
 
		{"И как я смогу помочь?", [[Екатерина Светлова поясняет: _"Навьяры знают, что вы не с Атлантиды, поэтому вы предстанете как нейтральная сторона. Сейчас вам стоит поговорить с Леарр и Ривеерром - узнать их взгляд на ситуацию. Потом приходите ко мне и решим, что делать"_. ]], code [[
 
		{"И как я смогу помочь?", [[Екатерина Светлова поясняет: _"Навьяры знают, что вы не с Атлантиды, поэтому вы предстанете как нейтральная сторона. Сейчас вам стоит поговорить с Леарр и Ривеерром и узнать их взгляд на ситуацию. Потом приходите ко мне и решим, что делать"_. ]], code [[
 
			char_svetlova_dlg.flag_help = true;
 
			if (char_svetlova_dlg.flag_explain) then
 
				pon("first_meeting_end");
 
			end;
 
		]]};
 
		{"И в чем суть этого конфликта?", [[Екатерина Светлова отвечает: "У навьяров много разных священных предметов, табу, пророчеств. За время существования станции мы заполучили и изучили множество реликвий. Большинство их вполне обычны: статуэтки, какие-то религиозные символы, записи и так далее. Однако, мы заметили закономерность -- самые древние предметы разительно отличаются от остальных -- изготовлены они более качественно, а многие предметы и вовсе не имеют сопоставимых аналогов. Например, у нас есть множество металлических фрагментов, очевидно использовавшихся в каких-то механизмах, есть диски, призмы, цилиндры, изготовленные из неизвестных нам материалов -- они преломляют свет совершенно удивительным образом благодаря внутренней структуре материала. Интересно, что эти предметы имеют совершенно правильную форму и хорошо сохранились. Навьяры говорят, что это не просто предметы красоты, но некие записи, изготовленные древними. Не знаю, как относиться к этому. Возможно, вернувшись из экспедиции Блэк и Дрейк смогут что-то прояснить. Но это было просто отступление. Не так давно из Ираафаанотра и Дипатреанотра пропали ценнейшие реликвии. Города теперь обвиняют в этом друг друга и дело грозит обернуться войной". ]], code [[
 
		{"И в чем суть этого конфликта?", [[Екатерина Светлова отвечает: "Все одновременно очень просто и очень сложно. Из Ираафаанотра и Дипатреанотра не так давно пропали ценные реликвии. Города обвиняют друг друга и непонятно, к чему это приведет. Мы не понимаем, что могло быть причиной этому -- никаких предпосылок к такому у навьяров не было. С самого основания станции города жили в мире и согласии. К несчастью, ни Дипатреанотр, ни Ираафаанотр не дают нам доступа в храмы, где хранились реликвии". ]], code [[
 
			char_svetlova_dlg.flag_explain = true;
 
			if (char_svetlova_dlg.flag_help) then
 
				psub("first_meeting_end");
 
@@ -683,7 +962,7 @@ char_svetlova_dlg = dlg {
 
                else
 
                    return [[Екатерина Светлова кивает: _"Поговорите с Леарр и Ривеерром, разберитесь, узнайте больше. Ривеерр большую часть времени находится здесь, в Окулусе. Леарр вы, скорее всего, найдете в Игнисе"_. ]];
 
                end;
 
        end, code [[ 
 
        end, code [[
 
			char_svetlova_dlg.state = 1;
 
			atl_iyh_state = 1;
 
			psub("generic");
 
@@ -750,7 +1029,7 @@ char_svetlova_dlg = dlg {
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.leroy_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Мишель Леруа хорошо известен на станции - он один из первых открыто поднял вопрос о закрытии станции и возвращении на поверхность. К счастью, он пока не успел слишком многих склонить на свою сторону. Вам лучше поговорить с Моро или Райтом по этому поводу". ]];
 
                return [[Екатерина Светлова отвечает: "Мишель Леруа хорошо известен на станции -- он один из первых открыто поднял вопрос о закрытии станции и возвращении на поверхность. К счастью, он пока не успел слишком многих склонить на свою сторону. Вам лучше поговорить с Моро или Райтом по этому поводу". ]];
 
            end;
 
        end};
 
        {tag="on_jones", false, "Что вы думаете о Чарли Джонсе? ", function()
 
@@ -777,7 +1056,7 @@ char_svetlova_dlg = dlg {
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.atlantis_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Атлантидабыла построена с единственной целью -- быть ближе к навьярам, получить возможность изучать их. Майкл Райт, конечно, скажет вам другое и будет по-своему прав -- в конце концов, станцию придумал именно он". ]];
 
                return [[Екатерина Светлова отвечает: "Атлантида была построена с единственной целью -- быть ближе к навьярам, получить возможность изучать их. Майкл Райт, конечно, скажет вам другое и будет по-своему прав -- в конце концов, станцию придумал именно он". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах? ", function()
 
@@ -795,10 +1074,10 @@ char_svetlova_dlg = dlg {
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_darkstar.learr_asked = 3;
 
                    char_svetlova.learr_asked = 3;
 
                    return [[Екатерина Светлова отвечает: "Помимо самого факта гибели этой замечательной юной девушки, это событие имеет далеко идущие последствия для Атлантиды". ]];
 
                else
 
                    char_darkstar.learr_asked = 2;
 
                    char_svetlova.learr_asked = 2;
 
                    return [[Екатерина Светлова отвечает: "Леарр -- просто находка для нас всех. Она гораздо меньше скована догмами, чем другие, более старые, представители ее племени. Приятно наблюдать, как она с легкостью впитывает наши знания и с готовностью делится своими". ]];
 
                end;
 
            end;
 
@@ -809,7 +1088,7 @@ char_svetlova_dlg = dlg {
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.ryveerr_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Ривеерр -- достаточно дружелюбный и приятный навьяр. Его интеллект позволяет нам общаться с ним практически на равных, с поправкой на отсутствие знания и понимания многих, известных нам вещей". ]];
 
                return [[Екатерина Светлова отвечает: "Ривеерр -- достаточно дружелюбный и приятный навьяр. Его интеллект позволяет нам общаться с ним практически на равных, с поправкой на отсутствие некоторых знаний и понимания многих известных нам вещей". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы думаете об Аикерьярре? ", function()
 
@@ -821,8 +1100,11 @@ char_svetlova_dlg = dlg {
 
                return [[Екатерина Светлова отвечает: "Нам всем было бы легче, если бы его не было на Атлантиде. К сожалению, сейчас мы не можем просто взять и прогнать его -- это сделает наше положение еще худшим, чем оно есть". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Светлова кивает: "Говорите".]], code [[ pret(); ]]};
 
		{tag = "generic"};
 
        {always=true, "Вернемся к делу.", [[Светлова кивает: "Говорите".]], code [[ char_svetlova_dlg:reset_more(); pret(); ]]};
 
        {tag = "generic"};
 
        {tag = "copy_star_map", false, "[Показать карту небесных огней] Мы можем сделать копию этой карты, такую, чтобы навьяры не заметили бы подмены?", [[Екатерина Светлова удивленно смотрит на вас: "Не знаю, что вы задумали, но мы никогда не делали ничего подобного". Немного погодя она заявляет: "Думаю, Райт сможет сделать достаточно хорошую копию. У навьяров нет точных приборов, чтобы проверить ее как следует, они не смогут определить ее время изготовления иначе чем на глаз, так что -- это вполне в наших силах. Отправляйтесь в свою комнату, я позову вас, когда копия будет готова". ]], code [[ atl_star_map_copied = true; walk("cutscene_wait_for_copy"); remove(dyp_item_star_map, me());]]};
 
        {tag = "copy_star_map_2", false, "Я пришел за картой небесных огней", [[Екатерина Светлова передает вам две, на первый взгляд, совершенно одинаковые карты. Лишь приглядевшись, вы замечаете отличия -- линии на копии менее ровные, зато лист металла гораздо более ровный и имеет гораздо меньше царапин. Врядли вождь Дипатреанотра будет придираться к таким вещам, ведь символы на картах совпадают практически точь-в-точь. ]], code [[ atl_star_map_copied = true; take(dyp_item_star_map_copy);take(dyp_item_star_map);]]};
 
        {tag = "dyp_quest", false, "Вождь Дипатреанотра просил меня принести \"светяющуюся капсулу\". Что мы можем ему предложить?", [[Екатерина Светлова отвечает: "Поговорите с Райтом, он найдет что-нибудь, что можно отдать навьярам". ]]};
 
		{tag = "sabotage", false, "Даркстар считает, что причиной пожара в Игнисе был саботаж. Что вы об этом думаете?", function(s)
 
			if (atl_iof_learr_dead) then
 
				atl_rep_darkstar = atl_rep_darkstar - 1;
 
@@ -835,7 +1117,7 @@ char_svetlova_dlg = dlg {
 
		end};
 
		{tag = "ignis_what", false, "Вы знаете, что произошло в Игнисе?", function(s)
 
			if (char_svetlova_dlg.lfc_sabotage) then
 
				return [[Екатерина Светлова отвечает: "Вы же только что сами сказали - саботаж". ]];
 
				return [[Екатерина Светлова отвечает: "Вы же только что сами сказали -- саботаж". ]];
 
			elseif (atl_iof_learr_dead) then
 
				return [[Екатерина Светлова отказывается отвечать: "Мне кажется, это не ваше дело. И не мое. Этим занимается служба безопасности". ]];
 
			else
 
@@ -844,14 +1126,14 @@ char_svetlova_dlg = dlg {
 
				return [[Екатерина Светлова отвечает: "Я думаю вы и сами прекрасно знаете. Может расскажете?". ]];
 
			end;
 
		end};
 
        {tag= "iyh1_learr", false, "Я поговорил с навьярами. Леарр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Однако, у нас есть зацепка -- Записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает что считает нужным". ]], code [[ dypatreanotrr_temple_found = true; atl_iyh_state = 2; psub('iyh1_sub'); ]]};
 
        {tag= "iyh1_aikerjarr", false, "Я поговорил с навьярами. Аикерьярр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Аикерьярр, конечно, доверия не заслуживает, но Леарр говорила то же самое. Тем не менее, у нас есть зацепка -- Записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает что считает нужным". ]], code [[ dypatreanotrr_temple_found = true; atl_iyh_state = 2; psub('iyh1_sub'); ]]};
 
        {always=true, "У меня есть несколько вопросов.", [[Светлова кивает: "Спрашивайте".]], code [[ psub('ask_more'); ]]};
 
		{always = true, "Я пойду", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {tag= "iyh1_learr", false, "Я поговорил с навьярами. Леарр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Однако, у нас есть зацепка -- Записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает что считает нужным". ]], code [[ psub('iyh1_sub'); ]]};
 
        {tag= "iyh1_aikerjarr", false, "Я поговорил с навьярами. Аикерьярр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Аикерьярр, конечно, доверия не заслуживает, но Леарр говорила то же самое. Тем не менее, у нас есть зацепка -- записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает, что считает нужным". ]], code [[ psub('iyh1_sub'); ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Светлова кивает: "Спрашивайте".]], code [[ psub('ask_more'); ]]};
 
		{always = true, "Я пойду.", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {tag= "iyh1_sub"};
 
        {"Старый храм?", [[Светлова пожимает плечами: "К сожалению, у меня нет ничего кроме намеков. Предполагаю, что где-то здесь может быть еще один храм навьяров, возможно стоит расспросить их?" ]]};
 
        {"Я хотел бы посетить храм Дипатреанотра.", [[Светлова отвечает: "Не думаю, что это хорошая идея. Навьяры не пускают никого внутрь". ]], code [[ pon('outside');]]};
 
        {tag = "outside", false, "Возможно, самое интересное находится снаружи храма.", [[Светлова соглашается: "Возможно. В любом случае -- прошло уже достаточно много времени, чтобы хоть какие-то следы сохранились". ]], code [[ pret(); ]]};
 
        {tag = "outside", false, "Возможно, самое интересное находится снаружи храма.", [[Светлова соглашается: "Возможно. В любом случае -- прошло уже достаточно много времени, чтобы хоть какие-то следы сохранились. Я даю вам разрешение отправиться туда. Но перед этим, вам лучше поговорить с навьярами на станции". Екатерина достает из ящика стола свернутую карту и передает вам со словами: "Это поможет вам найти храм". ]], code [[ dypatreanotrr_temple_found = true; atl_iyh_state = 2; pret(); ]]};
 
		{tag = "ignis_sabotage"};
 
		{"Даркстар считает, что причиной пожара был саботаж", function(s)
 
			psub("generic");
 
@@ -865,9 +1147,33 @@ char_svetlova_dlg = dlg {
 
		{tag="so_answer"};
 
		{"Да, пожалуй вы правы", [[Екатерина Светлова отвечает: "Отлично. Осталось дождаться, когда вам позволят покидать станцию". ]]};
 
		{"А что будет, если мы принесем им реликвию, которая должна по их мнению быть в Ираафаанотре? Разве они не посчитают, что мы украли ее оттуда? ", [[Екатерина Светлова недовольно отвечает: "Поступайте как знаете. Если ваши действия повредят станции, то Левиафана вам не видать". ]], code [[ back(); ]]};
 
		{tag="iyh_more"};
 
		{"Я могу чем-то еще помочь?", [[Екатерина Светлова отвечает: "Пока у нас нет для вас заданий, но возможно позже появится что-то. Сейчас вы можете продолжать ваши поиски". ]]};
 
		{"Спасибо за помощь, я пойду", [[Екатерина Светлова прощается с вами: "До встречи. Удачи в поисках Уильяма".]], code [[ back(); ]]};
 
        {tag="learr_back"};
 
        {"Конечно, Леарр будет крайне полезна в нашей экспедиции.", [[Леарр, все это время молча стоявшая рядом, отвечает: "Я благодарю тебя-Дрейк. Ты помог нам-Ираафаанотру-и-Дипатреанотру. Я разрушение-храма-понимаю. Другого-пути не-было". ^Светлова кивает: "Этот вопрос решен. Переходим к следующему. Вы говорили, что нашли фрагмент карты. Можете показать его?"]], code [[
 
            table.insert(pl.party, 'learr');
 
            move(char_learr, char_learr.home);
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            psub("iyh_more");
 
        ]]};
 
        {"Нет, мы справимся без ее помощи.", [[Леарр, все это время молча стоявшая рядом, кивает: "Я предпочла-бы-участвовать-в-экспедиции".]], code [[
 
            psub("learr_back2");
 
        ]]};
 
        {tag="learr_back2"};
 
        {"Хорошо, возвращайся на Левиафан.", [[Леарр отвечает: "Я благодарю тебя-Дрейк. Ты помог нам-Ираафаанотру-и-Дипатреанотру. Я разрушение-храма-понимаю. Другого-пути не-было". ^Светлова кивает: "Этот вопрос решен. Переходим к следующему. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]], code [[
 
            table.insert(pl.party, 'learr');
 
            move(char_learr, char_learr.home);
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            psub("iyh_more");
 
        ]]};
 
        {"Нет, оставайся на Атлантиде", [[Леарр разочарованно отвечает: "Я на-Атлантиде-останусь", -- и выходит из комнаты. ^Светлова качает головой: "Вы зря отказались от ее помощи, Дрейк. Навьяр на борту мог бы оказаться очень полезен. Но, к делу. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]], [[
 
            move("char_learr_atlantis", "atl_oculus_library");
 
            psub("iyh_more");
 
        ]]};
 
        {tag="iyh_more"};
 
        {"[Передать фрагмент карты] Да, конечно. Мы нашли это в скрытом помещении в храме.", [[Екатерина Светлова с интересом рассматривает табличку: "Удивительно, эта карта сильно отличается от других навьярских карт, виденных нами. Обратите внимание, на количество деталей -- здесь не только отмечены условными символами три-четыре ориентира. Здесь их десятки, если не сотни. Попробуйте разузнать побольше в Ираафаанотре и Дипатреанотре". Екатерина Светлова сообщает вам местонахождение Ираафаанотра и Дипатреанотра. ]], code [[ 
 
            iraaphaanotrr_found = true;
 
            dypatreanotrr_found = true;
 
            psub("generic"); 
 
        ]]};
 
	};
 
};
 
 
@@ -875,16 +1181,72 @@ char_michael_wright_dlg = dlg {
 
    var {
 
        state = 0;
 
        lfc_dialog = false;
 
        lfc_out_dialog = false;
 
        lfc_goldman_execute = 0;
 
        lfc_goldman_imprison = 1;
 
        lfc_goldman_banish = 0;
 
        lfc_leroy_execute = 0;
 
        lfc_leroy_imprison = 1;
 
        lfc_leroy_banish = 0;
 
        dyp_quest = false;
 
    };
 
    nam = "Майкл Райт";
 
    disp = "Майкл Райт";
 
    entered = function(s)
 
    
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_aikerjarr", "on_ryveerr", "more_questions");
 
        if (atl_rep_wright < 0) then
 
            if (char_michael_wright.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_michael_wright.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_michael_wright.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_michael_wright.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_michael_wright.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_michael_wright.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_michael_wright.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_michael_wright.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            if (char_michael_wright.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_michael_wright.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_michael_wright.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_michael_wright.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_michael_wright.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_michael_wright.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_michael_wright.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_michael_wright.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_michael_wright.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_michael_wright.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_michael_wright.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            if (char_michael_wright.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_michael_wright.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_michael_wright.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;
 
    
 
    enter = function(s)
 
        if dyp_quest_state == 1 and not s.dyp_quest then
 
            s.dyp_quest = true;
 
            pon('dyp_quest');
 
        end;
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Екатерина Светлова сообщает вам: "Добрый день Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
            return [[Майкл Райт сообщает вам: "Добрый день. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
    
 
        if (atl_nih_state == 2) then
 
        poff('nih_fixed');
 
        if atl_nih_state == 2 or atl_nih_state == 1 then
 
            pon('nih_fixed');
 
        end;
 
        
 
@@ -897,45 +1259,7 @@ char_michael_wright_dlg = dlg {
 
            pon('sabotage', 'ignis_what');
 
        end;
 
        
 
        if (atl_rep_wright < 0) then
 
            if (char_michael_wright.drake_asked == 0) then pon("on_drake"); end;
 
            if (char_michael_wright.black_asked == 0) then pon("on_black"); end;
 
            if (char_michael_wright.darkstar_asked == 0) then pon("on_darkstar"); end;
 
            if (char_michael_wright.svetlova_asked == 0) then pon("on_svetlova"); end;
 
            if (char_michael_wright.moreau_asked == 0) then pon("on_moreau"); end;
 
            if (char_michael_wright.wright_asked == 0) then pon("on_wright"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked == 0) then pon("on_leroy"); end;
 
                if (char_michael_wright.jones_asked == 0) then pon("on_jones"); end;
 
                if (char_michael_wright.goldman_asked == 0) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked == 0) then pon("on_atlantis"); end;
 
            if (char_michael_wright.navjiarr_asked == 0) then pon("on_navjiarr"); end;
 
            if (char_michael_wright.learr_asked == 0) then pon("on_learr"); end;
 
            if (char_michael_wright.ryveerr_asked == 0) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked == 0) then pon("on_aikerjarr"); end;
 
        else
 
            if (char_michael_wright.drake_asked < 2) then pon("on_drake"); end;
 
            if (char_michael_wright.black_asked < 2) then pon("on_black"); end;
 
            if (char_michael_wright.darkstar_asked < 2) then pon("on_darkstar"); end;
 
            if (char_michael_wright.svetlova_asked < 2) then pon("on_svetlova"); end;
 
            if (char_michael_wright.moreau_asked < 2) then pon("on_moreau"); end;
 
            if (char_michael_wright.wright_asked < 2) then pon("on_wright"); end;
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked < 2) then pon("on_leroy"); end;
 
                if (char_michael_wright.jones_asked < 2) then pon("on_jones"); end;
 
                if (char_michael_wright.goldman_asked < 2) then pon("on_goldman"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked < 2) then pon("on_atlantis"); end;
 
            if (char_michael_wright.navjiarr_asked < 2) then pon("on_navjiarr"); end;
 
            if (char_michael_wright.learr_asked < 2) then pon("on_learr"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.learr_asked < 3) then pon("on_learr"); end;
 
            if (char_michael_wright.ryveerr_asked < 2) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked < 2) then pon("on_aikerjarr"); end;
 
        end;
 
        s:reset_more();
 
        
 
        if (atl_iof_completed and char_michael_wright.iof_reaction == 0) then
 
            char_michael_wright.iof_reaction = 1;
 
@@ -951,29 +1275,106 @@ char_michael_wright_dlg = dlg {
 
            end;
 
        elseif (atl_nih_state == 3 and atl_iof_completed and atl_fta_state == 0) then
 
            atl_fta_state = 1;
 
            psub("fta_agree");
 
            return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. У меня есть для вас работа. Сейчас все наши бригады заняты, поэтому я прошу вас помочь с обслуживанием Солиса. Приходите туда и свяжитесь со мной по телефону, я дам вам инструкции". ]];
 
        elseif (atl_fta_state == 2) then
 
            atl_fta_state = 3;
 
            psub("fta_deb");
 
            return [[Майкл Райт протягивает вам руку: "Только благодаря вам, мы все еще здесь. Я с радостью сообщу Моро, что я за возвращение вам Левиафана". ]];
 
        else
 
            if atl_lfc_state == 4 then
 
                if not s.lfc_out_dialog then
 
                    s.lfc_out_dialog = true;
 
                    if atl_rep_svetlova >= 0 then
 
                        if atl_lfc_goldman_exposed then
 
                            poff("leroy");
 
                        else
 
                            poff("both", "goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
                        end;
 
                        psub("lfc_saboteur");
 
                        return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Даркстар сказал, что вы зайдете обсудить поимку саботажников. Я вас слушаю". ]];
 
                    else
 
                        psub("generic");
 
                        return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Если вы пришли обсудить поимку саботажников, то у меня нет на это времени". ]];
 
                    end;
 
                end;
 
            end;
 
        
 
            psub("generic");
 
            return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Чем могу быть полезен?" ]];
 
        end;        
 
    end;
 
    phr = {
 
        {tag="lfc_saboteur"};
 
        {tag="both","Что вы будете делать с саботажниками?", [[Майкл Райт отвечает: "Я думаю стоит подержать их немного взаперти. Пусть подумают над своим поведением. Когда вернется Уильям, будем решать, что делать с ними дальше". ]]};
 
        {tag="goldman_1", "Одному сумасшедшему никто не поверит, Голдмана стоит отпустить. ", [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_goldman_banish = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_2", "Голдман -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_goldman_banish = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_3", "Голдман хитер. На станции он представляет большую опасность, чем вне ее. ",  [[Майкл Райт ухмыляется: "Это этот-то хитер?" ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_4", "Голдман просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_goldman_banish = 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_5", "Отпускать Голдмана на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Майкл Райт отрицательно качает головой: "Леонард хороший человек. Все мы совершаем ошибки". ]], code [[
 
            atl_rep_wright = atl_rep_wright - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_6", "Голдман подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Майкл Райт отрицательно качает головой: "Леонард хороший человек. Все мы совершаем ошибки". ]], code [[
 
            atl_rep_wright = atl_rep_wright - 1;
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="goldman_7", "Голдман хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Майкл Райт ухмыляется: "Это этот-то хитер?" ]], code [[
 
            poff("goldman_1", "goldman_2", "goldman_3", "goldman_4", "goldman_5", "goldman_6", "goldman_7");
 
        ]]};
 
        {tag="leroy", "Что вы будете делать с саботажником?", [[Екатерина Светлова отвечает, не задумываясь: "Запереть его в темной камере, пока не раскается в своих действиях, а потом посмотрим". ]]};
 
        {tag="leroy_1", "Одному сумасшедшему никто не поверит, Леруа стоит отпустить. ",  [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_goldman_banish = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_2", "Леруа -- трус. Он никому ничего не скажет. Его можно отправить на поверхность. ", [[Майкл Райт ухмыляется: "Это этот-то трус?" ]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_3", "Леруа хитер. На станции он представляет большую опасность, чем вне ее. ", [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_leroy_banish = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_4", "Леруа просто хотел выбраться отсюда. Пусть убирается с Атлантиды. ", [[Майкл Райт кивает: "Соглашусь с вами. Просто выкинем его на поверхность". ]], code [[
 
            char_michael_wright_dlg.lfc_leroy_banish = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_5", "Отпускать Леруа на поверхность нельзя. Единственный выход -- смертная казнь. ", [[Майкл Райт задумчиво смотрит на вас: "Может вы и правы, но все же это тяжелый выбор". ]], code [[
 
            char_michael_wright_dlg.lfc_leroy_execute = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_6", "Леруа подверг опасности все наше дело. Единственный выход -- смертная казнь. ", [[Майкл Райт задумчиво смотрит на вас: "Может вы и правы, но все же это тяжелый выбор". ]], code [[
 
            char_michael_wright_dlg.lfc_leroy_execute = 1;
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {tag="leroy_7", "Леруа хитер. Вне станции он будет не менее опасен, чем на ней. ", [[Майкл Райт отвечает: "Вот поэтому я и считаю, что его нужно держать под стражей. "]], code [[
 
            poff("leroy_1", "leroy_2", "leroy_3", "leroy_4", "leroy_5", "leroy_6", "leroy_7");
 
        ]]};
 
        {"Это все, что я хотел обсудить по данному вопросу. ", [[Екатерина Светлова кивает и спрашивает: "Что-нибудь еще?"]], code [[ psub("generic");]] };
 
        {tag="lfc_warning"};
 
        {always=true, "Мне пора", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]};
 
        {always=true, "Мне пора.", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]};
 
        {tag="iof_learr_dead"};
 
        {"Мне очень жаль.", [[Майкл Райт кивает: "Утерянного не вернуть. Мы сделали выводы и постараемся не допустить опасных инцидентов в будущем". ]], code [[psub("generic");]]};
 
        {"Я чуть не погиб там!", [[Майкл Райт отворачивается от вас и произносит: "Приходите позже, я занят"]], code [[ atl_rep_wright = atl_rep_wright - 1; back(); ]]};
 
        {"Я чуть не погиб там!", [[Майкл Райт отворачивается от вас и произносит: "Приходите позже, я занят". ]], code [[ atl_rep_wright = atl_rep_wright - 1; back(); ]]};
 
        {tag="iof_learr_suit"};
 
        {"Я сделал, что должен был. ", [[Майкл Райт кивает: "И все же, не каждому пришла бы в голову идея облачить навьяра в скафандр".]], code [[psub("generic");]]};
 
        {tag="iof_learr"};
 
        {"Рад, что никто не пострадал. ", [[Майкл Райт кивает. ]], code [[ psub("generic"); ]]};
 
        {tag="fta_agree"};
 
        {"Хорошо, я сделаю, что смогу. ", [[Майкл Райт спрашивает: "Вы что-то еще хотели?" ]], code [[psub("generic"); ]]};
 
        {tag="fta_deb"};
 
        {"[Пожать руку]Только я все еще не знаю, куда мне следует плыть", [[Майкл Райт кивает: "Мы сделаем все возможное, чтобы помочь вам. Светлова сказала мне, что вы помогаете ей в решении каких-то проблем с навьярами. По ее мнению, это может помочь вам в поисках". ]], code [[ psub('generic'); ]]};
 
        {"Просто верните мне Левиафан", [[Майкл Райт с сожалением произносит: "Не все так просто. Нужно, чтобы согласие дали еще Моро, Даркстар и Светлова". ]], code [[ psub('generic'); ]]};
 
        {"[Пожать руку] Только я все еще не знаю, куда мне следует плыть.", [[Майкл Райт кивает: "Мы сделаем все возможное, чтобы помочь вам. Светлова сказала мне, что вы помогаете ей в решении каких-то проблем с навьярами. По ее мнению, это может помочь вам в поисках". ]], code [[ psub('generic'); ]]};
 
        {"Просто верните мне Левиафан.", [[Майкл Райт с сожалением произносит: "Не все так просто. Нужно, чтобы согласие дали еще Моро, Даркстар и Светлова". ]], code [[ psub('generic'); ]]};
 
        {tag="ask_more"};
 
        {tag="on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_wright < 0) then
 
@@ -1000,10 +1401,10 @@ char_michael_wright_dlg = dlg {
 
        end};
 
        {tag="on_black", false, "Расскажите об Адриане Блэке. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.drake_asked = 1;
 
                char_michael_wright.black_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.drake_asked = 2;
 
                char_michael_wright.black_asked = 2;
 
                return [[Майкл райт отвечает: "Адриан -- университетский друг вашего отца. Он всегда уравновешивал Дрейка во многих отношениях. Там где Дрейк готов был пойти на риск, Блэк призывал к осторожности. Там где Дрейк соглашался на уступки, Блэк стоял до последнего. К слову, мою идею с субмариной Адриан не одобрил. К счастью, ваш отец все же позволил мне этим заняться". ]];
 
            end;
 
        end};
 
@@ -1013,7 +1414,7 @@ char_michael_wright_dlg = dlg {
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.darkstar_asked = 2;
 
                return [[Майкл Райт отвечает: "Я почти ничего о нем не знаю. Впрочем не думаю, что кто-то на станции может сказать о нем что-то. Параноидальный тип. Я вообще не понимаю, как он согласился сюда пеерехать. Тогда он мне целый допрос устроил - чуть ли не в каждую линию на чертеже тыкал и спрашивал для чего это нужно. Думаю, мне стоит гордиться, что Атлантида прошла его проверку". ]];
 
                return [[Майкл Райт отвечает: "Я почти ничего о нем не знаю. Впрочем, не думаю, что кто-то на станции может сказать о нем что-то. Параноидальный тип. Я вообще не понимаю, как он согласился сюда пеерехать. Тогда он мне целый допрос устроил -- чуть ли не в каждую линию на чертеже тыкал и спрашивал для чего это нужно. Думаю, мне стоит гордиться, что Атлантида прошла его проверку". ]];
 
            end;
 
        end};
 
        {tag="on_svetlova", false, "Расскажите о Екатерине Светловой. ", function()
 
@@ -1031,7 +1432,7 @@ char_michael_wright_dlg = dlg {
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.moreau_asked = 2;
 
                return [[Майкл Райт отвечает: "Фредерик с нами с самого начала. Хотя его влияние может показаться незначительным -- многие даже на станции не знали его, пока он не занял пост управляющего -- он все же делал важное дело. Благодаря ему мы смогли завершить многие проекты вовремя, ведь за все поставки материалов отвечал именно он. С управлением станцией он так же справляется неплохо, хотя здесь все гораздо проще, чем было на поверхности". ]];
 
                return [[Майкл Райт отвечает: "Фредерик с нами с самого начала. Хотя его влияние может показаться незначительным -- многие на станции даже не слышали о нем, пока он не занял пост управляющего -- он все же делал важное дело. Благодаря ему мы смогли завершить многие проекты вовремя, ведь за все поставки материалов отвечал именно он. С управлением станцией он так же справляется неплохо, хотя здесь все гораздо проще, чем было на поверхности". ]];
 
            end;
 
        end};
 
        {tag="on_wright", false, "Расскажите о себе. ", function()
 
@@ -1041,9 +1442,9 @@ char_michael_wright_dlg = dlg {
 
            else
 
                char_michael_wright.wright_asked = 2;
 
                if (atl_jack_in_party) then
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда на первых же испытаниях мы встретили навьяров -- все равно, что ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, я до сих пор зол на него за это, хотя у мом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда", - Райт вздыхает, - "В своем увлечении я позабыл обо всем. Я оставил свою жену, Элис, и сына, Джека, на поверхности. Если честно, я скорее жалею, что женился, чем что оставил их там. Это не делает мою ошибку меньше". ]];
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда встретили навьяров -- ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, и я до сих пор зол на него за это, хотя умом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда, -- Райт вздыхает, -- В своем увлечении я позабыл обо всем. Я оставил свою жену, Элис, и сына, Джека, на поверхности. Если честно, я скорее жалею, что женился, чем что оставил их там. Это не делает мою ошибку меньше". ]];
 
                else
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда на первых же испытаниях мы встретили навьяров -- все равно, что ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, я до сих пор зол на него за это, хотя у мом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда". ]];
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда встретили навьяров -- ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, и я до сих пор зол на него за это, хотя умом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда". ]];
 
                end;
 
            end;
 
        end};
 
@@ -1080,7 +1481,7 @@ char_michael_wright_dlg = dlg {
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.atlantis_asked = 2;
 
                return [[Майкл Райт отвечает: "Идея построить постоянную подводную станцию пришла мне в голову через некоторое время после завершения Надежды. Думаю, что не встреть мы тогда навьяров, Дрейк не позволил бы мне заниматься этим. Но его явно заинтересовала возможность постоянного пребывания вблизи этих рыбней. Конечно, если бы не Сильвия, я никогда не смог бы сделать станцию автономной -- я долго думал, как обеспечить нас всем необходимым здесь: едой, электричеством, воздухом, инструментами. Еду и воздух мы получаем в секции Аэрис. Электричество получаем сжигая топливо нескольких видов - растения, выращиваемые в Аэрисе и уголь, выменянный у навьяров. С инструментами дале обстоят сложнее всего. Но тут нас снова выручают навьяры, с готовностью предлагая нам металл, который они не умеют обрабатывать". ]];
 
                return [[Майкл Райт отвечает: "Идея построить постоянную подводную станцию пришла мне в голову через некоторое время после завершения Надежды. Думаю, что не встреть мы тогда навьяров, Дрейк не позволил бы мне заниматься этим. Но его явно заинтересовала возможность постоянного пребывания вблизи этих рыбней. Конечно, если бы не Сильвия, я никогда не смог бы сделать станцию автономной -- я долго думал, как обеспечить нас всем необходимым здесь: едой, электричеством, воздухом, инструментами. Еду и воздух мы получаем в секции Аэрис. Электричество получаем сжигая топливо нескольких видов: растения, выращиваемые в Аэрисе и уголь, выменянный у навьяров. С инструментами дела обстоят сложнее всего. Но тут нас снова выручают навьяры, с готовностью предлагая нам металл, который они не умеют обрабатывать". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах? ", function()
 
@@ -1089,7 +1490,7 @@ char_michael_wright_dlg = dlg {
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.navjiarr_asked = 2;
 
                return [[Майкл Райт отвечает: "Они меня мало волнуют. Хотя станция существует во многом благодаря сотрудничеству с ними, я предпочитаю поменьше общаться с ними. У меня все еще стоят перед глазами проткнутые кораллловыми копьями тела Ребекки и Нила". ]];
 
                return [[Майкл Райт отвечает: "Они меня мало волнуют. Хотя станция существует во многом благодаря сотрудничеству с ними, я предпочитаю поменьше общаться с ними. У меня все еще стоят перед глазами проткнутые коралловыми копьями тела Ребекки и Нила". ]];
 
            end;
 
        end};
 
        {tag="on_learr", false, "Что вы думаете о Леарр? ", function()
 
@@ -1124,10 +1525,20 @@ char_michael_wright_dlg = dlg {
 
                return [[Майкл Райт отвечает: "Не думаю, что могу что-то о нем сказать. Я видел его один раз, при встрече и не могу сказать, что впечатление было благоприятным. Слишком заносчивый он". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Майкл Райт кивает: "Хорошо".]], code [[ pret(); ]]};
 
        {always=true, "Вернемся к делу.", [[Майкл Райт кивает: "Хорошо".]], code [[ char_michael_wright_dlg:reset_more(); pret(); ]]};
 
        {tag="generic"};
 
        {tag="nih_fixed", false, "Я нашел утечку", [[Майкл Райт кивает: "Спасибо, я отправлю туда человека, чтобы он все поправил. Пока у меня больше нет для вас заданий". ]], code [[ atl_nih_state = 3; atl_rep_wright = atl_rep_wright + 1; ]]};
 
        {tag="sabotage", false, "Даркстар считает, что пожар начался из-за саботажа", function(s)
 
        {tag="dyp_quest", false, "Вождь Дипатреанотра просил меня принести \"светящуюся капсулу\". Что мы можем ему предложить?", [[ Майкл Райт говорит: "Можете взять один из фонарей из того шкафа", -- Майкл показывает рукой на шкаф в другом конце мастерской, -- "И не забудьте захватить пару-тройку запасных батарей. Их можете взять там же". ]], code [[ item_electric_lamp:enable(); ]]};
 
        {tag="nih_fixed", false, "Я нашел утечку.", function(s)
 
            if atl_nih_state == 2 then
 
                atl_nih_state = 3; 
 
                disable_nih();
 
                atl_rep_wright = atl_rep_wright + 1
 
                return [[Майкл Райт кивает: "Спасибо, Дрейк. Приборы показывают, что утечка устранена". ]]
 
            else
 
                return [[Майкл Райт отрицательно качает головой: "Что-то не так. Приборы показывают, что утечка все еще присутствует. Возможно, были повреждены несколько труб. Перепроверьте, пожалуйста". ]]
 
            end;
 
        end};
 
        {tag="sabotage", false, "Даркстар считает, что пожар начался из-за саботажа.", function(s)
 
            atl_rep_wright = atl_rep_wright - 1;
 
            local part1 = [[Майкл Райт недовольно ворчит: "Пожалуйста, не лезьте в это дело. За безопасность станции отвечает Винсент Даркстар и лучше будет, если он будет заниматься этим делом]];
 
            if (not atl_jack_in_party) then
 
@@ -1138,18 +1549,22 @@ char_michael_wright_dlg = dlg {
 
            end;
 
        end};
 
        {tag="ignis_what", false, "Из-за чего начался пожар в Игнисе?", [[Майкл Райт отвечает: "Короткое замыкание. Рядом, к сожалению, никого не оказалось и потушить возгорание вовремя не удалось. Огонь быстро распространился по всей секции, ну а дальше вы все знаете". ]]};
 
        {always=true, "У меня есть несколько вопросов.", [[Майкл Райт отвечает: "Задавайте, посмотрим чем смогу помочь".]], code [[ psub('ask_more'); ]]};
 
        {always=true, "Мне пора", function(s)
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Майкл Райт отвечает: "Задавайте, посмотрим чем смогу помочь".]], code [[ psub('ask_more'); ]]};
 
        {always=true, "Мне пора.", function(s)
 
            if (atl_nih_state == 0 and atl_jack_in_party) then
 
                atl_nih_state = 3;
 
            end;
 
            if (atl_nih_state == 0 and not atl_jack_in_party) then
 
                atl_nih_init();
 
                pr([["Кстати, у меня есть для вас небольшое задание. У нас где-то утечка воздуха. Ничего критичного. Просто прогуляйтесь по станции и если обнаружите, где это - сообщите мне. До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
                pr([["Кстати, у меня есть для вас небольшое задание. У нас где-то утечка воздуха. Ничего критичного, но у нас некому заняться этим. Вы могли бы прогуляться по станции и найти и исправить поломку. Проще всего будет просто заменить трубы на такие же. В случае возникновения проблем -- попросите у Мари в библиотеке документацию по воздуховодам, она даст вам все необходимое. Запасные вы найдете здесь или на складе в Акве. До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
                psub("bq");
 
            else
 
                pr([["До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
                back();
 
            end;
 
        end, code [[ back(); ]]};
 
        end};
 
        {tag="bq"};
 
        {"Хорошо, я сделаю что смогу.", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]};
 
        {tag="son"};
 
        {"Мать Джека умерла, а сам он прозябает в своем доме ничего не делая. ", [[Майкл Райт вздыхает: "Жаль, что все так вышло. Спасибо, что честно сказали мне. Наверное..."]], code[[pret();]]};
 
        {"Мать Джека умерла, но с ним все в порядке. Он все еще живет в вашем доме. ", [[Майкл Райт вздыхает: "Элис...". ]], code[[pret();]]};
 
@@ -1164,7 +1579,47 @@ char_anna_atlantis_dlg = dlg {
 
	};
 
	nam = "Анна Рэдклифф";
 
	disp = "Анна Рэдклифф";
 
	entered = function(s)
 
    
 
    reset_more = function(s)
 
        poff("on_anna", "on_walter", "on_atlantis", "on_drake", "more_questions");
 
        if (rel_anna  < 0) then
 
            if (char_anna.anna_asked == 0) then
 
                pon("on_anna");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.walter_asked == 0) then
 
                pon("on_walter");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.atlantis_asked == 0) then
 
                pon("on_atlantis");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.drake_asked == 0) then
 
                pon("on_drake");
 
                pon("more_questions");
 
            end;
 
        else
 
            if (char_anna.anna_asked < 2) then
 
                pon("on_anna");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.walter_asked < 2) then
 
                pon("on_walter");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.atlantis_asked < 2) then
 
                pon("on_atlantis");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.drake_asked < 2) then
 
                pon("on_drake");
 
                pon("more_questions");
 
            end;
 
        end;
 
    end;
 
    
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -1174,45 +1629,12 @@ char_anna_atlantis_dlg = dlg {
 
			pon('sabotage', 'ignis_what');
 
		end;
 
        
 
        --[[
 
            anna_asked = 0;
 
            walter_asked = 0;
 
            atlantis_asked = 0;
 
            drake_asked = 0;
 
        ]]
 
        poff("on_anna", "on_walter", "on_atlantis", "on_drake");
 
        if (rel_anna  < 0) then
 
            if (char_anna.anna_asked == 0) then
 
                pon("on_anna");
 
            end;
 
            if (char_anna.walter_asked == 0) then
 
                pon("on_walter");
 
            end;
 
            if (char_anna.atlantis_asked == 0) then
 
                pon("on_atlantis");
 
            end;
 
            if (char_anna.drake_asked == 0) then
 
                pon("on_drake");
 
            end;
 
        else
 
            if (char_anna.anna_asked < 2) then
 
                pon("on_anna");
 
            end;
 
            if (char_anna.walter_asked < 2) then
 
                pon("on_walter");
 
            end;
 
            if (char_anna.atlantis_asked < 2) then
 
                pon("on_atlantis");
 
            end;
 
            if (char_anna.drake_asked < 2) then
 
                pon("on_drake");
 
            end;
 
        end;
 
        s:reset_more();
 
	
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[Перед вами стоит девушка лет двадцати-пяти--тридцати. Каштановые волосы ниспадают на плечи. Зеленые глаза внимательно следят за движениями навьяра, с которым она разговаривает. Заметив вас, она просит навьяра подождать и обращается к вам: "Приветствую. Вы, должно быть господин Дрейк? Мое имя Анна Рэдклифф". ]];
 
			return [[Перед вами стоит девушка лет двадцати-пяти--тридцати. Каштановые волосы ниспадают на плечи. Зеленые глаза внимательно следят за движениями навьяра, с которым она разговаривает. Заметив вас, она просит навьяра подождать и обращается к вам: "Приветствую. Вы, должно быть, господин Дрейк? Мое имя Анна Рэдклифф". ]];
 
		else
 
			psub("generic");
 
			return [[Анна Рэдклифф разговаривает с навьяром, стоящим рядом. Заметив вас, она просит его подождать и обращается к вам: "Приветствую, вы что-то хотели?" ]];
 
@@ -1220,8 +1642,17 @@ char_anna_atlantis_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Да, я Дэвид Дрейк. Рад знакомству", [[Анна Рэдклифф улыбается и спрашивает: "Вы что-то хотели?" ]], code = [[ psub('generic'); ]]};
 
		{"Да, я Дэвид Дрейк. Рад знакомству. ", [[Анна Рэдклифф улыбается и спрашивает: "Вы что-то хотели?" ]], code = [[ psub('generic'); ]]};
 
        {tag="ask_more"};
 
        {tag="on_anna", "Расскажите о себе. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.anna_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.anna_asked = 2;
 
                return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдалеке от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- помимо навьяров, с которыми всегда интересно, я помогаю Екатерине и Сильвии с расшифровкой текстов или Мари в библиотеке". ]];
 
            end;
 
        end};
 
        {tag="on_walter", "Расскажите об Уолтере. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.walter_asked = 1;
 
@@ -1233,34 +1664,34 @@ char_anna_atlantis_dlg = dlg {
 
        end};
 
        {tag="on_atlantis", "Что вы думаете об Атлантиде?", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.on_atlantis = 1;
 
                char_anna.atlantis_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.on_atlantis = 2;
 
                return [[Анна Рэдклифф отвечает: "Последние десять лет я живу здесь, на Атлантиде. Я хорошо помню, как расстроена я была, приехав сюда. Конечно, я не думала, что мы все проведем здесь лет десять. Мне казалось, что уже через полгода-год мы вернемся на поверхность, но намерения вашего отца сильно отличались от этого. Потом Екатерина и Сильвия познакомили меня с Телнеарром и Хетеарром -- двумя навьярами, которые первыми жили на станции. Потом Хетеарр вернулся домой, а вместо него на станцию прибыл Ривеерр. А затем покинул станцию и Телнеарр. Его заменила Леарр". ]];
 
                char_anna.atlantis_asked = 2;
 
                return [[Анна Рэдклифф отвечает: "Последние десять лет я живу здесь, на Атлантиде. Я хорошо помню, как расстроена я была, приехав сюда. Конечно, я не думала, что мы все проведем здесь столько времени. Первое время мне казалось, что мы вот-вот закончим и вернемся на поверхность,но намерения вашего отца сильно отличались от этого. Почти сразу после прибытия Екатерина и Сильвия познакомили меня с Телнеарром и Хетеарром -- двумя навьярами, которые первыми жили на станции. Потом Хетеарр вернулся домой, а вместо него на станцию прибыл Ривеерр. А затем покинул станцию и Телнеарр. Его заменила Леарр". ]];
 
            end;
 
        end};
 
        {tag="on_drake", "Расскажите об Уильяме Дрейке. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.on_drake = 1;
 
                char_anna.drake_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.on_drake = 2;
 
                char_anna.drake_asked = 2;
 
                return [[Анна Рэдклифф отвечает: "Хотя Дрейк -- руководитель Атлантиды, он проводит больше времени здесь, в Окулусе, чем в своем кабинете в Доминусе. Сейчас он в экспедиции -- они с Блэком отправились на поиски отдаленных навьярских поселений". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Анна Рэдклифф кивает: "Хорошо".]], code [[ pret(); ]]};
 
		{tag="generic"};
 
        {tag="on_anna", "Расскажите о себе. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.anna_asked = 1;
 
        {tag="on_black", "Расскажите об Адриане Блэке. ", function(s)
 
            if rel_anna < 0 then
 
                char_anna.black_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.anna_asked = 2;
 
                return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдалеке от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- здесь есть навьяры. Когда они заняты -- я сижу в библиотеке, с Мари, или смотрю фильмы в Игнисе". ]];
 
                char_anna.black_asked = 2;
 
                return [[Анна Рэдклифф пожимает плечами: "Все вокруг говорят, что он хороший друг вашего отца, но мне почти не доводилось с ним общаться".]];
 
            end;
 
        end};
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе - следствие саботажа?", function(s)
 
        {always=true, "Вернемся к делу.", [[Анна Рэдклифф кивает: "Хорошо".]], code [[ char_anna_atlantis_dlg:reset_more(); pret(); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе -- следствие саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			rel_walter = rel_walter - 1;
 
@@ -1268,8 +1699,8 @@ char_anna_atlantis_dlg = dlg {
 
			return [[Анна удивленно смотрит на вас: "Зачем вы это говорите? Кому может прийти в голову подобное?" ]];
 
		end};
 
		{tag="ignis_what", "Вы знаете, что произошло в Игнисе?", [[Анна отрицательно качает головой: "Мне почти ничего неизвестно. Поговорите с Даркстаром или Райтом. Или спросите моего брата, Уолтера. Я думаю он в курсе". ]]};
 
        {always=true, "У меня есть несколько вопросов.", [[Анна отвечает: "Да, я слушаю".]], code [[ psub('ask_more'); ]]};
 
		{always=true, "Я пойду", [[Анна прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Анна отвечает: "Да, я слушаю".]], code [[ psub('ask_more'); ]]};
 
		{always=true, "Я пойду.", [[Анна прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
	};
 
};
 
 
@@ -1281,7 +1712,14 @@ char_learr_atlantis_dlg = dlg {
 
	};
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = function(s)
 
	enter = function(s)
 
        poff('iyh1', 'iyh2');
 
        if (atl_iyh_state == 1 and not atl_iyh_learr_spoken) then
 
            pon('iyh1');
 
        elseif (atl_iyh_state == 2 and ArrayUtils.indexOf(pl.party, 'learr') == 0) then
 
            pon('iyh2');
 
        end;
 
    
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
@@ -1312,16 +1750,6 @@ char_learr_atlantis_dlg = dlg {
 
                if (char_learr.on_books < 2) then pon("on_books") end;
 
            end;
 
            
 
            poff('iyh1', 'iyh4', 'iyh5');
 
            if (atl_iyh_state == 1) then
 
                pon('iyh1');
 
            elseif (atl_iyh_state == 2 and ArrayUtils.indexOf(pl.party, 'learr') == 0) then
 
                pon('iyh2');
 
			elseif (atl_iyh_state == 4) then
 
				pon("iyh4");
 
			elseif (atl_iyh_state == 5) then
 
				pon("iyh5");
 
			end;
 
			psub("generic");
 
			if (rel_learr > 0) then
 
				return [[Леарр поворачивается к вам, плавники ее принимают сине-зеленый оттенок, а она говорит: "Я рада-видеть тебя". ]];
 
@@ -1334,31 +1762,28 @@ char_learr_atlantis_dlg = dlg {
 
		{tag='offended'};
 
		{"Монстр?", [[Леарр молча кивает. Оттенок головных плавников на мгновение сменяется на желтый, но затем снова становится фиолетовым: "Ты так-назвал меня. Мы будем-дальше-монстрами-называть друг-друга?" ]], code [[ psub('offended_yes_no') ]]};
 
		{tag='offended_yes_no'};
 
		{"Не думаю", [[Леарр кивает, ее плавники медленно теряют цвет. Она говорит: "Я слушаю тебя. Ты говори". ]], code [[ 
 
		{"Не думаю.", [[Леарр кивает, ее плавники медленно теряют цвет. Она говорит: "Я слушаю тебя. Ты говори". ]], code [[ 
 
            char_learr_atlantis_dlg.state = 1;
 
            walk('atl_iof_intro'); 
 
        ]]};
 
		{"От этого суть не изменится, чудище", [[Леарр скалится, показывая блестящие острые зубки: "Ты убиррайся, пока я тебя не ссъела". ]], code [[ 
 
		{"От этого суть не изменится, чудище.", [[Леарр скалится, показывая блестящие острые зубки: "Ты убиррайся, пока я тебя не ссъела". ]], code [[ 
 
			char_learr_atlantis_dlg.state = 1;
 
			walk('atl_iof_intro'); 
 
		]]};
 
		{tag='pre_iof'};
 
		{"He'vji'a'rr?", [[Леарр кивает: "Мы так-наззываем пришшедшших-сс-поверхноссти-васс". ]]};
 
		{"Я хотел кое-что спросить", [["Ты говорри", - просит Леарр. ]], code [[ 
 
		{"Я хотел кое-что спросить.", [["Ты говорри", -- просит Леарр. ]], code [[ 
 
			char_learr_atlantis_dlg.state = 1;
 
			walk('atl_iof_intro'); 
 
		]]};
 
		{tag="after_iof"};
 
		{"Рад, что смог помочь", [[Леарр кивает, все еще находясь в явном возбуждении: "Ты говоррить-пришшел? Ты говорри". ]], code [[ psub("generic"); ]]};
 
		{"У меня не было выбора", [[Леарр непонимающе смотрит на вас, однако говорит: "Я благодаррю тебя. Ты говорри".
 
		]], code [[ rel_learr = rel_learr - 1; psub("generic"); ]]};
 
		{"Рад, что смог помочь.", [[Леарр кивает, все еще находясь в явном возбуждении: "Ты говоррить-пришшел? Ты говорри". ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
		{tag="iyh1", "Расскажи о вашем конфликте с Дипатреанотром.", [[Леарр начинает рассказывать, активно жестикулируя: "Рреликвия нессколько-дней-наззад-изз-нашшего-хррама-прропала. Na'vji'a'yhe'dyp'atre'anot'rr вззяли нашшу-рреликвию! Они потом-в-наш-город-пришли и требовали-вернуть их-реликвию! Мы не-брали ее и это-сказали им!" - Леарр недовольно топает и шипит, - "Они нам-не-верят! Они украли нашу-вещь и не-верят нам!" ]], code [[ atl_iyh_learr_spoken = true; ]]};
 
        {tag="iyh2", "Я отправляюсь в храм Дипатреанотра. Мне не помешает твоя помощь.", [[Плавники Леарр принимают фиолетовый оттенок: "He'vji'a'rr нельзя туда!"]], code [[ psub("join_me"); ]]};      
 
		{tag="iyh4", "Здесь неподалеку есть старый навьярский храм. Я прошу разрешения посетить его.", [[Леарр задумчиво произносит: "He'vji'a'rr нельзя-туда... Я место-не-знаю".^Немного постояв в задумчивости, Леарр восклицает: "Мы-вместе туда-пойдем! Ривеерр это-не-одобрит, но я с-ним-поговорю". ]], code [[ psub("iyh_agree"); ]]};
 
		{tag="iyh1", false, "Расскажи о вашем конфликте с Дипатреанотром.", [[Леарр начинает рассказывать, активно жестикулируя: "Рреликвия нессколько-дней-наззад-изз-нашшего-хррама-прропала. Na'vji'a'yhe'dyp'atre'anot'rr вззяли нашшу-рреликвию! Они потом-в-наш-город-пришли и требовали-вернуть их-реликвию! Мы не-брали ее и это-сказали им!" -- Леарр недовольно топает и шипит, -- "Они нам-не-верят! Они украли нашу-вещь и не-верят нам!" ]], code [[ atl_iyh_learr_spoken = true; ]]};
 
        {tag="iyh2", false, "Я отправляюсь в храм Дипатреанотра. Мне не помешает твоя помощь.", [[Плавники Леарр принимают фиолетовый оттенок: "He'vji'a'rr нельзя туда!"]], code [[ psub("join_me"); ]]};      
 
        {tag="sabotage", false, "Ты знаешь, что пожар начался из-за саботажа?", [[Леарр непонимающе крутит головой: "Я что-ты-говоришь-не-понимаю. Что саботаж?" ]], code [[ poff("ignis_what");psub("sabotage_explain"); ]]};
 
        {tag="ignis_what", false, "Ты знаешь, почему начался пожар в Игнисе?", [[Леарр неуверенно пожимает плечами: "Я ты-лучше-знаешь-думаю. Ты расскажешь?"]], code [[ psub("sabotage_reason"); ]]};
 
        {tag="books", false, "[Показать на книгу]Ты читаешь наши книги?", function(s)
 
        {tag="books", false, "[Показать на книгу] Ты читаешь наши книги?", function(s)
 
            if (rel_learr < 0) then
 
                char_learr.on_books = 1;
 
                return [[Леарр неохотно отвечает: "Я иногда-читаю". Она явно не хочет говорить с вами об этом сейчас. ]];
 
@@ -1368,16 +1793,18 @@ char_learr_atlantis_dlg = dlg {
 
                return [[Леарр отвечает: "Я иногда-читаю". Она опускает глаза на книгу, потом смотрит на вас. Немного подумав, она отвечает, как-бы нехотя: "Я не-умею-ваш-язык-читать. Я пытаюсь-учусь. Мари помогает". ]];
 
            end;
 
        end};
 
		{"Я пойду", [[Плавники Леарр медленно теряют цвет и она прощается с вами: "Ты воззврращщайсся". ]], code [[back();]]};
 
		{always=true, "Я пойду.", [[Плавники Леарр медленно теряют цвет и она прощается с вами: "Ты воззврращщайсся". ]], code [[back();]]};
 
        {tag="join_me"};
 
        {"Я не собираюсь входить внутрь, но мне нужно осмотреть его окрестности.", [[Цвет плавников Леарр меняется на оранжевый и затем на желтый. Она соглашается: "Я с-тобой-пойду. Я давно-в-Ираафаанотре-не-была". ]], code [[
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            table.insert(pl.party, 'learr');
 
            move(char_learr, char_learr.home);
 
            pret();
 
        ]]};
 
        {"Для этого ты мне и нужна.", [[Цвет плавников Леарр меняет цвет на синий. Она соглашается: "Я согласна. Я с-тобой-пойду". ]], code [[
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            table.insert(pl.party, 'learr');
 
            move(char_learr, char_learr.home);
 
            pret();
 
        ]]};
 
        {tag="sabotage_explain"};
 
@@ -1398,18 +1825,7 @@ char_learr_atlantis_dlg = dlg {
 
        {"Давно ты этим занимаешься?", [[Леарр кивает: "Я с-ссамого-пррибытия-вашши-книги-учуссь-читать. Я надеюссь-вссе-пойму ссо-врременем". ]]};
 
        {"Как у тебя успехи?", [[Леарр смущенно отвечает: "Я ещще-многое-не-понимаю. Но я ссо-врременем-пойму-надеюссь". ]]};
 
        {"Давай поговорим о другом.", [[Леарр кивает: "Ты говорри". ]], code [[pret();]]};
 
        {tag="legend2", empty=code [[back();]]};
 
        {"Значит, вы не брали реликвию?", [[Леарр недовольно шипит: "Ты тожже-мне-не-верришшь?! Ухходи!"]]};
 
        {"У тебя есть идеи, куда могла пропасть их реликвия?", [[Леарр отрицательно качает головой: "Нет". ]]};
 
		{tag="iyh_agree"};
 
		{"Я согласен. Только так мы докажем Дипатреанотру, что вы ни при чем.", [[Леарр отвечает: "Ты сообщщи, когда готов-будешшь. Мы поззжже-поговоррим". ]], code [[ 
 
			lifeon("char_learr");
 
			table.insert(pl.party, 'learr');
 
			atl_iyh_state = 6; 
 
			back(); 
 
		]]};
 
		{"Лучше я отправлюсь один.", [[Леарр недовольно шипит: "Не взздумай! Ты ссебе, мне и Ry'vee'rr-у ххужже ссделаешшь". ]]};
 
	};
 
    }
 
};
 
 
char_aikerjarr_dlg = dlg {
 
@@ -1418,60 +1834,63 @@ char_aikerjarr_dlg = dlg {
 
        lfc_dialog = false;      
 
	};
 
	nam = "Аикерьярр";
 
	dsc = function(s)
 
	enter = function(s)
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;
 
        
 
        poff('iyh1', 'iyh2', 'iyh4', 'iyh5');
 
        if (atl_iyh_state == 1 and not atl_iyh_aikerjarr_spoken) then
 
            pon('iyh1');
 
        elseif (atl_iyh_state == 2 and not atl_iyh2_aikerjarr_spoken) then
 
            if atl_iyh2_ryveerr_spoken then
 
                pon("iyh2_ryveerr");
 
            end;
 
            pon('iyh2');
 
        end;
 
        
 
        if (s.state == 0) then
 
            psub("first_meeting");
 
            return [[Перед вами стоит высокий стройный навьяр. Серебристая чешуя сверкает в свете электрических ламп. Неприязненный взгляд его зеленых глаз направлен на вас. Существо одето в темно-зеленые облегающие штаны и куртку из водорослей. В правой руке навьяр держит острозаточенное коралловое копье. ]];
 
            return [[Перед вами стоит высокий стройный навьяр. Серебристая чешуя сверкает в свете электрических ламп. Неприязненный взгляд его зеленых глаз направлен на вас. Существо одето в темно-зеленые облегающие штаны и куртку из водорослей. В правой руке навьяр держит коралловое копье. ]];
 
		elseif (s.state == 1) then
 
			psub("generic");
 
		
 
            poff('iyh1', 'iyh2', 'iyh4', 'iyh5');
 
            if (atl_iyh_state == 1) then
 
                pon('iyh1');
 
            elseif (atl_iyh_state == 2 and not atl_iyh2_aikeryarr_spoken) then
 
                pon('iyh2');
 
			elseif (atl_iyh_state == 4) then
 
				pon("iyh4");
 
			elseif (atl_iyh_state == 5) then
 
				pon("iyh5");
 
			end;
 
		end;
 
		return [[Аикерьярр презрительно смотрит на вас, не говоря ни слова. ]];
 
	end;
 
	phr = {
 
        {tag = "first_meeting"};
 
        {always = "true", "Ты Аикерьярр?", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2a"); ]]};
 
        {always = "true", "Добрый день.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {always = "true", "Приветствую.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {always=true, "Ты Аикерьярр?", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2a"); ]]};
 
        {always=true, "Добрый день.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {always=true, "Приветствую.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {tag="first_meeting_2a"};
 
        {always = "true", "Нам нужно поговорить.", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vja'a'za'rr".]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_3a");]]};
 
        {always=true, "Нам нужно поговорить.", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vji'a'za'rr".]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_3a");]]};
 
        {tag="first_meeting_2b"};
 
        {always = "true", "Я тебя не понимаю", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[char_aikerjarr_dlg.state = 1; psub("first_meeting_2a");]]};
 
        {always = "true", "Кончай дурить, я знаю, что ты меня понимаешь", [[Навьяр скалит зубы: "Ты-ххевьярр так-ссо-мной-не-говорри". ]], code [[char_aikerjarr_dlg.state = 1; psub("first_meeting_3b");]]};
 
        {always = "true", "Я приду позже", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {always=true, "Я тебя не понимаю", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[char_aikerjarr_dlg.state = 1; psub("first_meeting_2a");]]};
 
        {always=true, "Кончай дурить, я знаю, что ты меня понимаешь.", [[Навьяр скалит зубы: "Ты-ххевьярр так-ссо-мной-не-говорри". ]], code [[ psub("first_meeting_3b");]]};
 
        {always=true, "Я приду позже.", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {tag="first_meeting_3a"};
 
        {always = "true", "I'rr vtre'za'nn na'vja'za'rr. Нам все еще нужно поговорить. ", [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[ char_aikerjarr_dlg.state = 1; psub("generic"); ]]};
 
        {"Нам все еще нужно поговорить", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vja'a'za'rr".]], code [[ back(); ]]};
 
        {always = "true", "Я приду позже", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {always=true, "I'rr vtre'za'nn na'vji'a'za'rr. Нам все еще нужно поговорить. ", [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[ char_aikerjarr_dlg.state = 1; psub("generic"); ]]};
 
        {always=true, "Нам все еще нужно поговорить.", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vji'a'za'rr".]], code [[ back(); ]]};
 
        {always=true, "Я приду позже.", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {tag="first_meeting_3b"};
 
        {always= "true", "Значит, ты все-таки меня понимаешь. У меня есть вопросы.",  [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always= "true", "Значит, ты все-таки меня понимаешь. Хватит тратить мое время.", [[Навьяр недовольно рычит: "Ты говорри". ]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always= "true", "Значит, ты все-таки меня понимаешь, чертов рыбень. Теперь слушай и отвечай.", [[Навьяр стучит копьем об пол и отворачивается от вас. ]], code [[back();]]};
 
        {always=true, "Значит, ты все-таки меня понимаешь. У меня есть вопросы.",  [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always=true, "Значит, ты все-таки меня понимаешь. Хватит тратить мое время.", [[Навьяр недовольно рычит: "Ты говорри". ]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always=true, "Значит, ты все-таки меня понимаешь, чертов рыбень. Теперь слушай и отвечай.", [[Навьяр стучит копьем об пол и отворачивается от вас. ]], code [[back();]]};
 
		{tag = "generic"};
 
        {tag = "sabotage", "Ты знаешь, что пожар начался из-за саботажа?", [[Аикерьярр лишь слегка усмехается, но не удостаивает вас ответом. ]]};
 
        {tag = "ignis_what", "Ты знаешь, почему начался пожар в Игнисе?", [[Аикерьярр лишь слегка усмехается, но не удостаивает вас ответом. ]]};
 
		{tag="iyh1", "Расскажи о вашем конфликте с Дипатреанотром.", [[Аикерьярр недовольно смотрит на вас:"He'vji'a'rr не-помочь".^Немного подумав, он рассказывает: "Na'vji'a'yhe'dyp'atre'anot'rr говоррить yhe мы украссть реликвия-изз-ихх-ххррама", -- Аикерьярр злобно стучит зубами и в ярости сжимает кулаки, -- "Мы не-делали-этого-ссказзали им! Но они в-ответ-на-нашш-ххррам-напали и нашши-рреликвии-вззяли!" ]], code [[ atl_iyh_learr_spoken = true; ]]};
 
        {tag="iyh2", "Я собираюсь в храм Дипатреанотра", [[Аикерьярр пожимает плечами: "Ты туда-не-идешь. Ты спроси Ривеерра".]], code [[ atl_iyh2_aikeryarr_spoken = true; psub("on_iyh2"); ]]};      
 
        {tag="iyh4", "Неподалеку отсюда есть старый храм навьяров. Я прошу разрешения посетить его.", [[
 
            Аикерьярр кивает: "Я не-понимаю, hyd это связано с-текущей-ситуацией. Ты узнай e тогда-приходи"
 
        ]], code [[ back(); ]]};      
 
		{"Я вернусь позже", [[Аикерьярр отворачивается от вас, даже не удостоив ответом. ]], code [[back(); ]]};
 
		{tag="iyh1", false, "Расскажи о вашем конфликте с Дипатреанотром.", [[Аикерьярр недовольно смотрит на вас:"He'vji'a'rr не-помочь". ^Немного подумав, он рассказывает: "Na'vji'a'yhe'dyp'atre'anot'rr говоррить yhe мы украссть реликвия-изз-ихх-ххррама, -- Аикерьярр злобно стучит зубами и в ярости сжимает кулаки, -- Мы не-делали-этого-ссказзали им! Но они в-ответ-на-нашш-ххррам-напали и нашши-рреликвии-вззяли!" ]], code [[ atl_iyh_aikerjarr_spoken = true; ]]};
 
        {tag="iyh2", false, "Я собираюсь в храм Дипатреанотра.", [[Аикерьярр пожимает плечами: "Ты туда-не-идешь. Ты спроси Ривеерра".]], code [[ psub("on_iyh2"); ]]}; 
 
		{always=true,"Я вернусь позже.", [[Аикерьярр отворачивается от вас, даже не удостоив ответом. ]], code [[back(); ]]};
 
        {tag="on_iyh2"};
 
        {tag="iyh2_ryveerr", false, "Ривеерр дал мне разрешение на осмотр окрестностей храма. ", [[Аикерьярр недовольно рычит: "Никчемный-глупец-Ривеерр. Я ссс-тобой-иду". ]], code [[ atl_iyh2_aikerjarr_spoken = true; table.insert(pl.party, 'aikerjarr'); move(char_aikerjarr_lev, char_aikerjarr_lev.home); psub("on_iyh22"); ]]};
 
        {always=true,"Я вернусь позже.", [[Аикерьярр отворачивается от вас, даже не удостоив ответом. ]], code [[back(); ]]};
 
        {tag="on_iyh22"};
 
        {"Хорошо.", [[Аикерьярр отворачивается от вас, не удостоив ответом. ]], code [[back(); ]]};
 
        {"Ты мне там не нужен.", [[Аиверьярр отвечает: "Я ссс-тобой-иду или ты не-идешшь-туда". ]]};
 
	};
 
};
 
 
@@ -1482,18 +1901,20 @@ char_ryveerr_dlg = dlg {
 
	};
 
	nam = "Ривеерр";
 
	disp = "Ривеерр";
 
	entered = function(s)
 
    
 
    reset_more = function(s)
 
        poff("on_atlantis", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");   
 
        if (atl_rep_dyp < 0) then
 
            if (char_ryveerr.atlantis_asked == 0) then pon("on_atlantis"); end;
 
            if (char_ryveerr.learr_asked == 0) then pon("on_learr"); end;
 
            if (char_ryveerr.ryveerr_asked == 0) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked == 0) then pon("on_aikerjarr"); end;
 
            if (char_ryveerr.atlantis_asked == 0) then pon("on_atlantis", "more_questions"); end;
 
            if (char_ryveerr.learr_asked == 0) then pon("on_learr", "more_questions"); end;
 
            if (char_ryveerr.ryveerr_asked == 0) then pon("on_ryveerr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked == 0) then pon("on_aikerjarr", "more_questions"); end;
 
        else
 
            if (char_ryveerr.atlantis_asked < 2) then pon("on_atlantis"); end;
 
            if (char_ryveerr.learr_asked < 2) then pon("on_learr"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.learr_asked < 3) then pon("on_learr"); end;
 
            if (char_ryveerr.ryveerr_asked < 2) then pon("on_ryveerr"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked < 2) then pon("on_aikerjarr"); end;
 
            if (char_ryveerr.atlantis_asked < 2) then pon("on_atlantis", "more_questions"); end;
 
            if (char_ryveerr.learr_asked < 2) then pon("on_learr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.learr_asked < 3) then pon("on_learr", "more_questions"); end;
 
            if (char_ryveerr.ryveerr_asked < 2) then pon("on_ryveerr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked < 2) then pon("on_aikerjarr", "more_questions"); end;
 
        end;
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
@@ -1501,12 +1922,27 @@ char_ryveerr_dlg = dlg {
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;
 
           
 
    end;
 
    
 
	enter = function(s)
 
        s:reset_more();
 
        
 
        poff('iyh1', 'iyh2', 'learr_comes');
 
        if (atl_iyh_state == 1 and not atl_iyh_ryveerr_spoken) then
 
            pon('iyh1');
 
        elseif (atl_iyh_state == 2 and not atl_iyh2_ryveerr_spoken) then
 
            pon('iyh2');
 
        end;
 
        if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
            pon('learr_comes');
 
        end;
 
        
 
        if (s.state == 0) then
 
            s.state = 1;
 
            psub("first_meeting");
 
            return [[Перед вами стоит навьяр. Серо-зеленая чешуя, несколько более темная, чем у Леарр блестит в свете электрических ламп. Красно-оранжевые глаза внимательно смотрят на вас. Он одет в темно-зеленые облегающие шорты и куртку из водорослей. Навьяр приветствует вас: "Ривеерр-из-Дипатреанотра рад-видеть тебя". ]];
 
        elseif (atl_iof_completed and char_ryveerr.iof_reaction == 0) then
 
            char_ryveerr.iof_reaction = 1;
 
            if (atl_iof_learr_dead) then
 
                psub("iof_learr_dead");
 
                return [[Плавники Ривеерра окрашиваются синим. Он произносит: "Хевьяр-ты не-помог Леарр". ]];
 
@@ -1519,37 +1955,16 @@ char_ryveerr_dlg = dlg {
 
            end;
 
        else
 
            psub("generic");
 
            if (s.state == 1) then
 
                poff('iyh1', 'iyh2');
 
                if (atl_iyh_state == 1) then
 
                    pon('iyh1');
 
                elseif (atl_iyh_state == 2 and not atl_iyh2_ryveerr_spoken) then
 
                    pon('iyh2');
 
                elseif (atl_iyh_state == 4) then
 
                    psub("situation");
 
                elseif (atl_iyh_state == 5) then
 
                    pon("legend");
 
                end;
 
            elseif (s.state == 2) then
 
                if (atl_iyh_state == 6) then
 
                    if (atl_iof_learr_dead) then
 
                        pon("take_aikerjarr");
 
                    else
 
                        pon("take_learr");
 
                    end;
 
                end;
 
                pon("legend2");
 
            end;
 
            return [[Ривеерр оборачивается к вам: "Ты говори". ]];
 
        end;      
 
	end;
 
	phr = {
 
        {tag="first_meeting"};
 
        {"Мое имя Дэвид Дрейк. Рад знакомству.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын"]], code[[psub("first_meeting_2");]]};
 
        {"Мое имя Дэвид Дрейк.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын"]], code[[psub("first_meeting_2");]]};
 
        {"Мое имя Дэвид Дрейк. Рад знакомству.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын". ]], code[[psub("first_meeting_2");]]};
 
        {"Мое имя Дэвид Дрейк.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын". ]], code[[psub("first_meeting_2");]]};
 
        {tag="first_meeting_2"};
 
        {"Да, все верно.", [[Ривеерр: "Я рад-помочь тебе. Ты говори"]], code [[psub("generic");]]};
 
        {"Я хотел кое-что спросить. ", [[Ривеерр: "Ты говори"]], code [[psub("generic");]]};
 
        {"Да, все верно.", [[Ривеерр: "Я рад-помочь тебе. Ты говори". ]], code [[psub("generic");]]};
 
        {"Я хотел кое-что спросить. ", [[Ривеерр: "Ты говори". ]], code [[psub("generic");]]};
 
        {tag="iof_learr_dead"};
 
        {"Я сделал все, что мог.", [[Ривеерр кивает: "Мне жаль, что ты-помочь-Леарр-не-смог". Через некоторое время он приглашает: "Ты говори". ]], code [[ psub("generic"); ]]};
 
        {"Я пришел говорить о другом. ", [[Ривеерр отворачивается от вас. ]], code [[
 
@@ -1560,8 +1975,8 @@ char_ryveerr_dlg = dlg {
 
        {tag="iof_learr"};
 
        {"Я тоже. ", [[Ривеерр кивает и приглашает вас: "Ты говори". ]], code [[psub("generic");]]};
 
		{tag="generic"};
 
		{tag="iyh1", false, "Расскажи о конфликте Ираафаанотра с Дипатреанотром.", [[Ривеерр рассказывает вам: "Na'vji'a'yhe'iraa'pha’anot’rr нашу-реликвию-украли. Мы тем-же-ответили им". ]], code [[ psub("more_on_relic"); ]]};
 
        {tag="iyh2", "Я собираюсь в храм Дипатреанотра.", [[Плавники на голове Ривеерра меняют цвет на сине-фиолетовый: "Ты туда-не-идешь".]], code [[ atl_iyh2_ryveerr_spoken = true; psub("on_iyh2"); ]]};      
 
		{tag="iyh1", false, "Расскажи о конфликте Ираафаанотра с Дипатреанотром.", [[Ривеерр рассказывает вам: "Na'vji'a'yhe'iraa'pha’anot’rr нашу-реликвию-украли. Мы тем-же-ответили им". ]], code [[ atl_iyh_ryveerr_spoken = true; psub("more_on_relic"); ]]};
 
        {tag="iyh2", false, "Я собираюсь в храм Дипатреанотра.", [[Плавники на голове Ривеерра меняют цвет на сине-фиолетовый: "Ты туда-не-идешь". ]], code [[ atl_iyh2_ryveerr_spoken = true; psub("on_iyh2"); ]]};      
 
        {tag="sabotage", [[Ты знаешь, что пожар начался из-за саботажа?]], function(s)
 
            if (atl_iof_learr_dead) then
 
                return [[Ривеерр недовольно отвечает: "Это-не-значимо. Значимо, что Леарр мертва". ]];
 
@@ -1576,16 +1991,16 @@ char_ryveerr_dlg = dlg {
 
                return [[Ривеерр спокойно отвечает: "Ты со-мной-про-это-не-говори. Это-ваши-дела. Я не-хочу-ими-заниматься". ]];
 
            end;
 
        end};
 
        {always=true, "Я хочу кое что спросить.", [[Ривеерр кивает: "Ты спрашивай". ]], code [[ psub("questions"); ]]};
 
        {tag="more_questions", always=true, "Я хочу кое-что спросить.", [[Ривеерр кивает: "Ты спрашивай". ]], code [[ psub("ask_more"); ]]};
 
        {always=true, "Я пойду.", [[Ривеерр прощается с вами: "Мы позже-поговорим". ]], code [[ back(); ]]};
 
        {tag="questions"};
 
        {tag="ask_more"};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s)
 
            if (atl_rep_dyp < 0) then
 
                char_ryveerr.atlantis_asked = 1;
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества".]];
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества". ]];
 
            else
 
                char_ryveerr.atlantis_asked = 2;
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества. Я продолжаю-доказывать-пользу-нашего-с-вами-хевьярами-общения и многие-в-Дипатреанотре уже-согласны-со-мной. Если план-Дрейка успешен-будет, то наша-благодарность будет-неизмерима. Хевьяры наслеие-древних-ищут, как легенды гласят".]];
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества. Я продолжаю-доказывать-пользу-нашего-с-вами-хевьярами-общения и многие-в-Дипатреанотре уже-согласны-со-мной. Если план-Дрейка успешен-будет, то наша-благодарность будет-неизмерима. Хевьяры наследие-древних-ищут, как легенды гласят". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", "Что ты думаешь об Аикерьярре?", function(s)
 
@@ -1613,45 +2028,21 @@ char_ryveerr_dlg = dlg {
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_ryveerr.learr_asked = 3;
 
                    return [[Плавники Ривеерра окрашиваются голубым и он отвечает: "Я понимаю ее-гибель-насчастный-случай, но ситуацию-легче-не-делает. Дипатреанотр-мы одну-из-немногих-друзей-в-Ираафаанотре-потеряли". ]];
 
                    return [[Плавники Ривеерра окрашиваются голубым и он отвечает: "Я понимаю ее-гибель-несчастный-случай, но ситуацию-легче-не-делает. Дипатреанотр-мы одну-из-немногих-друзей-в-Ираафаанотре-потеряли". ]];
 
                else
 
                    char_ryveerr.learr_asked = 2;
 
                    return [[Плавники Ривеерра окрашиваются зеленым и он отвечает: "Леарр из Ираафаанотра. Мы часто-разногласия с-ними, но с-Леарр всегда-понимание-находим. Это с-Ираафаанотр-отношениям-помогает и хорошо-есть. Я что-она-на-Атлантиде-рад и друг-с-другом-и-с-вами-что-мы-можем общаться-постоянно. Это с-вами-нашим-отношениям-помогает и тоже-хорошо-есть".]];
 
                    return [[Плавники Ривеерра окрашиваются зеленым и он отвечает: "Леарр из Ираафаанотра. Мы часто-разногласия с-ними, но с-Леарр всегда-понимание-находим. Это с-Ираафаанотр-отношениям-помогает и хорошо-есть. Я что-она-на-Атлантиде-рад и друг-с-другом-и-с-вами-что-мы-можем общаться-постоянно. Это с-вами-нашим-отношениям-помогает и тоже-хорошо-есть". ]];
 
                end;
 
            end;
 
        end};
 
        {always=true, "Давай поговорим о другом.", [[Ривеерр кивает: "Ты говори". ]], code [[ pret(); ]]};
 
        {always=true, "Давай поговорим о другом.", [[Ривеерр кивает: "Ты говори". ]], code [[ char_ryveerr_dlg:reset_more(); pret(); ]]};
 
		{tag="more_on_relic"};
 
		{"Тем же?", [[Ривеерр щелкает зубами: "Мы светодиск-из-их-храма-забрали. Мы вернем его, ysl они вернут нашу-реликвию". ]]};
 
		{"Вы уверены, что кража - их рук дело?", [[Ривеерр уверенно кивает: "Только-они могли сделать. Я расскажу", -- Ривеерр на небольшое время замолкает, собираясь с мыслями, после чего продолжает: "Na'vji'a'yhe'iraa'pha’anot’rr ночью-в-наш-храм-пришли и охранников-убили. Они реликвию-украли и в-свой-город-унесли". ]], code [[ psub("why"); ]]};
 
		{"Вы уверены, что кража -- их рук дело?", [[Ривеерр уверенно кивает: "Только-они могли сделать. Я расскажу", -- Ривеерр на небольшое время замолкает, собираясь с мыслями, после чего продолжает: "Na'vji'a'yhe'iraa'pha’anot’rr ночью-в-наш-храм-пришли и охранников-убили. Они реликвию-украли и в-свой-город-унесли". ]], code [[ psub("why"); ]]};
 
		{tag="why", empty=code [[ atl_iyh_ryveerr_spoken = true; psub("generic"); ]]};
 
		{"Вы уверены, что это они?", [[Ривеерр отвечает: "Другой-никто не-мог-сделать". ]]};
 
        {"Как убили охранников?", [[Ривеерр отвечает: "Их копьями-проткнули. Мы раны-видели". ]]};
 
		{tag="situation"};
 
		{"Мы знаем об одном древнем храме неподалеку отсюда.", [[Ривеерр пожимает плечами: "Я не-понимаю, hyd это поможет нам". ]], code [[ psub("cancel");]]};
 
		{always=true, "Я пойду.", [[Ривеерр прощается с вами: "Мы позже-поговорим". ]], code [[ back(); ]]};
 
		{tag="legend"};
 
		{"Мы знаем где ваша реликвия. Мы знаем об одном древнем храме, где живет затмевающий свет. [Кратко пеесказать легенду]", [[
 
			"Я знаю эту-легенду. Вы возможно-правы. В-храм вам-нельзя-идти. Это наше-священное-место. he'vji'a'rr не-место-там. Затмевающий-свет не-враг-нам. Его нельзя-тревожить".
 
		]], code [[ psub("legend_more")]]};
 
		{always=true, "Я пойду.", [[
 
			Ривеерр прощается с вами: "Мы позже-поговорим".
 
		]], code [[ back(); ]]};
 
		{tag="legend_more"};
 
		{"Вы могли бы сопровождать нас. ", [[
 
			"В-храм нельзя-вам".
 
		]], code [[ 
 
			char_ryveerr_dlg.state = 2;
 
		]]};
 
		{always=true, "Я вернусь позже", [[Ривеерр прощается с вами: "Мы поззжже-поговоррим". ]], code [[ back(); ]]};
 
		{tag="legend2"};
 
		{tag="take_learr", false, "Леарр согласилась сопровождать нас в храм. ", [[
 
			"Леарр'yhe'iraa’pha’anot’rr. Не-уверен-я что-могу-доверять-ей. Я подумать-должен..." - Некоторое время Ривеерр стоит неподвижно, задумавшись. Наконец, скрестив руки на груди, Ривеерр продолжает: "Я согласен".
 
		]], code [[ atl_iyh_state = 6; back(); ]]};
 
		{tag="take_aikerjarr", false, "Аикерьярр согласился сопровождать нас в храм", [[
 
			"Аикерьярр'yhe'iraa’pha’anot’rr. Не-уверен-я что-могу-доверять-ему. Я подумать-должен..." - Некоторое время Ривеерр стоит неподвижно, задумавшись. Наконец, скрестив руки на груди, Ривеерр продолжает: "Я согласен".
 
		]], code [[ atl_iyh_state = 6; back(); ]]};
 
		{always=true, "Я вернусь позже", [[Ривеерр прощается с вами: "Мы поззжже-поговоррим". ]], code [[ back(); ]]};
 
		{always=true, "Я вернусь позже.", [[Ривеерр прощается с вами: "Мы поззжже-поговоррим". ]], code [[ back(); ]]};
 
        {tag="on_iyh2"};
 
        {"Я не собираюсь внутрь храма, мне нужно лишь осмотреть окрестности.", [[Ривеерр кивает: "Я это-разрешу. Ты иди". ]], code [[ pret(); ]]};
 
        {tag="learr_comes", "Со мной отправится Леарр.", [[Ривеерр отвечает: "Ты туда-не-идешь. He'vji'a'rr нельзя-в-храм". ]]};
 
@@ -1664,7 +2055,7 @@ char_evans_dlg = dlg {
 
	};
 
	nam = "Кристиан Эванс";
 
	disp = "Кристиан Эванс";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -1685,8 +2076,7 @@ char_evans_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Я Дэвид Дрейк, очень приятно", [[
 
			Кристиан улыбается и отвечает: "Очень рад вас видеть. У вас есть вопросы? Я слушаю". ]], };
 
		{"Я Дэвид Дрейк, очень приятно.", [[Кристиан улыбается и отвечает: "Очень рад вас видеть. У вас есть вопросы? Я слушаю". ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
        {"Что вы можете рассказать о Леарр?", function(s)
 
            if (iof_learr_dead) then
 
@@ -1695,16 +2085,16 @@ char_evans_dlg = dlg {
 
                return [[Кристиан отвечает: "С ней приятно иметь дело. Мы многое узнали о навьярах только благодаря ее открытости и желанию общаться с нами. Хотя Ривеерр тоже довольно дружелюбен, он чрезмерно осторожен при общении с нами. Леарр и сама интересуется нами и нашими достижениями -- большую часть времени она проводит в библиотеке и в Игнисе, читая наши книги и газеты и просматривая наши фото- и видеоархивы". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы можете сказать об Аикерьярре?", [[Кристиан чешет подбородок: "Не знаю, почему Ираафаанотр отправил на Атлантиду этого... Наверное, было бы проще, не будь на Атлантиде вообще никого из Ираафаанотра. И безопаснее для наших отношений тоже. Этот... Да он словно намеренно пытается вывести тут всех из себя".]]};
 
        {tag="on_aikerjarr", false, "Что вы можете сказать об Аикерьярре?", [[Кристиан чешет подбородок: "Не знаю, почему Ираафаанотр отправил на Атлантиду этого... Наверное, было бы проще, не будь на станции вообще никого из Ираафаанотра. И безопаснее для наших отношений тоже. Этот... Да он словно намеренно пытается вывести тут всех из себя".]]};
 
        {"Что вы можете сказать об Ривеерре?", [[Кристиан задумчиво: "Из жителей Дипатреанотра, Ривеерр, наверное, лучше всех относится к нам. При том, что он достаточно отстранен, чувствуется, что он готов вкладывать силы в улучшение отношений между нами всеми -- Дипатреанотром, Атлантидой и Ираафаанотром". ]]};
 
        {"Что вы можете сказать о навьярах?", [[Кристиан отвечает: "Поразительные существа. Конечно, мы первый раз сталкиваемся с подобным и толком не знаем как себя вести и как стоит их изучать, но, как мне кажется, мы многого достигли -- мы знаем их язык, имеет доступ к их текстам и общаемся с их представителями практически на равных. Вообще, мы поразительно легко наладили с ними контакт -- они не стали воспринимать нас ни как богов, ни как дьяволов, как это случается с племенами людей в далеких от цивилизации местах. Они однозначно не так просты, как кажется, но мы пока не знаем в чем причина этого".]]};
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе - результат саботажа?", function(s)
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе -- результат саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			return [[Кристиан недовольно ворчит: "Если это так, то надо не на каждом углу кричать, а предоставить сведения Даркстару или Моро. Они найдут, как решить проблему". ]];
 
		end};
 
		{tag="ignis_what", "Вы знаете, что произошло в Игнисе?", [[Кристиан пожимает плечами: "Об этом вам лучше узнать у Райта или Даркстара. Я мало что знаю". ]]};
 
		{always=true, "Я пойду", [[Кристиан прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
		{always=true, "Я пойду.", [[Кристиан прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
	};
 
};
 
 
@@ -1714,10 +2104,7 @@ char_winterlight_dlg = dlg {
 
	};
 
	nam = "Сильвия Уинтерлайт";
 
	disp = "Сильвия Уинтерлайт";
 
	entered = function(s)
 
		if (atl_iyh_state == 4) then
 
			pon("legend");
 
		end;
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -1736,12 +2123,11 @@ char_winterlight_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
        {"Рад знакомству. Я хотел бы кое что спросить.", [[Сильвия улыбается и кивает: "Конечно, господин Дрейк, я слушаю". ]], code [[ psub("generic"); ]]};
 
        {"Рад знакомству. Я хотел бы кое-что спросить.", [[Сильвия улыбается и кивает: "Конечно, господин Дрейк, я слушаю". ]], code [[ psub("generic"); ]]};
 
		{"Рад знакомству. Я чем-то могу быть полезен?", [[Сильвия улыбается и отвечает: "Вам лучше поговорить с госпожой Светловой, у нее наверняка найдется поручение для вас". ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
        {"Расскажите об Атлантиде,", [[Сильвия вздыхает: "Боюсь, я тут могу долго рассказывать -- мы с господином Райтом многое придумывали вместе -- в частности системы подачи кислорода, я же помогала в разработке Аэриса. Аэрис вообще довольно значительное достижение -- мы сумели адаптировать некоторые виды растений с поверхности к условиям станции. Конечно, пришлось потрудиться -- очень много энергии уходит на освещение и обогрев секции, но и результат себя оправдывает -- думаю, нам быстро надоело бы питаться одними морепродуктами, а так у нас есть практически все, что может предложить поверхность. Ну, кроме мяса. Также мы выращиваем там несколько видов водорослей -- некоторые производят кислород, другие идут в пищу, третьи отправляются прямиком в печь".]]};
 
        {"Расскажите о себе.", [[Сильвия усмехается: "Не думаю, что тут есть что-то интересное, но слушайте -- я ева закончила университет и была в поисках работы, когда встретилась с госпожой Светловой. Уж не знаю, что привлекло ее во мне, но она предложила мне работу. Я сперва удивилась -- с чего транспортной компании нанимать таких видных ученых как она? Да и зачем там такие как я? Но после беседы с господином Дрейком, я загорелась идеей обустроить автономную подводную станцию. Тогда планы не были столь грандиозны -- мы не предполагали покидать поверхность, но благодаря нашим с господином райтом успехам мы смогли достичь этого. Тогда же я впервые встретила живого навьяра. Нет, госпожа Светлова рассказывала мне про них и даже показывала фотографии и рисунки, но увидеть подобное вживую ни с чем не сравнимо. И еще более странно, когда такое существо спокойно так тебя приветствует на твоем языке". ]]};
 
        --[[{tag="legend", false, "Ты можешь рассказать мне навьярскую легенду о скате?", [ [Сильвия кажется заинтересованной: "У навьяров их много, какую конкретно вы хотите услышать?" ] ], code [ [ psub("which_legend"); ] ]};]]
 
        {"Расскажите об Атлантиде,", [[Сильвия отвечает: "Я тут могу долго рассказывать -- мы с господином Райтом многое придумывали вместе -- в частности, системы подачи кислорода, я же помогала в разработке Аэриса. Аэрис, если говорить открыто, крайне значительное достижение -- мы сумели адаптировать некоторые виды растений с поверхности к условиям станции. Конечно, пришлось потрудиться -- очень много энергии уходит на освещение и обогрев секции, но и результат себя оправдывает -- думаю, нам быстро надоело бы питаться одними морепродуктами, а так у нас есть практически все, что может предложить поверхность. Ну, кроме мяса", -- она улыбается, -- "Также мы выращиваем там несколько видов водорослей -- некоторые производят кислород, другие идут в пищу, третьи отправляются прямиком в печь".]]};
 
        {"Расскажите о себе.", [[Сильвия усмехается: "Не думаю, что тут есть что-то интересное, но слушайте -- я едва закончила университет и была в поисках работы, когда встретилась с госпожой Светловой. Уж не знаю, что привлекло ее во мне, но она предложила мне работу. Я сперва удивилась -- с чего транспортной компании нанимать таких видных ученых, как она? Да и зачем там такие, как я? Когда господин Дрейк рассказал о своем открытии, я загорелась идеей обустроить автономную подводную станцию -- чтобы иметь возможность находиться ближе к навьярам и изучать их. Изначально планы не были столь грандиозны, но благодаря нашим с господином Райтом успехам мы смогли построить Атлантиду такой, какой вы ее видите. Тогда же я впервые встретила живого навьяра. Нет, госпожа Светлова рассказывала мне про них и даже показывала фотографии и рисунки, но увидеть их вживую ни с чем не сравнимо. И еще более странно, когда такое существо тебя приветствует на твоем языке". ]]};
 
        {tag="sabotage", false, "Вы знаете, что пожар начался из-за саботажа?", function(s)
 
            atl_lfc_panic = atl_lfc_panic + 1;
 
            atl_rep_darkstar = atl_rep_darkstar - 1;
 
@@ -1751,27 +2137,8 @@ char_winterlight_dlg = dlg {
 
                return [[Сильвия Уинтерлайт удивленно смотрит на вас: "Вы не первый кто так говорит. Но кто это мог сделать?" ]];
 
            end;
 
        end;};
 
        {tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [[
 
            "Крайней мало. Вам лучше поговорить с Райтом или Даркстаром".
 
        ]]};
 
        {tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [[Сильвия отвечает: "Крайне мало. Вам лучше поговорить с Райтом или Даркстаром". ]]};
 
		{always=true, "Я пойду.", [[Сильвия молча кивает и возвращается к своим делам. ]], code [[ back(); ]]};
 
		{tag="which_legend"};
 
		--TODO добавить несколько легенд
 
		{"Что-нибудь связанное с храмами и реликвиями", [[
 
			Сильвия задуиывается: _"Храмы, реликвии и скаты... Да, есть кое-что", -- она откидивыет волосы назад и продолжает: "Согласно этой легенде, хранителей одного из святилищ навьяров был могучий затмевающий свет по имени Излучающий Тьму. Это было в те времена, когда навьяры и затмевающие свет были связаны узами дружбы. Излучающий тьму был мудрым хранителем - он не только принимал священные реликвии на сохранение, но и многое знал о них - об их предназначении и истинной ценности. Однажды Излучающий Тьму узнает о необычнайно ценной реликвии, хранящейся в одном из городов и скрывающей в себе древние знания навьяров. Узнает он и о том, что живущие навьяры не в силах прочитать. Тогда он прибыл в город, чтобы просить навьяров отдать ему реликвию на сохранение. Но навьяры отказывают ему. Вернувшись в святилище, Излучающий Тьму придумал план. Ночью он пробрался в город и выкрал реликвию. Когда наутро навьяры обнаружили пропажу, они направились к Излучающему Тьму с требованием вернуть им реликвию. На это могучий затмевающий свет спросил их: ,,Знаете ли вы, что скрывает этот предмет?''^ -- кстати, в некоторых переводах я встречала слово ,,светодиск'', как описание реликвии. 
 
			,,Знания наших предков'', -- ответили навьяры. Излучающий Тьму продолжил: ,,Можете ли вы прочитать его?''^
 
			,,Нет'', --сказали навьяры. Тогда Излучающий Тьму рассказал им легенду о храме в глубинах, которую он прочитал из данной реликвии(Нам, кстати, так и не довелось получить хоть какой-либо целостный текст этой легенды), и сказал им: ,,Можете приходить сюда когда захотите и я расскажу вам то, что вы захотите знать. Но только, если реликвия ваша остается у меня''. Навьяры поняли, что если заберут реликвию, то навсегда утратят древние знания и согласились". 
 
		]], code [[ psub("more_on_legend"); ]]};
 
		{tag="more_on_legend"};
 
		{"Светодиск?", [[
 
			"Мы плохо понимаем, для чего они служат. У Светловой один такой был. Блестящий диск - сантиметров 10 в диаметре. Правда вот как их ,,читать''... В привычном понимании, по крайней мере, мы не понимаем. Если рассматривать их под микроскопом - там весьма характерный рисунок проступает. Почему светодиск? Мы не знаем - это навьяры их так называют".
 
		]]};
 
		{"Что за легенда о храме в глубинах?", [[
 
			"Мы только приблизительно знаем о ней - она постоянно упоминается в контексте других легенд и у нас есть фрагменты, которые нам рассказывали навьяры. Когда-то давно навьяры построили храм где-то в ущелье, но по какой-то причине были вынуждены покинуть его". 
 
		]]};
 
		{"Спасибо, я пойду", [[
 
			"До встречи. Если захотите еще древних сказаний послушать - приходите".
 
		]], code [[ atl_iyh_state = 5; psub('back'); ]]};
 
	};
 
};
 
 
@@ -1782,7 +2149,7 @@ char_jack_wright_atlantis_dlg = dlg {
 
	};
 
	nam = 'char_jack_wright_atlantis_dlg';
 
	disp = "Джек Райт";
 
	entered = function(s)
 
	enter = function(s)
 
        if (rel_jack < 0) then
 
            if (char_wright.on_learr == 0) then pon("on_learr"); end;
 
            if (char_wright.on_leviathan == 0) then pon("on_leviathan"); end;
 
@@ -1855,7 +2222,7 @@ char_jack_wright_atlantis_dlg = dlg {
 
                return [[Джек отвечает: "Левиафан, без сомнения, превосходный корабль. Жаль, что ему не нашлось лучшего капитана". ]];
 
            else
 
                char_wright.on_leviathan = 2;
 
                return [[Джек не скрывает своего восхищения: "Никогда не видел ничего подобного. Неудивительно, что отец оставил жизнь на поверхности в пользу возможности создавать подобное здесь. Пока мы были в пути, я подробно изучил субмарину. Многие решения до сих пор кажутся мне невероятными - например, использование электричества в качестве движущей силы или наличие звуковой пушки. Я уже успел обсудить с отцом детали диагностических цепей. Это совершенно непостижимо, чтобы машина сама сообщала, что с ней что-то не так. И все это в одном месте". ]];
 
                return [[Джек не скрывает своего восхищения: "Никогда не видел ничего подобного. Неудивительно, что отец оставил жизнь на поверхности в пользу возможности создавать подобное здесь. Пока мы были в пути, я подробно изучил субмарину. Многие решения до сих пор кажутся мне невероятными, например, использование электричества в качестве движущей силы или звуковая пушка. Я уже успел обсудить с отцом детали диагностических цепей. Это совершенно непостижимо, чтобы машина сама сообщала, что с ней что-то не так. И все это в одном месте". ]];
 
            end;
 
        end};
 
        {tag="on_jack", "Чем ты занимался все это время?", function()
 
@@ -1878,7 +2245,7 @@ char_legrand_dlg = dlg {
 
	};
 
	nam = "Мари Легран";
 
	disp = "Мари Легран";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -1887,70 +2254,49 @@ char_legrand_dlg = dlg {
 
			s.lfc_dialog = true;
 
			pon('sabotage', 'ignis_what');
 
		end;
 
		
 
 
        poff("tube_spec");
 
        if (atl_nih_state == 1 and not have(atl_item_tube_spec)) then
 
            pon("tube_spec");
 
        end;
 
        
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[
 
				Перед вами, склонившись над каким-то журналом сидит женщина лет сорока--сорока-пяти. Длинные темные волосы убраны в хвост. На носу очки в тяжелой оправе. Не обращая внимания на вас, она продолжает водить пальцем по строчкам, периодически делая какие-то пометки.
 
			]];
 
			return [[Перед вами, склонившись над какой-то книгой, сидит женщина лет сорока--сорока-пяти. Длинные темные волосы убраны в хвост. На носу очки в тяжелой оправе. Не обращая внимания на вас, она продолжает водить пальцем по строчкам, периодически делая какие-то пометки. ]];
 
		else
 
			psub("generic");
 
			return [[
 
				Не обращая внимания на вас, Мари Легран продолжает водить пальцем по строчкам, периодически делая какие-то пометки.
 
			]];
 
			return [[Не обращая внимания на вас, Мари Легран продолжает водить пальцем по строчкам, периодически делая какие-то пометки. ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Извините?", [[
 
			Женщина поднимает голову и отрывается от работы. Она выпрямляется и улыбаясь приветствует вас: "Добро пожаловать в библиотеку Атлантиды. Я Мари Легран"
 
		]], code [[psub("first_meeting_2"); ]]};
 
		{"Извините?", [[Женщина поднимает голову и отрывается от работы. Она выпрямляется и улыбаясь приветствует вас: "Добро пожаловать в библиотеку Атлантиды. Я Мари Легран". ]], code [[psub("first_meeting_2"); ]]};
 
		{tag="first_meeting_2"};
 
		{"Я Дэвид Дрейк, рад знакомству", [[
 
			Она кивает и спрашивает вас: "Как вы нашли Левиафан?"
 
		]], code [[psub("first_meeting_3"); ]]};
 
		{"Я Дэвид Дрейк, рад знакомству.", [[Она кивает и спрашивает вас: "Как вы нашли Левиафан?"]], code [[psub("first_meeting_3"); ]]};
 
		{tag="first_meeting_3"};
 
		{"Это долгая история", [[
 
			Мари Легран кивает: "Ладно, потом как-нибудь, если торопитесь"
 
		]], [[ psub("generic") ]]};
 
		{"Я нашел тайник отца со старыми схемами. Пришлось побегать, чтобы восстановить субмарину. Я чудом собрал все необходимое", [[
 
			Мари Легран удивленно смотрит на вас: "Удивительно. Скорее всего Уильям хотел, чтобы вы нашли Левиафан. Жаль, что вы прибыли слишком поздно. Когда он узнал про этот древний город, он собрал несколько помощников и отправился на Надежде на его поиски".
 
		]], code [[ pon("father_more");psub("generic"); ]]};
 
		{"Это долгая история.", [[Мари Легран кивает: "Хорошо, тогда в другой раз".]], [[ psub("generic") ]]};
 
		{"Я нашел тайник отца со старыми схемами. Пришлось побегать, чтобы восстановить субмарину. Я чудом собрал все необходимое.", [[Мари Легран удивленно смотрит на вас: "Поразительно. Скорее всего Уильям хотел, чтобы вы нашли Левиафан. Жаль, что вы прибыли слишком поздно. Когда он узнал про этот древний город, он собрал несколько помощников и отправился на Надежде на его поиски". ]], code [[ pon("father_more", "ancient_city");psub("generic"); ]]};
 
		{tag="generic"};
 
		{tag="father_more", false, "Кто отправился вместе с моим отцом?", [[
 
			"Немногие. Они вообще хотел отправиться вдвоем с Блэком, но Блэк уговорил Уильяма взять Джона Брауна и Дэмина Пина".
 
		]], code [[psub("more_people");]]};
 
        {tag="tube_spec", false, "Мне нужна документация по системам воздуховодов.", [[Мари Легран удивленно спрашивает: "Райт просил? Удачи в изучении", -- и кладет на стол перед вами толстую книжицу. ]], code [[ take(atl_item_tube_spec); ]]};
 
		{tag="father_more", false, "Кто отправился вместе с моим отцом?", [[Мари Легран отвечает: "Немногие. Они вообще хотел отправиться вдвоем с Блэком, но Блэк уговорил Уильяма взять Джона Брауна и Антонио Гарсия". ]], code [[psub("more_people");]]};
 
        {tag="ancient_city", false, "Какой еще город?", [[Мари Легран отвечает: "Да, вы же не в курсе. Лсэрианотр, или как-то так. Древний навьярский город по легенде скрывает какое-то древнее знание, которое, как и всегда в легендах, сторожит непобедимое чудовище. Дрейк и Блэк, вроде как, сумели найти какие-то карты, якобы указывающие путь к этому городу". ]]};
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе начался из-за саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			if (atl_lfc_panic <= 2) then
 
				return [[
 
					Мари Легран удивленно смотрит на вас: "Откуда вы знаете? Кому такое в голову придти может?"
 
				]];
 
				return [[Мари Легран удивленно смотрит на вас: "Откуда вы знаете? Кому такое в голову придти может?"]];
 
			elseif (atl_lfc_panic == 3) then
 
				return [[
 
					Мари Легран удивленно смотрит на вас: "Вы понимаете, что говорите? Кому такое в голову придти может?"
 
				]];
 
				return [[Мари Легран удивленно смотрит на вас: "Вы понимаете, что говорите? Кому такое в голову придти может?"]];
 
			end;
 
		end};
 
		{tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [[
 
			"Поговорите лучше с Даркстаром или Райтом".
 
		]]};
 
		{always=true, "Я пойду", [[
 
			"Приходите еще"
 
		]], code [[ back(); ]]};
 
		{tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [[Мари Легран пожимает плечами: "Поговорите лучше с Даркстаром или Райтом".]]};
 
		{always=true, "Я пойду.", [[Мари Легран возвращается к книге, прощаясь с вами: "Приходите еще".]], code [[ back(); ]]};
 
		{tag="more_people"};
 
		{"Расскажите больше об Адриане Блэке", [[
 
		]]};
 
		{"Расскажите больше о Джоне Брауне", [[
 
		]]};
 
		{"Расскажите больше о Дэмине Пине", [[
 
			
 
		]]};
 
		{"Давайте о другом поговорим", [[
 
			"Хорошо"
 
		]], code [[pret();]]};
 
		{"Расскажите больше об Адриане Блэке.", [[Мари Легран рассказывает: "Блэк -- заместитель Дрейка. По-крайней мере, официально он занимал именно эту должность. По факту, он был близким другом вашего отца и компанией они управляли вместе". ]]};
 
		{"Расскажите больше о Джоне Брауне.", [[Мари Легран рассказывает: "У Джона золотые руки, наверное, именно поэтому Дрейк взял в экспедицию именно его". ]]};
 
		{"Расскажите больше о Антонио Гарсии.", [[Мари Легран рассказывает: "Талантливый молодой человек. Он хорошо знает язык навьяров и много с ними общался". ]]};
 
		{"Поговорим в другой раз.", [[Мари Легран кивает: "Хорошо".]], code [[pret();]]};
 
	};
 
};
 
 
@@ -1961,7 +2307,42 @@ char_radcliffe_atlantis_dlg = dlg {
 
	};
 
	nam = "Уолтер Рэдклифф";
 
	disp = "Уолтер Рэдклифф";
 
	entered = function(s)
 
    
 
    reset_more = function(s)
 
        poff("on_anna", "on_walter", "on_atlantis", "on_drake", "on_black", "on_join", "talk");
 
        if (rel_walter < 0) then
 
            pon("talk");
 
        else
 
            if (char_radcliffe.on_anna < 2) then
 
                pon("on_anna");
 
                pon("talk");
 
            end;
 
            if (char_radcliffe.on_black < 2) then
 
                pon("on_black");
 
                pon("talk");
 
            end;
 
            if (char_radcliffe.on_walter < 2) then
 
                pon("on_walter");
 
                pon("talk");
 
            end;
 
            if (char_radcliffe.on_atlantis < 2) then
 
                pon("on_atlantis");
 
                pon("talk");
 
            end;
 
            if (char_radcliffe.on_drake < 2) then
 
                pon("on_drake");
 
                pon("talk");
 
            end;
 
            if (char_radcliffe.on_join < 2) then
 
                pon("on_join");
 
                pon("talk");
 
            end;
 
        end;
 
    end;
 
    
 
	enter = function(s)
 
        s:reset_more();
 
    
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -1974,25 +2355,43 @@ char_radcliffe_atlantis_dlg = dlg {
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[
 
				Перед вами стоит человек лет сорока--сорока-пяти, одетый в рабочий халат. Как только вы входите, он протягивает вам руку: "Добро пожаловать, господин Дрейк. Я - Уолтер Рэдклифф, инженер".
 
			]];
 
			return [[Перед вами стоит человек лет сорока--сорока-пяти, одетый в рабочий халат. Как только вы входите, он протягивает вам руку: "Добро пожаловать, господин Дрейк. Уолтер Рэдклифф, инженер". ]];
 
		else
 
			psub("generic");
 
			return [[
 
				Уолтер Рэдклифф кивает вам: "Добрый день".
 
			]];
 
			return [[Уолтер Рэдклифф приветствует вас: "Добрый день". ]];
 
		end;
 
	end;
 
	phr = {
 
        {tag="questions"};
 
        {tag="on_black", "Что ты можешь сказать о Блэке?", function(s)
 
            char_radcliffe.on_black = 2;
 
            return [[Уолтер пожимает плечами: "Что я могу сказать про него? Он хороший друг Дрейка и вполне искренне радеет за благополучие нашей миссии. Однако, я думаю, его истинные цели могут отличаться от наших". ]];
 
        end};
 
        {tag="on_walter", "Расскажи о себе.", function(s)
 
            char_radcliffe.on_walter = 2;
 
            return [[Уолтер пожимает плечами: "Да мне нечего рассказать. Мы с сестрой жили в Лондоне, я уже работал в Вестхейвен Трансоушен, когда наши родители погибли -- пароход, на котором они отправились в США просто не прибыл в порт назначения. Мы с Анной остались одни. Она еще даже школу не закончила тогда. А потом мы построили Надежду, Атлантиду и далее по списку. Потом мне предложили работать внизу, на станции. Я, конечно, мог тогда отказаться, уйти в другую компанию, но направление, избранное Дрейком слишком меня привлекало. Я согласился". ]];
 
        end};
 
        {tag="on_anna", "Расскажи о своей сестре, Анне.", function(s)
 
            char_radcliffe.on_anna = 2;
 
            return [[Уолтер вздыхает: "Будь у меня выбор тогда, я ни за что не взял бы ее на Атлантиду. И жалел бы сейчас об этом. Не думаю, что на поверхности она стала бы той, кто она сейчас. Все-таки общество поглощенных своей работой людей накладывает определенный отпечаток, я думаю". ]];
 
        end};
 
        {tag="on_drake", "Что ты можешь сказать о Дрейке?", function(s)
 
            char_radcliffe.on_drake = 2;
 
            return [[Уолтер отвечает: "Не думаю, что скажу про него больше чем кто-то еще. Послушайте Райта, Моро, быть может Даркстара, хотя черт знает, что у этого типа на уме. Они скажут вам все и даже больше. "]];
 
        end};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s)
 
            char_radcliffe.on_atlantis = 2;
 
            return [[Уолтер отвечает: "Думаю только Райт и Уинтерлайт в полной мере осознают, насколько большим достижением для нас, для всего человечества, является постройка этой станции. Тем не менее, они, отчего-то, не спешат поделиться своими знаниями с другими. Не думаю, что сегодняшнее общество сможет по достоинству оценить новые возможности, даруемые этими технологиями. Да и что станет с навьярами? Вспомните Новый Свет, посмотрите на другие наши колонии -- хотите ли вы этого для Леарр и других?"]];
 
        end};
 
        {tag="quit", always=true, "Поговорим в другой раз. ", [[Уолтер кивает: "Хорошо".]], code [[ char_radcliffe_atlantis_dlg:reset_more(); pret();]]};
 
		{tag = "first_meeting"};
 
		{"[Пожать руку]Рад знакомству", [[
 
			"Мы с Майклом вместе работали над Левиафаном. Многие решения в вашей субмарине - мои. Если вы не против, я хотел бы продолжить путешествие вместе с вами - во-первых - вам пригодится мой опыт, а во-вторых - я хочу увидеть Левиафан в деле". 
 
		{"[Пожать руку] Рад знакомству.", [[
 
			"Мы с Майклом вместе работали над Левиафаном. Многие решения в вашей субмарине -- мои. Если вы не против, я хотел бы продолжить путешествие вместе с вами. Во-первых, вам пригодится мой опыт, а во-вторых, я хочу увидеть Левиафан в деле". 
 
		]], code [[
 
			rel_walter = rel_walter + 1;
 
			psub("leviathan");
 
		]]};
 
		{"Рад знакомству", [[
 
		{"Рад знакомству.", [[
 
			Уолтер убирает руку и продолжает: "Я думаю, вы не просто так пришли. Спрашивайте".
 
		]], code [[
 
			psub("generic");
 
@@ -2005,29 +2404,33 @@ char_radcliffe_atlantis_dlg = dlg {
 
		]]};
 
		{tag = "leviathan"};
 
		{"Интересно, и что вы можете рассказать о Левиафане?", [[
 
			Уолтер снимает очки, убирая их в нагрудный карман: "Левиафан строился как Надежда - для дальних путешествий и максимальной автономности. После успеха предыдущих субмарин, Райт решил сделать Левиафан заметно больше предыдущих кораблей. Сверхмощная батарея обеспечивает субмарину энергией более месяца при максимальных оборотах двигателей. Также есть паровой двигатель - он используется не только для движения, но и генерирует электричество. До Левиафана мы не экспериментировали с этим".
 
			Уолтер снимает очки, убирая их в нагрудный карман: "Левиафан строился как Надежда -- для дальних путешествий и максимальной автономности. После успеха предыдущих субмарин, Райт решил сделать Левиафан заметно больше предыдущих кораблей. Сверхмощная батарея обеспечивает субмарину энергией более месяца при максимальных оборотах двигателей. Также есть паровой двигатель -- он используется не только для движения, но и генерирует электричество. До Левиафана мы не экспериментировали с этим".
 
		]]};
 
		{"Вы знаете, куда отправился мой отец отсюда?", [[
 
			Уолтер отрицательно качает головой: "Не больше, чем остальные на станции". 
 
		]]};
 
		{"Буду рад, если вы присоединитесь к нам", [[
 
		{"Буду рад, если вы присоединитесь к нам. ", [[
 
			"Отлично. Но вы ведь, еще поговорить хотите?"
 
		]], code [[ psub("generic");]]};
 
		{"Я не думаю, что вы поможете", [[
 
		{"Я не думаю, что вы поможете. ", [[
 
			"Очень жаль. Впрочем, у вас есть время подумать. Насколько я знаю, Даркстар и Моро собираются держать вас здесь какое-то время".
 
		]], code [[ psub("generic");]]};
 
		{tag = "generic"};
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе - результат саботажа?", [[
 
			"Безусловно. Системы энергоснабжения проектировал я и абсолютно уверен в их безопасности и надежности. Судя по тому, что произошло - кто-то весьма грамотный ,,доработал'' систему энергоснабжения Игниса. Я не думаю, что это мог быть один человек... Хотя если он делал это несколько дней - вполне вероятно. Как это сделать, кроме нас с Райтом знают только трое: Мишель Леруа, Чарльз Джонс и Мари Легран. И еще кое-что. Даркстар просил меня ни с кем про это не разговаривать, поэтому надеюсь на ваше понимание. Отдельно попрошу - не говорить на эту тему с моей сестрой".
 
		]], code [[
 
        {tag="questions", "У меня есть несколько вопросов. ", function(s)
 
            if (rel_anna < 0) then
 
                return [[Уолтер отрицательно качает головой: "Не сейчас, я занят". ]];
 
            else
 
                psub("questions");
 
                return [[Уолтер кивает: "Слушаю". ]];
 
            end;
 
        end};      
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе -- результат саботажа?", [["Безусловно. Системы энергоснабжения проектировал я и абсолютно уверен в их безопасности и надежности. Судя по тому, что произошло -- кто-то весьма грамотный ,,доработал'' систему энергоснабжения Игниса. Я не думаю, что это мог быть один человек... Хотя если он делал это несколько дней -- вполне вероятно. Как это сделать, кроме нас с Райтом знают только трое: Мишель Леруа, Чарльз Джонс и Мари Легран. И еще кое-что. Даркстар просил меня ни с кем про это не разговаривать, поэтому надеюсь на ваше понимание. Отдельно попрошу -- не говорить на эту тему с моей сестрой". ]], code [[
 
			rel_walter = rel_walter + 1;
 
		]]};
 
		{tag="ignis_what", false, "Вы, как инженер, можете рассказать, что произошло в Игнисе?", [[
 
			"Пожар. Вам что-то еще известно?"
 
		]]};
 
		{"Я пойду", [[
 
			"До встречи", - Уолтер отворачивается от вас и возвращается к своим делам.
 
		]], code [[ back();]]};
 
		{always=true, "Я пойду.", [["До встречи", -- Уолтер отворачивается от вас и возвращается к своим делам. ]], code [[ back();]]};
 
	};
 
};
 
 
@@ -2037,16 +2440,16 @@ char_page_dlg = dlg {
 
	};
 
	nam = "Фрэнсис Пейдж";
 
	disp = "Фрэнсис Пейдж";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
		
 
 
		if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
			s.lfc_dialog = true;
 
			pon('sabotage', 'ignis_what');
 
		end;
 
	
 
 
		if (s.state == 0 ) then
 
			s.state = 1;
 
			psub("first_meeting");
 
@@ -2058,23 +2461,23 @@ char_page_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Дэвид Дрейк, рад знакомству", [[Фрэнсис на секунду отвлекается и внимательно смотрит на вас: "Да, я замечаю сходство с Уильямом". ]], code [[ psub("first_meeting_2"); ]]};
 
		{"Дэвид Дрейк, рад знакомству.", [[Фрэнсис на секунду отвлекается и внимательно смотрит на вас: "Да, я замечаю сходство с Уильямом". ]], code [[ psub("first_meeting_2"); ]]};
 
		{tag="first_meeting_2"};
 
		{"Вы хорошо знали отца?", [[Фрэнсис кивает: "Я уважаю его, как, думаю, все на этой станции. Пожертвовать всем ради призрачной мечты - только великий человек мог пойти на такое. Он отправился на поиски легендарного города древних навьяров. К сожалению, я не смог отправиться с ним - я нужен на станции. Я знаю что вы здесь из-за него и я надеюсь, что вы не оставите вашу идею найти Уильяма и доведете свое дело до конца". ]], code [[ psub("generic"); ]]};
 
		{"У меня к вам несколько вопросов", [["Слушаю". ]], code [[ psub("generic"); ]]};
 
		{"Вы хорошо знали отца?", [[Фрэнсис кивает: "Я уважаю его, как, думаю, все на этой станции. Пожертвовать всем ради призрачной мечты -- только великий человек мог пойти на такое. Он отправился на поиски легендарного города древних навьяров. К сожалению, я не смог отправиться с ним -- я нужен на станции. Я знаю, что вы здесь из-за него и я надеюсь, что вы не оставите вашу идею найти Уильяма и доведете свое дело до конца". ]], code [[ psub("generic"); ]]};
 
		{"У меня к вам несколько вопросов.", [["Слушаю". ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе - следствие саботажа?", function(s)
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе -- следствие саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			return [[Фрэнсис от удивления роняет карандаш, но быстро собирается и отвечает: "Оставьте это Даркстару. Если саботаж имел место быть - Винсент найдет виновного. Я передам ему ваши слова". ]]
 
			return [[Фрэнсис от удивления роняет карандаш, но быстро собирается и отвечает: "Оставьте это Даркстару. Если саботаж имел место быть, Винсент найдет виновного. Я передам ему ваши слова". ]];
 
		end;};
 
		{tag="ignis_what", false, "Что произошло в Игнисе?", [[Фрэнсис пожимает плечами: "Меня там не было. Не берусь говорить".]]};
 
        {"Что вы можете рассказать об Атлантиде?", [[Фрэнсис пожимает плечами: "Если честно, вам лучше расспросить кого-нибудь из управляющих, а лучше всего - Майкла Райта. Все что я могу сказать -- я до сих пор поражаюсь успеху этого невероятного проекта". ]]};
 
        {"Что вы можете рассказать об Атлантиде?", [[Фрэнсис пожимает плечами: "Если честно, вам лучше расспросить кого-нибудь из управляющих, а лучше всего -- Майкла Райта. Все что я могу сказать -- я до сих пор поражаюсь успеху этого невероятного проекта". ]]};
 
        {"Что вы можете рассказать о Наутилусе?", [[Френсис кивает: "Когда мы создавали Наутилус, я уже работал в Вестхейвен Трансоушен. Атлантида тогда существовала, но была далеко от того, что вы видите. Мы тогда просто строили вторую Надежду. Нам не нужна была высокая автономность, но мы хотели большую маневренность и мощность -- собственно на этом мы и сконцентрировались. Получилось то, что получилось -- рабочая лошадка, которой мы пользуемся по сей день". ]]};
 
        {"Что вы можете рассказать об Энтерпрайзе?", [[Френсис кивает: "Энтерпрайз мы начали когда захотели судно побольше. Опыта и знаний нам хватило только на пропорциональное увеличение размеров и немного более мощный двигатель. райт наверное сказал бы, что получилось из рук вон плохо, но на мой взгляд -- Энтерпрайз вполне неплох, да и с честью служит нам до сих пор". ]]};
 
        {"Что вы можете рассказать об Энтерпрайзе?", [[Френсис кивает: "Энтерпрайз мы начали когда захотели судно побольше. Опыта и знаний нам хватило только на пропорциональное увеличение размеров и немного более мощный двигатель. Райт наверное сказал бы, что получилось из рук вон плохо, но, на мой взгляд, Энтерпрайз вполне неплох, да и с честью служит нам до сих пор". ]]};
 
        {"Что вы можете рассказать о Надежде?", [[Фрэнсис кивает: "Надежда была первой субмариной, построенной нами. Я в этом участия не принимал, так что многие конструктивные решения меня удивляют. Впрочем, более поздние субмарины спроектированы гораздо грамотнее, да и после переоборудования многое удалось решить". ]]};
 
        {"Что вы можете рассказать о Левиафане?", [[Френсис отвечает: "С первого взгляда ясно, что Левиафан не имеет практически ничего общего с Надеждой, Наутилосом и даже Энтерпрайзом. Интересно, что Левиафан строился с оглядкой на высокую автономность -- так же, как и Надежда. За это конечно пришлось многим поплатиться -- Левиафан большой и неповоротливый в сравнении с Надеждой". ]]};
 
		{always=true, "Я пойду", [[Фрэнсис Пейдж прощается с вами: "Увидимся позже". ]], code [[ back(); ]]};
 
        {"Что вы можете рассказать о Левиафане?", [[Френсис отвечает: "С первого взгляда ясно, что Левиафан не имеет практически ничего общего с Надеждой, Наутилусом и даже Энтерпрайзом. Интересно, что Левиафан строился с оглядкой на высокую автономность -- так же, как и Надежда. За это, конечно, пришлось многим поплатиться -- Левиафан большой и неповоротливый в сравнении с Надеждой". ]]};
 
		{always=true, "Я пойду.", [[Фрэнсис Пейдж прощается с вами: "Увидимся позже". ]], code [[ back(); ]]};
 
	};
 
};
 
 
@@ -2084,7 +2487,7 @@ char_leroy_dlg = dlg {
 
	};
 
	nam = "Мишель Леруа";
 
	disp = "Мишель Леруа";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -2105,16 +2508,16 @@ char_leroy_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Добрый день. Я Дэвид Дрейк", [[Человек отрывается от чертежа, чтобы поздороваться с вами. Он протягивает вам руку и произносит: "Мишель Леруа. Инженер". ]], code [[ psub('first_meeting_2'); ]]};
 
		{"Добрый день. Я Дэвид Дрейк.", [[Человек отрывается от чертежа, чтобы поздороваться с вами. Он протягивает вам руку и произносит: "Мишель Леруа. Инженер". ]], code [[ psub('first_meeting_2'); ]]};
 
		{tag="first_meeting_2"};
 
		{"[Пожать руку]Рад знакомству", [[Вы пожимаете руку Мишеля, и он спрашивает вас: "Что вы хотели?" ]], code [[ psub('generic'); ]]};
 
		{"Рад знакомству", [[Мишель кладет руку обратно на стол и спрашивает: "Что вы хотели?" ]], code [[ psub('generic'); ]]};
 
		{"[Пожать руку] Рад знакомству.", [[Вы пожимаете руку Мишеля, и он спрашивает вас: "Что вы хотели?" ]], code [[ psub('generic'); ]]};
 
		{"Рад знакомству.", [[Мишель кладет руку обратно на стол и спрашивает: "Что вы хотели?" ]], code [[ psub('generic'); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", false, "Вы знаете, что пожар в Игнисе начался из-за саботажа?", [[Мишель удивленно переспрашивает: "Кто вам это сказал? не думаю, что здесь есть люди настолько не ценящие свою жизнь". ]], code [[ atl_lfc_leroy_spoken = 1; ]]};
 
		{tag="ignis_what", false,"Что вы можете сказать о произошедшем в Игнисе?", [[
 
			Мишель уверенно отвечает: "Короткое замыкание. К сожалению, пленки и другие материалы, хранимые в Игнисе достаточно горючи". ]]};
 
        {"Почему вы считаете, что станцию необходимо закрыть?", [[Мишель начинает объяснять, активно жестикулируя: "Вы недавно здесь, и для вас это долэно быть гораздо более очевидно, чем для многих из нас. Легко представить, к чему здесь может привести самая мелкая поломка". ]]};
 
		{always=true, "Я пойду", [[Мишель возвращается к чертежу. ]], code [[ back(); ]]};
 
        {"Почему вы считаете, что станцию необходимо закрыть?", [[Мишель начинает объяснять, активно жестикулируя: "Вы недавно здесь, и для вас это должно быть гораздо более очевидно, чем для многих из нас. Легко представить, к чему здесь может привести самая мелкая поломка. А эти самонадеянные люди, в лице Дрейка, Блэка, Светловой, Моро, Райта и даже Даркстара не видят дальше собственного носа! Что произойдет, если Доминус даст течь? Мы просто останемся погребенными под тоннами соленой воды и никакие меры предосторожности не помогут. Одно дело -- кратковременные экспедиции и совсем другое -- полное переселение сюда". ]]};
 
		{always=true, "Я пойду.", [[Мишель возвращается к чертежу. ]], code [[ back(); ]]};
 
	};
 
};
 
 
@@ -2124,7 +2527,7 @@ char_goldman_dlg = dlg {
 
	};
 
	nam = "Леонард Голдман";
 
	disp = "Леонард Голдман";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -2134,6 +2537,7 @@ char_goldman_dlg = dlg {
 
			pon('sabotage', 'ignis_what');
 
		end;
 
		
 
        poff('show_clock');
 
		if (have(item_goldmans_clock)) then
 
			pon('show_clock');
 
		end;
 
@@ -2151,34 +2555,33 @@ char_goldman_dlg = dlg {
 
		{tag="first_meeting"};
 
		{"Я Дэвид Дрейк. Рад знакомству. ", [[Леонард кивает, но ничего не говорит. ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
		{tag="show_clock", false, "[Показать часы]Это ваше?", [[Голдман протягивает руку, чтобы взять часы и удивленно спрашивает: "Мои. Где вы их взяли?" ]], code [[ atl_lfc_goldman_known = true; psub("give_clock"); ]]};
 
		{tag="show_clock", false, "[Показать часы] Это ваше?", [[Голдман протягивает руку, чтобы взять часы и удивленно спрашивает: "Мои. Где вы их взяли?" ]], code [[ psub("give_clock"); ]]};
 
		{tag="sabotage", false, "Вы знаете, что пожар начался из-за саботажа?", [[Вы видите удивление и страх на лице Голдмана. Он неуверенно спрашивает: "С чего вы взяли?" ]], code [[ psub("sabotage2"); atl_lfc_leroy_spoken = 1; ]]};
 
		{tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [[Голдман пожимает плечами: "Не больше чем вы". ]]};
 
        {"Почему вы считаете, что станцию стоит закрыть?", [[Голдман объясняет: "Мы уже десять лет здесь. Не видели ни солнца, ни неба, ни травы. Только металлический потолок и километры воды над головой. Мне кажется, что пора бы уже закончить этот эксперимент. В чем-то я согласен с Джонсом -- станция стареет, оборудование выходит из строя. Долго ли до того, как мы потеряем наши субмарины, а вместе с ними и вообще возможность вернуться наверх?"]]};
 
		{"Я пойду", [[Голдман кивает: "Поговорим позже". ]], code [[ back(); ]]};
 
        {"Почему вы считаете, что станцию стоит закрыть?", [[Голдман объясняет: "Мы уже десять лет здесь. Не видели ни солнца, ни неба, ни травы. Только металлический потолок и километры воды над головой. Мне кажется, что пора бы уже закончить этот эксперимент. В чем-то я согласен с Джонсом -- станция стареет, оборудование выходит из строя. Долго ли до того, как мы потеряем наши субмарины, а вместе с ними и вообще всякую возможность вернуться наверх?"]]};
 
		{"Я пойду.", [[Голдман кивает: "Поговорим позже". ]], code [[ back(); ]]};
 
		{tag="sabotage2"};
 
		{"Даркстар сказал", [[Леонард Голдман пожимает плачеми: "Даркстар мог и ошибиться -- он же параноик. А я в это не поверю". ]]};
 
		{"Это очевидно", [[Леонард Голдман недовольно предупреждает вас: "Будете дальше распускать подобные слухи - я доложу Даркстару". ]]};
 
		{"Эээ... Я пошутил", [[Леонард Голдман недовольно восклицает: "Вы вообще нормальный?!"]], code [[ back(); ]]};
 
		{"Даркстар сказал.", [[Леонард Голдман пожимает плечами: "Даркстар мог и ошибиться. А я в это не поверю". ]]};
 
		{"Это очевидно.", [[Леонард Голдман недовольно предупреждает вас: "Будете дальше распускать подобные слухи -- я доложу Даркстару". ]]};
 
		{"Эээ... Я пошутил.", [[Леонард Голдман недовольно восклицает: "Вы вообще нормальный?!"]], code [[ back(); ]]};
 
		{tag="give_clock"};
 
		{"[Отдать часы]Нашел", [[Леонард Голдман кивает: "Благодарю. Это часы моего деда, они очень важны для меня". ]], code [[ remove("item_goldmans_clock"); pret(); ]]};
 
		{"[Убрать часы]Не так быстро. Что вы делали в Солисе?", [[Ваш запрос похоже застал Леонарда врасплох. Заикаясь, он спрашивает: "С ч-чего вы вз-взяли?" ]], code [[ psub("give_clock_2");]]};
 
		{"[Отдать часы] Нашел.", [[Леонард Голдман кивает: "Благодарю. Это часы моего деда, они очень важны для меня". ]], code [[ remove("item_goldmans_clock"); pret(); ]]};
 
		{"[Убрать часы] Не так быстро. Что вы делали в Солисе?", [[Ваш запрос похоже застал Леонарда врасплох. Заикаясь, он спрашивает: "С ч-чего вы вз-взяли?" ]], code [[ psub("give_clock_2");]]};
 
		{tag="give_clock_2"};
 
		{"Эти часы я подобрал на месте саботажа. Теперь вы не отвертитесь.", [[Леонард поднимается и садится. Тяжело вздохнув он сознается: "Хорошо, я все скажу. Только если обещаете, что меня больше не будут держать на этой станции". ]], code [[ psub('promise'); ]]};
 
		{tag="promise"};
 
		{always = true, "Я сделаю все, что в моих силах.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!"
 
		]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]};
 
		{always = true, "Я сделаю все, что в моих силах.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется, подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]};
 
		{always = true, "Я ничего не обещаю.",[[Леонард Голдман дрожащим голосом отвечает: "Тогда я ничего не скажу". ]], code [[ psub("threaten"); ]]};
 
		{tag = "threaten"};
 
		{always = true, "Тогда пусть Даркстар с вами разбирается", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]};
 
		{"[Отдать часы]Черт с тобой, забирай свои часы.", [[Голдман крайне удивлен: "Вот так просто?" ]], code [[ remove("item_goldmans_clock"); psub("tired_of_you"); ]]};
 
		{always = true, "Тогда пусть Даркстар с вами разбирается.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]};
 
		{"[Отдать часы] Черт с тобой, забирай свои часы.", [[Голдман крайне удивлен: "Вот так просто?" ]], code [[ remove("item_goldmans_clock", pl); psub("tired_of_you"); ]]};
 
		{"[Уйти]", code = [[ back(); ]]};
 
		{tag = "tired_of_you"};
 
		{"Даю вам последний шанс рассказать все, что знаете.", [[леонард Голдман отказывается отвечать: "Я назвал свои условия". ]], code [[ psub('promise'); ]]};
 
		{"[Уйти]", code = [[ back(); ]]};
 
		{tag = "leroy"};
 
		{"И что вы еще намереваетесь сломать?", [[Леонард Голдман пожимает плечами. Испуганно глядя на вас, он отвечает: "Не знаю. Мишель хотел сломать станцию... Так чтобы никто не пострадал. Все бы просто вернулись на поверхность и дело с концом". ]]};
 
		{"Я пойду", [[Леонард Голдман кивает: "Помни, что ты обещал". ]], code = [[ back(); ]]};
 
		{"Я пойду.", [[Леонард Голдман кивает: "Помни, что ты обещал". ]], code = [[ back(); ]]};
 
	};
 
};
 
 
@@ -2189,7 +2592,7 @@ char_jones_dlg = dlg {
 
	};
 
	nam = "Чарльз Джонс";
 
	disp = "Чарльз Джонс";
 
	entered = function(s)
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
@@ -2206,14 +2609,14 @@ char_jones_dlg = dlg {
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[на койке перед вами сидит немолодой человек, одетый в простой серый костюм. Его седые волосы коротко острижены. Подбородок гладко выбрит. Лицо изрыто глубокими морщинами. В руках он вертит карандаш, задумчиво разглядывая его. ^При виде вас он встает и приветствует вас: "Добрый день, меня зовут Чарли. Чарли Джонс". ]];
 
			return [[На койке перед вами сидит немолодой человек, одетый в простой серый костюм. Его седые волосы коротко острижены. Подбородок гладко выбрит. Лицо изрыто глубокими морщинами. В руках он вертит карандаш, задумчиво разглядывая его. ^При виде вас он встает и приветствует вас: "Добрый день, меня зовут Чарли. Чарли Джонс". ]];
 
		else
 
			psub("generic");
 
			return [[Чарльз Джонс приветствует вас, отвлекаясь от своего занятия: "Добрый день". ]];
 
		end;
 
	end;
 
	phr = {
 
		{"Я Дэвид Дрейк. Рад знакомству", [[Чарльз тяжело вздыхает: "Взаимно". ]], code [[ psub("generic"); ]]};
 
		{"Я Дэвид Дрейк. Рад знакомству.", [[Чарльз тяжело вздыхает: "Взаимно". ]], code [[ psub("generic"); ]]};
 
		{tag="sabotage", false, "Вы знаете, что причиной пожара был саботаж?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
@@ -2226,50 +2629,52 @@ char_jones_dlg = dlg {
 
			end;
 
		end};
 
		{tag="ignis_what", false, "Вы знаете, что произошло в Игнисе?", [["Думаю да. Короткое замыкание -- станция старая, провода старые. Где-то нарушилась изоляция. Дальше будет еще хуже -- я постоянно об этом говорю, пора бросить эту груду металлолома и вернуться к людям, на поверхность". ]]};
 
        {tag="on_atlantis", false, "Вы считаете, что станцию необходимо закрыть?", [[Чарльз кивает: "Даже вы понимаете, хотя лишь несколько дней провели здесь. Станция старая, разваливается на глазах. Нас слишком мало, чтобы своевременно устранять возрастающее число неполадок". ]], code [[ char_jones.on_atlantis = 1; psub("on_leaving");]]};
 
		{always=true, "Я пойду", [[
 
        {tag="on_atlantis", false, "Вы считаете, что станцию необходимо закрыть?", [[Чарльз кивает: "Станция старая, разваливается на глазах. Нас слишком мало, чтобы своевременно устранять возрастающее число неполадок". ]], code [[ char_jones.on_atlantis = 1; psub("on_leaving");]]};
 
		{always=true, "Я пойду.", [[
 
			"До встречи".
 
		]], code [[ back(); ]]};
 
        {tag="on_leaving"};
 
        {tag="Да. соглашусь с вами. ", [[Чарли понимающе кивает. ]], code [[ pret(); ]]};
 
        {tag="Но ведь станция в отличном состоянии. ", [[Чарли вздыхает: "Просто, вы еще не пробыли здесь достаточно и многого не видели". ]], code [[ pret(); ]]};
 
        {"Да. соглашусь с вами. ", [[Чарли понимающе кивает. ]], code [[ pret(); ]]};
 
        {"Но ведь станция в отличном состоянии. ", [[Чарли вздыхает: "Просто, вы еще не пробыли здесь достаточно и многого не видели". ]], code [[ pret(); ]]};
 
	};
 
};
 
 
atl_lev_radcliffe_dlg = room {
 
atl_lev_radcliffe_dlg = dlg {
 
	nam = "Уолтер Рэдклифф";
 
	dsc = [[
 
		В доке Левиафана вы встречаете Уолтера Рэдклиффа. Завидев вас он говорит: "Дрейк, какая встреча. Я только что поместил на Левиафан два скафандра, которые вам выделили Моро с Райтом. Хорошо, что я вас встретил. Я хотел бы присоединиться к экипажу Левиафана и предложить вам свою помощь в поисках Уильяма".
 
	]];
 
	entered = function(s)
 
        char_radcliffe.rel_on_join = rel_walter;
 
        char_anna.rel_on_join = rel_anna;
 
        atl_lev_state = 2;
 
        psub("step1");
 
        if char_radcliffe_atlantis_dlg.state == 0 then
 
            char_radcliffe_atlantis_dlg.state = 1;
 
            return [[В доке Левиафана вы встречаете человека лет сорока--сорока-пяти, одетого в рабочий халат. При виде вас, он представляется: "Добрый день, господин Дрейк. Мое имя -- Уолтер Рэдклифф, я инженер. Мы только что перенесли на Левиафан припасы и оборудование, которые вам выделили Моро с Райтом. Хорошо, что я вас встретил. Нужно вас проинструктировать. Вы уже знаете, что скафандры снабжены радиопередатчиком и фонарем, но вы не знаете об еще одном важном устройстве. Мы называем его кодировщиком", -- Рэдклифф показывает вам устройство, которое все это время держал в руке. Аппарат представляет из себя клавиатуру, как у печатной машинки и набор лампочек, расположенных в ряд. Само устройство помещено в водонепроницаемый корпус, чтобы его можно было использовать под водой. Рэдклифф поясняет: "Каждый скафандр снабжен таким устройством. Оно позволяет нам общаться с навьярами. Как вы уже знаете, навьяры общаются посредством последовательностей цветовых сигналов. При нажатии на клавишу кодировщика, зажигается соответствующая лампочка. Лампы горят строго определенное время, которое регулируется ручкой, вот здесь. Вы можете набирать так быстро, как хотите. Кодировщик выведет последовательность целиком с заданной скоростью. Клавиши промаркированы буквами нашего алфавита, сопоставленными буквам навьярского. Если вы прочитаете учебник, что мы поместили в вашу каюту, вы разберетесь". ]];
 
        else
 
            return [[В доке Левиафана вы встречаете Уолтера Рэдклиффа. Завидев вас он говорит: "Дрейк, какая встреча. Мы только что перенесли на Левиафан припасы и оборудование, которые вам выделили Моро с Райтом. Хорошо, что я вас встретил. Нужно вас проинструктировать. Вы уже знаете, что скафандры снабжены радиопередатчиком и фонарем, но вы не знаете об еще одном важном устройстве. Мы называем его кодировщиком", -- Рэдклифф показывает вам устройство, которое все это время держал в руке. Аппарат представляет из себя клавиатуру, как у печатной машинки и набор лампочек, расположенных в ряд. Само устройство помещено в водонепроницаемый корпус, чтобы его можно было использовать под водой. Рэдклифф поясняет: "Каждый скафандр снабжен таким устройством. Оно позволяет нам общаться с навьярами. Как вы уже знаете, навьяры общаются посредством последовательностей цветовых сигналов. При нажатии на клавишу кодировщика, зажигается соответствующая лампочка. Лампы горят строго определенное время, которое регулируется ручкой, вот здесь. Вы можете набирать так быстро, как хотите. Кодировщик выведет последовательность целиком с заданной скоростью. Клавиши промаркированы буквами нашего алфавита, сопоставленными буквам навьярского. Если вы прочитаете учебник, что мы поместили в вашу каюту, вы разберетесь". ]];
 
        end;
 
    end;   
 
	phr = {
 
		{"Как к этому отнесутся на Атлантиде?", [[
 
			"Я уже обговорил это с Моро и Райтом. Они не против моего решения, тем более, что они не меньше вас заинтересованы в успехе вашей экспедиции".
 
		]]};
 
		{"Благодарю, добро пожаловать на борт", [[
 
			"Отлично, благодарю. У меня есть еще одна просьба. Я хотел бы, чтобы моя сестра отправилась вместе с нами. Она знает язык навьяров и может оказаться крайне полезна во множестве ситуаций, кроме того - так она остается под моим присмотром".
 
		]], code [[
 
			lifeon("char_radcliffe");
 
        {tag="step1"};
 
        {"Благодарю.", [[Уолтер кивает и продолжает: "Я хотел бы присоединиться к экипажу Левиафана и предложить вам свою помощь в поисках Уильяма". ]], code [[psub("step2");]]};
 
        {tag="step2"};
 
		{"Как к этому отнесутся на Атлантиде?", [["Я уже обговорил это с Моро и Райтом. Они не против моего решения, тем более, что они не меньше вас заинтересованы в успехе вашей экспедиции". ]]};
 
		{"Добро пожаловать на борт.", [["Отлично, благодарю. У меня есть еще одна просьба. Я хотел бы, чтобы моя сестра отправилась вместе с нами. Она знает язык навьяров и может оказаться крайне полезна во множестве ситуаций, кроме того -- так она остается под моим присмотром". ]], code [[
 
			table.insert(pl.party, 'radcliffe');
 
            move(char_radcliffe, char_radcliffe.home);         
 
			psub("sister");
 
		]]};
 
		{tag="sister"};
 
		{"Я не думаю, что ей место на Левиафане - экспедиция может быть опасна", function(s)
 
		{"Я не думаю, что ей место на Левиафане -- экспедиция может быть опасна.", function(s)
 
			if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
				walk(atl_lev_first_sail);
 
				return [[
 
					"Вы правы, Анне будет безопаснее остаться на Атлантиде. Я знаю, что с вами отправляется Леарр, которая достаточно хорошо знает наш язык, так что я надеюсь, что мы справимся без помощи моей сестры. Я скоро прибуду" - с этими словами он выходит из дока.
 
				]];
 
				return [["Вы правы, Анне будет безопаснее остаться на Атлантиде. Я знаю, что с вами отправляется Леарр, которая достаточно хорошо знает наш язык, так что я надеюсь, что мы справимся без помощи моей сестры. Я скоро вернусь", -- с этими словами он выходит из дока. ]];
 
			else
 
				return [[
 
					"Я хотел бы, чтобы Анна отправилась с нами - я лично позабочусь о ее безопасности, а вам понадобится человек, долгое время посвятивший изучению культуры навьяров".
 
				]];
 
				return [["Я хотел бы, чтобы Анна отправилась с нами -- я лично позабочусь о ее безопасности, а вам понадобится человек, долгое время посвятивший изучению культуры навьяров". ]];
 
			end;
 
		end};
 
		{"Хорошо, ее помощь нам не помешает", [[
 
			"Отлично, мы скоро будем готовы" - с этим словами он выходит из дока.
 
		]], [[
 
			lifeon("char_anna");
 
		{"Хорошо, ее помощь нам не помешает.", [["Отлично, мы скоро будем готовы", -- с этим словами он выходит из дока. ]], [[
 
			table.insert(pl.party, 'anna');
 
            move(char_anna, char_anna.home);         
 
			walk(atl_lev_first_sail);
 
		]]};
 
	};
atlantis_dyp.lua
Show inline comments
 
new file 100644
 
--[[
 
Дипатреанотр
 
]]
 

	
 
global {
 
    dyp_quest_state = 0;
 
        -- 0 - не начат
 
        -- 1 - вождь попросил светящуюся капсулу с Атлантиды
 
        -- 2 - вождь попросил зуб акулы
 
        -- 3(1) - вождь попросил карту
 
        -- 4(2) - узнали, что карту унес Аэдиенрр в Дипатреанотр
 
        -- 5(3) - узнали, куда унес карту Аэдиенрр из Дипатреанотра
 
        -- 6(4) - Отдали оригинал КНО в Ираафаанотр
 
        -- 7(5) - Отдали жезл в Ираафаанотр
 
    dyp_stones_known = false;
 
    dyp_lib_stone_state = 0;
 
};
 

	
 
--[[
 
Дипатреанотр город
 
]]
 

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

	
 
dyp_center = room {
 
    nam = "dyp_center";
 
    underwater = true;
 
    handwheel_room = "dyp_temple_navigation";
 
    disp = "Дипатреанотр, центр";
 
    view = [[Левиафан находится над центром Дипатреанотра -- небольшого навьярского поселения. Вокруг небольшой центральной площади неровными кругами расположены небольшие каменные дома. Явно выраженные улицы отсутствуют, за исключением широкой, выложенной камнем дороги от площади до дома вождя. В другом конце площади расположено большое здание библиотеки. ]];
 
    dsc = [[Вы находитесь на центральной площади Дипатреанотра -- небольшого навьярского поселения. Вокруг небольшой центральной площади неровными кругами расположены небольшие каменные дома. Явно выраженные улицы отсутствуют, за исключением широкой, выложенной камнем дороги от площади до дома вождя. В другом конце площади расположено большое здание библиотеки. ]];
 
    obj = {
 
        "dyp_obelisk";
 
    };
 
    way = {
 
        kh_vroom("К библиотеке", "dyp_library_entrance");
 
        kh_vroom("К дому вождя", "dyp_chief_house_entrance");
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("К окраине", "dyp_outskirts");
 
    };
 
};
 

	
 
dyp_outskirts = room {
 
    nam = "dyp_outskirts";
 
    underwater = true;
 
    disp = "Дипатреанотр, окраина";
 
    dsc = [[Вы стоите на южной окраине Дипатреанотра. К северу от вас расположены неказистые каменные дома жителей города. Отсюда прекрасно виден зависший над центральной площадью Левиафан. ]];
 
    obj = {
 
        "dyp_guardian";
 
    };
 
    way = {
 
        kh_vroom("К обелиску", "dyp_center");
 
    };
 
};
 

	
 
dyp_guardian = npc {
 
    nam = "dyp_guardian";
 
    dsc = [[Рядом с вами неспешно прогуливается {стражник}, вооруженный копьем. Кажется, ваш вид его нисколько не удивляет и не беспокоит. ]];
 
    phrases = function(s)
 
        if language_known then
 
            return {
 
                [[Стражник не обращает на вас внимания. ]];
 
                [[По головным плавникам стражника бегут цветные полосы: "Ты говори с вождем, не со мной". ]];
 
            };
 
        else
 
            return {
 
                [[Стражник не обращает на вас внимания. ]];
 
                [[По головным плавникам стражника бегут цветные полосы. К сожалению, вы не понимаете, что он пытается вам сказать. ]];
 
            };
 
        end;
 
    end;
 
    dlg = function(s)
 
        if dyp_quest_state == 4 then
 
            return "dyp_guardian_dlg";
 
        end;
 
    end;
 
};
 

	
 
dyp_guardian_dlg = dlg {
 
    nam = "dyp_guardian_dlg";
 
    disp = "Стражник";
 
    entered = function(s)
 
        if language_known then
 
            psub("speak");
 
            return [[По головным плавникам стражника бегут цветные полосы: "Ты говори с вождем, не со мной". ]];
 
        else
 
            psub("no_speak");
 
            return [[По головным плавникам стражника бегут цветные полосы. К сожалению, вы не понимаете, что он пытается вам сказать. ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="no_speak"};
 
        {always = true; "[Уйти]", code [[ back(); ]]};
 
        {tag="speak"};
 
        {"[Кодировщик] Я ищу навьяра по имени Аэдиенрр. Он проходил здесь недавно.", [[Стражник кивает: "Аэдиенрр из Ираафаанотра ушел на восток несколько дней назад. Кажется, он направлялся к обелискам". ]], code [[ dyp_quest_state = 5; ]]};
 
        {always = true; "[Уйти]", code [[ back(); ]]};
 
    };
 
};
 

	
 
dyp_obelisk = obj {
 
    nam = "dyp_obelisk";
 
    dsc = [[В центре площади стоит большой каменный {обелиск}, с нанесенными на него символами. ]];
 
    act = function(s)
 
        if dyp_stones_known then
 
            p [[У самого основания обелиска вы видите небольшое изображение, вырезанное в камне. Некогда оно было разрезано на шестнадцать частей, а части перепутаны между собой. ]];
 
            walkin("dyp_obelisk_puzzle");
 
        else
 
            return [[На обелиске, традиционно для навьяров, начертано название города и вырезана карта, указывающая путь к храму. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_obelisk_puzzle = room {
 
    var {
 
        state = {
 
             0, 1, 2, 3,
 
             4, 5, 6, 7,
 
             8, 9,10,11,
 
            12,13,14,15
 
        };
 
        set = false;
 
    };
 
    win = "";
 
    nam = "Дипатреанотр, центр";
 
    underwater = true;
 
    entered = function(s)
 
        if not s.set then
 
            s.set = true;
 
            local details = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 
            local matches = 3;
 
            for i = 1, 16 do
 
                local item;
 
                local index;
 
                repeat
 
                    index = rnd(#details);
 
                    item = details[index];
 
                until matches > 0 or item ~= s.state[i] or i == 16;
 
                table.remove(details, index);
 
                s.state[i] = item;
 
            end;
 
            local k = 1;
 
            for i = 1, 16 do
 
                if s.state[i] == 1 then
 
                    for j = i + 1, 16 do
 
                        if s.state[i] > s.state[j] and s.state[j] ~= 12 then
 
                            k = k + 1;
 
                        end;
 
                    end;
 
                else
 
                    k = k + math.floor(i / 4);
 
                end;
 
            end;
 
            if k % 2 == 0 then
 
                for i = 16, 1, -1 do
 
                    if s.state[i] == 14 then
 
                        s.state[i] = 15;
 
                    elseif s.state[i] == 15 then
 
                        s.state[i] = 14;
 
                    end;
 
                end;
 
            end;
 
        end;
 
    end;
 
    pic = function(s)
 
        local p = 'images/dyp15.png';
 
        for i = 1, #s.state do
 
            local f = s.state[i];
 
            p = p .. ';images/dyp15_' .. tostring(f) .. '.png@' .. tostring(math.floor((i - 1) / 4) * 40) .. ',' .. tostring((3 - (i - 1) % 4) * 40);
 
        end;
 
        return p;
 
    end;
 
    dsc = [[У самого основания обелиска вы видите небольшое изображение, вырезанное в камне. Некогда оно было разрезано на шестнадцать частей, а части перепутаны между собой. ]];
 
    click = function(s, x, y)
 
        local ty = math.floor(x / 40);
 
        local tx = 3 - math.floor(y / 40);
 
        local tile = tx + ty * 4 + 1;
 
        if (s.state[tile] ~= 15) then
 
            if (tile - 4 > 0) and s.state[tile - 4] == 15 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile - 4];
 
                s.state[tile - 4] = tx;
 
            elseif tx > 0 and s.state[tile - 1] == 15 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile - 1];
 
                s.state[tile - 1] = tx;
 
            elseif tx < 3 and s.state[tile + 1] == 15 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile + 1];
 
                s.state[tile + 1] = tx;
 
            elseif (tile + 4) <= 16 and s.state[tile + 4] == 15 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile + 4];
 
                s.state[tile + 4] = tx;
 
            end;
 
        end;
 
        local f = "";
 
        for i = 1, #s.state do
 
            f = f .. "," .. tostring(s.state[i]);
 
        end;
 
        print(f);
 
        if not s:check_win() then
 
            walkin(here());
 
        else
 
            p = [[Одна из каменных плит рядом с обелиском отодвигается. В образовавшейся выемке вы видите небольшой светящийся красным светом камень. Вы забираете камень себе. ]];
 
            put(dyp_item_stone_red, pl);
 
            walk(dyp_center);
 
        end;
 
    end;
 
    check_win = function(s)
 
        for i = 1, #s.state do
 
            if s.state[i] ~= 16 - i then
 
                return false;
 
            end;
 
        end;
 
        return true;
 
    end;
 
    way = {
 
        kh_vroom("Отойти", "dyp_center");
 
    };
 
};
 

	
 
dyp_navjiarr = npc{
 
    nam = "dyp_navjiarr";
 
    dsc = [[Немногие {навьяры}, находящиеся сейчас на площади с интересом оглядываютс на Левиафан и вас. ]];
 
    phrases = {
 
        "Не стоит их беспокоить. ",
 
        "Вряд ли они смогут сказать вам что-то полезное. "
 
    };
 
};
 

	
 
dyp_library_entrance = room {
 
    nam = "Дипатреанотр, вход в библиотеку";
 
    underwater = true;
 
    dsc = [[Двухэтажное каменное здание библиотеки разительно отличается от большинства строений Дипатреанотра. Выстроенное из массивных каменных плит, а не из булыжников, как остальные, оно хорошо сохранилось несмотря на достаточно большой возраст. Ровные стены тщательно очищаются навьярами от ила и водорослей, сохрнаяя здание в перозданном виде. ]];
 
    way = {
 
        kh_vroom("К обелиску", "dyp_center");
 
        kh_vroom("В библиотеку", "dyp_library_floor1");
 
    };
 
};
 

	
 
dyp_library_floor1 = room {
 
    nam = "Дипатреанотр, библиотека, первый этаж";
 
    underwater = true;
 
    dsc = [[Первый этаж здания библиотеки представляет собой огромный зал. Множество колонн, установленных ровными рядами, поддерживают потолок, между ними и вдоль стен установлены массивные стеллажи, заполненные различными записями. Большинство их сделаны на каменных табличках, но изредка встречаются и древние металлические. Ваше внимание привлекает одна из полок, заполненная небольшими блестящими дисками из неизвестного материала. ]];
 
    obj = {
 
        "dyp_library_statue"
 
    };
 
    way = {
 
        kh_vroom("Наружу", "dyp_library_entrance");
 
        kh_vroom("На второй этаж", "dyp_library_floor2");
 
    };
 
};
 

	
 
dyp_library_floor2 = room {
 
    nam = "Дипатреанотр, библиотека, второй этаж";
 
    underwater = true;
 
    dsc = [[Второй этаж библиотеки мало чем отличается от первого -- точно такие же колонны, точно такие же стеллажи. Здесь гораздо больше полок содержат блестящие диски вместо привычных вам записей. ]];
 
    obj = {
 
        "dyp_librarian";
 
    };
 
    way = {
 
        kh_vroom("На первый этаж", "dyp_library_floor1");
 
    };
 
};
 

	
 
dyp_librarian = npc {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dyp_librarian";
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Перед вами на полу сидит {навьяр}. Вокруг него разложены какие-то записи, которые он рассматривает, время от времени перекладывая с места на место. ]];
 
        else
 
            return [[Перед вами на полу сидит {Эйлехиарр}. Вокруг него разложены какие-то записи, которые он рассматривает, время от времени перекладывая с места на место. ]];
 
        end;
 
    end;
 
    dlg = "dyp_librarian_dlg";
 
};
 

	
 
dyp_librarian_dlg = dlg {
 
    var {
 
        lse = false;
 
    };
 
    nam = "dyp_librarian_dlg";
 
    disp = "Эйлехиарр";
 
    entered = function(s)
 
        if atl_iyh_state == 10 and not s.lse then
 
            s.lse = true;
 
            pon("lse");
 
        end;
 
    
 
        if language_known then
 
            psub("speak");
 
            if (dyp_librarian_dlg.state == 0) then
 
                dyp_librarian_dlg.state = 1;
 
                return [[Перед вами, прямо на полу сидит навьяр. Рядом с ним разложены какие-то записи, которые он внимательно рассматривает, иногда перекладывая с места на место. Заметив вас, он поднимается и приветствует вас: "Я, Эйлехиарр из Дипатреанотра, приветствую тебя хевьяр. Ты говори, зачем ты пришел". ]];
 
            else
 
                return [[Эйлехиарр сидит на полу, перекладывая какие-то записи. Заметив вас он поднимается и приветствует вас: "Ты говори, зачем ты пришел". ]];
 
            end;
 
        else
 
            psub("no_speak");
 
            return [[Перед вами, прямо на полу сидит навьяр. Рядом с ним разложены какие-то записи, которые он внимательно рассматривает, иногда перекладывая с места на место. Заметив вас, он поднимается. По плавникам на его голове начинают бежать цветные полосы, но вы не понимаете, что он хочет вам сказать. ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="no_speak"};
 
        {always=true, "[Уйти]", code [[ back(); ]]};
 
        {tag="speak"};
 
        {"[Кодировщик] Что ты делаешь?", [[Эйлехиарр отвечает: "Эти записи сильно повреждены. К счастью у нас есть несколько копий этого текста. Но мои предшественники умудрились испортить все три!" ]]};
 
        {tag="lse", false, "[Кодировщик] Я ищу карту пути в Лсэрианотр.", [[Эйлехиарр задумчиво оглядывает помещение. Делает несколько шагов в одну сторону, потом в другую. Садится рядом со своими записями, снова встает. Наконец, он берет с одной из полок металлическую табличку и сообщает: "Здесь говорится о пещере рядом с храмом. Три ключа закрывают вход". ]], code [[pon("three_keys");]]};
 
        {tag="three_keys", false, "[Кодировщик] Где найти эти ключи?", [[Эйлехиарр отвечает: "Здесь, в Дипатреанотре. Один ты можешь забрать внизу, у статуи". ]], code [[ dyp_stones_known = true; dyp_lib_stone_state = 1; ]]};
 
        {always=true, "[Кодировщик] Я пойду.", [[Эйлехиарр прощается: "Ты возвращайся". ]], code [[ back(); ]]};
 
    };
 
};
 

	
 
dyp_item_stone_blue = obj {
 
    nam = "dyp_item_stone_blue";
 
    disp = [[Синий камень]];
 
    inv = [[Небольшой круглый камень, излучающий яркий синий свет. ]];
 
};
 

	
 
dyp_item_stone_green= obj {
 
    nam = "dyp_item_stone_green";
 
    disp = [[Зеленый камень]];
 
    inv = [[Небольшой круглый камень, излучающий яркий зеленый свет. ]];
 
};
 

	
 
dyp_item_stone_red = obj {
 
    nam = "dyp_item_stone_red";
 
    disp = [[Красный камень]];
 
    inv = [[Небольшой круглый камень, излучающий яркий красный свет. ]];
 
};
 

	
 
dyp_item_wand = obj {
 
    nam = "dyp_item_wand";
 
    disp = "Жезл";
 
    inv = [[Жезл из неизвестного металла, покрытый навьярскими письменами. ]];
 
};
 

	
 
dyp_library_statue = obj {
 
    nam = "dyp_library_statue";
 
    dsc =function(s)
 
        if dyp_lib_stone_state > 1 then
 
            return [[В центре зала стоит статуя навьяра. В правой руке он держит табличку, которую сосредоточенно рассматривает. Левая рука статуи выглядит так, словно в ней должен находиться какой-то небольшой предмет, однако он отсутствует. ]];
 
        else
 
            return [[В центре зала стоит статуя навьяра. В правой руке он держит табличку, которую сосредоточенно рассматривает. В левой руке статуи лежит небольшой светящийся синий {камень}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if dyp_lib_stone_state == 0 then
 
            return [[Красивая старая статуя. Навьяр изображен пораительно подробно -- вы можете разглядеть каждую чешуйку. Небольшой камень лежит в руке статуи так, что его очень легко вынуть. ]];
 
        elseif dyp_lib_stone_state == 1 then
 
            dyp_lib_stone_state = 2;
 
            take("dyp_item_stone_blue");
 
            return [[Вы легко забираете из руки статуи камень. ]];
 
        elseif dyp_lib_stone_state == 2 then
 
            return [[Красивая старая статуя. Навьяр изображен пораительно подробно -- вы можете разглядеть каждую чешуйку. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_chief_house_entrance = room {
 
    nam = "dyp_chief_house_entrance";
 
    underwater = true;
 
    disp = "Дипатреанотр, перед домом вождя";
 
    dsc = [[Дом вождя Дипатреанотра не уступает размерами библиотеке. Двухэтажное здание очневидно не раз расширялось и достраивалось. Часть его сложена из обработанных каменных плит, другая -- из булыжников, как большинство зданий города. Широкая выложенная камнем улица ведет отсюда к центральной площади города.]];
 
    way = {
 
        kh_vroom("К обелиску", "dyp_center");
 
        kh_vroom("В дом", "dyp_chief_house");
 
    };
 
};
 

	
 
dyp_chief_house = room {
 
    nam = "dyp_chief_house";
 
    underwater = true;
 
    disp = "Дипатреанотр, дом вождя";
 
    dsc = [[Приемная дома вождя представляет собой огромный зал с ровными рядами стройных каменных колонн, удреживающих потолок. В дальнем конце зала установлен каменный трон, перед которым установлен массивный каменный стол. ]];
 
    way = {
 
        kh_vroom("Наружу", "dyp_chief_house_entrance");
 
    };
 
    obj = {
 
        "dyp_chief";
 
    };
 
};
 

	
 
dyp_chief = npc {
 
    nam = "dyp_chief";
 
    dsc = [[{Вождь Дипатреанотра} сидит на троне с закрытыми глазами. Руки его сложены на груди. В правой он держит небольшой золотистый жезл, в навершии которого укреплен круглый камень, излучающий яркий зеленый свет. Светло-синяя чешуя покрыта узором из татуировок. Как и другие навьяры он одет в костюм из водорослей. На левой руке дремлюего вождя вы видите искусный браслет из блестящего металла. ]];
 
    dlg = "dyp_chief_dlg";
 
};
 

	
 
dyp_chief_dlg = dlg {
 
    var {
 
        lse = false;
 
        aed = false;
 
    };
 
    nam = "dyp_chief_dlg";
 
    disp = "Вождь Дипатреанотра";
 
    entered = function(s)
 
        if not language_known then
 
            psub("no_speak");
 
            return [[Как только вы приближаетесь к столу, глаза вождя открываются. Он поднимается с трона. Руки его остаются сложенными на груди, а взгляд его желтых глаз устремляется на вас. По его головным плавникам бегут цветные полосы. К сожалению, вы не понимаете, что он пытается вам сказать. ]];
 
        else
 
            psub("speak");
 
            if atl_iyh_state == 10 and not s.lse then
 
                s.lse = true;
 
                pon("lseryanotrr");
 
            end;
 
            if dyp_quest_state == 1 and have(item_electric_lamp, pl) and item_electric_lamp.state == 2 then
 
                pon("quest1");
 
            end;
 
            if dyp_quest_state == 2 and have(item_shark_tooth, pl) then
 
                pon("quest2");
 
            end;
 
            if dyp_stones_known and dyp_quest_state == 0 then
 
                pon("quest");
 
            end;
 
            poff("quest3");
 
            if have(dyp_item_star_map_copy) or have(dyp_item_star_map) then
 
                pon("quest3");
 
            end;
 
            if dyp_quest_state == 4 and not s.aed then
 
                s.aed = true;
 
                pon("aedienrr");
 
            end;
 
            return [[Как только вы приближаетесь к столу, глаза вождя открываются. Он поднимается с трона. Руки его остаются сложенными на груди, а взгляд его желтых глаз устремляется на вас. По его головным плавникам бегут цветные полосы: "Чем скромные навьяры из Дипатреанотра обязаны визиту почтенного хевьяра? Ты говори". ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="no_speak"};
 
        {always=true, "[Уйти]", code [[ back(); ]]};
 
        {tag="speak"};
 
        {tag="lseryanotrr", false, "[Кодировщик] Я ищу карту пути в Лсэрианотр.", [[Вождь отвечает: "Ты спроси в храме или в библиотеке. Я ничего такого не знаю". ]]};
 
        --[[{tag="star_map", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [ [Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении, бегут цветные полосы: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ] ], code [ [ dyp_quest_state = 1; ] ]};]]
 
        {tag="quest", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [[Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении бегут цветные полосы: "Принеси мне три вещи, что я попрошу и получишь жезл вместе с камнем". ]], code [[psub("agree_quest");]]};
 
        {tag="quest1", false, "[Отдать светильник] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", [[Вождь с интересом рассматривает принесенный вами прибор, после чего ставит его на стол перед собой и говорит: "Еще мне нужен акулий зуб". ]], code [[ remove("item_electric_lamp", pl); dyp_quest_state = 2; ]]};
 
        {tag="quest2", false, "[Отдать зуб акулы] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", [[Вождь кладет зуб на стол рядом со светильником и говорит: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ]], code [[ remove("item_shark_tooth", pl); dyp_quest_state = 3; psub("agree_quest2"); ]]};
 
        {tag="quest3", false, "[Отдать карту небесных огней] Вот то, что ты просил. Я могу забрать камень?", function(s)
 
            if have(dyp_item_star_map_copy) then
 
                remove(dyp_item_star_map_copy, me());
 
            else
 
                remove(dyp_item_star_map, me());
 
                atl_rep_iraa = atl_rep_iraa - 1;
 
            end;
 
            dyp_map = true;
 
            take(dyp_item_stone_green);
 
            atl_rep_dyp = atl_rep_dyp + 1;
 
            return [[Вождь отдает вам свой жезл со словами: "Благодарю тебя, честный хевьяр и держу свое слово". ]];
 
        end};
 
        {tag="aedienrr", false, "[Кодировщик] Ваш город посещал Аэдиенрр из Ираафаанотра недавно?", [[Вождь отвечает: "Не мое дело следить за этим. Спроси у стражников". ]]};
 
        {always=true, "[Кодировщик] Я пойду.", [[Вождь прощается с вами: "Ты возвращайся". Он садится обратно на трон и закрывает глаза. ]], code [[ back(); ]]};
 
        {tag="agree_quest"};
 
        {always=true,"[Кодировщик] Что ты хочешь, чтобы я принес?", [[Вождь отвечает: "Первая вещь, что мне нужна -- это светящаяся капсула из вашего города". ]], code [[ dyp_quest_state = 1; pret(); ]]};
 
        {always=true,"[Кодировщик] Я передумал. ", [[Вождь пожимает плечами. ]], code [[ pon("quest"); pret(); ]]};
 
        {tag="agree_quest2"};
 
        {always=true,"[Кодировщик] Как к этому отнесутся в Ираафаанотре?", [[Вождь отвечает: "Они могут быть против. Уговори их". ]], code [[ pret(); ]]};
 
        {always=true,"[Кодировщик] Я не буду этого делать.", [[Вождь отвечает: "Я отдам посох только за карту небесных огней". ]], code [[ pret(); ]]};
 
    };
 
};
 

	
 
--[[
 
Дипатреанотр храм
 
]]
 

	
 
dyp_temple_entry = lcutscene("dyp_temple_entry", "Левиафан, рубка", [[Храм Дипатреанотра располагается в нескольких часах пути от Атлантиды на Левиафане. К массивным дверям храма, вырезанным в толще скалы, ведет широкая каменная лестница, некогда украшенная резными орнаментами, ныне осыпавшимися и раскрошившимися. Над входом вырезано изображение, состоящее из нескольких концентрических кругов и каких-то символов. ]], "Вы прибыли в Храм Дипатреанотра. ", leviathan_wheelhouse);
 

	
 
dyp_temple_guard = npc {
 
    nam = "ctt_dyp_temple_guard";
 
    dsc = [[У ворот стоят два навьяра, вооруженные копьями. При вашем приближении они начинают нервничать -- переглянувшись, они перехватывают копья, готовясь при необходимости прогнать вас. По плавникам одного из них бегут цветные полосы: темно-фиолетовая, зеленая, оранжевая -- шире чем остальные, серая, ярко-розовая, желтая -- снова широкая, салатовая, снова широкая желтая и, наконец, широкая бледно-оранжевая. После небольшой паузы, полосы появляются снова. ]];
 
    phrases = {
 
        [[Стражник не реагирует на ваши попытки начать общение. ]];
 
    };
 
    
 
};
 

	
 
dyp_temple_carving_look = room {
 
    nam = "Храм Дипатреанотра, вход";
 
    pic ="images/iyh_navjiarr_map.png"; 
 
    dsc = [[Над входом в храм вырезана схема, состоящая из нескольких концентрических кругов. Часть схемы полностью стерлась от времени. ]];
 
    obj = {
 
        vway("continue", "{Продолжить}", "dyp_temple_entrance");
 
    };
 
};
 

	
 
dyp_temple_carving = obj {
 
    nam = "dyp_temple_carving";
 
    dsc = [[Над входом в храм вырезано {изображение} состоящее из нескольких кругов и еще каких-то символов. Часть изображения стерлась от времени, однако остальная часть все еще читаема. ]];
 
    act = function(s)
 
        walkin("dyp_temple_carving_look");
 
    end;
 
};
 

	
 
dyp_temple_entrance = room {
 
    nam = "Храм Дипатреанотра, вход";
 
    dsc = [[Перед вами находится вырезанный в скале вход в навьярский храм. Массивные каменные ступени ведут к громадным двустворчатым дверям, украшенным полустершимися орнаментами. Некогда яркие краски потускнели -- осторожные навьяры не решаются их обновить. ^Скала продолжается на восток и на юго-запад от храма. Вдалеке на севере видны длинные, вытянувшиеся на несколько метров вверх водоросли. К северо-западу заметен каменный обелиск. ]];
 
    view = [[Через иллюминаторы вы видите вырезанный в скале вход в навьярский храм. Массивные каменные ступени ведут к громадным двустворчатым дверям, украшенным полустершимися орнаментами. Некогда яркие краски потускнели -- осторожные навьяры не решаются их обновить. ^Скала продолжается на восток и на юго-запад от храма. Вдалеке на севере видны длинные, вытянувшиеся на несколько метров вверх водоросли. К северо-западу заметен каменный обелиск. ]];
 
    underwater = true;
 
    handwheel_room = 'dyp_temple_navigation';
 
    obj = {
 
        "dyp_temple_guard";
 
        "dyp_temple_carving";
 
    };
 
    way = {
 
        kh_vroom("В храм", function(s)
 
            pr('Охранники не колеблясь убьют вас, если вы попытаетесь войти. ');
 
            return false;
 
        end):disable();
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
    };
 
};
 

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

	
 
dyp_temple_south_west = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Вы находитесь у подножья скалы. К юго-западу от вас скала сворачивает на юг и тянется на многие километры. К северо-востоку вы видите храм Дипатреанотра. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_south_far = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Вы находитесь у подножья скалы, протянувшейся на многие километры на юг. На севере скала сворачивает к востоку. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_north_west = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
    underwater = true;
 
    handwheel_room = 'dyp_temple_navigation';
 
    view = [[Перед вами возвышается массивный каменный обелиск. Некогда он был украшен резными орнаментами, но сейчас все они практически полностью стерлись. К юго-востоку от вас возвышается отвесная скала, протянувшаяся на многие километры с юга на восток. Вдалеке на западе вы видите каменные строения навьярского города -- Дипатреанотра. ]];
 
    dsc = [[К юго-востоку от вас возвышается отвесная скала, протянувшаяся на многие километры с юга на восток. Вдалеке на западе вы видите каменные строения навьярского города -- Дипатреанотра. ]];
 
    obj = {
 
        "dyp_temple_west_footprints";
 
        "dyp_temple_north_west_obelisk";
 
    };
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
    };
 
};
 

	
 
dyp_temple_west_footprints = obj {
 
    nam = "dyp_temple_west_footprints";
 
    dsc = [[На илистом дне вы видите {следы}. ]];
 
    act = [[Следы навьяра ведут на север. ]];
 
};
 

	
 
dyp_temple_north_west_obelisk = obj {
 
    nam = "dyp_temple_north_west_obelisk";
 
    dsc = [[Перед вами возвышается массивный каменный {обелиск}. Некогда он был украшен резными орнаментами, но сейчас все они практически полностью стерлись. ]];
 
    act = [[Древняя каменная конструкция, с неизвестной целью помещенная в этом месте. ]];
 
};
 

	
 
dyp_temple_north = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над высокими стеблями водорослей, едва заметно колышущимися в спокойной воде. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_crevice_middle = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над неглубоким ущельем, протянувшимся с востока на запад. На юге вы видите длинные стебли водорослей, поднимающиеся на несколько метров над землей. Вдалеке на севере протянулась параллельно ущелью высокая отвесная скала. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_crevice_east = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над неглубоким ущельем, протянувшимся с востока на запад. На юго-западе вы видите длинные стебли водорослей, поднимающиеся на несколько метров над землей. Вдалеке на севере протянулась параллельно ущелью высокая отвесная скала. На северо-востоке вы видите огромный скелет кита, с незапамятных времен покоящийся там. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_crevice_far_east = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над неглубоким ущельем, протянувшимся с востока на запад. На севере вы видите огромный скелет кита, с незапамятных времен покоящийся там. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_crevice_west = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над неглубоким ущельем, протянувшимся с востока на запад. На юго-востоке вы видите длинные стебли водорослей, поднимающиеся на несколько метров над землей. На северо-западе возвышается каменный обелиск, а еще дальше на севере параллельно ущелью протянулась высокая отвесная скала. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_crevice_far_west = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Левиафан застыл над неглубоким ущельем, протянувшимся с востока на запад. Вдалеке на севере и на юге от вас возвышаются каменные обелиски. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_warning = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
    view = [[Перед вами возвышается массивный каменный обелиск. Большая часть изображенного на нем стерлась. ]];
 
    dsc = [[Вы находитесь посреди бескрайней илистой равнины. К северу вы видите скалу, протянувшуюся с запада на восток. К югу вы видите глубокое ущелье, протянувшееся параллельно скале. ]];
 
    underwater = true;
 
    handwheel_room = 'dyp_temple_navigation';
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
    };
 
    obj = {
 
        "dyp_temple_obelisk_footprints";
 
        "dyp_temple_warning_obelisk";
 
    };
 
};
 

	
 
dyp_temple_obelisk_footprints = obj {
 
    nam = "dyp_temple_obelisk_footprints";
 
    dsc = [[На илистом дне вы видите {следы}. ]];
 
    act = [[Следы навьяра ведут на север. ]];
 
};
 

	
 
dyp_temple_warning_obelisk = obj {
 
    nam = "dyp_temple_warning_obelisk";
 
    dsc = [[Перед вами возвышается массивный каменный {обелиск}. Некогда он был украшен резными орнаментами, но сейчас все они практически полностью стерлись. ]];
 
    act = [[Древняя каменная конструкция, с неизвестной целью помещенная в этом месте. ]];
 
};
 

	
 
dyp_temple_cliff_1 = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
    view = [[Вы находитесь к югу от высокой скалы, протянувшейся с востока на запад. Здесь в скале вы видите вход в глубокую темную пещеру. К юго-востоку от вас возвышается каменный обелиск. ]];
 
    underwater = true;
 
    handwheel_room = 'dyp_temple_navigation';
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В пещеру", "dyp_crab_cave");
 
    };
 
    obj = {
 
        "dyp_temple_cliff_1_footprints";
 
    };
 
};
 

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

	
 
dyp_temple_cliff_2 = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
    view = [[Вы находитесь к югу от высокой скалы, протянувшейся с востока на запад. Вдалеке на юге возвышается каменный обелиск. ]];
 
    dsc = [[Вы стоите у подножия высокой скалы, протянувшейся с востока на запад к северу от вас. К югу от вас возвышается каменный обелиск. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
    underwater = true;
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
    };
 
    obj = {
 
        "dyp_temple_cliff_2_footprints";
 
    };
 
};
 

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

	
 
dyp_temple_cliff_3 = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. Вдалеке на юго-западе возвышается каменный обелиск. ]];
 
    view = [[Вы находитесь к югу от высокой скалы, протянувшейся с востока на запад. К юго-западу от вас возвышается каменный обелиск. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_cliff_4 = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Вы находитесь к югу от высокой скалы, протянувшейся с востока на запад. Вдалеке на юге вы видите ущелье, протянувшееся параллельно скале. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_cliff_5 = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Вы находитесь к югу от высокой скалы, протянувшейся с востока на запад. Вдалеке на юге вы видите ущелье, протянувшееся параллельно скале. На юго-востоке вы видете скелет кита, покоящийся здесь многие десятилетия. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_whale = room {
 
    nam = "Океан";
 
    no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
    view = [[Рядом с вами покоится скелет громадного кита. Древние кости занесены илом, однако все еще прекрасно видны с большого расстояния. На севере вы видите вырезанный в скале вход в древний навьярский храм. На юге глубокое ущелье протянулось с востока на запад. ]];
 
    handwheel_room = 'dyp_temple_navigation';
 
};
 

	
 
dyp_temple_navigation = dlg {
 
    nam = "Штурвал Левиафана";
 
    entered = function(s)
 
        psub(stead.deref(where(submarine_leviathan)));
 
        return where(submarine_leviathan).view;
 
    end;
 
    phr = {
 
        {tag="dyp_temple_entrance"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_east");
 
            psub("dyp_temple_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На северо-восток, к зарослям]", function()
 
            move(submarine_leviathan, "dyp_temple_north");
 
            psub("dyp_temple_north");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На северо-запад, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_north_west");
 
            psub("dyp_temple_north_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_south_west");
 
            psub("dyp_temple_south_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_east"};
 
        {always=true, "[На запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_entrance");
 
            psub("dyp_temple_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На север, к зарослям]", function()
 
            move(submarine_leviathan, "dyp_temple_north");
 
            psub("dyp_temple_north");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_south_west"};
 
        {always=true, "[На северо-восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_entrance");
 
            psub("dyp_temple_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_south_far");
 
            psub("dyp_temple_south_far");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_south_far"};
 
        {always=true, "[На север, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_south_west");
 
            psub("dyp_temple_south_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_north_west"};
 
        {always=true, "[На север, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_far_west");
 
            psub("dyp_temple_crevice_far_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-восток, к храму]", function()
 
            move(submarine_leviathan, "dyp_temple_entrance");
 
            psub("dyp_temple_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, в Дипатреанотр]", function()
 
            dypatreanotrr_found = true;
 
            move(submarine_leviathan, "dyp_center");
 
            psub("dyp_center");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_north"};
 
        {always=true, "[На юго-запад, к храму]", function()
 
            move(submarine_leviathan, "dyp_temple_entrance");
 
            psub("dyp_temple_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к скале]", function()
 
            move(submarine_leviathan, "dyp_temple_east");
 
            psub("dyp_temple_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На север, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_middle");
 
            psub("dyp_temple_crevice_middle");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_crevice_middle"};
 
        {always=true, "[На юг, к зарослям]", function()
 
            move(submarine_leviathan, "dyp_temple_north");
 
            psub("dyp_temple_north");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На восток, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_east");
 
            psub("dyp_temple_crevice_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На север, к скале]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_4");
 
            psub("dyp_temple_cliff_4");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_west");
 
            psub("dyp_temple_crevice_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_crevice_east"};
 
        {always=true, "[На юго-запад, к зарослям]", function()
 
            move(submarine_leviathan, "dyp_temple_north");
 
            psub("dyp_temple_north");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На восток, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_far_east");
 
            psub("dyp_temple_crevice_far_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На северо-восток, к скелету]", function()
 
            move(submarine_leviathan, "dyp_temple_whale");
 
            psub("dyp_temple_whale");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На север, к скале]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_5");
 
            psub("dyp_temple_cliff_5");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_middle");
 
            psub("dyp_temple_crevice_middle");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_crevice_far_east"};
 
        {always=true, "[На север, к скелету]", function()
 
            move(submarine_leviathan, "dyp_temple_whale");
 
            psub("dyp_temple_whale");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_east");
 
            psub("dyp_temple_crevice_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_crevice_west"};
 
        {always=true, "[На север, к скале]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_3");
 
            psub("dyp_temple_cliff_3");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На восток, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_middle");
 
            psub("dyp_temple_crevice_middle");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-восток, к зарослям]", function()
 
            move(submarine_leviathan, "dyp_temple_north");
 
            psub("dyp_temple_north");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_far_west");
 
            psub("dyp_temple_crevice_far_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На северо-запад, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_warning");
 
            psub("dyp_temple_warning");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_crevice_far_west"};
 
        {always=true, "[На север, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_warning");
 
            psub("dyp_temple_warning");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На восток, вдоль ущелья]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_west");
 
            psub("dyp_temple_crevice_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_north_west");
 
            psub("dyp_temple_north_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_warning"};
 
        {always=true, "[На север, к скале]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_2");
 
            psub("dyp_temple_cliff_2");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_far_west");
 
            psub("dyp_temple_crevice_far_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_cliff_1"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_2");
 
            psub("dyp_temple_cliff_2");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-восток, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_warning");
 
            psub("dyp_temple_warning");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_cliff_2"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_3");
 
            psub("dyp_temple_cliff_3");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_warning");
 
            psub("dyp_temple_warning");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_1");
 
            psub("dyp_temple_cliff_1");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_cliff_3"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_4");
 
            psub("dyp_temple_cliff_4");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_west");
 
            psub("dyp_temple_crevice_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-запад, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_warning");
 
            psub("dyp_temple_warning");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_2");
 
            psub("dyp_temple_cliff_2");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_cliff_4"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_5");
 
            psub("dyp_temple_cliff_5");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_middle");
 
            psub("dyp_temple_crevice_middle");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_3");
 
            psub("dyp_temple_cliff_3");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_cliff_5"};
 
        {always=true, "[На восток, вдоль скалы]", function()
 
            temple_found = true;
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            walk("iyh_far_from_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юго-восток, к скелету]", function()
 
            move(submarine_leviathan, "dyp_temple_whale");
 
            psub("dyp_temple_whale");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_east");
 
            psub("dyp_temple_crevice_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На запад, вдоль скалы]", function()
 
            move(submarine_leviathan, "dyp_temple_cliff_4");
 
            psub("dyp_temple_cliff_4");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_temple_whale"};
 
        {always=true, "[На север, к храму]", function()
 
            temple_found = true;
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            walk("iyh_far_from_entrance");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[На юг, к ущелью]", function()
 
            move(submarine_leviathan, "dyp_temple_crevice_far_east");
 
            psub("dyp_temple_crevice_far_east");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
        
 
        {tag="dyp_center"};
 
        {always=true, "[На восток, к обелиску]", function()
 
            move(submarine_leviathan, "dyp_temple_north_west");
 
            psub("dyp_temple_north_west");
 
            return where(submarine_leviathan).view;
 
        end};
 
        {always=true, "[Отойти от штурвала]", code = [[
 
            walk('leviathan_wheelhouse');
 
        ]]};
 
        {always=true, "[Отправиться в другое место]", code = [[
 
            walk('leviathan_dlg');
 
        ]]};
 
    };
 
};
 

	
 
dyp_temple_cave_entrance = room {
 
    nam = "dyp_temple_cave_entrance";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Вы стоите у выхода из глубокой пещеры, расположенной неподалеку от храма Дипатреанотра. Перед вами длинный коридор, ведущий куда-то вглубь скалы. Вдалеке, в коридоре вы видите слабое свечение. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("Выйти из пещеры", "dyp_temple_east");
 
        kh_vroom("Вглубь пещеры", "dyp_temple_cave_deep");
 
    };
 
};
 

	
 
dyp_temple_cave_deep = room {
 
    nam = "dyp_temple_cave_deep";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Здесь коридор разветвляется на три. В конце каждого вы видите слабое свечение красного, зеленого и синего цветов. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("К выходу из пещеры", "dyp_temple_cave_entrance");
 
        kh_vroom("В \"Красный\" коридор", "dyp_temple_cave_red");
 
        kh_vroom("В \"Зеленый\" коридор", "dyp_temple_cave_green");
 
        kh_vroom("В \"Синий\" коридор", "dyp_temple_cave_blue");
 
    };
 
};
 

	
 
dyp_temple_cave_red = room {
 
    nam = "dyp_temple_cave_red";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Проход заканчивается массивной металлической дверью, совершенно гладкой. Вы не видите никакого способа открыть ее. ]];
 
    underwater = true;
 
    obj = {
 
        "dyp_temple_statue_red";
 
    };
 
    way = {
 
        kh_vroom("В главный коридор", "dyp_temple_cave_deep");
 
    };
 
};
 

	
 
dyp_temple_statue_red = obj {
 
    nam = "dyp_temple_statue_red";
 
    dsc = [[Рядом с дверью стоит древняя статуя навьяра. В правой руке статуя держит копье, в навершии которого ярко светится красный камень. На поясе статуи вы видите небольшое круглое {отверстие}. ]];
 
};
 

	
 
dyp_temple_cave_green = room {
 
    nam = "dyp_temple_cave_green";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Проход заканчивается массивной металлической дверью, совершенно гладкой. Вы не видите никакого способа открыть ее. ]];
 
    underwater = true;
 
    obj = {
 
        "dyp_temple_statue_green";
 
    };
 
    way = {
 
        kh_vroom("В главный коридор", "dyp_temple_cave_deep");
 
    };
 
};
 

	
 
dyp_temple_statue_green = obj {
 
    nam = "dyp_temple_statue_green";
 
    dsc = [[Рядом с дверью стоит древняя статуя навьяра. В правой руке статуя держит копье, в навершии которого ярко светится зеленый камень. На поясе статуи вы видите небольшое круглое {отверстие}. ]];
 
};
 

	
 
dyp_temple_cave_blue = room {
 
    nam = "dyp_temple_cave_blue";
 
    disp = "Храм Дипатреанотра, пещера";
 
    dsc = [[Проход заканчивается массивной металлической дверью, совершенно гладкой. Вы не видите никакого способа открыть ее. ]];
 
    underwater = true;
 
    obj = {
 
        "dyp_temple_statue_blue";
 
    };
 
    way = {
 
        kh_vroom("В главный коридор", "dyp_temple_cave_deep");
 
    };
 
};
 

	
 
dyp_temple_statue_blue = obj {
 
    nam = "dyp_temple_statue_blue";
 
    dsc = [[Рядом с дверью стоит древняя статуя навьяра. В правой руке статуя держит копье, в навершии которого ярко светится синий камень. На поясе статуи вы видите небольшое круглое {отверстие}. ]];
 
};
 

	
 
dyp_crab_cave = labyrinth {
 
    var {
 
        position = "00";
 
        fight = false;
 
    };
 
    nam = "dyp_crab_cave";
 
    disp = "Пещера";
 
    dir1 = "На северо-запад";
 
    dir2 = "На северо-восток";
 
    dir3 = "На юго-запад";
 
    dir4 = "На юго-восток";
 
    ex = "Выйти";
 
    underwater = true;
 
    map = {
 
        ["00"] = {
 
            name = [[Вы стоите у входа в глубокую пещеру. Стены здесь неровные и извилистые, образую причудливые переплетения длинный коридоров. Кто знает, куда они приведут? На каменистом полу едва ли можно заметить какие-либо следы. ]];
 
            e1 = "10";
 
            e2 = "11";
 
            ex = "dyp_temple_cliff_1";
 
        };
 
        ["10"] = {
 
            e1 = "20";
 
            e2 = "21";
 
            e4 = "00";
 
        };
 
        ["11"] = {
 
            e1 = "21";
 
            e2 = "22";
 
            e3 = "00";
 
        };
 
        ["20"] = {
 
            e1 = "30";
 
            e4 = "10";
 
        };
 
        ["21"] = {
 
            e1 = "31";
 
            e2 = "32";
 
            e3 = "10";
 
            e4 = "11";
 
        };
 
        ["22"] = {
 
            e2 = "33";
 
            e3 = "11";
 
        };
 
        ["30"] = {
 
            e1 = "40";
 
            e2 = "41";
 
            e4 = "20";
 
        };
 
        ["31"] = {
 
            e2 = "42";
 
            e4 = "21";
 
        };
 
        ["32"] = {
 
            e2 = "43";
 
            e3 = "21";
 
        };
 
        ["33"] = {
 
            e3 = "22";
 
        };
 
        ["40"] = {
 
            e2 = "50";
 
            e4 = "30";
 
        };
 
        ["41"] = {
 
            e3 = "30";
 
        };
 
        ["42"] = {
 
            e1 = "51";
 
            e3 = "31";
 
        };
 
        ["43"] = {
 
            e1 = "52";
 
            e3 = "32";
 
            enter = function(s)
 
                if not s.fight then
 
                    s.fight = true;
 
                    walk("dyp_crab_fight_intro");
 
                end;
 
            end;
 
        };
 
        ["50"] = {
 
            e3 = "40";
 
            enter = function(s)
 
                if (not exist(dyp_scepter_chest, s)) then
 
                    move(dyp_scepter_chest, s);
 
                end;
 
            end;
 
            exit = function(s)
 
                remove(dyp_scepter_chest, s);
 
            end;
 
        };
 
        ["51"] = {
 
            e4 = "42";
 
        };
 
        ["52"] = {
 
            e4 = "43";
 
            enter = function(s)
 
                if (not exist(dyp_dead_navjiarr, s)) then
 
                    move(dyp_dead_navjiarr, s);
 
                end;
 
            end;
 
            exit = function(s)
 
                remove(dyp_dead_navjiarr, s);
 
            end;
 
        };
 
    };
 
};
 

	
 
dyp_scepter_chest = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dyp_scepter_chest";
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[В углу аккуратно поставлен небольшой {сундучок} с хитрым замком. Чтобы открыть его придется сперва разобраться, как он устроен. ]];
 
        else
 
            return [[В углу аккуратно поставлен небольшой {сундучок}. Сейчас он пуст. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if s.state == 1 then
 
            return [[Вам здесь больше ничего не нужно. ]];
 
        else
 
            walk("dyp_crab_cave_puzzle");
 
            return [[Вы присматриваетесь к замку. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_dead_navjiarr = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dyp_dead_navjiarr";
 
    dsc = [[Рядом с вами лежит мертвый навьяр. Тело изуродовано могучими клешнями крабов, однако, судя по всему лежит здесь недавно. Рядом с трупом лежит его {сумка}. ]];
 
    act = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            move(dyp_item_star_map, pl);
 
            move(dyp_item_aedienrr_notes, pl);
 
            return [[В сумке лежат две таблички: металлическая и обычная, каменная. Металлическая табличка сразу привлекает ваше внимание. Причудливые узоры схем никак не напоминают навьярские письмена, а символы нанесенные вокруг не говорят вам ровным счетом ни о чем. Стоит показать это Светловой, быть может она сможет что-то из этого извлечь. ]];
 
        else
 
            return "Сумка пуста. ";
 
        end;
 
    end;
 
};
 

	
 
dyp_item_aedienrr_notes = obj {
 
    nam = "dyp_item_aedienrr_notes";
 
    disp = function(s)
 
        if language_known then
 
            return "Записи Аэдиенрра";
 
        else
 
            return "Каменная табличка";
 
        end;
 
    end;
 
    inv = function(s)
 
        if language_known then
 
            return "Надписи на каменной табличке рассказывают о последнем путешествии Аэдиенрра. Молодой навьяр разгадал схемы на карте небесных огней и предположил, что они ведут в пещеру в скале к северу от Дипатреанотра. Ориентирами служат каменные обелиски-предостережения и храм, расположенный к востоку от нее. Никто из Ираафаанотра не смогу рассказать ничего о храме, поэтому исследователю пришлось долго идти наугад. Последняя запись гласит, что он почти добрался до пещеры... ";
 
        else
 
            return "Вы не понимаете языка и надписи значат для вас не больше чем ряды вертикальных цветных полосок. ";
 
        end;
 
    end;
 
};
 

	
 
dyp_item_star_map = obj {
 
    nam = "dyp_item_star_map";
 
    disp = "Карта небесных огней";
 
    inv = [[Металлическая табличка, испещренная непонятными вам линиями и символами. Письмена напоминают навьярские лишь очень отдаленно и вы даже не предполагаете, что они могут значить. ]];
 
};
 

	
 
dyp_item_star_map_copy = obj {
 
    nam = "dyp_item_star_map";
 
    disp = "Карта небесных огней(копия)";
 
    inv = [[Металлическая табличка, испещренная непонятными вам линиями и символами. Письмена напоминают навьярские лишь очень отдаленно и вы даже не предполагаете, что они могут значить. ]];
 
};
 

	
 
dyp_crab_fight_intro = cutscene("dyp_crab_fight_intro", "Пещера", [[Впереди, вы замечаете какое-то движение. Луч прожетора выхватывает огромные острые клешни гигантского краба, устремившегося к вам. Следом за ним вы видите множество крабов поменьше, также ползущих к вам на своих тонких острых ногах. ]], "dyp_crab_fight");
 

	
 
dyp_crab_fight_win = cutscene("dyp_crab_fight_win", "Пещера", [[Отбившись от крабов, вы остаетесь одни в темном лабиринте пещер. ]], "dyp_crab_cave");
 

	
 
dyp_cmbt_learr = combatant {
 
    nam = "dyp_cmbt_learr";
 
    disp2 = "Леарр";
 
    disp3 = "Леарр";
 
    x = 5;
 
    y = 7;
 
    pic = "images/learr.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasSpear = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Леарр ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        for i = 1,#enemies do
 
            print(enemies[i].p.l);
 
        end;
 
        -- AI Order:
 
        -- If has spear and enemy is far   - throw spear
 
        -- If has spear and enemy is close - hit with spear
 
        -- if spear is nearer than any enemy - walk towards spear
 
        -- walk towards nearest enemy
 
        -- If enemy close and enemy has spear - take spear from enemy
 
        -- If enemy close and enemy doesn't have spear - hit with claws
 

	
 
        if s.hasSpear then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                else
 
                    pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. ");
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. ");
 
                return;
 
            end;
 
        else
 
            if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                enemy.hp = enemy.hp - 1;
 
                pn("Леарр бьет " .. enemy.disp2 .. " и попадает. ");
 
                return;
 
            end;
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Леарр идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Леарр} готова к бою. ]];
 
        else
 
            return [[ {Леарр} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_cmbt_wright = combatant {
 
    nam = "za_cmbt_wright";
 
    disp2 = "Райта";
 
    disp3 = "Райту";
 
    x = 5;
 
    y = 7;
 
    pic = "images/jack.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Райт ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Райт идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Райт перезаряжает ружье. ");
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Райт идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Райт} готов к бою. ]];
 
        else
 
            return [[ {Райт} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_cmbt_radcliffe = combatant {
 
    nam = "dyp_cmbt_radcliffe";
 
    disp2 = "Рэклиффа";
 
    disp3 = "Рэдклиффу";
 
    x = 5;
 
    y = 7;
 
    pic = "images/walter.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Рэдклифф ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Рэдклифф идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Рэдклифф перезаряжает ружье. ");
 
        end;
 
        
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Рэдклифф идет к " .. enemy.disp3 .. ". ");
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Рэдклифф} готов к бою. ]];
 
        else
 
            return [[ {Рэдклифф} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_cmbt_anna = combatant {
 
    nam = "dyp_cmbt_anna";
 
    disp2 = "Анну";
 
    disp3 = "Анне";
 
    x = 5;
 
    y = 7;
 
    pic = "images/anna.png";
 
    ally = "Я не буду атаковать союзника.";
 
    nohit = "Я не буду атаковать союзника.";
 
    noshoot = "Я не буду атаковать союзника.";
 
    hp = 10;
 
    hasHarpoon = true;
 
    make_turn = function(s)
 
        local enemies = {  };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.enemy and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        if (#enemies == 0) then
 
            pn("Анна ждет. ");
 
            return;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 
        local enemy = enemies[1].o;
 
        local path = enemies[1].p;
 
        
 
        if (s.x ~= 6 or s.y ~=3) then
 
            local ppath = here():getWalkDistance(s.x, s.y, 6, 3);
 
            if (ppath.l < path.l) then
 
                s.x = ppath.p[2][1];
 
                s.y = ppath.p[2][2];
 
                pn("Анна идет к укрытию");
 
            end;
 
        end;
 
        
 
        -- AI Order:
 
        -- If has harpoon and enemy is far - shoot
 
        -- If has harpoon and enemy is close - hit with harpoon
 
        -- walk towards nearest enemy
 
        
 
        if (s.hasHarpoon) then
 
            if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then
 
                --50%
 
                if (rnd(2) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif  (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then
 
                --75%
 
                if (rnd(4) > 1) then
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                --100%
 
                enemy.hp = enemy.hp - 2;
 
                pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                return;
 
            else
 
                local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y);
 
                if (rnd(4) > dist - 2) then
 
                    s.hasSpear = false;
 
                    enemy.hp = enemy.hp - 2;
 
                    pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном и попадает. ");
 
                else
 
                    pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); 
 
                end;
 
                return;
 
            end;
 
        else
 
            s.hasHarpoon = true;
 
            pn("Анна перезаряжает ружье. ");
 
        end;
 
        
 
        local plpath = here():getWalkDistance(s.x, s.y, pl.x, pl.y);
 
        if (plpath.l > 2) then
 
            s.x = plpath.p[2][1];
 
            s.y = plpath.p[2][2];
 
            pn("Анна идет к вам. ");
 
        end;
 
    end;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return [[ {Анна} готова к бою. ]];
 
        else
 
            return [[ {Анна} без сознания. ]];
 
        end;
 
    end;
 
};
 

	
 
dyp_king_crab = combatant {
 
    nam = "dyp_king_crab";
 
    disp2 = "краба";
 
    disp3 = "крабу";
 
    x = 4;
 
    y = 1;
 
    hp = 4;
 
    pic = "images/king_crab.png";
 
    shootHit = "Вы стреляете в краба и попадаете в него. ";
 
    shootMiss = "Вы стреляете в краба, но не попадаете в него. ";
 
    shootKill = "Вы стреляете в краба и он умирает. ";
 
    handHit = "Вы ударяете краба. ";
 
    handKill = "Вы ударяет краба, убивая его. ";
 
    handFar = "Слишком далеко. ";
 
    enemy = true;
 
    dsc = function(s)
 
        if (s.hp > 0) then
 
            return "{Краб} готов к бою. ";
 
        else
 
            return false;
 
        end;
 
    end;
 
    make_turn = function(s)
 
        local enemies = { };
 
        for item=1,#here().obj do
 
            local obj = here().obj[item];
 
            if (obj.ally and obj.hp > 0) then
 
                local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                if (p) then
 
                    table.insert(enemies, {
 
                        o = obj,
 
                        p = p
 
                    });
 
                end;
 
            end;
 
        end;
 
        table.sort(enemies, function(a, b)
 
            return (a.p.l < b.p.l);
 
        end);
 

	
 
        local enemy = enemies[1];
 
        local path = here():getWalkDistance(s.x, s.y, here().plX, here().plY);
 
        if (not enemy or path and enemy.p.l > path.l ) then
 
            enemy = pl;
 
        else
 
            path = enemy.p;
 
            enemy = enemy.o;
 
        end;
 

	
 
        if (not enemy or not path) then
 
            pn("Краб ждет. ");
 
            return;
 
        end;
 

	
 
        -- AI Order:
 
        -- If has spear and enemy is close - hit with spear
 
        -- walk towards nearest enemy
 
        -- If enemy close - hit with claws
 

	
 
        if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
            s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
            enemy.hp = enemy.hp - 2;
 
            pn("Краб бьет " .. enemy.disp2 .. " и попадает. ");
 
            return;
 
        end;
 

	
 
        print("fug2",path);
 
        s.x = path.p[2][1];
 
        s.y = path.p[2][2];
 
        pn("Краб идет к " .. enemy.disp3 .. ". ");
 
    end;
 
};
 

	
 
dyp_little_crab = function(nam, index, x, y) 
 
    return combatant {
 
        nam = nam;
 
        disp2 = "детеныша краба " .. tostring(index);
 
        disp3 = "детенышу краба " .. tostring(index);
 
        x = x;
 
        y = y;
 
        hp = 2;
 
        pic = "images/little_crab_".. index ..".png";
 
        shootHit = "Вы стреляете в детеныша краба и попадаете в него. ";
 
        shootMiss = "Вы стреляете в детеныша краба, но не попадаете в него. ";
 
        shootKill = "Вы стреляете в детеныша краба и он умирает. ";
 
        handHit = "Вы ударяете детеныша краба. ";
 
        handKill = "Вы ударяет детеныша краба, убивая его. ";
 
        handFar = "Слишком далеко. ";
 
        enemy = true;
 
        dsc = function(s)
 
            if (s.hp > 0) then
 
                return "{Детеныш краба " .. tostring(index).. "} готов к бою. ";
 
            else
 
                return false;
 
            end;
 
        end;
 
        make_turn = function(s)
 
            local enemies = {  };
 
            for item=1,#here().obj do
 
                local obj = here().obj[item];
 
                if (obj.ally and obj.hp > 0) then
 
                    local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y);
 
                    if (p) then
 
                        table.insert(enemies, {
 
                            o = obj,
 
                            p = p
 
                        });
 
                    end;
 
                end;
 
            end;
 
            table.sort(enemies, function(a, b)
 
                return (a.p.l < b.p.l);
 
            end);
 

	
 
            local enemy = enemies[1];
 
            local path = here():getWalkDistance(s.x, s.y, here().plX, here().plY);
 
            if (not enemy or path and enemy.p.l > path.l ) then
 
                enemy = pl;
 
            else
 
                path = enemy.p;
 
                enemy = enemy.o;
 
            end;
 

	
 
            if (not enemy or not path) then
 
                pn("Детеныш краба ".. tostring(index).. " ждет. ");
 
                return;
 
            end;
 

	
 
            -- AI Order:
 
            -- If has spear and enemy is close - hit with spear
 
            -- walk towards nearest enemy
 
            -- If enemy close - hit with claws
 

	
 
            if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or
 
                s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then
 
                enemy.hp = enemy.hp - 1;
 
                pn("Детеныш краба ".. tostring(index).. " бьет " .. enemy.disp2 .. " и попадает. ");
 
                return;
 
            end;
 

	
 
            print("fug2",path);
 
            s.x = path.p[2][1];
 
            s.y = path.p[2][2];
 
            pn("Детеныш краба ".. tostring(index).. " идет к " .. enemy.disp3 .. ". ");
 
        end;
 
    };
 
end;
 

	
 
dyp_crab_fight = battlefield {
 
    nam = "Пещера";
 
    plX = 4;
 
    plY = 7;
 
    map = {
 
        {2,0,0,0,0,0,2};
 
        {2,0,0,0,0,0,2};
 
        {2,1,0,0,0,0,2};
 
        {2,0,0,1,0,1,2};
 
        {2,0,1,0,0,0,2};
 
        {2,0,0,0,0,1,2};
 
        {2,0,0,0,0,0,2};
 
    };
 
    win = "dyp_crab_cave_win";
 
    lose = "game_over_crab_cave";
 
    obstacle = "images/stones.png";
 
    underwater = true;
 
    entered = function(s)
 
        --TODO prepend player associate - anna, learr, walter or jack
 
        if (char_learr.follow) then
 
            table.insert(s.obj, 1, dyp_cmbt_learr);
 
            s.plX = 3;
 
        elseif (char_anna.follow) then
 
            table.insert(s.obj, 1, dyp_cmbt_anna);
 
            s.plX = 3;
 
        elseif (char_wright.follow) then
 
            table.insert(s.obj, 1, dyp_cmbt_wright);
 
            s.plX = 3;
 
        elseif (char_radcliffe.follow) then
 
            table.insert(s.obj, 1, dyp_cmbt_radcliffe);
 
            s.plX = 3;
 
        end;
 
    end;
 
    obj = {
 
        "dyp_king_crab";
 
        dyp_little_crab("dyp_little_crab_1", 1, 2, 1);
 
        dyp_little_crab("dyp_little_crab_2", 2, 3, 1);
 
        dyp_little_crab("dyp_little_crab_3", 3, 5, 1);
 
        dyp_little_crab("dyp_little_crab_4", 4, 6, 1);
 
        dyp_little_crab("dyp_little_crab_5", 5, 3, 2);
 
        dyp_little_crab("dyp_little_crab_6", 6, 4, 2);
 
        dyp_little_crab("dyp_little_crab_7", 7, 5, 2);
 
    };
 
};
 

	
 
dyp_crab_cave_puzzle = room {
 
    var {
 
        values = {
 
            0, 2, 1, 2, 5 ,4,
 
            1, 1, 2, 4, 0, 5,
 
            1, 3, 2, 4, 0, 3,
 
            0, 2, 0, 3, 5, 4,
 
            5, 0, 4, 1, 3, 3,
 
            3, 5, 5, 1, 4, 2
 
        };
 
        pressed = {
 
            nil,
 
            nil,
 
            nil,
 
            nil,
 
            nil,
 
            nil
 
        };
 
    };
 
    nam = "Пещера";
 
    pic = function(s)
 
        local p = "blank:180x180";
 
        for v = 1, #s.values do
 
            local tx = (v - 1) % 6;
 
            local ty = math.floor((v - 1) / 6);
 
            local lstate = '';
 
            if s.pressed[s.values[v] + 1] and s.pressed[s.values[v] + 1][1] == tx and s.pressed[s.values[v] + 1][2] == ty then
 
                lstate = 'p';
 
            end;
 
            p = p .. ';images/cavelock_' .. tostring(s.values[v]) .. lstate .. '.png@' .. tostring(tx * 30) .. ',' .. tostring(ty * 30);
 
        end;
 
        print(p);
 
        return p;
 
    end;
 
    click = function(s,x,y)
 
        local tx = math.floor(x / 30);
 
        local ty = math.floor(y / 30);
 
        local i = tx + ty * 6 + 1;
 
        local val = s.values[i];
 
        for p = 1, 6 do
 
            if s.pressed[p] and (s.pressed[p][1] == tx or s.pressed[p][2] == ty) then
 
                s.pressed[p] = nil;
 
            end;
 
        end;
 
        s.pressed[val + 1] = {tx, ty};
 
        for p = 1, 6 do
 
            if not s.pressed[p] then
 
                walkin(here());
 
                return;
 
            end;
 
        end;
 
        p("С легким скрежетом сундук открывается. Внутри вы обнаруживаете небольшой жезл с нанесенными цветными символами. Цвета определенно соответствуют навьярским словам, но что значат символы вам неведомо. ");
 
        dyp_scepter_chest.state = 1;
 
        put(dyp_item_wand, me());
 
        walk(dyp_crab_cave);
 
    end;
 
    way = {
 
        kh_vroom("Отойти", "dyp_crab_cave");
 
    };
 
};
 

	
 
dyp_crab_cave_win = cutscene("dyp_crab_cave_win", "Пещера", [[Вы расправляетесь с выводком крабов, поселившихся в этой пещере. Чуть поодаль, вы видите тело навьяра, истерзанное этими монстрами. ]], "dyp_crab_cave");
 

	
 
cutscene_wait_for_copy = cutscene("cutscene_wait_for_copy", "Атлантида", [[Вы отправляетесь в свою комнату и ждете. Уже утром, вас вызывает Светлова и сообщает: "Ваша копия готова, можете забирать". ]], "atlantis_drake_room")
 
\ No newline at end of file
atlantis_from_the_ashes.lua
Show inline comments
 
atl_fta_is_terra_solis = room {
 
    var {
 
        state = 0;
 
    };
 
	nam = "Атлантида, межсекционный кодидор";
 
	dsc = [[
 
		Небольшой коридор, соединяющий секции Терра и Солис. Яркий свет электрических ламп освещает помещение. 
 
	]];
 
	dsc = [[Небольшой коридор, соединяющий секции Терра и Солис. Яркий свет электрических ламп освещает помещение.  ]];
 
	entered = function(s)
 
		if (s.state == 0) then
 
			return [[
 
@@ -76,50 +77,37 @@ atl_fta_dlg_radio = dlg {
 
	entered = function(s)
 
		if (s.state == 0) then
 
			psub("tuning");
 
			return [[
 
				Радио не настроено
 
			]];
 
			return [[Радио не настроено. ]];
 
		elseif (s.state == 1) then
 
			psub("ok");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		elseif (s.state == 2) then
 
			psub("next");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		elseif (s.state == 3) then
 
			psub("more");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="tuning"};
 
		{"[Настроить приемник]Прием, как слышите?", [[
 
			Через несколько минут настройки, вы слышите в динамике голос Райта: "Да, Дрейк".
 
		{"[Настроить приемник] Прием, как слышите?", [[
 
			Через несколько минут настройки, вы слышите в динамике голос Райта: "Слушаю вас, Дрейк".
 
		]], code [[ atl_fta_dlg_radio.state = 1; psub("ok"); ]]};
 
		{tag="ok"};
 
		{"Что мне делать?", [[
 
			"Что вы видите?"
 
		]], code [[ atl_fta_dlg_radio.state = 2; psub("what_i_see"); ]]};
 
		{tag="what_i_see"};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. В остальном все вроде пока в порядке", [[
 
			"Идите по западной стороне. Ваша задача - попасть в центр секции, с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь".
 
		]], code [[ back(); ]]};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. ", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Просто перекройте тот, в котором давление слишком большое". ]], code [[ psub("clear"); ]]};
 
		{tag="next"};
 
		{"Что мне делать?", [[
 
			"Идите по западной стороне. Ваша задача - попасть в центр секции, с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь".
 
		]]};
 
		{always=true, "Что мне делать?", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Просто перекройте тот, в котором давление слишком большое". ]], code [[ psub("clear"); ]]};
 
        {"Конец связи. ", "", code [[ back(); ]]};
 
		{tag="more"};
 
		{"Тут еще что-то взорвалось", [[
 
			"Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[
 
			"На юге есть шлюз, выйдете через него".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Тут еще что-то взорвалось", [[Райт подтверждает: "Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[Райт отвечает: "На юге есть шлюз, выйдете через него". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
        {tag="clear"};
 
        {"Вас понял. Конец связи.", "", code [[ back(); ]]}
 
	};
 
};
 
 
@@ -130,7 +118,7 @@ atl_fta_dlg_phone = dlg {
 
		Вы не успеваете и слова сказать, как в разговор вмешивается Майкл Райт: "Стойте! Дрейк, кроме вас там никого нет, поэтому одевайте скафандр и слушайте мои инструкции".
 
	]];
 
	phr = {
 
		{"Вас понял", code = [[ psub("back"); ]]};
 
		{"Вас понял.", code = [[ psub("back"); ]]};
 
	};
 
};
 
 
@@ -141,6 +129,12 @@ atl_fta_solis_entry = room {
 
	]];
 
	entered = function(s)
 
		item_atl_fta_suit.dlg = "atl_fta_dlg_radio";
 
  
 
        if (atl_fta_solis_c2.broken_valve == 0) then
 
            atl_fta_solis_c2.broken_valve = rnd(5);
 
            atl_fta_valves[atl_fta_solis_c2.broken_valve].broken = true;
 
            atl_fta_solis_c2.broken_offset = rnd(9) + 10;
 
        end;
 
	end;
 
	way = {
 
		vroom("На восток", "atl_fta_solis_ne");
 
@@ -148,7 +142,7 @@ atl_fta_solis_entry = room {
 
	};
 
};
 
 
atl_fta_solis_ne_1 = room {
 
atl_fta_solis_ne = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. Сквозь просветы в них вы видите огонь где-то вдалеке на юге.
 
@@ -273,12 +267,6 @@ atl_fta_solis_c2 = room {
 
			]];
 
		end;
 
	end;
 
	entered = function(s)
 
		if (s.broken_valve == 0) then
 
			s.broken_valve = rnd(5);
 
			s.broken_offset = rnd(9) + 10;
 
		end;
 
	end;
 
	way = {
 
		vroom("На юг", atl_fta_solis_exit);
 
	};
 
@@ -307,12 +295,13 @@ atl_fta_solis_valvea = obj {
 
		elseif (atl_fta_solis_c2.valve_a == 6) then
 
			atl_fta_solis_c2.valve_a = 2;
 
		end;
 
        return "Вы поворачиваете вентиль. Значения на манометрах изменились. ";
 
	end;
 
};
 
 
atl_fta_solis_valveb = obj {
 
	nam = "Вентиль";
 
	dsc = " а тот, что {справа} - буквой B.";
 
	dsc = " а тот, что {справа} -- буквой B.";
 
	act = function(s)
 
		if (atl_fta_solis_c2.valve_b == 90) then
 
			atl_fta_solis_c2.valve_b = 60;
 
@@ -323,6 +312,7 @@ atl_fta_solis_valveb = obj {
 
		elseif (atl_fta_solis_c2.valve_b == 30) then
 
			atl_fta_solis_c2.valve_b = 90;
 
		end;
 
        return "Вы поворачиваете вентиль. Значения на манометрах изменились. ";
 
	end;
 
};
 
 
@@ -349,7 +339,7 @@ atl_fta_solis_valve = function(index)
 
			if (atl_fta_solis_c2:solved()) then
 
				return "Шипение пара прекращается. Вы сделали все, что нужно. ";
 
			else
 
				return false;
 
				return "Вы поворачиваете вентиль. ";
 
			end;
 
		end;
 
	};
 
@@ -361,6 +351,14 @@ atl_fta_solis_valve3 = atl_fta_solis_val
 
atl_fta_solis_valve4 = atl_fta_solis_valve(4);
 
atl_fta_solis_valve5 = atl_fta_solis_valve(5);
 
 
atl_fta_valves = {
 
    atl_fta_solis_valve1;
 
    atl_fta_solis_valve2;
 
    atl_fta_solis_valve3;
 
    atl_fta_solis_valve4;
 
    atl_fta_solis_valve5;
 
};
 
 
atl_fta_game_over_left = room {
 
	nam = "Игра окончена";
 
	dsc = [[
 
@@ -377,15 +375,16 @@ atl_fta_game_over_left_2 = room {
 
 
atl_fta_ending = room {
 
	nam = "Атлантида";
 
	dsc = [[
 
		Через шлюз вы выбираетесь из Солиса и оказываетесь снаружи. Через некоторое время вас подбирает Наутилус, чтобы вернуть на станцию. От экипажа вы узнаете, что потребление энергии на станции сокращено до восстановления Солиса. ^
 
		Вернувшись на станцию, вы сразу же отправляетесь в свою каюту, чтобы отдохнуть. 
 
	]];
 
	dsc = [[Через шлюз вы выбираетесь из Солиса и оказываетесь снаружи. Через некоторое время вас подбирает Наутилус, чтобы вернуть на станцию. От экипажа вы узнаете, что потребление энергии на станции сокращено до восстановления Солиса. ^Вернувшись на станцию, вы сразу же отправляетесь в свою каюту, чтобы отдохнуть. ]];
 
	entered = function(s)
 
        if char_darkstar_dlg.state == 0 then
 
            char_darkstar_dlg.state = 1;
 
        end;
 
		atl_fta_state = 2;
 
		remove(item_atl_fta_suit);
 
		remove(item_atl_fta_suit, pl);
 
        me().has_light = false;
 
	end;
 
	obj = {
 
		vway('continue', '{Продолжить}', 'atl_luna_drake_room');
 
	};
 
};
 
\ No newline at end of file
 
};
atlantis_ignis.lua
Show inline comments
 
@@ -75,7 +75,7 @@ atl_ignis_main_toa = room {
 
	dsc = [[Огромный круглый зал залит ярким светом электрических ламп. Вокруг установлено большое количество заполненных кинопленками и образущих широкие коридоры высоких стеллажей, упирающихся в металлический потолок зала. Вы находитесь в северо-западной части зала, рядом со входом в зал A. ]];
 
	way = {
 
		vroom("В зал A", "atl_ignis_hall_a");
 
		vroom("На юг", "atl_ignis_main_n");
 
		vroom("На юг", "atl_ignis_main_center");
 
		vroom("На запад", "atl_ignis_main_nw_wall");
 
		vroom("На восток", "atl_ignis_main_tos");
 
	};
atlantis_ignis_on_fire.lua
Show inline comments
 
atlantis_learr_intro = room {
 
	nam = "Атлантида, Окулус, Главный коридор";
 
	dsc = [[Вы выходите из межсекционного коридора в главный коридор секции _"Окулус"_ и сталкиваетесь лицом к лицу с неведомым существом: ^стройное, покрытое блестящей серо-зеленой чешуей тело, рыбья голова с небольшими отростками-плавниками, тонкие ноги и руки с широкими перепонками между длинными пальцами. Ярко-оранжевые глаза существа с интересом разглядывают вас. Во рту существа сверкают острые треугольные зубы. Одето оно в белую рубашку и ярко-синюю юбку до колен. На шее существа вы замечаете жабры. Отростки на голове существа принимают слабо уловимый сине-зеленый оттенок. ]];
 
	dsc = [[Вы выходите из межсекционного коридора в главный коридор секции _"Окулус"_ и сталкиваетесь лицом к лицу с неведомым существом. Стройное, покрытое блестящей серо-зеленой чешуей тело слегка покачивается. Рыбья голова с небольшими отростками-плавниками, тонкие ноги и руки с широкими перепонками между длинными пальцами покрыты такой же чешуей. Ярко-оранжевые глаза существа с интересом разглядывают вас. Во рту существа сверкают острые треугольные зубы. Одето оно в белую рубашку и ярко-синюю юбку до колен. На шее существа вы замечаете жабры. Отростки на голове существа принимают слабо уловимый сине-зеленый оттенок. ]];
 
	obj = {
 
		vway('continue', '{Продолжить}', 'atlantis_learr_first_dlg')
 
	};
 
@@ -8,23 +8,23 @@ atlantis_learr_intro = room {
 
 
atlantis_learr_first_dlg = dlg {
 
	nam = "Леарр";
 
	entered = [[Существо начинает говорить: "Я зздессь-рраньшше-не-видела васс". Голос звучит непривычно для вашего слуха - гласные произносятся очень коротко, между некоторыми словами делаются резкие паузы, другие же сливаются практически в одно, шипящие и "р" произносятся удлиненно. ]];
 
	entered = [[Существо начинает говорить: "Я зздессь-рраньшше-не-видела васс". Голос звучит непривычно для вашего слуха -- гласные произносятся очень коротко, между некоторыми словами делаются резкие паузы, другие же сливаются практически в одно, шипящие и "р" произносятся удлиненно. ]];
 
	phr = {
 
		{"Кто ты?", [[
 
			Существо отвечает: "I'yhe'lea'yhe'na'vji'a'rr", -- вы отчетливо различаете короткие паузы между слогами. ]], code [[ pon('who_are_you'); ]]};
 
		{tag="who_are_you", false, "Я не понимаю, что ты говоришь", [[Существо ненадолго застывает в замешательстве. Затем отвечает: "Я Lea'rr. Ты так-понимаешь?". ]], code [[psub('learr'); ]]};
 
		{"Аааа, монстр, помогите!!!", [[Существо скалит зубы. Плавники меняют цвет на ярко-фиолетовый. Оно рычит на вас: "Прропусти. Нет-врремени". Щелкнув зубами, _"Чудовище"_ уходит. ]], code [[
 
		{"Кто ты?", [[Существо отвечает: "I'yhe'lea'yhe'na'vji'a'rr", -- вы отчетливо различаете короткие паузы между слогами. ]], code [[ pon('who_are_you'); ]]};
 
		{tag="who_are_you", false, "Я не понимаю, что ты говоришь.", [[Существо ненадолго застывает в замешательстве. Затем отвечает: "Я Lea'rr. Ты так-понимаешь?". ]], code [[psub('learr'); ]]};
 
		{"Аааа, монстр, помогите!!!", [[Существо скалит зубы. Плавники меняют цвет на ярко-фиолетовый. Оно рычит на вас: "Прропусти. Нет-врремени". ^Щелкнув зубами, _"Чудовище"_ уходит. ]], code [[
 
            put(char_learr_atlantis, atl_ignis_hall_a);
 
            char_learr_atlantis.offended = true;
 
            walk("atl_oculus_main_corridor");
 
        ]]};
 
		{tag="learr"};
 
		{"Рад знакомству. Я Дэвид Дрейк. ", [[Леарр переспрашивает: "Ты ззнаешшь Уильяма-Дррейка?" -- Вам кажется, вы чувствуете удивление, хотя интонации в словах существа вам совершенно чужды. ]], code [[ psub('drake') ]]};
 
        {"Откуда ты?", [[Леарр отвечает: "Я изз Iraa'pha'anot'rr. Я на-Атлантиде-жживу-ссейчасс".]]};
 
        {"Что ты такое?", [[Леарр ненадолго задумывается и отвечает: "Мы себя-навьярами-называем. Мы недалеко-живем-в-нескольких-кругах-отсюда".]], code [[ pon('under_water'); ]]};
 
        {tag="under_water", false, "Под водой?", [[Леарр кивает. Через некоторое время отвечает: "Ты с-поверхности? Никогда-нас-не-видел, похоже". ]]};
 
		{tag="drake"};
 
		{"Да, я его сын. Ты знакома с ним?", [[оттенок головных плавников Леарр становится более ярким и смещается ближе к зеленому. Она отвечает: _"Да, я его-ззнаю. Уильям-Дррейк нашшу-иссторрию-иззучал. Он ссейчасс-исскать-уехал Lse'ry'anot'rr. Я что-вы-зздессь рада"_. ]], code [[ psub('follow_drake') ]]};
 
		{tag="follow_drake"};
 
		{"Я здесь из-за него. " , [[Леарр кивает: _"Я вам-как-смогу-помогу. Я в-Игниссе-буду, ессли вы говоррить-хотите"_. Леарр уходит, а вы остаетесь один в коридоре. ]], code [[ put(char_learr_atlantis, atl_ignis_hall_a); walk("atl_oculus_main_corridor"); ]]};
 
		{"Я здесь из-за него. " , [[Леарр кивает: _"Я вам-как-смогу-помогу. Я в-Игниссе-буду, ессли вы говоррить-хотите"_. ^Леарр уходит, а вы остаетесь в одиночестве. ]], code [[ put(char_learr_atlantis, atl_ignis_hall_a); walk("atl_oculus_main_corridor"); ]]};
 
	};
 
};
 
 
@@ -85,7 +85,7 @@ char_learr_iof = obj {
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl) and where(pl).iof) then
 
		if (where(s) ~= where(pl) and where(pl).iof and not s.faint) then
 
			move(s, where(pl));
 
		end;
 
	end;
 
@@ -93,7 +93,7 @@ char_learr_iof = obj {
 
		if (where(s) == atl_iof_ignis_service_room and not dlg_learr_suit.state) then
 
			walkin('dlg_learr_suit');
 
		elseif (s.faint) then
 
			walkin('atl_iof_learr_faint_alone');
 
			walkin('atl_iof_learr_faint_alone_2');
 
		else		
 
			return [[Некогда разговаривать. ]];
 
		end;
 
@@ -111,7 +111,7 @@ dlg_learr_suit = dlg {
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
		{"Я хочу, чтобы ты одела скафандр. ", [[Леарр недоуменно смотрит на вас: "Ззачем он мне? Ссама-я в-воде-дышшу. Мне не-нужжны вашши-пррисспоссобления". ]], code [[
 
		{"Я хочу, чтобы ты надела скафандр. ", [[Леарр недоуменно смотрит на вас: "Ззачем он мне? Ссама-я в-воде-дышшу. Мне не-нужжны вашши-пррисспоссобления". ]], code [[
 
			psub('tag1');
 
		]]};
 
		{"Мы сейчас наденем скафандры. Продолжай следовать за нами. ", [[Леарр молча кивает. ]], code [[
 
@@ -140,12 +140,12 @@ dlg_learr_iof = dlg {
 
	disp = "Леарр";
 
	entered = [[Леарр подбегает к вам и спрашивает: "Что происходит?" ]];
 
	phr = {
 
		{'Надеюсь, все в порядке, следуй за мной', [[Леарр молча кивает. ]], code [[
 
		{'Надеюсь, все в порядке, следуй за мной. ', [[Леарр молча кивает. ]], code [[
 
			lifeon('char_learr_iof');
 
			char_learr_iof.state = 1;
 
			walk('atl_iof_ignis_hall_a');
 
		]]};
 
		{'Такое уже происходило?', [[Леарр пожимает плечами: "Я не-видела". ]]};
 
		{'Такое уже происходило? ', [[Леарр пожимает плечами: "Я не-видела". ]]};
 
	};
 
};
 
 
@@ -208,9 +208,10 @@ atl_iof_time_state = obj {
 
		carry_learr = false;
 
	};
 
	life = function(s)
 
		if (not where(pl).iof) then 
 
		if (not where(pl).iof or where(pl).no_limits) then
 
			return;
 
		end;
 
        
 
		s.life_left = s.life_left - 1;
 
		if (s.life_left == 5) then
 
			if (not s.pl_safe) then 
 
@@ -252,13 +253,29 @@ atl_iof_time_state = obj {
 
	end;
 
};
 
 
atl_iof_learr_faint_alone_2 = dlg {
 
    nam = "Леарр";
 
    disp = "Леарр";
 
    dsc = [[Леарр лежит на полу без сознания. ]];
 
    phr = {
 
        {"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], code [[ 
 
            remove(char_learr_iof, where(char_learr_iof));
 
            put(char_learr_faint, pl);
 
            lifeon(char_learr_faint);
 
            atl_iof_time_state.carry_learr = true; 
 
            back();
 
        ]]};
 
        {"[Уйти]", "", code [[ back(); ]]};
 
    };
 
};
 
 
atl_iof_learr_faint_alone = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". ]];
 
	phr = {
 
		{"Совсем немного осталось, пойдем. [Помочь Леарр подняться]", [[Леарр пытается подняться опираясь на вашу руку, но снова падает, теряя сознание. ]], code [[
 
			tag('faint');
 
			psub('faint');
 
		]]};
 
		{"Оставайся здесь, я вернусь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
@@ -280,10 +297,11 @@ atl_iof_learr_faint_alone = dlg {
 
			remove(char_learr_iof, where(char_learr_iof));
 
			put(char_learr_faint, pl);
 
			lifeon(char_learr_faint);
 
            char_learr_iof.faint = true;         
 
			atl_iof_time_state.carry_learr = true; 
 
			back(); 
 
			back();
 
		]]};
 
		{"[Уйти]", "", code [[ back(); ]]};
 
		{"[Уйти]", "", code [[ char_learr_iof.faint = true; back(); ]]};
 
	};
 
};
 
 
@@ -366,7 +384,7 @@ atl_iof_main_n1 = room {
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_nw1");
 
		kh_vroom("По часовой", "atl_iof_main_ne1");
 
		kh_vroom("В Лифт", function()
 
		kh_vroom("В лифт", function()
 
			pr("Лифт не работает");
 
			return false;
 
		end);
 
@@ -584,10 +602,10 @@ atl_iof_external_radio_dlg = dlg {
 
	phr = {
 
		{"Вы слышите меня?", [[В динамике вы слышите встревоженный голос начальника станции: "Моро на связи! Дрейк, вы там все в порядке?" ]], code [[psub('is_ok')]]};
 
		{tag = "is_ok"};
 
		{"Да, все здесь. Мы одеваем скафандры.", [[В динамике раздается голос Майкла Райта: "Отлично. Они защитят вас от жара и обеспечат воздухом. Лифт не работает, поэтому воспользуйтесь аварийным шлюзом в южной части секции. Наутилус подхватит вас там". ]], code [[psub('clear')]]};
 
		{"Да, все здесь. Как нам выбраться?", [[В динамике раздается голос Майкла Райта: "Лифт не работает, поэтому воспользуйтесь аварийным шлюзом в южной части секции. Оденьте скафандры - они защитят вас от жара и обеспечат воздухом. Наутилус подхватит вас у выхода". ]], code [[psub('clear')]]};
 
		{"Да, все здесь. Мы надеваем скафандры.", [[В динамике раздается голос Майкла Райта: "Отлично. Они защитят вас от жара и обеспечат воздухом. Лифт не работает, поэтому воспользуйтесь аварийным шлюзом в южной части секции. Наутилус подхватит вас там". ]], code [[psub('clear')]]};
 
 		{"Да, все здесь. Как нам выбраться?", [[В динамике раздается голос Майкла Райта: "Лифт не работает, поэтому воспользуйтесь аварийным шлюзом в южной части секции. Наденьте скафандры. Они защитят вас от жара и обеспечат воздухом. Наутилус подхватит вас у выхода". ]], code [[psub('clear')]]};
 
		{tag = "clear"};
 
		{"Вас понял, конец связи[Выключить радио].", code [[back();]]};  
 
		{"Вас понял, конец связи. [Выключить радио]", code [[back();]]};  
 
	};
 
};
 
 
@@ -595,6 +613,7 @@ atl_iof_ignis_service_room = room {
 
	nam = "Атлантида, Игнис, служебное помещение";
 
	disp = "Атлантида, Игнис, служебное помещение";
 
	iof = true;
 
    no_limits = true;   
 
	dsc = [[Небольшое помещение, используемое для хранения различного оборудования, необходимого для обслуживания секции. ]];
 
	way = {
 
		kh_vroom("В главный зал", function(s)
 
@@ -614,21 +633,24 @@ atl_iof_ignis_service_room = room {
 
atl_iof_outside = room {
 
	nam = "Атлантида, Игнис";
 
	iof = true;
 
    hideinv = true;
 
    nosave = true;
 
    noautosave = true;   
 
	entered = function(s)
 
        remove(char_learr_faint, pl);
 
        lifeoff(char_learr_faint);
 
		lifeoff(atl_iof_time_state);
 
	end;
 
	dsc = function(s)
 
		if (have(char_learr_faint)) then
 
			if (atl_iof_time_state.wright_here) then
 
				return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Как только вы задраиваете внутренний люк, Райт опускает Леарр на пол и начинает вместе с вами отдраивать внешний люк. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
				s.dsc = [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Как только вы задраиваете внутренний люк, Райт опускает Леарр на пол и начинает вместе с вами отдраивать внешний люк. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
			else
 
				return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Вы кладете Леарр на пол и снова задраиваете внутренний люк и, тяжело вздохнув, начинаете открывать внешний. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
				s.dsc = [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Вы кладете Леарр на пол и снова задраиваете внутренний люк и, тяжело вздохнув, начинаете открывать внешний. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
			end;
 
		else
 
            if (atl_iof_time_state.learr_safe) then
 
			    return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек и вы замечаете некоторую растерянность Леарр. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Леарр следует за вами. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
			    s.dsc = [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек и вы замечаете некоторую растерянность Леарр. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Леарр следует за вами. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
            else
 
                return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
                s.dsc = [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
            end;         
 
		end;
 
	end;
 
@@ -639,9 +661,12 @@ atl_iof_outside = room {
 
 
atl_iof_part2_dlg = dlg {
 
	nam = "Атлантида, Игнис";
 
    hideinv = true;
 
    nosave = true;
 
    noautosave = true;
 
	entered = [[Вы слышите голос, доносящийся из динамика: "Все в порядке. Наутилус доставит вас на станцию". ]];
 
	phr = {
 
		{"Хорошо[Войти в шлюз Наутилуса].", [[Вы забираетесь внутрь Наутилуса - эта субмарина заметно меньше вашего Левиафана, но также вмещает довольно большой экипаж. Вы снимаете скафандры и проходите в кают-компанию. По радио вы слышите голос Моро: "Как только вы придете в себя после произошедшего, я жду вас в моем кабинете". ^Через считанные минуты вы оказываетесь в доке. Вы с трудом добираетесь до своей каюты, где без сил засыпаете. ]], code [[ walk('atlantis_luna_drake_room'); ]]};
 
		{"Хорошо. [Войти в шлюз Наутилуса]", [[Вы забираетесь внутрь Наутилуса -- эта субмарина заметно меньше вашего Левиафана, но так же вмещает довольно большой экипаж. Вы снимаете скафандры и проходите в кают-компанию. По радио вы слышите голос Моро: "Как только вы придете в себя после произошедшего, я жду вас в моем кабинете". ^Через считанные минуты вы оказываетесь в доке. Вы с трудом добираетесь до своей каюты, где без сил засыпаете. ]], code [[ walk('atl_iof_end'); ]]};
 
		{"Я могу чем-то помочь?", function(s)
 
            if (atl_iof_time_state.carry_learr or atl_iof_time_state.learr_safe or not char_learr_iof.faint) then
 
                psub('help');      
 
@@ -652,8 +677,8 @@ atl_iof_part2_dlg = dlg {
 
            end;
 
        end};
 
		{tag="help"};
 
		{"Хорошо, я готов", [[Райт продолжает: "Спускайтесь вниз, на крышу Доминуса, и идите к лифту. Где-то с южной стороны должна быть панель управления. С ней вы, думаю, разберетесь". Вы аккуратно спрыгиваете с Наутилуса вниз и идете к лифту. ]], code [[ walk('atl_iof_outside_lift'); ]]};
 
		{"Я передумал", [[Райт отвечает: "Хорошо, возвращайтесь на станцию. Мои люди все сделают". ]], code [[ walk('atl_iof_end'); ]]};
 
		{"Хорошо, я готов.", [[Райт продолжает: "Спускайтесь вниз, на крышу Доминуса, и идите к лифту. Где-то с южной стороны должна быть панель управления. С ней вы, думаю, разберетесь". Вы аккуратно спрыгиваете с Наутилуса вниз и идете к лифту. ]], code [[ walk('atl_iof_outside_lift'); ]]};
 
		{"Я передумал.", [[Райт отвечает: "Хорошо, возвращайтесь на станцию. Мои люди все сделают". ]], code [[ walk('atl_iof_end'); ]]};
 
	};
 
};
 
 
@@ -661,10 +686,18 @@ atl_iof_outside_lift = room {
 
	nam = "Атлантида";
 
	dsc = [[Над вами нависает громада Игниса, покоящаяся на множестве опор. Вы находитесь снаружи шахты лифта, одновременно служащей центральной опорой секции. Сверху вы слышите скрежет металла, подвергаемого сильному термальному воздействию. ]];
 
	obj = {
 
		"atl_iof_air_valves"
 
		"atl_iof_air_valves_outside";
 
	};
 
};
 
 
atl_iof_air_valves_outside = obj {
 
    nam = "atl_iof_air_valves_outside";
 
    dsc = [[Перед вами расположено переплетение труб с несколькими {клапанами}. ]];
 
    act = function(s)
 
        walk("atl_iof_air_valves");
 
    end;
 
};
 
 
atl_iof_air_valves = room {
 
	var {
 
		valves = { 0,0,0,0,0,0 };
 
@@ -849,12 +882,10 @@ atl_iof_air_ccw = obj {
 
		atl_iof_air_valves.valves[atl_iof_air_valves.selected] = t;
 
		
 
		atl_iof_air_valves.selected = 0;
 
		
 
		p(r);
 
		if (atl_iof_air_valves:is_solved()) then
 
			walk("atl_iof_electr_dlg");
 
		end;
 
		
 
		return r;
 
	end;
 
};
 
 
@@ -930,11 +961,10 @@ atl_iof_air_cw = obj {
 
		
 
		atl_iof_air_valves.selected = 0;
 
		
 
        p(r);      
 
		if (atl_iof_air_valves:is_solved()) then
 
			walk("atl_iof_electr_dlg");
 
		end;
 
		
 
		return r;
 
	end;
 
};
 
 
@@ -960,11 +990,13 @@ atl_iof_air_cancel = obj {
 
 
atl_iof_electr_dlg = dlg {
 
	nam = "Атлантида, Игнис";
 
	entered = [[Вы останавливаете подачу кислорода и собиратесь сообщить об этом по радио, когда из динамика раздается голос Майкла Райта: "Как у вас успехи? Нужно отключить еще подачу электричества". ]];
 
	entered = function(s) 
 
        return [[Вы останавливаете подачу кислорода и собиратесь сообщить об этом по радио, когда из динамика раздается голос Майкла Райта: "Как у вас успехи? Нужно отключить еще подачу электричества". ]];
 
    end;
 
	phr = {
 
		{"Подача воздуха отключена. Как я смогу отключить электричество?", [[Райт продолжает: "Отлично. Там рядом должна быть панель, она подписана. Там замок хитрый, но, думаю, вы разберетесь. Затем просто дергаете рубильник и дело сделано". ]], code [[ psub("next"); ]]};
 
		{tag="next"};
 
		{"Вас понял. Конец связи", [[Вы быстро находите необходимую панель и приступаете к работе. ]], code [[ walk("atl_iof_electr_panel_closed"); ]]};
 
		{"Вас понял. Конец связи.", [[Вы быстро находите необходимую панель и приступаете к работе. ]], code [[ walk("atl_iof_electr_panel_closed"); ]]};
 
	};
 
};
 
 
@@ -1004,8 +1036,8 @@ atl_iof_electr_panel_closed = room {
 
	};
 
	is_solved = function(s)
 
		local unsolved = false;
 
		for i = 1, #locks do
 
			unsolved = unsolved or s.locks[i];
 
		for i = 1, #atl_iof_electr_panel_closed.locks do
 
			unsolved = unsolved or atl_iof_electr_panel_closed.locks[i];
 
		end;
 
		
 
		return not unsolved;
 
@@ -1031,13 +1063,11 @@ atl_iof_electr_select = function(index)
 
				atl_iof_electr_panel_closed.locks[index + 4] = not atl_iof_electr_panel_closed.locks[index + 4];
 
			end;
 
			
 
			if (atl_iof_electr_panel_closed.is_solved()) then
 
			if (atl_iof_electr_panel_closed:is_solved()) then
 
				walk("atl_iof_electr_panel_open");
 
			
 
				return "";
 
            else
 
                return "Вы сдвигаете защелку " .. tostring(index);            
 
			end;
 
			
 
			return "Вы сдвигаете защелку " .. tostring(index);
 
		end;
 
	};
 
end;
 
@@ -1055,15 +1085,19 @@ atl_iof_electr_panel_open = dlg {
 
	nam = "Атлантида, Игнис";
 
	dsc = [[Вы снимаете щиток и дергаете рубильник, обесточивая Игнис. Вы связываетесь по радио с Наутилусом. ]];
 
	phr = {
 
		{"Подача электричества в Игнис отключена, возвращаюсь на станцию", [[В динамике вы слышите голос Райта: "Отлично, возвращайтесь". ]], code [[ walk("atl_iof_end"); ]]};
 
		{"Подача электричества в Игнис отключена, возвращаюсь на станцию.", [[В динамике вы слышите голос Райта: "Отлично, ждем вас". ]], code [[ walk("atl_iof_end"); ]]};
 
	};
 
};
 
 
atl_iof_end = room {
 
	nam = "Атлантида";
 
	dsc = [[Вы возвращаетесь на станцию и сразу же отправляетесь в свою комнату, чтобы отдохнуть. Вы просыпаетесь утром. ^Едва вы поднимаетесь с койки, к вам в комнату входят двое охранников. Они просят вас проследовать за ними к начальнику службы безопасности - Винсенту Даркстару. У вас нет никакого выхода, кроме как пойти с ними. ]];
 
    hideinv = true;
 
    nosave = true;
 
    noautosave = true;
 
	dsc = [[Вы возвращаетесь на станцию и сразу же отправляетесь в свою комнату, чтобы отдохнуть. ^Едва вы просыпаетесь, к вам в комнату входят двое охранников. Они просят вас проследовать за ними к Винсенту Даркстару. У вас нет никакого выхода, кроме как пойти с ними. ]];
 
	entered = function(s)
 
		atl_lfc_state = 1;
 
        rel_learr = rel_learr + 1;
 
        if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
            put(char_jack_wright_atlantis, atl_luna_jack_room);
 
        end;
 
@@ -1076,10 +1110,11 @@ atl_iof_end = room {
 
		else
 
			atl_iof_learr_dead = true;
 
			put(char_aikerjarr, atl_oculus_lab_b);
 
            walk("preview_unavailable_learr");
 
		end;
 
		atl_iof_completed = true;
 
	end;
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_lfc_darkstar_dlg");
 
	};
 
};
 
\ No newline at end of file
 
};
atlantis_intro.lua
Show inline comments
 
atlantis_intro_dock = room {
 
	nam = "Атлантида";
 
	entered = function(s)
 
        me().has_light = false;   
 
		remove(item_lamp, pl);
 
        submarine_leviathan.refit = true;
 
        put("item_colt", "leviathan_captains_cabin");
 
        put("item_harpoon", "leviathan_airlock");
 
        put("item_book_on_navjiarr", "leviathan_captains_cabin");
 
		if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then 
 
			atl_jack_in_party = true; 
 
			char_wright:accompany(false);
 
		end;
 
	end;
 
	dsc = [[В большом прямоугольном зале, ярко освещенном электрическими лампами слышен шум воды, плещущейся под вами. Шлюзовая дверь в стене зала открывается и внутрь входит группа людей, одетых в блестящие черные костюмы. На поясе каждого висит револьвер. ^Один из них держит в руке чемоданчик с двумя антеннами и телефонной трубкой, соединенной с ним. Он молча протягивает вам трубку. Поднеся ее к уху, вы слышите голос: "Добро пожаловать на Атлантиду". ]];
 
	dsc = [[Выйдя из люка, вы оказываетесь в большом прямоугольном доке, ярко освещенном электрическими лампами. Высоко над вами нависает металлический потолок, в нескольких местах пересеченный массивными опорными балками. Под потолком укреплены рельсы, предназначенные для подъемных кранов. По периметру здания расположены металлические платформы, от одной из которых к Левиафану тянется легкий плавучий мостик. В стене напротив вас вы видите шлюзовую дверь. Она открывается и в док входит группа людей, одетых в блестящие черные костюмы. На поясе каждого висит револьвер. ^Один из них держит в руке чемоданчик с двумя антеннами и телефонной трубкой, соединенной с ним. Он молча протягивает вам трубку. Вы подносите ее к уху, и слышите спокойный и уверенный голос: "Добро пожаловать на Атлантиду". ]];
 
	obj = {
 
		vway("continue", "{Продолжить}", "atlantis_intro_radio_dlg");
 
	};
 
@@ -16,25 +20,21 @@ atlantis_intro_dock = room {
 
 
atlantis_intro_radio_dlg = dlg {
 
	nam = "Радио";
 
	entered = [[В левой руке вы держите телефонную трубку, соединенную проводами только с чемоданчиком в руках одного из вооруженных людей. Из трубки доносится голос: "Кто вы такие? Прошу отвечать максимально честно и полно. Не будем терять времени". ]];
 
	entered = [[В левой руке вы держите телефонную трубку, соединенную проводами только с чемоданчиком в руке одного из охранников. Из трубки доносится голос: "Кто вы такие? Прошу отвечать максимально честно и полно. Не будем терять времени". ]];
 
	phr = {
 
		{"Как эта штука работает?", [[Невидимый собеседник кратко объясняет вам: "В чемоданчике спрятано небольшое радио и батарея. Когда вы говорите, ваш голос преобразуется в радиосигнал и принимается моим аппаратом. Он преобразует радиосигнал обратно в голос и выводит его на динамик". ]]};
 
		{"Кто вы?", [[Из трубки доносится спокойный, уверенный голос собеседника: "Я Винсент Даркстар, начальник службы безопасности станции". ]]};
 
		{"Вы знаете Уильяма Дрейка?", [["Ответьте на мои вопросы, пожалуйста", отвечает собеседник. Он говорит спокойно и уверенно. ]]};
 
		{"Мое имя - Дэвид Дрейк. ", [[Собеседник удивленно переспрашивает: "Дрейк?", - вы слышите легкий щелчок. Через некоторое время вы слышите еще один щечок, и тот же голос задает вам следующий вопрос: "Как вы нашли нас?" ]], code [[ psub('station') ]]};
 
		{"Вы знаете Уильяма Дрейка?", [["Ответьте на мои вопросы, пожалуйста", -- отвечает собеседник. Он говорит спокойно и уверенно. ]]};
 
		{"Мое имя - Дэвид Дрейк. ", [[Собеседник удивленно переспрашивает: "Дрейк?", -- вы слышите легкий щелчок. Через некоторое время вы слышите еще один щелчок, и тот же голос задает вам следующий вопрос: "Как вы нашли нас?" ]], code [[ psub('station') ]]};
 
		{tag="station"};
 
		{"Я нашел этот корабль, _\"Левиафан\"_, в одном из старых доков Вестхейвен Трансоушен. Также, среди бумаг компании мне удалось найти карту, указывающую это место. ", [[Вы слышите в трубке другой голос, гораздо тише, кажется говорящий находится на некотором удалении от трубки: _"Я думал, мы уничтожили все документы. Нам..."_ - вы слышите легкий щелчок и соединение прерывается. Через несколько минут вы снова слышите щелчок и в трубке раздается голос первого собеседника: _"Господин Дрейк, мы не можем вас отпустить и предлагаем вам остаться на станции в качестве гостя. Позже, мы решим что делать с вами дальше"_. ]], code [[ psub('trust')]]};
 
		{tag="trust"};
 
		{"Я ищу своего отца, Уильяма Дрейка. Вы знаете его?", [[Голос в трубке отвечает: "Уильяма сейчас нет на станции". ]], code [[psub('drake')]]};
 
		{"Что это значит? Я не могу здесь задерживаться!", [[Голос в трубке отвечает: "Мы решим этот вопрос при личной встрече". ]]};
 
		{tag='drake'};
 
		{"Где он?", [[
 
			Собеседник отвечает: _"Он отправился в экспедицию"_.
 
		]], code [[ psub("drake2");]]};
 
		{"Где он?", [[Собеседник отвечает: _"Он отправился в экспедицию"_. ]], code [[ psub("drake2");]]};
 
		{tag="drake2"};
 
		{"Мне нужно найти его. ", [[
 
			Голос в трубке отвечает: "Думаю, мы можем помочь друг другу. Поговорите с руководителями станции: Фредериком Моро, Екатериной Светловой и Майклом Райтом".
 
		]], code [[ walkin('atlantis_intro_cutscene1'); ]]};
 
		{"Мне нужно найти его. ", code [[ walkin('atlantis_intro_cutscene1'); ]]};
 
	};
 
};
 
 
@@ -42,9 +42,9 @@ atlantis_intro_cutscene1 = room {
 
	nam = "Атлантида";
 
	dsc = function(s)
 
		if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
			return [[Ваш собеседник отключает связь. Через некоторое время, охранник забирает у вас трубку и просит покинуть док.^ Как только вы выходите, охранники задраивают люк.^Вы оказываетесь в широком, ярко освещенном коридоре. К вам подходит человек лет пятидесяти, одетый в пыльный рабочий костюм. Короткие седые волосы и густая серая борода украшают его морщинистое лицо. На носу - большие очки, скрывающие серые глаза. ^Джек, стоящий рядом с вами, изумленно восклицает: "Папа?"^На лице человека вы видите не меньшее удивление: "Джек? Что ты здесь делаешь?"^Джек кратко пересказывает все произошедшее с ним за последние годы до вашего появления в его доме. ]];
 
			return [[Голос в трубке отвечает: "Думаю, мы можем помочь друг другу. Поговорите с руководителями станции: Фредериком Моро, Екатериной Светловой и Майклом Райтом". ^Ваш собеседник отключает связь. Через некоторое время, охранник забирает у вас трубку и просит покинуть док.^ Как только вы выходите, охранники задраивают люк, ведущий к Левиафану. ^Вы оказываетесь в широком, ярко освещенном коридоре. К вам подходит человек лет пятидесяти, одетый в пыльный рабочий костюм. Короткие седые волосы и густая серая борода украшают его морщинистое лицо. На носу у мужчины большие очки, скрывающие серые глаза. ^Джек, стоящий рядом с вами, изумленно восклицает: "Папа?"^На лице человека вы видите не меньшее удивление: "Джек? Что ты здесь делаешь?"^Ваш спутник кратко пересказывает события, начиная с вашего появления в его доме. ]];
 
		else
 
			return [[Ваш собеседник отключает связь. Через некоторое время, охранник забирает у вас трубку и просит покинуть док. как только вы выходите, охранники задраивают люк. Вы оказываетесь в широком, ярко освещенном коридоре. К вам подходит человек лет пятидесяти, одетый в пыльный рабочий костюм. Короткие седые волосы и густая серая борода украшают его морщинистое лицо. На носу - большие очки, скрывающие серые глаза. ]];
 
			return [[Голос в трубке отвечает: "Думаю, мы можем помочь друг другу. Поговорите с руководителями станции: Фредериком Моро, Екатериной Светловой и Майклом Райтом". ^Ваш собеседник отключает связь. Через некоторое время, охранник забирает у вас трубку и просит покинуть док. Как только вы выходите, охранники задраивают люк, ведущий к Левиафану. ^Вы оказываетесь в широком, ярко освещенном коридоре. К вам подходит человек лет пятидесяти, одетый в пыльный рабочий костюм. Короткие седые волосы и густая серая борода украшают его морщинистое лицо. На носу у мужчины большие очки, скрывающие серые глаза. ]];
 
		end;
 
	end;
 
	obj = {
 
@@ -56,26 +56,14 @@ atlantis_intro_wright_dlg = dlg {
 
	nam = "Майкл Райт";
 
	entered = function(s)
 
		if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
			return [[Поговорив с сыном, старший Райт обращается к вам: "Я несказанно рад, что вы прибыли сюда. Вы, наверное не знаете меня, господин Дрейк. Мое имя - Майкл Райт, я начальник инженеров Атлантиды. Мы построили эту станцию вместе с вашим отцом. Если хотите, я могу показать вам ее". ]];
 
			return [[Поговорив с сыном, старший Райт обращается к вам: "Я несказанно рад, что вы прибыли сюда. Вы, наверное не знаете меня, господин Дрейк. Мое имя -- Майкл Райт, я начальник инженеров Атлантиды. Мы построили эту станцию вместе с вашим отцом. Если хотите, я могу показать вам ее". ]];
 
		else
 
			return [[Человек протягивает вам руку и приветствует вас: "Добро пожаловать на Атлантиду, господин Дрейк. Мое имя - Майкл Райт, я начальник инженеров станции. Мы построили эту станцию вместе с вашим отцом. Если хотите, я могу показать вам ее". ]];
 
			return [[Человек протягивает вам руку и приветствует вас: "Добро пожаловать на Атлантиду, господин Дрейк. Мое имя -- Майкл Райт, я начальник инженеров станции. Мы построили эту станцию вместе с вашим отцом. Если хотите, я могу показать вам ее". ]];
 
		end;
 
	end;
 
	phr = {
 
		{"Да, конечно.", function(s)
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				return [[Получив ваше согласие, Майкл начинает рассказ: _"Сейчас мы находимся в коридоре B секции Аква - здесь у нас расположены доки и основные склады. Сейчас мы пройдем через центральный коридор в секцию Доминус -- центр Атлантиды"_. ^ Джек спрашивает: _"Кому пришло в голову все это?"_ ^Майкл, немного подумав, отвечает: _"Это долгая история. Надежду придумали я, Уильям и Адриан Блэк - друг вашего отца. Потом мы встретили навьяров. Вы, скорее всего, не слышали о них, но вы увидите их здесь, на Атлантиде. Тогда мы с Сильвией и придумали как построить станцию"_.]];
 
			else
 
				return [[Получив ваше согласие, Майкл начинает рассказ: _"Сейчас мы находимся в коридоре B секции Аква - здесь у нас расположены доки и основные склады. Сейчас мы пройдем через центральный коридор в секцию Доминус -- центр Атлантиды"_.]];
 
			end;
 
		end, code [[ walk('atlantis_intro_walk_to_dominus')]];};
 
		{"Спасибо, это не нужно.", function(s)
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				return [[Майкл кивает: _"Хорошо, я буду в мастерской. Возможно у меня будет для вас несколько поручений, так что заходите"_. Затем он снова обращается к сыну: _"Пошли. Нам есть что обсудить, да и помощь мне не помешает"_. Джек молча кивает. Они уходят и вы остаетесь в одиночестве. ]];
 
			else
 
				return [[Майкл пожимает плечами: _"Хорошо, я буду в мастерской. Возможно у меня будет для вас несколько поручений, так что заходите"_. Он уходит и вы остаетесь один. ]];
 
			end;
 
		end, code [[ walk('atl_aqua_corridor_b'); ]]};
 
		{"Да, конечно.", code [[ walk('atlantis_intro_walk_to_dominus')]];};
 
		{"Спасибо, это не нужно.", code [[ walk('atlantis_intro_skip'); ]]};
 
	};
 
};
 
 
@@ -83,9 +71,9 @@ atlantis_intro_walk_to_dominus = room {
 
	nam = "Атлантида";
 
	dsc = function(s)
 
		if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
			return [[Вы следуете за Майклом сперва в центральный коридор секции Аква, затем в короткий межсекционный коридор. Майкл кратко объясняет вам смысл постройки таких коридоров: _"Сейчас такие коридоры просто соединяют секции станции, однако, они могут использоваться как шлюзы при необходимости"_. ^ Джек с интересом осматривает систему насосов, приводимых в действие рычагом и спрашивает: "Откуда вы берете энергию для всего этого?" ^Майкл отвечает: "Электричество производится в одной из секций станции. Как только мы дойдем туда, я поясню, как это происходит". ]];
 
			return [[Получив ваше согласие, Майкл начинает рассказ: _"Сейчас мы находимся в коридоре B секции Аква -- здесь у нас расположены доки и основные склады. Сейчас мы пройдем через центральный коридор в секцию Доминус -- центр Атлантиды"_. ^ Джек спрашивает: _"Кому пришло в голову все это?"_ ^Майкл, немного подумав, отвечает: _"Это долгая история. Надежду придумали я, Уильям и Адриан Блэк, еще один друг вашего отца. Потом мы встретили навьяров. Вы, скорее всего, не слышали о них, но вы увидите их здесь, на Атлантиде. Тогда мы с Сильвией и придумали как построить станцию"_. ^Вы следуете за Майклом сперва в центральный коридор секции Аква, затем в короткий межсекционный коридор. Майкл кратко объясняет вам смысл постройки таких коридоров: _"Сейчас такие коридоры просто соединяют секции станции, однако, они могут использоваться как шлюзы при необходимости"_. ^ Джек с интересом осматривает систему насосов, приводимых в действие рычагом и спрашивает: "Откуда вы берете энергию для всего этого?" ^Майкл отвечает: "Электричество производится в одной из секций станции. Как только мы дойдем туда, я поясню, как это происходит". ]];
 
		else
 
			return [[Вы следуете за Майклом сперва в центральный коридор секции Аква, затем в короткий межсекционный коридор. Майкл кратко объясняет вам смысл постройки таких коридоров: _"Сейчас такие коридоры просто соединяют секции станции, однако, они могут использоваться как шлюзы при необходимости"_. ]];
 
			return [[Получив ваше согласие, Майкл начинает рассказ: _"Сейчас мы находимся в коридоре B секции Аква - здесь у нас расположены доки и основные склады. Сейчас мы пройдем через центральный коридор в секцию Доминус -- центр Атлантиды"_. ^Вы следуете за Майклом сперва в центральный коридор секции Аква, затем в короткий межсекционный коридор. Майкл кратко объясняет вам смысл постройки таких коридоров: _"Сейчас такие коридоры просто соединяют секции станции, однако, они могут использоваться как шлюзы при необходимости"_. ]];
 
		end;
 
	end;
 
	obj = {
 
@@ -93,9 +81,17 @@ atlantis_intro_walk_to_dominus = room {
 
	};
 
};
 
 
atlantis_intro_skip = cutscene("Атлантида", "Атлантида", function(s)
 
    if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
        return [[Майкл кивает: _"Хорошо, я буду в мастерской. Возможно у меня будет для вас несколько поручений, так что заходите"_. Затем он снова обращается к сыну: _"Пошли. Нам есть что обсудить, да и помощь мне не помешает"_. Джек молча кивает. Они уходят и вы остаетесь в одиночестве. ]];
 
    else
 
        return [[Майкл пожимает плечами: _"Хорошо, я буду в мастерской. Возможно у меня будет для вас несколько поручений, так что заходите"_. Он уходит и вы остаетесь один. ]];
 
    end;
 
end, "atl_aqua_corridor_b")
 
 
atlantis_intro_dominus = room {
 
	nam = "Атлантида";
 
	dsc = [[Из межсекционного коридора вы попадаете в огромный зал. По его периметру и на многочисленных колоннах установлены электрические лампы, дающие яркий ровный свет. Стеклянный купол над головой отделяет вас от бескрайнего океана. Над куполом вы видите огромный металлический диск, покоящийся на массивных металлических колоннах. Майкл Райт поясняет: "Не самый лучший вид, но нам надо было куда-то пристроить Игнис -- секцию, что вы видите наверху. Там у нас залы отдыха и архивы кинопленки. Там же мы собираемся для обсуждения важных вопросов". ^Майкл продолжает свой рассказ: _"Сейчас мы находимся в центральныом зале секции Доминус. Здесь находятся офисы начальника безопасности -- Винсента Даркстара и управляющего станцией -- Уильяма Дрейка. Сейчас Уильяма заменяет Фредерик Моро."_. ^Слушая Майкла, вы следуете за ним к противоположному концу зала. ]];
 
	dsc = [[Из межсекционного коридора вы попадаете в огромный зал. По его периметру и на многочисленных колоннах установлены электрические лампы, дающие яркий ровный свет. Стеклянный купол над головой отделяет вас от бескрайнего океана. Над куполом вы видите огромный металлический диск, покоящийся на массивных металлических колоннах. Майкл Райт поясняет: "Не самый лучший вид, но нам надо было куда-то пристроить Игнис -- секцию, что вы видите наверху. Там у нас залы отдыха и архивы кинопленки. Там же мы собираемся для обсуждения важных вопросов". ^Майкл продолжает свой рассказ: _"Сейчас мы находимся в центральныом зале секции Доминус. Здесь находятся офисы начальника безопасности -- Винсента Даркстара и управляющего станцией -- Уильяма Дрейка. Сейчас Уильяма заменяет Фредерик Моро"_. ^Слушая Майкла, вы следуете за ним к противоположному концу зала. ]];
 
	obj = {
 
		vway("continue", "{Продолжить}", "atlantis_intro_walk_to_solis");
 
	};
 
@@ -103,7 +99,7 @@ atlantis_intro_dominus = room {
 
 
atlantis_intro_walk_to_solis = room {
 
	nam = "Атлантида";
 
	dsc = [[Вы проходите через межсекционный отсек и оказываетесь в широком коридоре, заставленном ящиками. В одной из стен коридора в рыд расположены несколько дверей. Майкл поясняет вам: _"Это секция Терра, здесь у нас мастерские, где мы собираем все необходимые машины и детали для станции -- некоторые секции были полностью построены здесь без какой-либо помощи с поверхности. Большую часть времени я провожу здесь, в одной из мастерских"_. Вы следуете в дальний конец коридора, где расположен переход в следующую секцию станции. Майкл останавливается и рассказывает вам: "За этой дверью расположена секция Солис -- наша электростанция. Работает она вполне привычно -- пар под высоким давлением вращает турбины генераторов. Винсент Даркстар просил закрыть для вас доступ в эту секцию, поэтому внутрь я вас проводить не буду". ]];
 
	dsc = [[Вы проходите через межсекционный отсек и оказываетесь в широком коридоре, заставленном ящиками. В одной из стен коридора в ряд расположены несколько дверей. Майкл поясняет вам: _"Это секция Терра, здесь у нас мастерские, где мы собираем все необходимые машины и детали для станции -- некоторые секции были полностью построены здесь без какой-либо помощи с поверхности. Большую часть времени я провожу здесь, в одной из мастерских"_. ^Вы следуете в дальний конец коридора, где расположен переход в следующую секцию станции. Майкл останавливается и рассказывает вам: "За этой дверью расположена секция Солис -- наша электростанция. Работает она вполне привычно -- пар под высоким давлением вращает турбины генераторов. Винсент Даркстар просил закрыть для вас доступ в эту секцию, поэтому внутрь я вас проводить не буду". ]];
 
	obj = {
 
		vway("continue", "{Продолжить}", "atlantis_intro_walk_to_aeris");
 
	};
 
@@ -112,7 +108,7 @@ atlantis_intro_walk_to_solis = room {
 
atlantis_intro_walk_to_aeris = room {
 
	nam = "Атлантида";
 
	dsc = function(s)
 
		return [[Вы возвращаетесь назад к секции Доминус и заходите в другую дверь. Вы оказываетесь в широком коридоре, похожем на виденный вами в секции Терра, но не загроможденный ящиками. Майкл снова начинает рассказывать: "Это секция Окулус. Здесь работают наши ученые. Основная их задача - изучения навьяров, их культуры, истории, биологии. Помимо этого, мы решаем вопросы повышения эффективности станции - наши технологии слишком несовершенны и мы многое не можем позволить себе. Если вы захотите узнать больше о навьярах - то можете поговорить с Екатериной Светловой. Она работает в первой лаборатории Окулуса. Но сейчас я хочу показать вам наше главное достижение - секцию Аэрис". ]];
 
		return [[Вы возвращаетесь назад к секции Доминус и заходите в другую дверь. Вы оказываетесь в широком коридоре, похожем на виденный вами в секции Терра, но не загроможденный ящиками. Майкл снова начинает рассказывать: "Это секция Окулус. Здесь работают наши ученые. Основная их задача - изучения навьяров, их культуры, истории, биологии. Помимо этого, мы решаем вопросы повышения эффективности станции - наши технологии слишком несовершенны и мы многое не можем позволить себе. Если вы захотите узнать больше о навьярах - то можете поговорить с Екатериной Светловой. Она работает в первой лаборатории Окулуса. Но сейчас я хочу показать вам наше главное достижение -- секцию Аэрис". ]];
 
	end;
 
	obj = {
 
		vway("continue", "{Продолжить}", "atlantis_intro_aeris");
 
@@ -121,8 +117,7 @@ atlantis_intro_walk_to_aeris = room {
 
 
atlantis_intro_aeris = room {
 
	nam = "Атлантида";
 
	dsc = [[Вы проходите через очередной межсекционный коридор и оказываетесь в просторном зале. Под металлическим потолком и в свете мощных электрических ламп, перед вами предстает цветущий сад с деревьями и кустарниками и даже цветами. Вдоль стен зала установлены огромные аквариумы, в которых плавают крупные рыбы и растут какие-то водоросли. Майкл рассказывает: "Эта секция дает нам практически все - воздух которым мы дышим, еду, топливо. Это идея Сильвии Уинтерлайт, и вам стоит обязательно расспросить ее об этом".
 
	]];
 
	dsc = [[Вы проходите через очередной межсекционный коридор и оказываетесь в просторном зале. Под металлическим потолком и в свете мощных электрических ламп, перед вами предстает цветущий сад с деревьями и кустарниками и даже цветами. Вдоль стен зала установлены огромные аквариумы, в которых плавают крупные рыбы и растут какие-то водоросли. Майкл рассказывает: "Эта секция дает нам практически все - воздух которым мы дышим, еду, топливо. Это идея Сильвии Уинтерлайт, и вам стоит обязательно расспросить ее об этом". ]];
 
	obj = {
 
		vway("continue", "{Продолжить}", "atlantis_intro_final");
 
	};
 
@@ -130,7 +125,7 @@ atlantis_intro_aeris = room {
 
 
atlantis_intro_final = room {
 
	nam = "Атлантида";
 
	dsc = [[Когда вы возвращаетесь, в межсекционном коридоре звонит телефон. Майкл снимает трубку и бросает: _"Райт слушает"_. Через какое-то время он отвечает: _"Хорошо, понял"_. Положив трубку, он обращается к вам: _"Мне срочно надо идти, извините"_.^Вместе с Райтом вы входите обратно в главный коридор секции Окулус. ]];
 
	dsc = [[Когда вы возвращаетесь, в межсекционном коридоре звонит телефон. Майкл поднимает трубку со словами: _"Райт слушает"_. ^Через какое-то время он отвечает: _"Хорошо, понял"_. ^Положив трубку, он обращается к вам: _"Мне срочно надо идти, извините"_. ^Вместе с Райтом вы входите обратно в главный коридор секции Окулус, где он оставляет вас. ]];
 
	obj = {
 
		vway("continue", "{Продолжить}", "atl_oculus_main_corridor");
 
	};
atlantis_iraa.lua
Show inline comments
 
new file 100644
 
--[[
 
Файл содержит локации навьярских поселений для главы Атлантида. 
 
]]
 

	
 
--[[
 
Ираафаанотр
 
]]
 

	
 
--[[
 
Ираафаанотр.Город
 
]]
 

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

	
 
iraa_near_city_west = room {
 
    nam = "iraa_near_city_west";
 
    underwater = true;
 
    disp = [[Ираафаанотр, у города]];
 
    dsc = [[Ровное илистое плато простирается вокруг насколько хватает взгляда. Вы находитесь на западной окраине Ираафаанотра -- небольшого навьярского поселения. Невысокие каменные здания, раскиданные в кажущемся беспорядке служат жилищем для многих из них. В центре городка возвышается каменный обелиск, с нанесенными на него изображениями. ]];
 
    view = [[Ровное илистое плато простирается вокруг насколько хватает взгляда. Вы находитесь на западной окраине Ираафаанотра -- небольшого навьярского поселения. Невысокие каменные здания, раскиданные в кажущемся беспорядке служат жилищем для многих из них. В центре городка возвышается каменный обелиск, с нанесенными на него изображениями. ]];
 
    obj = {
 
        "iraa_city_west_guard"
 
    };
 
    way = {
 
        kh_vroom("В левиафан", "leviathan_airlock");
 
        kh_vroom("На восток, к центру Ираафаанотра", "iraa_city_west");
 
    };
 
};
 

	
 
iraa_city_west = room {
 
    nam = "iraa_city_west";
 
    underwater = true;
 
    disp = "Ираафаанотр, улица";
 
    dsc = [[Широкая мощеная улица, пересекающая город с востока на запад. К северу вы видите обширные поля, обрабатываемые десятками рук и дающие пищу жителям селения. К востоку вы видите каменный обелиск, возвышающийся над центральной площадью Ираафаанотра. ]];
 
    way = {
 
        kh_vroom("На запад", "iraa_near_city_west");
 
        kh_vroom("На восток, к центру Ираафаанотра", "iraa_city_center");
 
    };
 
};
 

	
 
iraa_city_center = room {
 
    nam = "iraa_city_center";
 
    underwater = true;
 
    disp = "Ираафаанотр, центральная площадь";
 
    dsc = [[Центральная площадь Ираафаанотра практически пуста. Лишь несколько зевак с интересом разглядывает вас, осторожно выглядывая из дверей библиотеки -- крупного здания, расположенного к северу от вас. Напротив библиотеки расположен дом вождя, не уступающий размерами библиотеке. ]];
 
    obj = {
 
        "iraa_obelisk";
 
    };
 
    way = {
 
        kh_vroom("На запад", "iraa_city_west");
 
        kh_vroom("На восток", "iraa_city_east");
 
        kh_vroom("В библиотеку", "iraa_city_library");
 
        kh_vroom("В дом вождя", "iraa_city_chief_house");
 
    };
 
};
 

	
 
iraa_obelisk = obj {
 
    nam = "iraa_obelisk";
 
    dsc = [[В центре площади стоит большой каменный {обелиск}, с нанесенными на него символами. ]];
 
    act = function(s)
 
        iraaphaanotrr_temple_found = true;
 
        return [[На обелиске, традиционно для навьяров, начертано название города и вырезана карта, указывающая путь к храму. ]];
 
    end;
 
};
 

	
 
iraa_city_east = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "iraa_city_east";
 
    underwater = true;
 
    disp = "Ираафаанотр, улица";
 
    dsc = [[Широкая мощеная улица, пересекающая город с востока на запад. К северу вы видите обширные поля, обрабатываемые десятками рук и дающие пищу жителям селения. К западу вы видите каменный обелиск, возвышающийся над центральной площадью Ираафаанотра. ]];
 
    entered = function(s)
 
        if (state == 0 and char_learr.follow) then
 
            path("На юг, к саду"):enable();
 
            if language_known then
 
                return [[Здесь Леарр неожиданно останавливается. Она смотрит на юг, а по ее головным плавникам бегут цветные полосы -- она говорит, что здесь, за домом вождя есть небольшой сад, а сразу за ним находится ее дом. Она просит вас пойти туда вместе с ней. ]];
 
            else
 
                return [[Здесь Леарр неожиданно останавливается. Она смотрит на юг, а по ее головным плавникам бегут цветные полосы. Вы не понимаете, что она пытается вам сказать, но она хватает вас за руку и пытается вести за собой на юг. ]];
 
            end;
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("На восток", "iraa_near_city_east");
 
        kh_vroom("На юг, к саду", "iraa_garden"):disable();
 
        kh_vroom("На запад, к центру Ираафаанотра", "iraa_city_center");
 
    };
 
};
 

	
 
iraa_garden = room {
 
    nam = "iraa_garden";
 
    underwater = true;
 
    disp = "Ираафаанотр, сад";
 
    dsc = [[Небольшой сад, расположенный за домом вождя. ]];
 
    way = {
 
        kh_vroom("На север, к главной улице", "iraa_near_city_east");
 
        kh_vroom("На юг, к дому Леарр", "iraa_learr_house_near");
 
    };
 
};
 

	
 
iraa_learr_house_near = room {
 
    nam = "iraa_learr_house_near";
 
    underwater = true;
 
    disp = "Ираафаанотр, у дома Леарр";
 
};
 

	
 
iraa_near_city_east = room {
 
    nam = "iraa_near_city_east";
 
    underwater = true;
 
    disp = [[Ираафаанотр, у города]];
 
    dsc = [[Ровное илистое плато простирается вокруг насколько хватает взгляда. Вы находитесь на восточной окраине Ираафаанотра -- небольшого навьярского поселения. Невысокие каменные здания, раскиданные в кажущемся беспорядке служат жилищем для многих из них. В центре городка возвышается каменный обелиск, с нанесенными на него изображениями. ]];
 
    obj = {
 
        "iraa_city_east_guard";
 
    };
 
    way = {
 
        kh_vroom("На запад, к центру Ираафаанотра", "iraa_city_east");
 
    };
 
};
 

	
 
iraa_city_west_guard = npc {
 
    nam = "iraa_city_west_guard";
 
    dsc = [[По обе стороны дороги стоят двое навьярских {стражникиов}. ]];
 
    phrases = function(s)
 
        if (language_known) then
 
            if (atl_rep_iraa >= 0) then
 
                return {
 
                    "Стражники указывают вам на дом вождя. По головным плавникам стражников бегут цветные полосы -- они просят вас говорить с вождем. ",
 
                    "По головным плавникам стражников бегут цветные полосы -- они приветствуют вас. "
 
                };
 
            else
 
                return {
 
                    "Стражники указывают вам на дом вождя. По их головным плавникам бегут цветные полосы -- они просят вас говорить с вождем. "
 
                };
 
            end;
 
        else
 
            return {
 
                "Стражники указывают вам на дом вождя. По головным плавникам стражников бегут цветные полосы, но вы не понимаете, что они значат. "
 
            };
 
        end;
 
    end;
 
};
 

	
 
iraa_city_east_guard = npc {
 
    nam = "iraa_city_east_guard";
 
    dsc = [[По обе стороны дороги стоят двое навьярских {стражникиов}. ]];
 
    phrases = function(s)
 
        if (language_known) then
 
            if (atl_rep_iraa >= 0) then
 
                return {
 
                    "Стражники указывают вам на дом вождя. По головным плавникам стражников бегут цветные полосы -- они просят вас говорить с вождем. ",
 
                    "По головным плавникам стражников бегут цветные полосы -- они приветствуют вас. "
 
                };
 
            else
 
                return {
 
                    "Стражники указывают вам на дом вождя. По их головным плавникам бегут цветные полосы -- они просят вас говорить с вождем. "
 
                };
 
            end;
 
        else
 
            return {
 
                "Стражники указывают вам на дом вождя. По головным плавникам стражников бегут цветные полосы, но вы не понимаете, что они значат. "
 
            };
 
        end;
 
    end;
 
};
 

	
 
iraa_city_chief_house = room {
 
    nam = "iraa_chief_house";
 
    disp = "Ираафаанотр, дом вождя";
 
    underwater = true;
 
    dsc = [[Приемная дома вождя представляет собой огромый зал. Несколько массивных колонн, не слишком искусно сделанных, поддерживают тяжелую каменную крышу здания. В дальнем конце зала установлен каменный трон. Перед троном установлен громадный, каменный же стол, вокруг которого расставлено множество стульев. ]];
 
    way = {
 
        kh_vroom("На площадь", "iraa_city_center");
 
    };
 
    obj = {
 
        "iraa_chief"
 
    };
 
};
 

	
 
iraa_chief = npc {
 
    nam = "iraa_chief";
 
    dsc = [[{Вождь Ираафаанотра} сидит на троне, внимательно наблюдая за вами своими серыми глазами. Руки его неподвижно лежат на подлокотниках. Серебристая чешуя, слегка синеватая, потускнела за долгие годы жизни. Одет он в плотный облегающий костюм из водорослей, не стесняющий движения, как принято у всех, даже самых высокопоставленных навьяров. ]];
 
    dlg = "iraa_chief_dlg";
 
};
 

	
 
iraa_chief_dlg = dlg {
 
    var {
 
        ask_temple = false;
 
    };
 
    nam = "iraa_chief_dlg";
 
    disp = "Вождь Ираафаанотра";
 
    entered = function(s)
 
        if have(dyp_item_wand) then
 
            pon("wand");
 
        end;
 
        if have(dyp_item_star_map) and (have(dyp_item_star_map_copy) or dyp_map) then
 
            pon("star_map");
 
        end;
 
        if (language_known) then
 
            psub("greet");
 
            if (s.ask_temple) then
 
                s.ask_temple = false;
 
                pon("temple");
 
            end;
 
            return [[Вы подходите к каменному столу, чтобы предстать перед вождем Ираафаанотра -- немолодым уже навьяром. Длинные руки, покрытые тусклой серебристой чешуей, с едва заметным синеватым отливом, покоятся на подлокотниках трона. Не поднимаясь, он начинает говорить. По головным плавникам вождя бегут цветные полосы -- вождь прииглашает вас сесть напротив него и открыть цель вашего визита. В скафандре у вас с трудом получается это сделать, но вы не решаетесь оскорбить вождя и остаться стоять перед ним. ]];
 
        else
 
            psub("no_speech");
 
            return [[Вы подходите к каменному столу, чтобы предстать перед вождем Ираафаанотра -- немолодым уже навьяром. Длинные руки, покрытые тусклой серебристой чешуей, с едва заметным синеватым отливом, покоятся на подлокотниках трона. Не поднимаясь, он начинает говорить. По головным плавникам вождя бегут цветные полосы -- вождь прииглашает вас сесть напротив него и открыть цель вашего визита. В скафандре у вас с трудом получается это сделать, но вы не решаетесь оскорбить вождя и остаться стоять перед ним. ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="no_speech"};
 
        {"[Уйти]", code [[ back(); ]]};
 
        {tag="greet"};
 
        {"[Кодировщик] Приветствую. Мы ищем фрагмент карты пути к Лсэрианотру, который находится у вас. ", [[Вождь задумчиво смотрит на вас. Через некоторое время он отвечает: "У нас нет ничего подобного. Я не знаю, о чем вы говорите". ]], code [[psub("more_info");]]};
 
        {tag="star_map", false, "[Отдать карту небесных огней] Я принес вам утерянный артефакт. К сожалению, Аэдиенрр погиб, пытаясь воспользоваться им.", [[Вождь кивает: "Ты сделал правильное дело, хевьяр. Благодарю тебя от лица всего Ираафаанотра". ]], code [[
 
            atl_rep_iraa = atl_rep_iraa + 1;
 
            iraa_map = true;
 
            remove(dyp_item_star_map, me());
 
        ]]};
 
        {tag="wand", false, "[Отдать жезл] Я принес вам жезл, найденный с помощью карты небесных огней. К сожалению, Аэдиенрр погиб, пытаясь найти его.", [[Вождь кивает: "Это жезл наших предков. Ты помог нам вернуть утраченное и мы будем вечно благодарны тебе. Твое имя, Дэвид Дрейк из хевьяров, будет внесено в наши летописи". ]], code [[
 
            atl_rep_iraa = atl_rep_iraa + 1;
 
            iraa_scepter = true;
 
            remove(dyp_item_wand, me());
 
        ]]};
 
        {tag="temple", false, "[Кодировщик] Мы просим разрешения посетить храм Ираафаанотра. ", [[Вождь отрицательно качает головой: "Это исключено, хевьяр". ]], code [[ 
 
            atl_ctt_iraa_refusal = true;
 
        ]]};
 
        {"[Кодировщик] Мы ищем Венаэданотр. Вы знаете где это?", [[Вождь кивает: "Далеко отсюда. Спросите у Ритларра". ]]};
 
        {"[Кодировщик] Мы ищем Нлейисланотр. Вы знаете где это?", [[Вождь кивает: "Далеко отсюда. Спросите у Ритларра". ]]};
 
        {"[Уйти]", code [[ back(); ]]};
 
        {tag="more_info"};
 
        {"[Кодировщик] Один из фрагментов карты должен быть у вас. [Передать табличку, найденную в храме]", [[Вождь отвечает: "Я не знаю ни о чем подобном. вам стоит спросить у Ритларра в библиотеке". ]]};
 
        {"[Уйти]", code [[ back(); ]]};
 
    };
 
};
 

	
 
iraa_city_library = room {
 
    nam = "iraa_city_library";
 
    disp = "Ираафаанотр, библиотека";
 
    underwater = true;
 
    dsc = [[Огромный зал библиотеки Ираафаанотра практически пуст. ]];
 
    obj = {
 
        "iraa_rytlarr",
 
        "iraa_shelves"
 
    };
 
    way = {
 
        kh_vroom("На площадь", "iraa_city_center");
 
    };
 
};
 

	
 
iraa_shelves = obj {
 
    nam = "iraa_shelves";
 
    dsc = [[Вдоль стен стоят многочисленные {стеллажи} с древними и новыми записями. Большинство из них сделаны на металлических табличках и явно очень стары. Вперемешку с ними стоят и каменные -- более современные, и даже сделанные на водорослях -- те, что еще не успели переписать на что-то более долговечное. ]];
 
    act = [[Вам потребуются десятилетия, чтобы изучить все находящиеся здесь записи. ]];
 
};
 

	
 
iraa_rytlarr = npc {
 
    nam = "iraa_rytlarr";
 
    dsc = [[По залу неспешно расхаживает молодой {навьяр}. Зеленые глаза внимательно рассматривают полки. Зеленовато-серая чешуя поблескивает на свету. Время от времени он останавливается возле одной из полок, чтобы перенести те или иные записи с места на место]];
 
    dlg = "iraa_rytlarr_dlg";
 
};
 

	
 
iraa_rytlarr_dlg = dlg {
 
    nam = "iraa_rytlarr_dlg";
 
    disp = [[Ритларр]];
 
    enter = function(s)
 
        if dyp_quest_state == 3 then
 
            pon("star_map");
 
        end;
 
        if (language_known) then
 
            psub("generic");
 
            return [[Навьяр обращается к вам: "Ритларр приветствует тебя, хевьяр". ]];
 
        else
 
            psub("no_speech");
 
            return [[По головным плавникам навьяра бегут цветные полосы, но вы не понимаете, что он пытается сказать вам. ]];
 
        end;
 
    end;
 
    phr = {
 
        {tag="no_speech"};
 
        {"[Уйти]", always=true, code [[ back(); ]]};
 
        {tag="generic"};
 
        {"[Кодировщик] Я ищу часть карты, ведущей в Лсэрианотр.", [[Навьяр некоторое время стоит, задумавшись. Потом он начинает ходить от полки к полке. Наконец, он сообщает: "Я не уверен, что она у нас есть. Но если вы уверены -- она должна быть в храме. Спросите у вождя. Быть может он позволит вам войти внутрь по такому случаю". ]], code [[ iraa_chief_dlg.ask_temple = true; ]]};
 
        {tag="star_map", false, "[Кодировщик] Ты знаешь что-нибудь о карте небесных огней?", [[Навьяр кивает: "Наше сокровище. Аэдиенрр взял ее не так давно. Он сказал, что знает как найти место, указанное в ней. Но прошло много дней, а он не вернулся. Если ты сможешь найти его и вернуть карту, мы будем очень благодарны. Я не знаю точно конечную цель, но я знаю, что он вышел по направлению к Дипатреанотру". ]], code [[ dyp_quest_state = 4; ]]};
 
        {"[Кодировщик] Ты знаешь, где находится Венаэданотр?", [[Навьяр кивает: "Мы знаем путь туда". Он ведет вас к одной из полок в дальнем конце зала. Ритларр достает одну из металлических пластин и перерисовывает ее на гибкий лист из водорослей. Работа занимает несколько часов. Наконец, Ритларр протягивает вам карту: "Держите". ]], code [[ take("item_venaedanotrr_map"); ]]};
 
        {"[Кодировщик] Ты знаешь, где находится Нлейисланотр?", [[Навьяр отрицательно качает головой: "У нас нет карты пути к этому месту. Быть может, путь знают в Дипатреанотре. "]]};
 
        {"[Уйти]", always=true, code [[ back(); ]]};
 
    };
 
};
 

	
 
--[[
 
Ираафаанотр.Храм
 
]]
 

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

	
 
player_learr = player {
 
    nam = "player_learr";
 
    has_light = true;
 
    obj = {};
 
};
 

	
 
iraa_learr_choice_dlg = dlg {
 
    nam = "iraa_learr_choice_dlg";
 
    disp = "Леарр";
 
    entered = [[Вы уже собираетесь покинуть Левиафан, как в шлюзовую камеру входит Леарр со словами: "Дрейк-ты здесь-оставайся. Я в-храм-пойду". ]];
 
    phr = {
 
        {"Почему не отправиться вместе?", [[Леарр отрицательно качает головой: "Хевьярам нельзя-в-храм-входить, поэтому я внутрь-только-одна-войду". ]]};
 
        {"Хорошо, ты справишься лучше. ", [[Леарр кивает: "Я вернусь-с-картой. Вы здесь-ждите". Вы покидаете шлюзовую камеру и Леарр выходит наружу. ]], code [[
 
            rel_learr = rel_learr + 1;
 
            change_pl(player_learr);
 
            walk("iraa_temple_entrance");
 
        ]]};
 
        {"Я пойду сам. ", [[Леарр недовольно качает головой. Плавники окрашиваются синим. Со совами: "Ты ошибку-совершаешь", -- она выходит из шлюзовой камеры. ^^Вы выбираетесь из Левиафана. ]], code [[
 
            rel_learr = rel_learr - 1;
 
            walk("iraa_temple_entrance");
 
        ]]};
 
    };
 
};
 

	
 
iraa_temple_entrance = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "Храм Ираафаанотра, вход";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр стоит перед массивными двустворчатыми воротами храма, вытесанными в скале, протянувшейся с севера на юг. Над ними расположена карта, указывающая путь к Ираафаанотру. Работники храма регулярно обновляли и восстанавливали карту в течение многих столетий. ]];
 
        else
 
            return [[Перед вами возвышаются массивные двустворчатые ворота храма, вытесанные из камня. Над ними вы видите тщательно поддерживаемую в порядке карту, указывающую путь к Ираафаанотру. Скала тянется с севера на юг насколько хватает глаз. ]];
 
        end;
 
    end;
 
    view = [[Через иллюминаторы видны массивные ворота вытесанного в скале храма. Над входом расположен символ храма -- карта пути к самому Ираафаанотру отсюда. ]];
 
    enter = function(s)
 
        if s.state == 0 and ArrayUtils.indexOf(pl.party, 'learr') ~= 0 then
 
            s.state = 1;
 
            walkin("iraa_learr_choice_dlg");
 
        end;
 
    end;
 
    obj = {
 
        "iraa_temple_guardians";
 
    };
 
    way = {
 
        kh_vroom("Войти", function(s)
 
            if me() == player_learr then
 
                return "iraa_temple_main_1";
 
            else
 
                pr [[Стражники не пропустят вас. ]];
 
                return false;
 
            end;
 
            
 
        end);
 
        kh_vroom("Вдоль скалы на север", function(s)
 
            if me() == player_learr then
 
                pr [[В голове Леарр проносится мысль: "Там нет ничего интересного, я много раз там бывала". ]];
 
                return false;
 
            else
 
                return "iraa_temple_north_1";
 
            end;
 
        end);
 
        kh_vroom("Вдоль скалы на юг", function(s)
 
            if me() == player_learr then
 
                pr [[В голове Леарр проносится мысль: "Там нет ничего интересного, я много раз там бывала". ]];
 
                return false;
 
            else
 
                return "iraa_temple_south";
 
            end;
 
        end);
 
        kh_vroom("В Левиафан", function(s)
 
            print(pl);
 
            print(player_learr);
 
            print(player_drake);
 
            if me() == player_learr and iraa_temple_hidden_pedestal.state == 0 then
 
                pr [[В голове Леарр проносится мысль: "Я еще не сделала все, что нужно". ]];
 
                return false;
 
            else
 
                change_pl(player_drake);
 
                remove(player_learr, where(player_learr));
 
                return "leviathan_airlock";
 
            end;
 
        end);
 
    };
 
};
 

	
 
iraa_temple_guardians = npc {
 
    nam = "iraa_temple_guardians";
 
    dsc = [[У входа в храм стоят двое {стражников} -- обычный дозор. ]];
 
    phrases = function(s)
 
        if me() == player_learr then
 
            return {
 
                "Один из стражников приветствует Леарр и приглашает войти в храм. ";
 
                "Стражники не обращают на Леарр внимания. ";
 
            };
 
        elseif language_known then
 
            return {
 
                "В вашем присутствии стражники заметно нервничают. ";
 
                "Стражники осторожно переглядываются. ";
 
                "По головным плавникам одного из стражников бегут цветные полосы: \"Уходите, вам здесь не место\". ";
 
            };
 
        else
 
            return {
 
                "В вашем присутствии стражники заметно нервничают. ";
 
                "Стражники осторожно переглядываются. ";
 
                "По головным плавникам одного из стражников бегут цветные полосы, но вы не понимаете, что он хочет вам сказать. ";
 
            };
 
        end;
 
    end;
 
};
 

	
 
iraa_temple_south = room {
 
    nam = "iraa_temple_south";
 
    disp = "У скалы";
 
    underwater = true;
 
    dsc = [[На востоке от вас возвышаетеся скала, протянувшаяся на многие километры с севера на юг. Вдалеке на севере вы видите Левиафан -- вашу субмарину и вход в храм Ираафаанотра, охраняемый двумя вооруженными навьярами. ]];
 
    way = {
 
        kh_vroom("Вдоль скалы на север", "iraa_temple_entrance");
 
    };
 
};
 

	
 
iraa_temple_north_1 = room {
 
    nam = "iraa_temple_north_1";
 
    disp = "У скалы";
 
    underwater = true;
 
    dsc = [[На востоке от вас возвышаетеся скала, протянувшаяся на многие километры с севера на юг. Вдалеке на юге вы видите Левиафан -- вашу субмарину и вход в храм Ираафаанотра, охраняемый двумя вооруженными навьярами. ]];
 
    way = {
 
        kh_vroom("Вдоль скалы на север", "iraa_temple_north_2");
 
        kh_vroom("Вдоль скалы на юг", "iraa_temple_entrance");
 
    };
 
};
 

	
 
iraa_temple_north_2 = room {
 
    nam = "iraa_temple_north_2";
 
    disp = "У скалы";
 
    underwater = true;
 
    dsc = [[На востоке от вас возвышаетеся скала, протянувшаяся на многие километры с севера на юг. Вдалеке на юге вы едва различаете Левиафан -- вашу субмарину. ]];
 
    way = {
 
        kh_vroom("Вдоль скалы на север", "iraa_temple_north_3");
 
        kh_vroom("Вдоль скалы на юг", "iraa_temple_north_1");
 
    };
 
    entered = function(s)
 
        lifeoff(iraa_temple_shark);
 
    end;
 
};
 

	
 
iraa_temple_north_3 = room {
 
    nam = "iraa_temple_north_3";
 
    disp = "У входа в ущелье";
 
    underwater = true;
 
    dsc = [[К востоку от вас возвышается скала, протянувшаяся на многие километры ссевера на юг. Рядом с вами в скале имеется узкое ущелье -- настолько незаметное, что проплывай вы мимо на Левиафане, вы не обратили бы на него никакого внимания. ]];
 
    way = {
 
        kh_vroom("В ущелье", "iraa_temple_ravine_1");
 
        kh_vroom("Вдоль скалы на юг", "iraa_temple_north_2");
 
    };
 
    entered = function(s)
 
        lifeoff(iraa_temple_shark);
 
    end;
 
};
 

	
 
iraa_temple_shark = obj {
 
    var {
 
        alive = true;
 
        position = 1;
 
        wait = 0;
 
    };
 
    map = {
 
        ["2"] = iraa_temple_ravine_2,
 
        ["3"] = iraa_temple_ravine_3,
 
        ["4"] = iraa_temple_ravine_4,
 
        ["6"] = iraa_temple_ravine_6,
 
        ["7"] = iraa_temple_ravine_7,
 
        ["8"] = iraa_temple_ravine_8,
 
        ["9"] = iraa_temple_ravine_9
 
    };
 
    cycle = {2,6,7,8,9,4,3};
 
    nam = "iraa_temple_shark";
 
    disp2 = "акулу";
 
    life = function(s)
 
        s.wait = s.wait + 1;
 
        if (s.wait < 3) then
 
            return;
 
        end;
 
        s.wait = 0;
 
        s.position = s.position + 1;
 
        if (s.position > #s.cycle) then
 
            s.position = 1;
 
        end;
 
        print(s.position, s.cycle[s.position], here().index);
 
        if s.position == here().index then
 
            walk("game_over_eaten_by_shark");
 
        end;
 
    end;
 
    canshoot = true;
 
    onshoot = function(s)
 
        s.alive = false;
 
        lifeoff(s);
 
        s:disable();
 
        move(item_shark_tooth, s.map[tostring(s.cycle[s.position])]);
 
        return [[Пронзенная гарпуном, акула умирает. ]];
 
    end;
 
    dsc = function(s)
 
        print("fungul");
 
        if s.alive then
 
            if here().index == 1 then
 
                if s.cycle[s.position] == 2 then
 
                    return [[На востоке от вас вы видите {акулу}, она движется на север. ]];
 
                end;
 
            elseif here().index == 5 then
 
                if s.cycle[s.position] == 4 then
 
                    return [[На западе от вас вы видите {акулу}, она движется на запад. ]];
 
                end;
 
            elseif here().index == 10 then
 
                if s.cycle[s.position] == 7 then
 
                    return [[На юге от вас вы видите {акулу}, она движется на восток. ]];
 
                end;
 
            elseif here().index == 2 then
 
                if s.cycle[s.position] == 3 then
 
                    return [[С востока к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 6 then
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает движение от вас. ]];
 
                end;
 
            elseif here().index == 6 then
 
                if s.cycle[s.position] == 2 then
 
                    return [[С юга к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 7 then
 
                    return [[К северу от вас вы видите {акулу}. Она не видит вас и продолжает движение от вас. ]];
 
                end;
 
            elseif here().index == 7 then
 
                if s.cycle[s.position] == 6 then
 
                    return [[С юга к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 8 then
 
                    return [[На востоке вы видите {акулу}, удаляющуюся от вас. ]];
 
                end;
 
            elseif here().index == 8 then
 
                if s.cycle[s.position] == 7 then
 
                    return [[С запада к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 9 then
 
                    return [[На востоке вы видите {акулу}, удаляющуюся от вас. ]];
 
                end;
 
            elseif here().index == 9 then
 
                if s.cycle[s.position] == 8 then
 
                    return [[С запада к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 4 then
 
                    return [[На юге вы видите {акулу}, удаляющуюся от вас. ]];
 
                end;
 
            elseif here().index == 4 then
 
                if s.cycle[s.position] == 9 then
 
                    return [[С севера к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 3 then
 
                    return [[На западе вы видите {акулу}, удаляющуюся от вас. ]];
 
                end;
 
            elseif here().index == 3 then
 
                if s.cycle[s.position] == 4 then
 
                    return [[С востока к вам приближается {акула}. ]];
 
                elseif s.cycle[s.position] == 2 then
 
                    return [[На западе вы видите {акулу}, удаляющуюся от вас. ]];
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 

	
 
iraa_temple_ravine_1 = room {
 
    index = 1;
 
    nam = "iraa_temple_ravine_1";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_north_3");
 
        kh_vroom("На восток", "iraa_temple_ravine_2");
 
    };
 
    entered = function(s)
 
        if iraa_temple_shark.alive then
 
            lifeon(iraa_temple_shark);
 
        end;
 
    end;
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_2 = room {
 
    index = 2;
 
    nam = "iraa_temple_ravine_2";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_1");
 
        kh_vroom("На север", "iraa_temple_ravine_6");
 
        kh_vroom("На восток", "iraa_temple_ravine_3");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_3 = room {
 
    index = 3;
 
    nam = "iraa_temple_ravine_3";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_2");
 
        kh_vroom("На восток", "iraa_temple_ravine_4");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_4 = room {
 
    index = 4;
 
    nam = "iraa_temple_ravine_4";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_3");
 
        kh_vroom("На север", "iraa_temple_ravine_9");
 
        kh_vroom("На восток", "iraa_temple_ravine_5");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_5 = room {
 
    index = 5;
 
    nam = "iraa_temple_ravine_5";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_4");
 
        kh_vroom("В трещину", "iraa_temple_crevice");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
    entered = function(s)
 
        lifeoff(iraa_temple_guardian);
 
    end;
 
};
 

	
 
iraa_temple_ravine_6 = room {
 
    index = 6;
 
    nam = "iraa_temple_ravine_6";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На юг", "iraa_temple_ravine_2");
 
        kh_vroom("На север", "iraa_temple_ravine_7");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_7 = room {
 
    index = 7;
 
    nam = "iraa_temple_ravine_7";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На юг", "iraa_temple_ravine_6");
 
        kh_vroom("На восток", "iraa_temple_ravine_8");
 
        kh_vroom("На север", "iraa_temple_ravine_10");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_8 = room {
 
    index = 8;
 
    nam = "iraa_temple_ravine_8";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_7");
 
        kh_vroom("На север", "iraa_temple_ravine_10");
 
        kh_vroom("На восток", "iraa_temple_ravine_9");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_9 = room {
 
    index = 9;
 
    nam = "iraa_temple_ravine_9";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На запад", "iraa_temple_ravine_8");
 
        kh_vroom("На юг", "iraa_temple_ravine_4");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_10 = room {
 
    index = 10;
 
    nam = "iraa_temple_ravine_10";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На север", "iraa_temple_ravine_11");
 
        kh_vroom("На восток", "iraa_temple_ravine_8");
 
        kh_vroom("На юг", "iraa_temple_ravine_7");
 
    };
 
    obj = {
 
        "iraa_temple_shark"
 
    };
 
};
 

	
 
iraa_temple_ravine_11 = room {
 
    nam = "iraa_temple_ravine_11";
 
    disp = "Ущелье";
 
    dsc = [[Глубокое узкое ущелье. Стены его почти отвесные и очен неровные, но вы бы не рискнули пытаться карабкаться по ним -- порода очень мягкая и может легко обрушиться под вшим весом. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("На север", "iraa_temple_ravine_11");
 
        kh_vroom("На восток", "iraa_temple_ravine_8");
 
        kh_vroom("На юг", "iraa_temple_ravine_7");
 
    };
 
};
 

	
 
iraa_temple_crack = room {
 
    index = 7;
 
    nam = "iraa_temple_crack";
 
    disp = "Трещина в скале";
 
    dsc = [[Небольшая узкая трещина в скале. Вы с огромным трудом перемещаетесь внутри. С одной стороны вы видите ущелье, через которое вы проникли сюда. С другой стороны -- какой-то хорошо освещенный коридор. ]];
 
    underwater = true;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_6");
 
        kh_vroom("В ущелье", "iraa_temple_ravine_5");
 
    };
 
    entered = function(s)
 
        lifeon(iraa_temple_guardian);
 
    end;
 
};
 

	
 
iraa_temple_guardian = obj {
 
    var {
 
        position = 1;
 
        direction = 1;
 
        wait = 0;
 
    };
 
    nam = "iraa_temple_guardian";
 
    life = function(s)
 
        s.wait = s.wait + 1;
 
        if (s.wait < 3) then
 
            return;
 
        end;
 
        s.wait = 0;
 
        if (s.direction == 1) then
 
            if (s.position < 3) then
 
                s.position = s.position + 1;
 
                if (here().index >= s.position) then
 
                    pr [[Вы слышите шаги приближащегося стражника. ]];
 
                else
 
                    pr [[Вы слышите шаги удаляющегося стражника. ]];
 
                end;
 
            else
 
                s.direction = 2;
 
            end;
 
        elseif (s.direction == 2) then
 
            if (s.position < 6) then
 
                s.position = s.position + 1;
 
                if (here().index >= s.position) then
 
                    pr [[Вы слышите шаги приближащегося стражника. ]];
 
                else
 
                    pr [[Вы слышите шаги удаляющегося стражника. ]];
 
                end;
 
            else
 
                s.direction = 2;
 
            end;
 
        elseif (s.direction == -2) then
 
            if (s.position > 3) then
 
                s.position = s.position - 1;
 
                if (here().index <= s.position) then
 
                    pr [[Вы слышите шаги приближащегося стражника. ]];
 
                else
 
                    pr [[Вы слышите шаги удаляющегося стражника. ]];
 
                end;
 
            else
 
                s.direction = -1;
 
            end;
 
        elseif (s.direction == -1) then
 
            if (s.position > 1) then
 
                s.position = s.position - 1;
 
                if (here().index <= s.position) then
 
                    pr [[Вы слышите шаги приближащегося стражника. ]];
 
                else
 
                    pr [[Вы слышите шаги удаляющегося стражника. ]];
 
                end;
 
            else
 
                s.direction = 1;
 
            end;
 
        end;
 
        if here().index > 6 or here().index < 1 then
 
            return;
 
        end;
 
        if s.direction == 1 and here().index < 4 and here().index >= s.position or 
 
           s.direction == 2 and here().index >= s.position or
 
           s.direction == -2 and here().index > 2 and here().index <= s.position or 
 
           s.direction == -1 and here().index <= s.position then
 
            walk("game_over_caught_iraa");
 
        end;
 
    end;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return "";
 
        end;
 
        if here().index > 6 or here().index < 1 then
 
            return [[]];
 
        end;
 
        if s.direction == 1 then
 
            if here().index < s.position then
 
                return [[К востоку вы видите стражника. Он стоит спиной к вам. ]];
 
            end;
 
        elseif s.direction == 2 then
 
            if here().index > 2  and here().index < s.position then
 
                return [[К северу вы видите стражника. Он стоит спиной к вам. ]];
 
            end;
 
        elseif s.direction == -2 then
 
            if here().index > s.position then
 
                return [[К югу вы видите стражника. Он стоит спиной к вам. ]];
 
            end;
 
        elseif s.direction == -1 then
 
            if here().index > s.position  then
 
                return [[К западу вы видите стражника. Он стоит спиной к вам. ]];
 
            end;
 
        end;
 
    end;
 
};
 

	
 
iraa_temple_corridor_6 = room {
 
    index = 6;
 
    nam = "iraa_temple_corridor_6";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в коридоре в храме Ираафаанотра. Каменные стены покрыты файирром. В стенах коридора имеются проемы, ведущие в служебные комнаты. Северную стену рассекает глубокая трещина, а в западной находится дверь, ведущая в одну из служебных комнат. ]];
 
        else
 
            return [[Вы стоите в самом конце коридора в храме Ираафаанотра. Вокруг -- камееные стены, покрытые светящимися водорослями. В одной из них вы видите глубокую, трещину, через которую вы с трудом протиснулись сюда. В западной стене вы видите небольшой дверной проем, за которым скрывается маленькая комнатка. ]];
 
        end;
 
    end; 
 
    way = {
 
        kh_vroom("В трещину", function(s)
 
            if me() == player_learr then
 
                pr [[В голове Леарр мелькает мысль: "Мне нечего там делать". ]];
 
                return false;
 
            else
 
                return "iraa_temple_crack";
 
            end;
 
        end);
 
        kh_vroom("В комнату", "iraa_temple_room_0");
 
        kh_vroom("По коридору, на юг", "iraa_temple_corridor_5");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_corridor_5 = room {
 
    index = 5;
 
    nam = "iraa_temple_corridor_5";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в коридоре в храме Ираафаанотра. Ровные каменные стены покрыты файирром. В западной стене коридора имеется проем, ведущий в одну из служебных комнат. ]];
 
        else
 
            return [[Вы стоите в коридоре в храме Ираафаанотра. Вокруг -- каменные стены, покрытые светящимися водорослями. В западной стене находится дверной проем, ведущий в небольшую комнату. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В комнату", "iraa_temple_room_2");
 
        kh_vroom("По коридору, на север", "iraa_temple_corridor_6");
 
        kh_vroom("По коридору, на юг", "iraa_temple_corridor_4");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_corridor_4 = room {
 
    index = 4;
 
    nam = "iraa_temple_corridor_4";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в коридоре в храме Ираафаанотра. Ровные каменные стены покрыты файирром. ]];
 
        else
 
            return [[Вы стоите в коридоре в храме Ираафаанотра. Вокруг -- каменные стены, покрытые светящимися водорослями. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("По коридору, на север", "iraa_temple_corridor_5");
 
        kh_vroom("По коридору, на юг", "iraa_temple_corridor_3");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_corridor_3 = room {
 
    index = 3;
 
    nam = "iraa_temple_corridor_3";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в коридоре в храме Ираафаанотра. Ровные каменные стены покрыты файирром. Коридор сворачивает под прямым углом к северу. В восточной стене расположена массивная каменная дверь -- задний вход в храм. Леарр никогда не понимала этой необходимости, но во всех известных ей храмах было ровно два входа. ]];
 
        else
 
            return [[Вы стоите в коридоре в храме Ираафаанотра. Вокруг -- ровные каменные стены. Здесь коридор сворачивает под прямым углом к северу. В конце коридора на западе вы видите массивную каменную дверь, которая сейчас открыта. На севере коридор заканчивается тупиком. К востоку от вас массивная каменная дверь, но она заперта. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("По коридору, на север", "iraa_temple_corridor_4");
 
        kh_vroom("В комнату", "iraa_temple_room_5");
 
        kh_vroom("По коридору, на запад", "iraa_temple_corridor_2");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_corridor_2 = room {
 
    index = 2;
 
    nam = "iraa_temple_corridor_2";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в коридоре в храме Ираафаанотра. Ровные каменные стены покрыты файирром. В стенах коридора имеются проемы, ведущие в служебные комнаты. ]];
 
        else
 
            return [[Вы стоите в коридоре в храме Ираафаанотра. Вокруг -- каменные стены, покрытые светящимися водорослями. В стенах имеются дверные проемы, ведущие в небольшие комнаты. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("По коридору, на восток", "iraa_temple_corridor_3");
 
        kh_vroom("В комнату в северной стене", "iraa_temple_room_3");
 
        kh_vroom("В комнату в южной стене", "iraa_temple_room_6");
 
        kh_vroom("По коридору, на запад", "iraa_temple_corridor_1");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_corridor_1 = room {
 
    index = 1;
 
    nam = "iraa_temple_corridor_1";
 
    disp = "Храм Ираафаанотра, коридор";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр впервые за долгие годы оказалась в задней части храма. Хотя проход сюда, в принципе, не запрещен, необходимости бывать здесь, как правило, нет -- все, что доступно пониманию горожан происходит в главном зале. Ровные каменные стены покрыты файирром -- светящимися водорослями, используемыми навьярами повсеместно. В западной стене находится дверь, ведущая в основное помещение храма, а в северной и южной -- проемы, ведущие в служебные комнаты. ]];
 
        else
 
            return [[Вы стоите в коридоре в храме Ираафаанотра. Вокруг -- ровные каменные стены, покрытые светящимися водорослями. Прямо перед вами находится дверь, ведущая в основное помещение храма. Отсюда вы видите, что в нем никого нет. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("По коридору, на восток", "iraa_temple_corridor_2");
 
        kh_vroom("В комнату в северной стене", "iraa_temple_room_7");
 
        kh_vroom("В комнату в южной стене", "iraa_temple_room_1");
 
        kh_vroom("В главный зал", "iraa_temple_main_3");
 
    };
 
    obj = {
 
        "iraa_temple_guardian"
 
    };
 
};
 

	
 
iraa_temple_main_3 = room {
 
    nam = "iraa_temple_main_3";
 
    disp = "Храм Ираафаанотра, главный зал";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в главном зале Ираафаанотра. Повсюду аккуратно разложены свяценные реликвии, накопленные за века существования Ираафаанотра. Рядом с Леарр расположена дверь, ведущая в задние помещения храма. Обычно там бывают лишь те, кто всю свою жизнь посвятил служению в этом храме. ]];
 
        else
 
            return [[Вы находитесь в конце главного зала храма Ираафаанотра. В стенах проделаны многочисленые ниши, в которых покоятся священные реликвии навьяров. Массивная каменная дверь ведет в задние помещения. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В дверь", "iraa_temple_corridor_1");
 
        kh_vroom("К центру зала", "iraa_temple_main_2");
 
    };
 
};
 

	
 
iraa_temple_main_2 = room {
 
    nam = "iraa_temple_main_2";
 
    disp = "Храм Ираафаанотра, главный зал";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в центре главного зала храма Ираафаанотра. Рядом с ней находится пустой пьедестал, на котором должна находиться важнейшая реликвия храма, украденная ворами из Дипатреанотра. Слева и справа находятся залы, с незапамятных времен именуемые залом Вопроса и залом Ответа. ]];
 
        else
 
            return [[Вы находитесь в центре главного зала храма Ираафаанотра. Рядом с вами находится пустой пьедестал, на котором должна покоиться важнейшая реликвия храма, однако сейчас она отсутствует. Слева и справа от вас находятся залы, именуемые залами ответа и вопроса. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В конец зала", "iraa_temple_main_3");
 
        kh_vroom("В зал вопроса", "iraa_temple_qhall");
 
        kh_vroom("В зал ответа", "iraa_temple_ahall");
 
        kh_vroom("К главному входу", "iraa_temple_main_1");
 
    };
 
    obj = {
 
        "iraa_temple_lever_4"
 
    };
 
};
 

	
 
iraa_temple_main_1 = room {
 
    nam = "iraa_temple_main_1";
 
    disp = "Храм Ираафаанотра, главный зал";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в главном зале храма Ираафаанотра, у центрального входа. Повсюду аккуратно разложены свяценные реликвии, накопленные за века существования Ираафаанотра. ]];
 
        else
 
            return [[Вы находитесь в главном зале храма Ираафаанотра. В многочисленных нишах в стенах покоятся древние реликвии. Перед вами возвышаются массивные ворота храма, за которыми наверняка стоит обычная стража -- двое вооруженных навьяров. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В ворота", function(s)
 
            if me() == player_learr then
 
                return "iraa_temple_entrance";
 
            else
 
                pr("Не стоит делать этого. Стража вас схватит. ");
 
                return false;
 
            end;
 
        end);
 
        kh_vroom("К центру зала", "iraa_temple_main_2");
 
    };
 
};
 

	
 
iraa_temple_question = obj {
 
    nam = "iraa_temple_question";
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Единственной достопримечательностью помещения была загадочная надпись "Ты ищешь число здесь", на стене напротив входа. ]];
 
        else
 
            return [[На стене напротив входа нанесены какие-то {письмена}. Видно, что навьяры раз за разом тщательно обновляют их, сохраняя их в первозданном виде. ]];
 
        end;
 
    end;
 
    act = [[Письмена гласят: "Ты число-здесь-ищешь". ]];
 
};
 

	
 
iraa_temple_qhall = room {
 
    nam = "iraa_temple_qhall";
 
    disp = "Храм Ираафаанотра, зал вопроса";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Назначение небольшого по размерам зала вопроса, отделеного высокой аркой от основного зала, всегда казалось Леарр непонятным -- оно всегда было совершенно пустым. Здесь ничего не хранилось, сюда редко ходили как служители, так и горожане. ]];
 
        else
 
            return [[Зал вопроса представляет собой небольшое помещение, отделенное от основного зала высокой аркой. В отличие от центрального зала, стены здесь не имеют никаких ниш или полок -- здесь явно не должно храниться никаких реликвий. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В главный зал", "iraa_temple_main_2");
 
    };
 
    obj = {
 
        "iraa_temple_question";
 
    };
 
};
 

	
 
iraa_temple_answer = obj {
 
    nam = "iraa_temple_answer";
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Вырезанное в камне стены изображение {спрута} всегда пугало Леарр, однако и притягивало -- есть в нем что-то необычное, интересное. ]];
 
        else
 
            return [[Вы видите вырезанное в стене изображение {спрута}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if me() == player_learr then
 
            return [[В голове Леарр пробегает мысль: "Для чего он здесь?" В первый раз в жизни, Леарр обращает внимание на наличие шестнадцати щупалец у существа. ]];
 
        else
 
            return [[Традиционное для навьяров схематичное изображение спрута. Вам бросается в глаза наличие у существа шестнадцати щупалец. ]];
 
        end;
 
    end;
 
};
 

	
 
iraa_temple_ahall = room {
 
    nam = "iraa_temple_ahall";
 
    disp = "Храм Ираафаанотра, зал ответа";
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Назначение небольшого по размерам зала ответа, отделеного высокой аркой от основного зала, всегда казалось Леарр непонятным -- оно всегда было совершенно пустым. Здесь ничего не хранилось, сюда редко ходили как служители, так и горожане. ]];
 
        else
 
            return [[Зал ответа представляет собой небольшое помещение, отделенное от основного зала высокой аркой. В отличие от центрального зала, стены здесь не имеют никаких ниш или полок -- здесь явно не должно храниться никаких реликвий. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В главный зал", "iraa_temple_main_2");
 
    };
 
    obj = {
 
        "iraa_temple_answer";
 
    };
 
};
 

	
 
iraa_temple_room_0 = room {
 
    var {
 
        state = false;
 
    };
 
    index = 0;
 
    nam = "iraa_temple_room_0";
 
    underwater = true;
 
    disp = "Храм Ираафаанотра, комната";
 
    dsc = [[Небольшая, хорошо освещенная светящимися водорослями, комната. Ниши в стенах пустуют. ]];
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_6");
 
        kh_vroom("В скрытый проход", "iraa_temple_hidden_stairs"):disable();
 
    };
 
    obj = {
 
        "iraa_temple_lever_0"
 
    };
 
    open = function(s)
 
        s.state = true;
 
        path("В скрытый проход", s):enable();
 
        if here() == s then
 
            return "Вы видите, как одна из стен раздвигается, открывая скрытый проход куда-то в глубь скалы. ";
 
        else
 
            return "Вы слышите где-то поблизости скрежет каменных плит. ";
 
        end;
 
    end;
 
    close = function(s)
 
        if s.state then
 
            s.state = false;
 
            path("В скрытый проход", s):disable();
 
            if here() == s then
 
                return "Вы видите, как одна из стен cдвигается, вновь закрывая потайной проход. ";
 
            else
 
                return "Вы слышите где-то поблизости скрежет каменных плит. ";
 
            end;
 
        end;
 
        return "Вы дергаете рычаг";
 
    end;
 
};
 

	
 
iraa_temple_room_1 = room {
 
    nam = "iraa_temple_room_1";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_1");
 
    };
 
    obj = {
 
        "iraa_temple_lever_1"
 
    };
 
};
 

	
 
iraa_temple_room_2 = room {
 
    nam = "iraa_temple_room_2";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_5");
 
    };
 
    obj = {
 
        "iraa_temple_lever_2"
 
    };
 
};
 

	
 
iraa_temple_room_3 = room {
 
    nam = "iraa_temple_room_3";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_2");
 
    };
 
    obj = {
 
        "iraa_temple_lever_3"
 
    };
 
};
 

	
 
iraa_temple_room_5 = room {
 
    nam = "iraa_temple_room_5";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_3");
 
    };
 
    obj = {
 
        "iraa_temple_lever_5"
 
    };
 
};
 

	
 
iraa_temple_room_6 = room {
 
    nam = "iraa_temple_room_6";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_2");
 
    };
 
};
 

	
 
iraa_temple_room_7 = room {
 
    nam = "iraa_temple_room_7";
 
    disp = "Храм Ираафаанотра, комната";
 
    underwater = true;
 
    index = 0;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в одной из служебных комнат храма. Стены и пол покрыты файирром. Ниши в стенах, сделанные специально, чтобы служители могли отдыхать в них, пустуют. ]];
 
        else
 
            return [[Небольшая, хорошо освещенная светящимися водорослями, комната. Большие -- в рост навьяра, ниши в стенах пустуют. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В коридор", "iraa_temple_corridor_1");
 
    };
 
};
 

	
 
iraa_temple_switch = obj {
 
    nam = "iraa_temple_switch";
 
    var {
 
        state = {false,false,false,false,false,false};
 
    };
 
    switch = function(s, index)
 
        if index < 7 and index > 0 then
 
            s.state[index] = not s.state[index];
 
        end;
 
        if not s.state[1] and not s.state[2] and s.state[3] and not s.state[4] and s.state[5] and not s.state[6] then
 
            -- A valid state
 
            return iraa_temple_room_0:open();
 
        else
 
            -- An invalid state
 
            return iraa_temple_room_0:close();
 
        end;
 
    end;
 
};
 

	
 
iraa_temple_lever_0 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой фиолетового цвета. ]];
 
        if iraa_temple_switch.state[1] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(1);
 
    end;
 
};
 

	
 
iraa_temple_lever_1 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой синего цвета. ]];
 
        if iraa_temple_switch.state[2] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(2);
 
    end;
 
};
 

	
 
iraa_temple_lever_2 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой зеленого цвета. ]];
 
        if iraa_temple_switch.state[3] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(3);
 
    end;
 
};
 

	
 
iraa_temple_lever_3 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой желтого цвета. ]];
 
        if iraa_temple_switch.state[4] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(4);
 
    end;
 
};
 

	
 
iraa_temple_lever_4 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой оранжевого цвета. ]];
 
        if iraa_temple_switch.state[5] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(5);
 
    end;
 
};
 

	
 
iraa_temple_lever_5 = obj {
 
    nam = "iraa_temple_lever_0";
 
    dsc = function(s)
 
        local r = [[Рядом со входом расположен едва заметный {рычаг} с отметкой красного цвета. ]];
 
        if iraa_temple_switch.state[6] then
 
            r = r..[[Сейчас он опущен вниз. ]];
 
        else
 
            r = r..[[Сейчас он поднят вверх. ]];
 
        end;
 
        return r;
 
    end;
 
    act = function(s)
 
        return iraa_temple_switch:switch(6);
 
    end;
 
};
 

	
 
iraa_temple_hidden_stairs = darkroom {
 
    nam = "iraa_temple_hidden_stairs";
 
    disp = "Храм Ираафаанотра, потайной ход";
 
    underwater = true;
 
    dsc_dark = [[Потайной спуск уходит далеко вниз, под храм. В темноте вы ничего не различаете. ]];
 
    dsc_halflit = function(s)
 
        if me() == player_learr then
 
            return [[Потайной спуск уходит далеко вниз, под храм. Глаза Леарр хорошо различают плавно уходящий вниз коридор. ]];
 
        else
 
            return [[Потайной спуск уходит далеко вниз, под храм. В слабом свете фонаря, встроенного в скафандр, вы различаете плавно уходящий вниз коридор. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("Наверх", "iraa_temple_room_0", 2);
 
        kh_vroom("Вниз", "iraa_temple_hidden_hall", 1);
 
    };
 
};
 

	
 
iraa_temple_button_ctr = function(nam, index)
 
    return obj {
 
        nam = nam;
 
        seen_level = 1;
 
        dsc = function(s)
 
            local im = "images/dyp_bg.png";
 
            for i = 1, #iraa_temple_hidden_hall.buttons[index] do
 
                im = im .. ";images/dyp_" .. tostring(iraa_temple_hidden_hall.buttons[index][i]) .. ".png";
 
            end;
 
            if (iraa_temple_hidden_hall.pressed_buttons[index]) then
 
                return "{Рычаг с символами " .. img(im) .."} включен.^";
 
            else
 
                return "{Рычаг с символами " .. img(im) .."} выключен.^";
 
            end;
 
        end;
 
        act = function(s)
 
            if iraa_temple_hidden_hall:check(index) then
 
                return [[Вы переключаете рычаг и узор на полу комнаты меняется. Металлические плиты в стенах комнаты поднимаются, открывая проходы вниз и наверх. ]];
 
            else
 
                return [[Вы переключаете рычаг и узор на полу комнаты меняется. ]];
 
            end;
 
        end;
 
    };
 
end;
 

	
 
iraa_temple_hidden_hall = room {
 
    var {
 
        active_parts = {false, false, false, false, false, false, false, false, false, false, false, false};
 
        pressed_buttons = {false, false, false, false, false, false, false, false};
 
        solved = false;
 
    };
 
    buttons = {
 
        {1, 5, 9, 11, 12};
 
        {1, 2, 3, 4};
 
        {4, 8, 10, 11, 12};
 
        {2, 4, 5, 6};
 
        {1, 5, 7, 9, 10, 11, 12};
 
        {2, 6, 9, 10, 12};
 
        {1, 3, 7, 8};
 
        {3, 7, 9, 10, 11};
 
    };
 
    pic = function(s)
 
        local pic = 'images/dyp_bg.png';
 
        local cnt = 0;
 
        for i = 1, #s.active_parts do
 
            if (s.active_parts[i]) then
 
                cnt = cnt + 1;
 
                pic = pic .. ";images/dyp_" .. tostring(i) .. ".png";
 
            end;
 
        end;
 
        if (cnt > 0) then
 
            return pic;
 
        else
 
            return nil;
 
        end;
 
    end;
 
    nam = "Храм Ираафаанотра, потайной зал";
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр оказывается в огромном зале. Мягкий, едва заметный свет исходит из самих стен. В центре зала находятся восемь рычагов, рядом с которыми нанесены символы. ]];
 
        else
 
            return [[Большой круглый зал. Мягкий, едва заметный свет исходит из самих стен. В центре зала расположено восемь рычагов, рядом с которыми нанесены какие-то символы. ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        if not s.solved then
 
            return [[Позади вас металлическая плита почти бесшумно сдвигается, закрывая вход. ]];
 
        end;
 
    end;
 
    obj = {
 
        iraa_temple_button_ctr("iraa_temple_b1", 1);
 
        iraa_temple_button_ctr("iraa_temple_b2", 2);
 
        iraa_temple_button_ctr("iraa_temple_b3", 3);
 
        iraa_temple_button_ctr("iraa_temple_b4", 4);
 
        iraa_temple_button_ctr("iraa_temple_b5", 5);
 
        iraa_temple_button_ctr("iraa_temple_b6", 6);
 
        iraa_temple_button_ctr("iraa_temple_b7", 7);
 
        iraa_temple_button_ctr("iraa_temple_b8", 8);
 
    };
 
    way = {
 
        kh_vroom("Наверх", "iraa_temple_hidden_stairs"):disable();
 
        kh_vroom("Вниз", "iraa_temple_hidden_storage"):disable();
 
    };
 
    check = function(s, index)
 
        s.pressed_buttons[index] = not s.pressed_buttons[index];
 
        
 
        for i = 1, #s.active_parts do
 
            s.active_parts[i] = false;
 
        end;
 
        
 
        for i = 1, #s.pressed_buttons do
 
            if (s.pressed_buttons[i]) then
 
                for j = 1, #s.buttons[i] do
 
                    s.active_parts[s.buttons[i][j]] = not s.active_parts[s.buttons[i][j]];
 
                end;
 
            end;
 
        end;
 
        
 
        s.solved = true;
 
        for i = 1, #s.active_parts do
 
            if (not s.active_parts[i]) then
 
                s.solved = false;
 
                break;
 
            end;
 
        end;
 
        
 
        if (s.solved) then
 
            path("Наверх"):enable();
 
            path("Вниз"):enable();
 
        end;
 
        
 
        return s.solved;
 
    end;
 
};
 

	
 
iraa_temple_hidden_storage = room {
 
    nam = "iraa_temple_hidden_storage";
 
    disp = [[Храм Ираафаанотра, хранилище]];
 
    underwater = true;
 
    dsc = function(s)
 
        if me() == player_learr then
 
            return [[Леарр находится в небольшой круглой комнате. Стены комнаты, как и в других скрытых помещенях храма, излучают слабый свет. ]];
 
        else
 
            return [[Стены этой небольшой комнаты излучают слабый свет. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("Наверх", "iraa_temple_hidden_hall");
 
    };
 
    obj = {
 
        "iraa_temple_hidden_pedestal"
 
    };
 
};
 

	
 
iraa_temple_hidden_pedestal = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "iraa_temple_hidden_pedestal";
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[В центре установлен металлический пьедестал, на котором лежит металлическая {табличка}. ]];
 
        else
 
            return [[В центре установлен металлический {пьедестал}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            item_lse_map.state = item_lse_map.state + 1;
 
            return [[Вы забираете металлическую табличку себе. ]];
 
        else
 
            return [[Вьедестал пуст. ]];
 
        end;
 
    end;
 
};
atlantis_iyhehevjiarr.lua
Show inline comments
 
@@ -17,13 +17,9 @@ char_aikerjarr_lev = obj {
 
	disp = "Аикерьярр";
 
	dsc = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
			return [[
 
				{Аикерьярр} стоит перед иллюминатором. ^
 
			]];
 
			return [[{Аикерьярр} стоит перед иллюминатором. ]];
 
		else
 
			return [[
 
				{Аикерьярр} смотрит на вас. ^
 
			]];
 
			return [[{Аикерьярр} смотрит на вас. ]];
 
		end;
 
	end;
 
	home = "leviathan_wheelhouse";
 
@@ -47,18 +43,12 @@ char_aikerjarr_lev = obj {
 
	end;
 
	act = function(s)
 
		if (not where(pl).leviathan) then
 
			return [[
 
				Вы не можете говорить с ним сейчас.
 
			]];
 
			return [[Вы не можете говорить с ним сейчас.]];
 
		end;
 
		if (atl_iyh_shockfish_dead) then
 
			return [[
 
				Аикерьярр молчит.
 
			]];
 
			return [[Аикерьярр молчит. ]];
 
		else
 
			return [[
 
				"Вы что-нужно-делайте. Я наблюдаю". 
 
			]];
 
			return [[Аикерьярр недовольно рычит: "Ты-хевьяр что-нужно-делай". ]];
 
		end;
 
	end;
 
};
 
@@ -77,7 +67,7 @@ iyh_far_from_entrance_foot = room {
 
		Через иллюминаторы вы видите вдалеке высокую скалу, простирающуюся на многие километры в обе стороны. Прямо перед вами, в скале вы видите массивные каменные двери храма, застывшие в открытом состоянии. Над дверьми вы видите небольшой козырек, поддерживаемый массивными колоннами. 
 
	]];
 
	way = {
 
		kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
	};
 
};
 
 
@@ -90,12 +80,11 @@ iyh_far_from_entrance = dlg {
 
	]];
 
	nam = "Левиафан, рубка";
 
	hideinv = true;
 
    leviathan = true;
 
	entered = function(s)
 
		atl_iyh_state = 7;
 
		if (not s.visited) then
 
			return [[
 
				Вы прибываете на место.
 
			]];
 
            atl_iyh_state = 7;
 
			return [[Вы прибываете на место. ]];
 
		end;
 
	end;
 
	dsc = function(s)
 
@@ -112,18 +101,31 @@ iyh_far_from_entrance = dlg {
 
		end;
 
	end;
 
	phr = {
 
		{tag="advance", always=true, "[Подойти ближе]", [[Послушные вашей воле, двигатели Левиафана приводят субмарину в движение и вы плавно приближаетесь ко входу в храм. ]], code [[ walk('iyh_near_temple'); ]]};
 
		{tag="advance", always=true, "[Подойти ближе]", [[Послушные вашей воле, двигатели Левиафана приводят субмарину в движение и вы плавно приближаетесь ко входу в храм. ]], code [[
 
            move(submarine_leviathan, "iyh_near_temple_foot");
 
            walk('iyh_near_temple');
 
        ]]};
 
		{tag="wait", "[Ждать]", [[Вы решаете подождать до наступления ночи и это правдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту. ]], code [[ 
 
			lifeon(iyh_far_from_entrance);
 
			atl_iyh_shockfish_away = 30;
 
		]]};
 
		{tag="light_temple", always=true, "[Осветить вход в храм]", [[Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат. ]], code [[ iyh_fight.distance = 1000; walk('iyh_fight'); ]]};
 
		{tag="light_temple", always=true, "[Осветить вход в храм]", function(s)
 
            if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
                iyh_fight.distance = 1000; walk('iyh_fight');
 
                return [[Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат. ]];
 
            else
 
                return [[Мощный луч света падает на вход в храм. Ничего не происходит. ]];
 
            end;
 
        end};
 
		{tag="light_wall_r", "[Осветить скалы справа от храма]", [[Мощный луч света освещает скалы по правую сторону от храма. Он плавно скользит по поверхности скалы, пока вы не натыкаетесь на то, что отсюда кажется вам каким-то ущельем. Возможно следует изучить его? ]], code [[ 
 
			iyh_near_temple:pon('ravine');
 
			pon('ravine'); 
 
		]]};
 
		{tag="light_wall_l", "[Осветить скалы слева от храма]", [[Мощный луч света освещает скалы по левую сторону от храма. Он плавно скользит по поверхности скалы, однако так и не натыкается ни на что интересное. ]]};
 
		{tag="ravine", false, always=true, "[Подойти ко входу в ущелье]", [[Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье. ]], code [[ walk('iyh_ravine_entry'); ]]};
 
		{tag="ravine", false, always=true, "[Подойти ко входу в ущелье]", [[Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье. ]], code [[ 
 
            move(submarine_leviathan, "iyh_ravine_entry_foot");
 
            walk('iyh_ravine_entry'); 
 
        ]]};
 
		{tag="away", always=true, "[Отойти от штурвала]", code = [[
 
			walk('leviathan_wheelhouse');
 
		]]};
 
@@ -275,7 +277,18 @@ iyh_fight_torpedo_temple = obj {
 
			return [[Цель слишком далеко. ]];
 
		else
 
			atl_iyh_entrance_destroyed = true;
 
			return [[Торпеда попадает в аккурат над храмом и вход оказывается завален тяжелыми глыбами. ]];
 
            
 
			pr [[Торпеда попадает в аккурат над храмом и вход оказывается завален тяжелыми глыбами. ]];
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
                pr [[Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь?!"^Она с неприязнью смотрит на вас и удаляется к себе в каюту. ]];
 
                rel_learr = rel_learr - 1;
 
                char_learr.home = "leviathan_cabin_3";
 
                leviathan_cabin_3.lock = true;
 
            elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0) then
 
                pr [[Аикерьярр отворачивается от иллюминатора и со злобой смотрит на вас: "Ты за-это-ответишь he'rr". ]];
 
                atl_rep_iraa = atl_rep_iraa - 1;
 
                atl_rep_dyp = atl_rep_dyp - 1;
 
            end;
 
		end;
 
	end;
 
};
 
@@ -304,18 +317,23 @@ iyh_fight_torpedo = obj {
 
				pr "Вы стреляете торпедой в ската. Торпеда взрывается достигнув цели и разрывает ската. Вода краснеет от крови, а вы теперь можете безопасно приблизиться к храму. ";
 
				
 
				if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
					pr [[Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь ненавистный-a'rr?!" ]];
 
					pr [[Леарр в ярости поднимается в рубку и кричит на вас: "Что ты делаешь ненавистный-a'rr?!"^Она с неприязнью смотрит на вас и удаляется к себе в каюту. ]];
 
                    rel_learr = -99;
 
                    atl_rep_iraa = atl_rep_iraa - 1;
 
                    atl_rep_dyp = atl_rep_dyp - 1;
 
                    char_learr.home = "leviathan_cabin_3";
 
                    leviathan_cabin_3.lock = true;
 
				elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0) then
 
					pr [[Аикерьярр отворачивается от иллюминатора и со злобой смотрит на вас: "Ты за-это-ответишь he'rr". ]];
 
				end;
 
				
 
				if (math.abs(iyh_fight.temple_distance) < 100) then
 
				walk("preview_unavailable_rayfish");
 
				--[[if (math.abs(iyh_fight.temple_distance) < 100) then
 
					walk("iyh_near_temple");
 
				else
 
					walk("iyh_far_from_entrance");
 
				end;
 
				
 
				return;
 
				return;]]
 
			end;
 
			return iyh_fight:maketurn();
 
		end;
 
@@ -346,7 +364,7 @@ iyh_fight_recharge = obj {
 
	nam = "iyh_fight_torpedo";
 
	dsc = "{Перезарядить торпеды}^";
 
	act = function(s)
 
		--Если в партии нет никого кроме Леарр/Аикерьярра, то игрок перезаряжает торопеды сам, иначе - отдает преказ
 
		--Если в партии нет никого кроме Леарр/Аикерьярра, то игрок перезаряжает торопеды сам, иначе -- отдает приказ
 
		if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0 or ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0) then
 
			pr "Вы отдаете по телефону приказ перезарядить торпедные аппараты. ";
 
		else
 
@@ -497,6 +515,7 @@ iyh_ravine_entry = room {
 
	]];
 
	dsc = [[Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. ]];
 
	hideinv = true;
 
    leviathan = true;
 
	way = {
 
		kh_vroom("Отойти от штурвала", function(s)
 
			return "leviathan_wheelhouse";
 
@@ -506,9 +525,26 @@ iyh_ravine_entry = room {
 
			iyh_labyrinth.direction = 1;
 
			return "iyh_labyrinth";
 
		end);
 
		kh_vroom("Ко входу в храм", "iyh_near_temple");
 
		kh_vroom("Отойти назад", "iyh_far_from_entrance");
 
		kh_vroom("Ко входу в храм", function(s)
 
            move(submarine_leviathan, "iyh_near_temple_foot");
 
            return "iyh_near_temple";
 
        end);
 
		kh_vroom("Отойти назад", function(s)
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
            return "iyh_far_from_entrance";
 
        end);
 
	};
 
    entered = function(s)
 
        move(submarine_leviathan, iyh_ravine_entry_foot);
 
    end;   
 
};
 
 
iyh_ravine_entry_foot = room {
 
    nam = "Ущелье";
 
    no_exit = [[
 
        Нет смысла покидать Левиафан здесь. 
 
    ]];
 
    view = [[Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. ]];
 
};
 
 
--[[
 
@@ -527,7 +563,7 @@ iyh_labyrinth_template = {
 
	[3]= {[1]={l={5, 1}, f={4,1}},				[2]={f={2,2}}};
 
	[4]= {[1]={}, 								[2]={f={3,2}}};
 
	[5]= {[1]={l={37, 1}, f={6,1} },			[2]={f={3,2}}};
 
	[6]= {[1]={l={7,1}, r={33, 1}},  			[2]={f={5,2}}};
 
	[6]= {[1]={l={33, 1}, r={7,1}},  			[2]={f={5,2}}};
 
	[7]= {[1]={l={12,1}, f={11,1}, r={8,1}},	[2]={f={6,2}}};
 
	[8]= {[1]={l={10,1}, r={9,1}}, 				[2]={f={7,2}}};
 
	[9]= {[1]={}, 								[2]={f={8,2}}};
 
@@ -563,31 +599,49 @@ iyh_labyrinth_template = {
 
 
iyh_labyrinth = room {
 
	var {
 
		location = 1;
 
		position = 1;
 
		direction = 1;
 
	};
 
	no_exit = [[Нет смысла покидать Левиафан здесь. ]];
 
	nam = "Штурвал Левиафана";
 
    leviathan = true;
 
    forcedsc = true;
 
    entered = function(s)
 
        s:update();
 
    end;   
 
	dsc = function(s)
 
		pr [[Вы находитесь в глубоком и узком ущелье. ]];
 
		if (iyh_labyrinth_template[s.location]["f"]) then
 
		if (iyh_labyrinth_template[s.position][s.direction]["f"]) then    
 
			pr [[Ущелье продолжается вперед. ]];
 
		end;
 
		if (iyh_labyrinth_template[s.location]["l"] and iyh_labyrinth_template[s.location]["r"]) then
 
		if (iyh_labyrinth_template[s.position][s.direction]["l"] and iyh_labyrinth_template[s.position][s.direction]["r"]) then
 
			pr [[Влево и вправо уходят ответвления. ]];
 
		elseif (iyh_labyrinth_template[s.location]["l"]) then
 
		elseif (iyh_labyrinth_template[s.position][s.direction]["l"]) then
 
			pr [[Влево уходит ответвление. ]];
 
		elseif (iyh_labyrinth_template[s.location]["r"]) then
 
		elseif (iyh_labyrinth_template[s.position][s.direction]["r"]) then
 
			pr [[Вправо уходит ответвление. ]];
 
		elseif (not iyh_labyrinth_template[s.location]["f"]) then
 
		elseif (not iyh_labyrinth_template[s.position][s.direction]["f"]) then
 
			pr [[Дальше пути нет. ]];
 
		end;
 
	end;
 
	update = function(s)
 
        print(s.position, s.direction);
 
        iyh_lab_forward:disable();
 
        iyh_lab_left:disable();
 
        iyh_lab_right:disable();
 
        if (iyh_labyrinth_template[s.position][s.direction]["f"]) then    
 
            iyh_lab_forward:enable();
 
        end;
 
        if (iyh_labyrinth_template[s.position][s.direction]["l"]) then    
 
            iyh_lab_left:enable();
 
        end;
 
        if (iyh_labyrinth_template[s.position][s.direction]["r"]) then    
 
            iyh_lab_right:enable();
 
        end;
 
	end;
 
	obj = {
 
        "iyh_lab_left",
 
		"iyh_lab_forward",
 
		"iyh_lab_left",
 
		"iyh_lab_right",
 
		"iyh_lab_turn"
 
	};
 
@@ -601,8 +655,8 @@ iyh_lab_forward = obj {
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		if (type(iyh_labyrinth_template[p][d]["f"]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]["f"]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["f"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["f"][2];
 
@@ -620,8 +674,8 @@ iyh_lab_left = obj {
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		if (type(iyh_labyrinth_template[p][d]["l"]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]["l"]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["l"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["l"][2];
 
@@ -639,8 +693,8 @@ iyh_lab_right = obj {
 
		local p = iyh_labyrinth.position;
 
		local d = iyh_labyrinth.direction;
 
		
 
		if (type(iyh_labyrinth_template[p][d]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]);
 
		if (type(iyh_labyrinth_template[p][d]["r"]) == 'string') then
 
			walk(iyh_labyrinth_template[p][d]["r"]);
 
		else
 
			iyh_labyrinth.position = iyh_labyrinth_template[p][d]["r"][1];
 
			iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["r"][2];
 
@@ -667,11 +721,10 @@ iyh_lab_turn = obj {
 
 
iyh_rear_entrance = room {
 
	nam = "Левиафан";
 
	dsc = [[
 
		Вы находитесь в конце ущелья. Луч прожектора освещает небольшой проход в скале. 
 
	]];
 
    leviathan = true;
 
	dsc = [[Вы находитесь в конце ущелья. Луч прожектора освещает небольшой проход в скале. ]];
 
	way = {
 
		kh_vroom("Отойти от штурвала", "iyh_rear_entrance_foot");
 
		kh_vroom("Отойти от штурвала", "leviathan_wheelhouse");
 
		kh_vroom("В ущелье", function(s)
 
			iyh_labyrinth.position = 23;
 
			iyh_labyrinth.direction = 2;
 
@@ -685,27 +738,30 @@ iyh_rear_entrance = room {
 
 
iyh_rear_entrance_foot = room {
 
	nam = "Ущелье";
 
	dsc = [[
 
		Узкое глубокое ущелье. Вы находитесь в одном из его концов. В скале вы видите небольшой проход явно искусственного происхождения.
 
	]];
 
	dsc = [[Узкое глубокое ущелье. Вы находитесь в одном из его концов. В скале вы видите небольшой проход явно искусственного происхождения. ]];
 
    view = [[Левиафан находится в одном из тупиков изкого глубокого ущелья. В скале перед субмариной виден небольшой проход искусственного происхождения. Преактически неприметный проем сейчас освещен ярким лучом прожектора вашей субмарины. ]];
 
    underwater = true;
 
    handwheel_room = "iyh_rear_entrance";
 
	way = {
 
		kh_vroom("В Левиафан", "leviathan_airlock");
 
		kh_vroom("Внутрь", "iyh_temple_rear_corridor_entry");
 
        kh_vroom("В Левиафан", function(s)
 
            if atl_iyh_state >= 8 then
 
                return "leviathan_airlock";
 
            else
 
                p [[Стоит осмотреть храм полностью перед тем, как возвращаться. ]];
 
                return false;
 
            end;
 
        end);      
 
		kh_vroom("В проход", "iyh_temple_rear_corridor_entry");
 
	};
 
	entered = function(s)
 
		if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and not char_learr.accompany) then
 
			pr [[
 
				Леарр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду".
 
			]];
 
			
 
		if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and not char_learr.follow) then
 
			pr [[Леарр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду". ]];
 
			char_learr:accompany(true);
 
			char_radcliffe:accompany(false);
 
			char_wright:accompany(false);
 
			char_anna:accompany(false);
 
		elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0 and not char_aikerjarr_lev.accompany) then
 
			pr [[
 
				Аикерьярр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду".
 
			]];
 
        elseif (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0 and not char_aikerjarr_lev.follow) then
 
			pr [[Аикерьярр входит в шлюз вслед за вами: "Я с-тобой-пойду". ]];
 
			char_aikerjarr_lev:accompany(true);
 
			char_radcliffe:accompany(false);
 
			char_wright:accompany(false);
 
@@ -724,6 +780,7 @@ iyh_temple_rear_corridor_entry = room {
 
	dsc = [[
 
		Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. 
 
	]];
 
    underwater = true;
 
	way = {
 
		kh_vroom("Выйти", "iyh_rear_entrance_foot");
 
		kh_vroom("В левую комнату", "iyh_left_room_1");
 
@@ -734,24 +791,22 @@ iyh_temple_rear_corridor_entry = room {
 
 
iyh_temple_rear_corridor_middle = room {
 
	nam = "Коридор";
 
	dsc = [[
 
		Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. 
 
	]];
 
	dsc = [[Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. ]];
 
    underwater = true;
 
	way = {
 
		kh_vroom("К выходу", "iyh_temple_rear_corridor_entry");
 
		kh_vroom("К задней двери", "iyh_temple_rear_corridor_entry");
 
		kh_vroom("В левую комнату", "iyh_left_room_2");
 
		kh_vroom("В правую комнату", "iyh_right_room_2");
 
		kh_vroom("Пройти дальше", "iyh_temple_rear_corridor_end");
 
		kh_vroom("К главному залу", "iyh_temple_rear_corridor_end");
 
	};
 
};
 
 
iyh_temple_rear_corridor_end = room {
 
	nam = "Коридор";
 
	dsc = [[
 
		Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. 
 
	]];
 
	dsc = [[Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. Перед вами расположен проход, ведущий в основное помещение храма. ]];
 
    underwater = true;
 
	way = {
 
		kh_vroom("К выходу", "iyh_temple_rear_corridor_middle");
 
		kh_vroom("К задней двери", "iyh_temple_rear_corridor_middle");
 
		kh_vroom("В левую комнату", "iyh_left_room_3");
 
		kh_vroom("В правую комнату", "iyh_right_room_3");
 
		kh_vroom("В главный зал", "iyh_temple_main_hall_end");
 
@@ -760,17 +815,16 @@ iyh_temple_rear_corridor_end = room {
 
 
iyh_left_room_1 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_entry");
 
	};
 
	obj = {
 
		--"item_navjiarr_chart_2"
 
	};
 
};
 
 
iyh_right_room_1 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_entry");
 
@@ -782,17 +836,16 @@ iyh_right_room_1 = room {
 
 
iyh_left_room_2 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_middle");
 
	};
 
	obj = {
 
		--"item_navjiarr_chart_3"
 
	};
 
};
 
 
iyh_right_room_2 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_middle");
 
@@ -804,14 +857,14 @@ iyh_right_room_2 = room {
 
 
iyh_left_room_3 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_end");
 
        kh_vroom("В скрытый проход", "iyh_temple_hidden_room_1"):disable();
 
	};
 
	obj = {
 
		--"item_navjiarr_chart_1"
 
        "iyh_old_navjiarr_body",
 
		"iyh_old_navjiarr_body",
 
        "iyh_item_record",
 
        "iyh_room_wall",
 
        "iyh_room_wall_gap"
 
@@ -843,7 +896,7 @@ iyh_item_record = obj {
 
    inv = function(s)
 
        --Написать исходный навьярский вариант таблички
 
        if (language_known) then
 
            return [[Табличка гласит: "Те, кто найдут это, пусть знают, что здесь покоится истинный глаз Дипатреанотра, служащий разгадкой этого храма. Знайте, читающие это, что реликвию я взял для способствования осуществления пророчества о спящем в глубине. Для открытия храма, взгляните истинным глазом напротив моего ложа. Другие фрагменты карты, ведущей к цели лежат в двух близлежащих городах. Еще два - в далеких землях, в местах известных как Венаэданотр и Нлейисланотр". Чуть ниже дописано: "Если Вилрьярр еще здесь, отпустите его. Ему незачем оставаться здесь". ]];
 
            return [[Табличка гласит: "Те, кто найдут это, пусть знают, что здесь покоится истинный глаз Дипатреанотра, служащий разгадкой этого храма. Знайте, читающие это, что реликвию я взял для способствования осуществления пророчества о спящем в глубине. Для открытия храма, взгляните истинным глазом напротив моего ложа. Другие фрагменты карты, ведущей к цели лежат в двух близлежащих городах. Еще два -- в далеких землях, в местах известных как Венаэданотр и Нлейисланотр". Чуть ниже дописано: "Если Вилрьярр еще здесь, отпустите его. Ему незачем оставаться здесь". ]];
 
        else
 
            return [[Табличка содержит навьярские письмена, которые вы не понимаете. ]];
 
        end;
 
@@ -858,8 +911,20 @@ iyh_item_amulet = obj {
 
 
iyh_room_wall = obj {
 
    nam = "iyh_room_wall";
 
    dsc = [[{Стена} слева от входа не содержит ниш, в отличие от стен в других комнатах. ]];
 
    act = [[Гладкая каменная стена. Глубокая трещина от потолка до пола пересекает ее посередине. Вы не видите ничего необычного. ]];
 
    dsc = function(s)
 
        if disabled(iyh_room_wall_gap) then
 
            return [[Одна из стен комнаты раздвинулась в стороны, открывая проход в скрытое помещение храма. ]];
 
        else
 
            return [[{Стена} слева от входа не содержит ниш, в отличие от стен в других комнатах. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if disabled(iyh_room_wall_gap) then
 
            return [[Гладкая каменная стена раздвинулась в стороны, открывая проход в скрытое помещение храма. ]];
 
        else
 
            return [[Гладкая каменная стена. Глубокая трещина от потолка до пола пересекает ее посередине. Вы не видите ничего необычного. ]];
 
        end;
 
    end;
 
};
 
 
iyh_room_wall_gap = obj {
 
@@ -868,6 +933,7 @@ iyh_room_wall_gap = obj {
 
    act = function(s)
 
        if (iyh_looking_glass.seen) then
 
            path('В скрытый проход'):enable();
 
            s:disable();
 
            return [[Вы осторожно нащупываете скрытую внутри трещины кнопку и нажимаете ее. Каменные плиты отодвигаются в стороны, образуя проход в скрытое помещение храма. ]];
 
        else
 
            return [[Просто трещина, ничего интересного. ]];
 
@@ -886,13 +952,14 @@ iyh_looking_glass = obj {
 
    use = function(s, o)
 
        if (o == iyh_room_wall or o == iyh_room_wall_gap) then
 
            s.seen = true;
 
            return "Через трубу стена выглядит совсем иначе - картинка странным образом искажается, позволяя видеть детали, скрытые от обычного взора. Стоя прямо напротив трещины и глядя внутрь, вы замечаете небольшой прямоугольный выступ, примерно на уровне шеи. ";
 
            return "Через трубу стена выглядит совсем иначе -- картинка странным образом искажается, позволяя видеть детали, скрытые от обычного взора. Стоя прямо напротив трещины и глядя внутрь, вы замечаете небольшой прямоугольный выступ, примерно на уровне шеи. ";
 
        end;
 
    end;
 
};
 
 
iyh_right_room_3 = room {
 
	nam = "Комната";
 
    underwater = true;
 
	dsc = [[Небольшая комната, вытесанная в скале. Внутри почти ничего не сохранилось, кроме каменного пъедестала в центре. Единственный дверной проем ведет в коридор. В стенах слева и справа от входа сделано несколько глубоких ниш. ]];
 
	way = {
 
		kh_vroom("В коридор", "iyh_temple_rear_corridor_end");
 
@@ -905,6 +972,7 @@ iyh_right_room_3 = room {
 
 
iyh_temple_hidden_room_1 = room {
 
    nam = "iyh_temple_hidden_room_1";
 
    underwater = true;
 
    disp = "Скрытая комната";
 
    dsc = [[Небольшая комната, вытесанная в скале. Надежно спрятанная от посторонних глаз, она хранила свои тайны многие столетия, пока вы не открыли ее. Сейчас одна из стен ее раскрылась, открывая проход внутрь. ]];
 
    way = {
 
@@ -949,6 +1017,7 @@ iyh_temple_hidden_wall_1 = obj {
 
 
iyh_temple_hidden_room_2 = room {
 
    nam = "iyh_temple_hidden_room_2";
 
    underwater = true;
 
    disp = "Скрытая комната";
 
    dsc = [[Небольшая комната, вытесанная в скале. Надежно спрятанная от посторонних глаз, она хранила свои тайны многие столетия, пока вы не открыли ее. ]];
 
    way = {
 
@@ -1026,13 +1095,10 @@ iyh_shockfish = obj {
 
 
iyh_temple_main_hall_enter = function(s)
 
    remove(iyh_shockfish, here());
 
    print("forfag");
 
    if (atl_iyh_shockfish_away == 0 and atl_iyh_shockfish_away and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
        if have(iyh_item_amulet) then
 
            print("forfag1");
 
            put(iyh_shockfish, here());
 
        else
 
            print("forfag2");
 
            walk("game_over_shockfish_2");
 
        end;
 
    end;
 
@@ -1040,6 +1106,7 @@ end;
 
 
iyh_temple_main_hall_end = room {
 
    nam = "Храм";
 
    underwater = true;
 
    dsc = [[Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь в дальнем конце зала. Массивная дверь ведет в задние помещения храма. ]];
 
    enter = iyh_temple_main_hall_enter;
 
    way = {
 
@@ -1050,6 +1117,7 @@ iyh_temple_main_hall_end = room {
 
 
iyh_temple_main_hall_middle = room {
 
	nam = "Храм";
 
    underwater = true;
 
	dsc = [[
 
		Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Слева и справа от вас вы видите небольшие проемы, ведущие в боковые помещения. 
 
	]];
 
@@ -1058,7 +1126,7 @@ iyh_temple_main_hall_middle = room {
 
	};
 
	enter = iyh_temple_main_hall_enter;
 
	way = {
 
		kh_vroom("К выходу", "iyh_temple_main_hall_entry");
 
		kh_vroom("К выходу из храма", "iyh_temple_main_hall_entry");
 
		kh_vroom("В конец зала", "iyh_temple_main_hall_end");
 
		kh_vroom("Налево", "iyh_temple_left_hall");
 
		kh_vroom("Направо", "iyh_temple_right_hall");
 
@@ -1067,6 +1135,7 @@ iyh_temple_main_hall_middle = room {
 
 
iyh_temple_main_hall_entry = room {
 
	nam = "Храм";
 
    underwater = true;
 
	dsc = [[
 
		Главный зал древнего навьярского святилища. В стенах слева и справа вырезаны небольшие углубления, на которых некогда покоились ценные реликвии. Сейчас большинство из них пусты. Потолок находится на высоте нескольких десятков метров, но ни лестниц, ни уступов нет. Вы находитесь у входа в зал. 
 
	]];
 
@@ -1077,8 +1146,8 @@ iyh_temple_main_hall_entry = room {
 
		end;
 
	end;
 
	way = {
 
		kh_vroom("Выйти", "iyh_near_temple_foot");
 
		kh_vroom("Пройти дальше", "iyh_temple_main_hall_middle");
 
		kh_vroom("Выйти из храма", "iyh_near_temple_foot");
 
		kh_vroom("В центр зала", "iyh_temple_main_hall_middle");
 
	};
 
	obj = {
 
		"item_temple_disk"
 
@@ -1087,7 +1156,8 @@ iyh_temple_main_hall_entry = room {
 
 
iyh_temple_left_hall = room {
 
	nam = "Храм";
 
	dsc = [[Вы находитесь в одной из боковых комнат храма. Небольшое помещение - не более десятка метров в ширину. ]];
 
    underwater = true;
 
	dsc = [[Вы находитесь в одной из боковых комнат храма. Небольшое помещение -- не более десятка метров в ширину. ]];
 
	way = {
 
		kh_vroom("В главный зал", "iyh_temple_main_hall_middle");
 
        kh_vroom("В скрытое помещение", "iyh_temple_hidden_room_1"):disable();
 
@@ -1102,8 +1172,9 @@ iyh_temple_left_hall = room {
 
 
iyh_temple_right_hall = room {
 
	nam = "Храм";
 
    underwater = true;
 
	dsc = [[
 
		Вы находитесь в одной из боковых комнат храма. Небольшое помещение - не более десятка метров в ширину. 
 
		Вы находитесь в одной из боковых комнат храма. Небольшое помещение -- не более десятка метров в ширину. 
 
	]];
 
    checkCoder = function(s, phrase)
 
        if (phrase == "aed'rr") then
 
@@ -1151,6 +1222,7 @@ iyh_temple_answer_hall_plaque = obj {
 
 
iyh_temple_descent_l = darkroom {
 
    nam = "Храм, спуск";
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
@@ -1162,6 +1234,7 @@ iyh_temple_descent_l = darkroom {
 
 
iyh_temple_descent_r = darkroom {
 
    nam = "Храм, спуск";
 
    underwater = true;
 
    dsc_halflit = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. ]];
 
    dsc_dark = [[Вы идете по длинной крутой лестнице, вырезанной в толще скалы. Она уходит куда-то вглубь земли, под храм. В темноте вы ничего не видите. ]];
 
    way = {
 
@@ -1172,17 +1245,19 @@ iyh_temple_descent_r = darkroom {
 
 
iyh_temple_under_corridor_1 = darkroom {
 
    nam = "Под храмом";
 
    underwater = true;
 
    dsc_halflit = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. Слева и справа вы видите проходы, ведущие к лестницам наверх. ]];
 
    dsc_dark = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. В темноте вы различаете едва уловимое свечение откуда-то в конце коридора. ]];
 
    way = {
 
        kh_vroom("На лестницу слева", "iyh_temple_right_hall", 1);
 
        kh_vroom("На лестницу справа", "iyh_temple_right_hall", 1);
 
        kh_vroom("На лестницу слева", "iyh_temple_descent_l", 1);
 
        kh_vroom("На лестницу справа", "iyh_temple_descent_r", 1);
 
        kh_vroom("Дальше по коридору", "iyh_temple_under_corridor_2", 2);
 
    };
 
};
 
 
iyh_temple_under_corridor_2 = darkroom {
 
    nam = "Под храмом";
 
    underwater = true;
 
    dsc_halflit = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. ]];
 
    dsc_dark = [[Темный коридор, расположенный под храмом. Скрытый от посторонних глаз, он простоял нетронутым сотни, если не тысячи лет, храня древние тайны навьяров. ]];
 
    obj = {
 
@@ -1207,7 +1282,7 @@ iyh_temple_under_plaque = obj {
 
    nam = "iyh_temple_under_plaque";
 
    seen_level = 2;
 
    dsc = function(s)
 
        if (pl.has_light) then
 
        if (me().has_light) then
 
            return [[Проход дальше закрывает массивная каменная дверь. Вы не видите никаких способов открыть ее. На двери расположена небольшая черная {табличка} из неизвестного материала. ]];
 
        elseif (language_known) then
 
            return [[Проход дальше закрывает массивная каменная дверь. Вы не видите никаких способов открыть ее. На двери расположена небольшая {табличка} из неизвестного материала. В темноте вы видите на табличке едва заметные светящиеся полосы -- очевидно они утратили свою яркость от времени. Надпись гласит: "Назови себя и ты войдешь". ]];
 
@@ -1220,11 +1295,15 @@ iyh_temple_under_plaque = obj {
 
 
iyh_temple_under_room = darkroom {
 
    nam = "iyh_temple_under_room";
 
    underwater = true;
 
    disp = "Под храмом";
 
    dsc_halflit = [[Небольшая темная комната, скрытая в глубинах древнего навьярского храма. Вы первые, кто потревожил ее за долгие столетия. В центре находится каменный пьедестал. ]];
 
    dsc_dark = [[Небольшая темная комната, скрытая в глубинах древнего навьярского храма. В темноте вы с трудом различаете очертания предметов. ]];
 
    obj = {
 
        "item_lse_map"
 
        "item_lse_map";
 
    };
 
    way = {
 
        kh_vroom("Назад, в коридор", "iyh_temple_under_corridor_2", 1);
 
    };
 
};
 
 
@@ -1312,21 +1391,20 @@ iyh_pedestal = obj {
 
		else
 
			s.taken = true;
 
            take(iyh_looking_glass);
 
			return [[Вы поднимаете покоящуюся на пьедестале подзорную трубу. ]];
 
			p [[Вы поднимаете покоящуюся на пьедестале подзорную трубу. ]];
 
            if ArrayUtils.indexOf(pl.party, 'aikerjarr') then
 
                
 
            end;
 
		end;
 
	end;
 
};
 
 
iyh_near_temple = dlg {
 
	nam = "Штурвал Левиафана";
 
	dsc = [[
 
		Через иллюминаторы вы видите прямо перед собой массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы.
 
	]];
 
	dsc = [[Через иллюминаторы вы видите прямо перед собой массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
	enter = function(s)
 
		if (atl_iyh_shockfish_away == 0 and not atl_iyh_shockfish_dead and not atl_iyh_shockfish_left) then
 
			pr [[
 
				Как только вы приближаетесь, скат выплывает из свого жилища, чтобы прогнать посмевших приблизиться к нему.
 
			]];
 
			pr [[Как только вы приближаетесь, скат выплывает из свого жилища, чтобы прогнать посмевших приблизиться к нему. ]];
 
			iyh_fight.temple_distance = 50;
 
			iyh_fight.distance = 50;
 
			walk(iyh_fight);
 
@@ -1338,11 +1416,15 @@ iyh_near_temple = dlg {
 
	phr = {
 
		{tag="ravine", false, always=true, "[Ко входу в ущелье]", [[
 
			Вы поворачиваете штурвал и включаете двигатели Левиафана. Через несколько минут вы оказываетесь у входа в ущелье.
 
		]], code [[ walk('iyh_ravine_entry'); ]]};
 
		{tag="away", always=true, "[Отойти от штурвала]", code = [[
 
		]], code [[ 
 
            move(submarine_leviathan, "iyh_ravine_entry_foot");
 
            walk('iyh_ravine_entry'); 
 
        ]]};
 
 		{tag="away", always=true, "[Отойти от штурвала]", code = [[
 
			walk('leviathan_wheelhouse');
 
		]]};
 
		{tag="back", always=true, "[Вернуться к исходной позиции]", code = [[
 
            move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
			walk('iyh_far_from_entrance');
 
		]]};
 
	};
 
@@ -1350,11 +1432,32 @@ iyh_near_temple = dlg {
 
 
iyh_near_temple_foot = room {
 
	nam = "Вход в храм";
 
	dsc = [[
 
		Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся далеко над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы.
 
	]];
 
    underwater = true;
 
	dsc = [[Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
    view = [[Прямо перед собой вы видите массивные каменные двери, вытесанные в скале, возвышающейся над вами. Над ними вы видите небольшой козырек, поддерживаемый массивными колоннами. Древний камень все еще хранит орнамент, выгравированный на дверях, колоннах и ступенях лестницы. ]];
 
    entered = function(s)
 
        if (ArrayUtils.indexOf(pl.party, 'aikerjarr') ~= 0 and not char_aikerjarr_lev.follow) then
 
            pr [[Аикерьярр входит в шлюз вслед за вами: "Я с-тобой-пойду". ]];
 
            char_aikerjarr_lev:accompany(true);
 
            char_radcliffe:accompany(false);
 
            char_wright:accompany(false);
 
            char_anna:accompany(false);
 
        end;
 
        
 
        path("В Левиафан"):disable();
 
        if (where(submarine_leviathan) == here()) then
 
            path("В Левиафан"):enable();
 
        end;
 
    end;
 
	way = {
 
		kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В Левиафан", function(s)
 
            if atl_iyh_state >= 8 then
 
                return "leviathan_airlock";
 
            else
 
                p [[Стоит осмотреть храм полностью перед тем, как возвращаться. ]];
 
                return false;
 
            end;
 
        end);      
 
        kh_vroom("В храм", "iyh_temple_main_hall_entry");
 
	};
 
};
 
@@ -1362,170 +1465,163 @@ iyh_near_temple_foot = room {
 
iyh_outro_svetlova = room {
 
	nam = "Атлантида, док Левиафана";
 
	dsc = function(s)
 
		pr [[
 
			При выходе из Левиафана, вас встречает Екатерина Светлова. Вы рассказываете ей обо всем произошедшем. 
 
		]];
 
		pr [[При выходе из Левиафана, вас встречает Екатерина Светлова. Вы рассказываете ей обо всем произошедшем. ]];
 
		if (atl_iyh_shockfish_dead) then
 
			pr [[
 
				Она забирает у вас артефакты для изучения, но крайне недовольна убийством ската: "Артефакты, конечно будут полезны, но то что вы сделали ставит под угрозу дальнейшее существование станции. Хвала небесам, что рыбни об этом не знают и может быть, не узнают о произошедшем".^
 
			]];
 
			pr [[Она забирает у вас артефакты для изучения, но крайне недовольна убийством ската: "Артефакты, конечно, будут полезны, но то что вы сделали ставит под угрозу дальнейшее существование станции. Хвала небесам, что рыбни об этом не знают и может быть, не узнают о произошедшем".^ ]];
 
		elseif (atl_iyh_entrance_destroyed) then
 
			pr [[
 
				Она забирает у вас артефакты для изучения, но огорчена разрушением святилища: "Очень жаль, что пришлось разрушить храм - там наверняка было еще много интересного".^
 
			]];
 
			pr [[Она забирает у вас артефакты для изучения, но огорчена разрушением святилища: "Очень жаль, что пришлось разрушить храм -- там наверняка было еще много интересного".^ ]];
 
		else
 
			pr [[
 
				Она забирает у вас артефакты для изучения и благодарит вас: "Отлично, вы оказали нам неоценимую услугу. Скоро я верну реликвию в Дипатреанотр и ситуация будет исчерпана".^
 
			]];
 
			pr [[Она забирает у вас артефакты для изучения и благодарит вас: "Отлично, вы оказали нам неоценимую услугу. Скоро я верну реликвию в Дипатреанотр и ситуация будет исчерпана".^ ]];
 
		end;
 
		
 
		--[[pr [ [
 
			Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, к вам входит Екатерина и отдает часть табличек, найденных вами: "Это вам понадобится в поисках отца. Эти таблички помогут вам проследовать путем Уильяма. Я уже говорила, что он отправился на поиски древнего навьярского города, Лсэрианотра. Должно быть, он сделал копии этих диаграмм. Но здесь не все просто - это лишь фрагменты карт и чтобы воспользоваться ими, вам придется найти недостающие части. К сожалению, я не знаю, где их можно найти. Но, скорее всего, знают навьяры. 
 
		] ];
 
		if (not atl_iof_learr_dead) then
 
			pr [ [
 
				Вам следует начать с Ираафаанотра - родного города Леарр. Наверняка, она согласится отправиться туда с вами". 
 
			] ];
 
		else
 
			pr [ [
 
				Рядом с нами расположено два города - Дипатреанотр и Ираафаанотр, и я советую вам их посетить". 
 
			] ];
 
		end;]]
 
		pr [[
 
			Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое что для вас".
 
		]];
 
		pr [[Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
	end;
 
	entered = function(s)
 
		atl_iyh_artifacts_on_atlantis = true;
 
		remove(item_statuette);
 
		remove(item_temple_disk);
 
		remove(item_legend_of_temple);
 
		remove(item_legend_of_dark_source);
 
		remove(item_legend_of_first_city);
 
		remove(item_legend_of_hunter);
 
		remove(item_navjiarr_chart_1);
 
		remove(item_navjiarr_chart_2);
 
		remove(item_navjiarr_chart_3);
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
                  
 
	end;
 
	obj = {
 
		vroom("Продолжить", "atl_luna_drake_room");
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
};
 
 
iyh_outro_aikerrjarr = room {
 
	nam = "Атлантида, док Левиафана";
 
	dsc = function(s)
 
		pr [[
 
			При выходе из Левиафана, вас встречает Екатерина Светлова. Аикерьярр сразу же требует: "Ты мне-отдашь взятое-тобой-в-храме-все". На что Светлова просит его: "Позвольте кратко взглянуть на все". Аикерьярр с явным недовольством соглашается. Пока Екатерина осматривает реликвии, вы рассказываете ей обо всем произошедшем. Как только вы заканчиваете рассказ, 
 
		]];
 
		
 
		pr [[При выходе из Левиафана, вас встречает Екатерина Светлова. Аикерьярр сразу же требует: "Ты мне-отдашь взятое-тобой-в-храме-все". На что Светлова просит его: "Позвольте кратко взглянуть на все". Аикерьярр с явным недовольством соглашается. Пока Екатерина осматривает реликвии, вы рассказываете ей обо всем произошедшем. Как только вы заканчиваете рассказ, ]];		
 
		if (atl_iyh_shockfish_dead) then
 
			pr [[
 
				она недовольно восклицает: "Зачем вы это сделали?!", - После чего, уже спокойнее добавляет: "Впрочем, можете не отвечать. Что сделано то сделано".^
 
			]];
 
			pr [[она лишь тяжело вздыхает глядя на вас, после чего уходит, махнув рукой.^ ]];
 
		elseif (atl_iyh_entrance_destroyed) then
 
			pr [[
 
				она огорченно комментирует: "Очень жаль, что пришлось разрушить храм - там наверняка было еще много интересного".^
 
			]];
 
			pr [[она огорченно комментирует: "Очень жаль, что пришлось разрушить храм -- там наверняка было еще много интересного".^ ]];
 
		else
 
			pr [[
 
				она благодарит вас: "Отлично, вы оказали нам неоценимую услугу. Скоро я верну реликвию в Дипатреанотр и ситуация будет исчерпана".^
 
			]];
 
			pr [[она благодарит вас: "Отлично, вы оказали нам неоценимую услугу. Скоро я верну реликвию в Дипатреанотр и ситуация будет исчерпана".^ ]];
 
		end;
 
		
 
		pr [[
 
			Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое что для вас".
 
		]];
 
		pr [[Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
	end;
 
	hideinv = true;
 
	entered = function(s)
 
		remove(item_statuette);
 
		remove(item_temple_disk);
 
		remove(item_legend_of_temple);
 
		remove(item_legend_of_dark_source);
 
		remove(item_legend_of_first_city);
 
		remove(item_legend_of_hunter);
 
		remove(item_navjiarr_chart_1);
 
		remove(item_navjiarr_chart_2);
 
		remove(item_navjiarr_chart_3);
 
        for i in #pl.party do
 
            if pl.party[i] == 'aikerjarr' then 
 
                table.remove(pl.party, i);
 
                break;
 
            end;
 
        end;
 
        remove(char_aikerjarr_lev, where(char_aikerjarr_lev));
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
	end;
 
	obj = {
 
		vroom("Продолжить", "atl_luna_drake_room");
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
};
 
 
iyh_outro_learr_shockfish_dead = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
 
        return [[При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр, вышедшая за вами следом, объявляет: "Я забираю-артефакты-в-Ираафаанотр". Светлова спрашивает: "Вы не разрешите нам оставить их на несколько дней для изучения?"^ Леарр отрезает: "Нет", -- и выходит из дока. Светлова вопросительно смотрит на вас и вы пересказываете ей произошедшее. Она лишь тяжело вздыхает глядя на вас, после чего уходит, махнув рукой.^Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
    end;
 
    hideinv = true;
 
    entered = function(s)
 
        for i in #pl.party do
 
            if pl.party[i] == 'learr' then 
 
                table.remove(pl.party, i);
 
                break;
 
            end;
 
        end;
 
        leviathan_cabin_3.lock = false;
 
        
 
        remove(char_learr, where(char_learr));
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
    end;
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
    };
 
};
 
 
iyh_outro_learr_temple_destroyed = room {
 
    nam = "Атлантида, док Левиафана";
 
    dsc = function(s)
 
        return [[При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр, вышедшая за вами следом, объявляет: "Я забираю-артефакты-в-Ираафаанотр". Светлова спрашивает: "Вы не разрешите нам оставить их на несколько дней для изучения?"^ Леарр отрезает: "Нет", -- и выходит из дока. Светлова вопросительно смотрит на вас и вы пересказываете ей произошедшее. Она задумчиво чешет подбородок и сообщает: "Я поговорю с Леарр, отправляйтесь в свою комнату. Думаю, мне удастся все уладить".^Вы следуете ее совету и отправляетесь к себе. Утром, она выывает вас по телефону: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
    end;
 
    hideinv = true;
 
    entered = function(s)
 
        for i in #pl.party do
 
            if pl.party[i] == 'learr' then 
 
                table.remove(pl.party, i);
 
                break;
 
            end;
 
        end;
 
        move(char_learr_atlantis, atl_oculus_lab_a);
 
        leviathan_cabin_3.lock = false;
 
        
 
        char_learr.home = "leviathan_wardroom";
 
        remove(item_statuette);
 
        remove(item_temple_disk);
 
        remove(item_legend_of_temple);
 
        remove(item_legend_of_dark_source);
 
        remove(item_legend_of_first_city);
 
        remove(item_legend_of_hunter);
 
    end;
 
    obj = {
 
        vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
    };
 
};
 
 
iyh_outro_learr = dlg {
 
	nam = "Атлантида, док Левиафана";
 
	entered = function(s)
 
		if (rel_learr > 0) then
 
			psub('rel_ok');
 
			return [[
 
				При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр сразу же просит: "Ты мне-отдашь взятое-в-храме".^
 
				На что Светлова просит ее: "Может вы разрешите нам оставить реликвии на некоторое время?"^
 
				Леарр не слишком уверенно отвечает: "Старейшина это-не-одобрит. Другой-выход есть?"
 
				
 
			]];
 
		else
 
        else
 
			psub('rel_not_ok');
 
			return [[
 
				При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр сразу же просит: "Ты мне-отдашь взятое-в-храме".^
 
				На что Светлова просит ее: "Может вы разрешите нам оставить реликвии на некоторое время?"^
 
				Леарр не слишком уверенно отвечает: "Старейшина это-не-одобрит. Другой-выход есть?"
 
			]];
 
		end;
 
        
 
        remove(item_statuette, pl);
 
        remove(item_temple_disk, pl);
 
        remove(item_legend_of_temple, pl);
 
        remove(item_legend_of_dark_source, pl);
 
        remove(item_legend_of_first_city, pl);
 
        remove(item_legend_of_hunter, pl);
 
        
 
        return [[При выходе из Левиафана, вас встречает Екатерина Светлова. Леарр сразу же просит: "Ты мне-отдашь взятое-в-храме".^ В ответ Светлова просит ее: "Может, вы разрешите нам оставить реликвии на некоторое время?"^ Леарр не слишком уверенно отвечает: "Старейшина это-не-одобрит. Другой-выход есть?" ]];
 
	end;
 
	phr = {
 
		{tag="rel_ok"};
 
		{"Это очень поможет нам в поисках Уильяма", [[
 
			Леарр все еще неуверенно: "Я что-смогу-сделаю. Вы пока-все-оставьте".
 
		]], code [[
 
		{"Это очень поможет нам в поисках Уильяма.", [[Леарр все еще неуверенно: "Я что-смогу-сделаю. Вы пока-все-оставьте". ]], code [[
 
            artifacts_returned = false;      
 
			atl_iyh_artifacts_on_atlantis = true;
 
			atl_rep_svetlova = atl_rep_svetlova + 1;
 
			walk("iyh_outro_learr_2");
 
		]]};
 
		{"Хорошо, забирайте реликвии", [[
 
			Леарр благодарит вас: "Вы можете-наш-город-посетить и реликвии-смотреть".
 
		]], code [[
 
		{"Хорошо, забирайте реликвии.", [[Леарр благодарит вас: "Вы можете-наш-город-посетить и реликвии-смотреть". ]], code [[
 
			rel_learr = rel_learr + 1;
 
			remove(item_statuette);
 
			remove(item_temple_disk);
 
			remove(item_legend_of_temple);
 
			remove(item_legend_of_dark_source);
 
			remove(item_legend_of_first_city);
 
			remove(item_legend_of_hunter);
 
			remove(item_navjiarr_chart_1);
 
			remove(item_navjiarr_chart_2);
 
			remove(item_navjiarr_chart_3);
 
            artifacts_returned = true;        
 
			walk("iyh_outro_learr_2");
 
		]]};
 
		{tag="rel_not_ok"};
 
		{"Это очень поможет нам в поисках Уильяма", [[
 
			Леарр отвечает: "Я с-вами-не-говорю. Не позволю-реликвии-оставить. Вы можете-наш-город-посетить и реликвии-смотреть".
 
		]], code [[
 
			remove(item_statuette);
 
			remove(item_temple_disk);
 
			remove(item_legend_of_temple);
 
			remove(item_legend_of_dark_source);
 
			remove(item_legend_of_first_city);
 
			remove(item_legend_of_hunter);
 
			remove(item_navjiarr_chart_1);
 
			remove(item_navjiarr_chart_2);
 
			remove(item_navjiarr_chart_3);
 
		{"Это очень поможет нам в поисках Уильяма.", [[Леарр отвечает: "Я не-позволю-реликвии-оставить. Вы не-надейтесь-даже". ]], code [[
 
            artifacts_returned = true;
 
			walk("iyh_outro_learr_2");
 
		]]};
 
		{"Хорошо, забирайте реликвии", [[
 
			Леарр отвечает: "Я с-вами-не-говорю. Не позволю-реликвии-оставить. Вы можете-наш-город-посетить и реликвии-смотреть".
 
		]], code [[
 
		{"Хорошо, забирайте реликвии.", [[Леарр благодарит вас: "Вы можете-наш-город-посетить и реликвии-смотреть". ]], code [[
 
            artifacts_returned = true;
 
			rel_learr = rel_learr + 1;
 
			remove(item_statuette);
 
			remove(item_temple_disk);
 
			remove(item_legend_of_temple);
 
			remove(item_legend_of_dark_source);
 
			remove(item_legend_of_first_city);
 
			remove(item_legend_of_hunter);
 
			remove(item_navjiarr_chart_1);
 
			remove(item_navjiarr_chart_2);
 
			remove(item_navjiarr_chart_3);
 
			walk("iyh_outro_learr_2");
 
		]]};
 
	};
 
@@ -1533,10 +1629,8 @@ iyh_outro_learr = dlg {
 
 
iyh_outro_learr_2 = room {
 
	nam = "Атлантида";
 
	dsc = [[
 
		Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое что для вас".
 
	]];
 
	dsc = [[Вы отправляетесь в свою комнату, чтобы отдохнуть. Утром, вас вызывает по телефону Екатерина Светлова: "Дрейк, пройдите ко мне. У меня есть кое-что для вас". ]];
 
	obj = {
 
		vroom("Продолжить", "atl_luna_drake_room");
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
};
 
\ No newline at end of file
atlantis_looking_for_clues.lua
Show inline comments
 
@@ -17,18 +17,23 @@ atl_lfc_darkstar_dlg = dlg {
 
	};
 
	nam = "Винсент Даркстар";
 
	disp = "Винсент Даркстар";
 
	entered = function(s)
 
	enter = function(s)
 
		psub("q1");
 
        if char_darkstar_dlg.state == 0 then
 
 
            char_darkstar_dlg.state = 1;
 
 
        end;
 
		s.limit = 3;
 
		q2_states = 0;
 
		if (atl_lfc_electric) then
 
		if (atl_lfc_electric == 1) then
 
			pon('electric');
 
		end;
 
		if (atl_lfc_board) then
 
		if (atl_lfc_board == 1) then
 
			pon('board');
 
		end;
 
		if (atl_lfc_hallrooms) then
 
			pon('hallrooms');
 
		if (atl_lfc_hallrooms == 1) then
 
			pon('halldoors');
 
		end;
 
		if (atl_jack_in_party) then
 
			pon("random_lie", "wright_said");
 
@@ -37,22 +42,13 @@ atl_lfc_darkstar_dlg = dlg {
 
			poff("random_lie", "wright_said");
 
			pon("random_true");
 
		end;
 
		return [[
 
			Винсент Даркстар сидит за столом в своем кабинете. Он приглашает вас сесть напротив, а охранников просит покинуть помещение. ^
 
			Как только они выходят, Даркстар достает из под стола папку с какими-то бумагами и начинает спрашивать вас: "Где вы были, когда начался пожар?"
 
		]];
 
		return [[Винсент Даркстар сидит за столом в своем кабинете. Он приглашает вас сесть напротив, а охранников просит покинуть помещение. ^Как только они выходят, Даркстар достает из под стола папку с какими-то бумагами и начинает спрашивать вас: "Где вы были, когда начался пожар?" ]];
 
	end;
 
	phr = {
 
		{tag="q1"};
 
		{"Вы меня подозреваете?", [[
 
			"Отвечайте на поставленный вопрос. Это не имеет значения".
 
		]]};
 
		{always=true,"Мы с Леарр разговаривали в зале А", [[
 
			"Хорошо. Дальше. Заметили ли вы что-то необычное в секции?"
 
		]], code [[ psub("q2"); ]]};
 
		{always=true,"Я не хочу отвечать", [[
 
			"Нет проблем. Следующий вопрос. Заметили ли вы что-то необычное в секции?"
 
		]], code [[
 
		{"Вы меня подозреваете?", [[Даркстар приказывает: "Отвечайте на поставленный вопрос. Это не имеет значения". ]]};
 
		{always=true, "Мы с Леарр разговаривали в зале А.", [[Даркстар кивает: "Хорошо. Дальше. Заметили ли вы что-то необычное в секции?" ]], code [[ psub("q2"); ]]};
 
		{always=true, "Я не хочу отвечать.", [[Даркстар разводит руками: "Нет проблем. Следующий вопрос. Заметили ли вы что-то необычное в секции?" ]], code [[
 
			atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1;
 
			psub("q2");
 
		]]};
 
@@ -61,104 +57,72 @@ atl_lfc_darkstar_dlg = dlg {
 
			if (atl_lfc_darkstar_dlg.q2_states < 2) then
 
				atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1;
 
			end;
 
			pr [[
 
				"Хорошо, идем дальше. 
 
			]];
 
			pr [[Даркстар кивает: "Хорошо, идем дальше. ]];
 
			if (atl_jack_in_party) then
 
				psub("q3_1");
 
				return [[
 
					Что делал в это время ваш друг, Джек?"
 
				]];
 
				pr [[Что делал в это время ваш друг, Джек?" ]];
 
			else
 
				psub("q3_2");
 
				return [[
 
					Кроме вас кто-нибудь еще был в секции?"
 
				]];
 
				pr [[Кроме вас кто-нибудь еще был в секции?" ]];
 
			end;
 
			
 
		end};
 
		{tag="halldoors", false, always=true,"Двери в другие залы не работали.", [[
 
			"Техники..."
 
		]], code [[ 
 
		{tag="halldoors", false, "Двери в другие залы не работали.", [[Даркстар вздыхает: "Техники..." ]], code [[ 
 
			atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; 
 
		]]};
 
		{tag="board", false, always=true,"Один из электрощитов не был закрыт.", [[
 
			"Обычное дело на Атлантиде. Наши техники порой позволяют себе невероятную неаккуратность".
 
		]], code [[
 
		{tag="board", false, "Один из электрощитов не был закрыт.", [[Даркстар вздыхает: "Обычное дело на Атлантиде. Наши техники порой позволяют себе невероятную неаккуратность". ]], code [[
 
			atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; 
 
		]]};
 
		{tag="electric", false, always=true,"В зале А не работали электроприборы.", [[
 
			"Это уже совсем ни в какие ворота не лезет".
 
		]], code [[
 
		{tag="electric", false, "В зале А не работали электроприборы.", [[Даркстар недовольно качает головой: "Это уже совсем ни в какие ворота не лезет". ]], code [[
 
			atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; 
 
		]]};
 
		{tag="q3_1"};--Что делал в это время ваш друг, Джек?
 
		{always=true,"Он вышел в главный зал, чтобы не мешать нам", function(s)
 
		{always=true,"Он вышел в главный зал, чтобы не мешать нам.", function(s)
 
			if (atl_lfc_darkstar_dlg.limit < 2) then
 
				psub("i1");
 
				return [[
 
					"Вы в Игнис с какой целью пришли?"
 
				]];
 
				return [[Даркстар спрашивает: "Вы в Игнис с какой целью пришли?" ]];
 
			else
 
				walk("atl_lfc_darkstar_interlude");
 
				return [[
 
					"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
				]];
 
				return [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]];
 
			end;
 
		end};
 
		{always=true,"Он был с нами", function(s)
 
		{always=true,"Он был с нами.", function(s)
 
			if (atl_lfc_darkstar_dlg.limit < 2) then
 
				psub("i1");
 
				return [[
 
					"Вы в Игнис с какой целью пришли?"
 
				]];
 
				return [[Даркстар спрашивает: "Вы в Игнис с какой целью пришли?" ]];
 
			else
 
				walk("atl_lfc_darkstar_interlude");
 
				return [[
 
					"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
				]];
 
				return [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]];
 
			end;
 
		end};
 
		{always=true,"Не помню", function(s)
 
		{always=true,"Не помню.", function(s)
 
			atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1;
 
			if (atl_lfc_darkstar_dlg.limit < 2) then
 
				psub("i1");
 
				return [[
 
					"Вы в Игнис с какой целью пришли?"
 
				]];
 
				return [[Даркстар спрашивает: "Вы в Игнис с какой целью пришли?" ]];
 
			else
 
				walk("atl_lfc_darkstar_interlude");
 
				return [[
 
					"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
				]];
 
				return [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]];
 
			end;
 
		end};
 
		{tag="q3_2"};--Кроме вас с Леарр кто-нибудь еще был в секции?
 
		{always=true,"Я никого не видел", function(s)
 
		{always=true,"Я никого не видел.", function(s)
 
			if (atl_lfc_darkstar_dlg.limit < 2) then
 
				psub("i1");
 
				return [[
 
					"Вы в Игнис с какой целью пришли?"
 
				]];
 
				return [[Даркстар спрашивает: "Вы в Игнис с какой целью пришли?" ]];
 
			else
 
				walk("atl_lfc_darkstar_interlude");
 
				return [[
 
					"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
				]];
 
				return [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]];
 
			end;
 
		end};
 
		{always=true,"Не помню", function(s)
 
		{always=true,"Не помню.", function(s)
 
			atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1;
 
			if (atl_lfc_darkstar_dlg.limit < 2) then
 
				psub("i1");
 
				return [[
 
					"Вы в Игнис с какой целью пришли?"
 
				]];
 
				return [[Даркстар спрашивает: "Вы в Игнис с какой целью пришли?" ]];
 
			else
 
				walk("atl_lfc_darkstar_interlude");
 
				return [[
 
					"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
				]];
 
				return [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]];
 
			end;
 
		end};
 
		{tag="i1"};
 
@@ -166,93 +130,61 @@ atl_lfc_darkstar_dlg = dlg {
 
			if (atl_iof_learr_dead) then
 
				if (atl_lfc_darkstar_dlg.total_limit > 1) then
 
					psub("i2_1");
 
					return [[
 
						"Почему вы оставили Леарр там?"
 
					]];
 
					return [[Даркстар смотрит вам прямо в глаза и спрашивает: "Почему вы оставили Леарр там?" ]];
 
				else
 
					psub("i3");
 
					return [[
 
						"Откуда вы узнали про скафандры?"
 
					]];
 
					return [[Даркстар спрашивает: "Откуда вы узнали про скафандры?" ]];
 
				end;
 
			else
 
				psub("i2_2");
 
				return [[
 
					"Почему вы спасли Леарр?"
 
				]];
 
				return [[Даркстар спрашивает: "Почему вы спасли Леарр?" ]];
 
			end;
 
		end;};
 
		{always=true,"Посмотреть Игнис.", [[
 
			"Вы знали, что Леарр там?"
 
		]], code [[ psub("i2_3"); ]]};
 
		{always=true,"Это имеет значение?", [[
 
			Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования".
 
		]], code = [[
 
		{always=true,"Посмотреть Игнис.", [[Даркстар спрашивает: "Вы знали, что Леарр там?" ]], code [[ psub("i2_3"); ]]};
 
		{always=true,"Это имеет значение?", [[Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования". ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{tag="i2_1"};
 
		{always=true,"У меня не было выбора", [[
 
			Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Вам стоит еще подумать".
 
		]], code = [[
 
		{always=true,"У меня не было выбора", [[Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Вам стоит еще подумать". ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{always=true,"Я рассчитывал вернуться за ней позже", [[
 
			"Вы идиот", - Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место.
 
		]], code = [[
 
		{always=true,"Я рассчитывал вернуться за ней позже.", [["Вы идиот", -- Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место. ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{always=true,"С чего я должен был думать об этом чудище?", [[
 
			_"Выкинуть бы вас за борт. Без скафандра. Жаль, что мы не ,,чудища'', как вы выражаетесь"_, - Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место.
 
		]], code = [[
 
		{always=true,"С чего я должен был думать об этом чудище?", [[_"Выкинуть бы вас за борт. Без скафандра. Жаль, что мы не ,,чудища'', как вы выражаетесь"_, -- Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место. ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 3;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{tag="i2_2"};
 
		{always=true,"Я не мог оставить ее умирать", [[
 
			"Откуда вы узнали про скафандры?"
 
		]], code [[
 
		{always=true,"Я не мог оставить ее умирать.", [[Даркстар спрашивает: "Откуда вы узнали про скафандры?"]], code [[
 
			psub("i3");
 
		]]};
 
		{tag="i2_3"};
 
		{always=true,"Светлова говорила, что она может быть в Игнисе", [[
 
			"Откуда вы узнали про скафандры?"
 
		]], code [[
 
		{always=true,"Светлова говорила, что она может быть в Игнисе.", [[Даркстар спрашивает: "Откуда вы узнали про скафандры?"]], code [[
 
			psub("i3");
 
		]]};
 
		{always=true,"Нет", [[
 
			"Откуда вы узнали про скафандры?"
 
		]], code [[
 
		{always=true,"Нет.", [[Даркстар спрашивает: "Откуда вы узнали про скафандры?"]], code [[
 
			psub("i3");
 
		]]};
 
		{always=true,"Это имеет значение?", [[
 
			Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования".
 
		]], code [[
 
		{always=true,"Это имеет значение?", [[Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования". ]], code [[
 
			psub("i3");
 
		]]};
 
		{tag = "i3"};
 
		{always=true,tag="wright_said", "Джек Райт сказал", [[
 
			"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
		]], code = [[
 
		{always=true,tag="wright_said", "Джек Райт сказал.", [[Даркстар кивает: "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]], code = [[
 
			walk("atl_lfc_darkstar_interlude");
 
		]]};
 
		{always=true,"Леарр сказала", [[
 
			"Она не могла этого знать", - Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "А я терпеть не могу, когда мне врут".
 
		]], code = [[
 
		{always=true,"Леарр сказала.", [["Она не могла этого знать", -- Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "А я терпеть не могу, когда мне врут". ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{always=true,tag="random_lie", "Я случайно наткнулся", [[
 
			Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Я думаю вам стоит еще подумать".
 
		]], code = [[
 
		{always=true,tag="random_lie", "Я случайно наткнулся.", [[Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Я думаю вам стоит еще подумать". ]], code = [[
 
			atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1;
 
			walk('atl_lfc_non_coop');
 
		]]};
 
		{always=true,tag="random_true", "Я случайно наткнулся", [[
 
			"Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать".
 
		]], code = [[
 
		{always=true,tag="random_true", "Я случайно наткнулся.", [["Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". ]], code = [[
 
			walk("atl_lfc_darkstar_interlude");
 
		]]};
 
		
 
@@ -261,23 +193,27 @@ atl_lfc_darkstar_dlg = dlg {
 
 
atl_lfc_darkstar_interlude = room {
 
	nam = "Винсент Даркстар";
 
	dsc = [[
 
		Винсент раскрывает папку лежающую на столе и раскладывает перед собой несколько бумаг: _"У нас есть основания полагать, что события в Игнисе - следствие саботажа. Мы считаем, что саботажник не рассчитывал, что в секции в момент пожара будет кто-либо - обычно в это время в Игнисе никого нет. Должен сказать, на станции уже давно некоторые выступают за сворачивание проекта и возвращение на поверхность. Вы прекрасно понимаете, что мы не можем просто так отправить их на поверхность - их слишком много, и если они начнут болтать - существование станции будет раскрыто. А нам этого не хотелось бы"_. Внезапно раздается звонок. Даркстар поднимает трубку телефона и отрывисто бросает туда: "Сейчас буду". Он встает и направляется к выходу, при этом просит вас: "Ждите здесь, я не надолго".
 
	]];
 
	dsc = [[Винсент раскрывает папку лежающую на столе и раскладывает перед собой несколько бумаг: _"У нас есть основания полагать, что события в Игнисе -- следствие саботажа. Мы считаем, что саботажник не рассчитывал, что в секции в момент пожара будет кто-либо -- обычно в это время в Игнисе никого нет. Должен сказать, на станции уже давно некоторые выступают за сворачивание проекта и возвращение на поверхность. Вы прекрасно понимаете, что мы не можем просто так отправить их на поверхность -- их слишком много, и если они начнут болтать -- существование станции будет раскрыто. А нам этого не хотелось бы"_. Внезапно раздается звонок. Даркстар поднимает трубку телефона и отрывисто бросает туда: "Сейчас буду". Он встает и направляется к выходу, при этом просит вас: "Ждите здесь, я ненадолго". ]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_lfc_darkstar_office");
 
	};
 
};
 
 
atl_lfc_office_timeout = function()
 
    timer:stop();
 
    walk("atl_lfc_darkstar_interlude_2")
 
end;
 
 
atl_lfc_darkstar_office = room {
 
	nam = "Атлантида, Доминус, кабинет начальника СБ";
 
	dsc = [[
 
		Кабинет начальника службы безопасности почти пуст - здесь нет ничего кроме массивного металлического стола(судя по всему - бронированного) в центре и кресла перед ним. 
 
	]];
 
	entered = function()
 
	dsc = [[Кабинет начальника службы безопасности почти пуст -- здесь нет ничего кроме массивного металлического стола(судя по всему, бронированного) в центре и кресла перед ним. ]];
 
	entered = function(s)
 
        game.timer = atl_lfc_office_timeout;   
 
        timer:set(5000);
 
	end;
 
	life = function()
 
	end;
 
    left = function(s)
 
        timer:stop();
 
    end;   
 
	way = {
 
		kh_vroom("В коридор", function()
 
			pr("Дверь заперта");
 
@@ -295,19 +231,15 @@ atl_darkstar_papers = obj {
 
		На столе лежит оставленная Винсентом {папка с бумагами}.
 
	]];
 
	act = function(s)
 
        timer:stop();   
 
		walk("atl_lfc_darkstar_interlude_2")
 
		return [[
 
			Вы просматриваете бумаги - это список подозреваемых в саботаже. Здесь присутствует большая часть обитателей Атлантиды. На отдельном листе записаны несколько моментов: во-первых, Даркстар не подозревает никого из руководства, поскольку каждый из них напрямую заинтересован в развитии станции. Во-вторых, к вашему удивлению, он не подозревает вас, поскольку саботажник, судя по всему, был хорошо знаком с устройством системы электроснабжения Игниса. Основными подозреваемыми он считает Мишеля Леруа, Леонарда Голдмана и Чарльза Джонса. Все они сторонники закрытия проекта и обладают достаточными знаниями, чтобы устроить подобный саботаж. ^
 
			Вы слышите звук открывающегося замка и поспешно возвращаете папку в ее изначальное положение. 
 
		]];
 
		return [[Вы просматриваете бумаги. Это список подозреваемых в саботаже. Здесь присутствует большая часть обитателей Атлантиды. На отдельном листе записаны несколько моментов: во-первых, Даркстар не подозревает никого из руководства, поскольку каждый из них напрямую заинтересован в развитии станции. Во-вторых, к вашему удивлению, он не подозревает вас, поскольку саботажник, судя по всему, был хорошо знаком с устройством системы электроснабжения Игниса. Основными подозреваемыми он считает Мишеля Леруа, Леонарда Голдмана и Чарльза Джонса. Все они сторонники закрытия проекта и обладают достаточными знаниями, чтобы устроить подобный саботаж. ^Вы слышите звук открывающегося замка и поспешно возвращаете папку в ее изначальное положение. ]];
 
	end;
 
};
 
 
atl_lfc_darkstar_interlude_2 = room {
 
	nam = "Винсент Даркстар";
 
	dsc = [[
 
		В комнату входит Винсент Даркстар и садится на свое место. Вам он говорит: "С учетом цели саботажника, я предполагаю, что следующая атака будет направлена на вывод из строя субмарин. В любом случае - я прошу вас никому не говорить о том, что я вам тут рассказал. В случае необходимости я вас вызову. Вы свободны".
 
	]];
 
	dsc = [[В комнату входит Винсент Даркстар и садится на свое место. Вам он говорит: "С учетом цели саботажника, я предполагаю, что следующая атака будет направлена на вывод из строя субмарин. В любом случае, я прошу вас никому не говорить о том, что я вам тут рассказал. В случае необходимости я вас вызову. Вы свободны". ]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_dom_security_office");
 
	};
 
@@ -315,10 +247,7 @@ atl_lfc_darkstar_interlude_2 = room {
 
 
atl_lfc_non_coop = room {
 
	nam = "Винсент Даркстар";
 
	dsc = [[
 
		После этого он снимает телефонную трубку и отдает туда приказ: "Заберите Дрейка". ^
 
		В комнату входят два стражника и сопровождают вас в вашу комнату.
 
	]];
 
	dsc = [[После этого он снимает телефонную трубку и отдает туда приказ: "Заберите его". ^В комнату входят два стражника и сопровождают вас в вашу комнату. ]];
 
	obj = {
 
		kh_vway("Продолжить", "{Продолжить}", function()
 
			if (atl_lfc_darkstar_dlg.total_limit < 1) then
 
@@ -333,41 +262,17 @@ atl_lfc_non_coop = room {
 
atl_lfc_game_over = room {
 
	nam = "Игра окончена";
 
	disp = "Игра окончена";
 
	dsc = [[
 
		Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Вы останетесь под стражей до тех пор, пока мы не найдем саботажника. После этого, мы решим, что делать с вами".^
 
		Вам ничего не остается, кроме как ждать. Через несколько дней стражники сопровождают вас на Левиафан. Там вас запирают в одной из кают. Несколько недель Левиафан полным ходом движется в неизвестном направлении. Наконец, вас выпускают из каюты. Один из охранников сообщает вам: "В нескольких милях к северу вдоль побережья находится небольшой городок. Оттуда вы сможете добраться куда вам угодно. Мы дадим вам немного еды и достаточно денег, чтобы вы могли добраться домой".^
 
		Вы забираете переданные вам вещи и через несколько мгновений Левиафан скрывается под поверхностью воды. Никаких средств для возвращения на Атлантиду у вас не остается и, скорее всего, вы никогда не узнаете что стало с вашим отцом.
 
	]];
 
	dsc = [[Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Вы останетесь под стражей до тех пор, пока мы не найдем саботажника. После этого, мы решим, что делать с вами". ^Вам ничего не остается, кроме как ждать. Через несколько дней стражники сопровождают вас на Левиафан. Там вас запирают в одной из кают. Несколько недель Левиафан полным ходом движется в неизвестном направлении. Наконец, вас выпускают из каюты. Один из охранников сообщает вам: "В нескольких милях к северу вдоль побережья находится небольшой городок. Оттуда вы сможете добраться куда вам будет угодно. Мы дадим вам немного еды и достаточно денег, чтобы вы могли добраться домой". ^Вы забираете переданные вам вещи и через несколько мгновений Левиафан скрывается под поверхностью воды. Никаких средств для возвращения на Атлантиду у вас не остается и, скорее всего, вы никогда не узнаете что стало с вашим отцом. ]];
 
};
 
 
atl_lfc_waiting = room {
 
	nam = "Атлантида, Луна, ваша комната";
 
	dsc = [[
 
		Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Отдохните. Завтра мы попробуем поговорить еще раз".
 
	]];
 
	dsc = [[Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Отдохните. Завтра мы попробуем поговорить еще раз". ]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_lfc_waiting");
 
	};
 
};
 
 
atl_lfc_dock_s = room {
 
	nam = "Атлантида, Аква, док Наутилуса, у входа";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. У западной стены вы видите пульт управления краном. У северной стены составлены какие-то ящики. 
 
	]];
 
	way = {
 
		kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
		kh_vroom("По часовой стрелке", "atl_lfc_dock_w");
 
		kh_vroom("Против часовой стрелки", "atl_lfc_dock_e");
 
		kh_vroom("На мостик", "atl_lfc_dock_sb");
 
		
 
	};
 
	obj = {
 
		"atl_nd_crane";
 
		"atl_nd_barrel";
 
	};
 
};
 
 
atl_nd_crane = obj {
 
	var {
 
		px = 2;
 
@@ -375,64 +280,210 @@ atl_nd_crane = obj {
 
	};
 
	nam = "Кран";
 
	dsc = function(s)
 
		local r = [[
 
			Под потолком расположен {кран}, прикрепленный к балкам, служащим направляющими для его движения. 
 
		]];
 
		if px == 2 and py == 2 then
 
			r = r .. "Сейчас кран висит в центре комнаты над Наутилусом.";
 
		local r = [[Под потолком расположен {кран}, прикрепленный к балкам, служащим направляющими для его движения. ]];      
 
        if s.px == 1 and s.py == 1 then
 
            r = r .. "Сейчас кран висит в северо-западной части комнаты. ";
 
        elseif s.px == 2 and s.py == 1 then
 
            r = r .. "Сейчас кран висит в северной части комнаты. ";
 
        elseif s.px == 3 and s.py == 1 then
 
            r = r .. "Сейчас кран висит в северо-восточной части комнаты. ";
 
        elseif s.px == 1 and s.py == 2 then
 
            r = r .. "Сейчас кран висит над мостиком в западной части комнаты. ";
 
		elseif s.px == 2 and s.py == 2 then
 
			r = r .. "Сейчас кран висит в центре комнаты над Наутилусом. ";
 
        elseif s.px == 3 and s.py == 2 then
 
            r = r .. "Сейчас кран висит над мостиком в восточной части комнаты. ";
 
        elseif s.px == 1 and s.py == 3 then
 
            r = r .. "Сейчас кран висит в юго-западной части комнаты. ";
 
        elseif s.px == 2 and s.py == 3 then
 
            r = r .. "Сейчас кран висит над мостиком в южной части комнаты. ";
 
        elseif s.px == 3 and s.py == 3 then
 
            r = r .. "Сейчас кран висит в юго-восточной части комнаты. ";
 
		end;
 
		
 
		return r;
 
	end;
 
	act = [[
 
		Скорее всего, вы можете управлять краном с пульта управления в этой комнате.
 
	]];
 
	act = [[Скорее всего, вы можете управлять краном с пульта управления в этой комнате. ]];
 
};
 
 
atl_lfc_crane_control_obj = obj {
 
    nam = "atl_lfc_crane_control_obj";
 
    dsc = "Рядом с вами расположен пульт управления краном. ";
 
    act = function(s)
 
        walkin("atl_lfc_crane_control_obj");
 
    end;
 
};
 
 
atl_lfc_crane_control = room {
 
    nam = "atl_lfc_crane_control";
 
    disp = "Атлантида, Аква, док Наутилуса, западная часть";
 
    hideinv = true;
 
    way = {
 
        kh_vroom("Отойти от пульта", "atl_lfc_dock_w");
 
    };
 
    dsc = [[Вы стоите у панели управления краном. Перед вами три рычага: два из них, отмеченные как в<->з и c<->ю установлены в среднее положение, третий, отмеченный как "верх-низ", установлен в верхнее положение. ]];
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
        "atl_lfc_crane_ew_dec";
 
        "atl_lfc_crane_ew_inc";
 
        "atl_lfc_crane_ns_dec";
 
        "atl_lfc_crane_ns_inc";
 
        "atl_lfc_crane_ud_tgl";
 
    };
 
};
 
 
atl_lfc_crane_ew_dec = obj {
 
    nam = "atl_lfc_crane_ew_dec";
 
    dsc = "^^{Сдвинуть рычаг \"в<->з\" влево}^";
 
    act = function(s)
 
        if atl_nd_crane.px == 1 then
 
            return [[Рычаг заклинило. ]];
 
        end;
 
        atl_nd_crane.px = atl_nd_crane.px - 1;
 
        return "Кран сдвигается на запад. ";
 
    end;
 
};
 
 
atl_lfc_crane_ew_inc = obj {
 
    nam = "atl_lfc_crane_ew_inc";
 
    dsc = "{Сдвинуть рычаг \"в<->з\" вправо}^";
 
    act = function(s)
 
        if atl_nd_crane.px == 3 then
 
            return [[Рычаг заклинило. ]];
 
        end;
 
        atl_nd_crane.px = atl_nd_crane.px + 1;
 
        return "Кран сдвигается на восток. ";
 
    end;
 
};
 
 
atl_lfc_crane_ns_dec = obj {
 
    nam = "atl_lfc_crane_ns_dec";
 
    dsc = "^{Сдвинуть рычаг \"с<->ю\" влево}^";
 
    act = function(s)
 
        if atl_nd_crane.px == 1 then
 
            return [[Рычаг заклинило. ]];
 
        end;
 
        atl_nd_crane.py = atl_nd_crane.py - 1;
 
        return "Кран сдвигается на север. ";
 
    end;
 
};
 
 
atl_lfc_crane_ns_inc = obj {
 
    nam = "atl_lfc_crane_ns_inc";
 
    dsc = "{Сдвинуть рычаг \"с<->ю\" вправо}^";
 
    act = function(s)
 
        if atl_nd_crane.px == 3 then
 
            return [[Рычаг заклинило. ]];
 
        end;
 
        atl_nd_crane.py = atl_nd_crane.py + 1;
 
        return "Кран сдвигается на юг. ";
 
    end;
 
};
 
 
atl_lfc_crane_ud_tgl = obj {
 
    nam = "atl_lfc_crane_ud_tgl";
 
    dsc = "^{Повернуть рычаг \"Верх-низ\"}";
 
    act = "Вам это сейчас не нужно. ";
 
};
 
 
atl_nd_barrel = obj {
 
	nam = "Бочка";
 
	dsc = [[
 
		На крюке крана висит {бочка}, судя по всему -- пустая. 
 
	]];
 
	dsc = [[На крюке крана висит {бочка}, судя по всему -- пустая. ]];
 
    disp2 = "бочку";
 
	canshoot = function(s)
 
		return atl_lfc_sab_active and where(atl_lfc_sab) == atl_lfc_bridge_w and atl_nd_crane.px == 1 and atl_nd_crane.py == 2;
 
		return where(atl_lfc_sab) == atl_lfc_bridge_w and atl_nd_crane.px == 1 and atl_nd_crane.py == 2;
 
	end;
 
	onshoot = function(s)
 
		remove(atl_nd_barrel);
 
		remove(char_leroy, where('char_leroy'));
 
		remove(char_goldman, where('char_goldman'));
 
		atl_lfc_sab_alive = true;
 
		walkin(atl_lfc_dock_end_barreled);
 
	end;
 
};
 
 
atl_lfc_dock_s = room {
 
    nam = "Атлантида, Аква, док Наутилуса, южная часть, у входа";
 
    dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. У западной стены вы видите пульт управления краном. У северной стены составлены какие-то ящики. ]];
 
    way = {
 
        kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
        kh_vroom("К западной стене", "atl_lfc_dock_w");
 
        kh_vroom("К восточной стене", "atl_lfc_dock_e");
 
        kh_vroom("На мостик", "atl_lfc_bridge_s");
 
        
 
    };
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };
 
};
 
 
atl_lfc_dock_w = room {
 
	nam = "Атлантида, Аква, док Наутилуса, западная часть";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь у западной стороны. На небольшом расстоянии от вас вы видите пульт управления краном. У северной стены дока составлено несколько ящиков.
 
	]];
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь у западной стороны. На небольшом расстоянии от вас вы видите пульт управления краном. У северной стены дока составлено несколько ящиков. ]];
 
	way = {
 
		kh_vroom("По часовой стрелке", "atl_lfc_dock_n");
 
		kh_vroom("Против часовой стрелки", "atl_lfc_dock_s");
 
		kh_vroom("На мостик", "atl_lfc_dock_wb");
 
		kh_vroom("К пульту управления", "atl_lfc_control");
 
		kh_vroom("К северной стене", "atl_lfc_dock_n");
 
		kh_vroom("К южной стене", "atl_lfc_dock_s");
 
		kh_vroom("На мостик", "atl_lfc_bridge_w");
 
		kh_vroom("К пульту управления", "atl_lfc_crane_control");
 
	};
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };
 
};
 
 
atl_lfc_dock_n = room {
 
	nam = "Атлантида, Аква, док Наутилуса, северная часть";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь в северной части помещения. У западной стены вы видите пульт управления краном. 
 
	]];
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь в северной части помещения. У западной стены вы видите пульт управления краном. ]];
 
	way = {
 
		kh_vroom("По часовой стрелке", "atl_lfc_dock_e");
 
		kh_vroom("Против часовой стрелки", "atl_lfc_dock_w");
 
		kh_vroom("К восточной стене", "atl_lfc_dock_e");
 
		kh_vroom("К западной стене", "atl_lfc_dock_w");
 
	};
 
	obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
		"atl_lfc_boxes";
 
	};
 
};
 
 
atl_lfc_dock_e = room {
 
    nam = "Атлантида, Аква, док Наутилуса, восточная стена";
 
    dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь в восточной части помещения. ]];
 
    way = {
 
        kh_vroom("К южной стене", "atl_lfc_dock_s");
 
        kh_vroom("К северной стене", "atl_lfc_dock_n");
 
        kh_vroom("На мостик", "atl_lfc_bridge_s");
 
    };
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };
 
};
 
 
atl_lfc_behind_boxes = room {
 
    nam = "Ящики";
 
    nosave = true;
 
    noautosave = true;
 
    dsc = function(s)
 
        local f = [[Док хорошо просматривается из вашего укрытия. ]];
 
        
 
    end;
 
    way = {
 
        kh_vroom("Выйти из укрытия", function(s)
 
             if (where(atl_lfc_sab) == atl_lfc_dock_s) or (where(atl_lfc_sab) == atl_lfc_dock_w) then
 
                return 'game_over_lfc_shot';
 
             else
 
                return 'atl_lfc_dock_n';
 
             end;
 
        end);
 
    };
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };
 
};
 
 
atl_lfc_boxes = obj {
 
	var {
 
		state = 0;
 
@@ -440,102 +491,111 @@ atl_lfc_boxes = obj {
 
	nam = "Ящики";
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return [[
 
				У стены составлено несколько {ящиков}.
 
			]];
 
			return [[У стены составлено несколько {ящиков}. ]];
 
		elseif (s.state == 1) then
 
			return [[
 
				У стены составлено несколько {ящиков}, за которыми вы сможете спрятаться, поджидая саботажника.
 
			]];
 
			return [[У стены составлено несколько {ящиков}, за которыми вы сможете спрятаться, поджидая саботажника. ]];
 
		elseif (s.state == 2) then
 
			return [[
 
				У стены составлено несколько {ящиков}.
 
			]];
 
			return [[У стены составлено несколько {ящиков}. ]];
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.state == 0) then
 
			s.state = 1;
 
			return [[
 
				За этими ящиками можно спрятаться!
 
			]];
 
			return [[За этими ящиками можно спрятаться! ]];
 
		elseif (s.state == 1) then
 
			s.state = 2;
 
			walk("atl_lfc_behind_boxes");
 
			return [[
 
				Вы прячетесь за ящиками. Через некоторое время дверь дока открывается и кто-то входит. В полумраке издалека вы не можете разглядеть кто это, но скорее всего, это саботажник.
 
			]];
 
            move("atl_lfc_sab", "atl_lfc_dock_s");
 
            lifeon("atl_lfc_sab");
 
			return [[Вы прячетесь за ящиками. Через некоторое время дверь дока открывается и кто-то входит. В полумраке издалека вы не можете разглядеть кто это, но скорее всего, это саботажник. ]];
 
		else
 
			return [[
 
				Вам это больше не нужно.
 
			]];
 
			return [[Вам это больше не нужно. ]];
 
		end;
 
	end;
 
};
 
 
atl_lfc_bridge_s = obj {
 
	nam = "Атлантида, Аква, док Наутилуса, мостик";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в южной части дока.
 
	]];
 
atl_lfc_bridge_s = room {
 
	nam = "Атлантида, Аква, док Наутилуса, южная часть, мостик";
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в южной части дока. ]];
 
	way = {
 
		kh_vroom("Ко входу", "atl_lfc_dock_s");
 
		kh_vroom("На соседний мостик", "atl_lfc_bridge_e");
 
	};
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };   
 
};
 
 
atl_lfc_bridge_e = obj {
 
	nam = "Атлантида, Аква, док Наутилуса, мостик";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в восточной части дока.
 
	]];
 
atl_lfc_bridge_e = room {
 
	nam = "Атлантида, Аква, док Наутилуса, восточная часть, мостик";
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в восточной части дока. ]];
 
	way = {
 
		kh_vroom("К стене", "atl_lfc_dock_w");
 
		kh_vroom("К стене", "atl_lfc_dock_e");
 
		kh_vroom("На соседний мостик", "atl_lfc_bridge_s");
 
	};
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };   
 
};
 
 
atl_lfc_bridge_w = obj {
 
	nam = "Атлантида, Аква, док Наутилуса, мостик";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в западной части дока.
 
	]];
 
atl_lfc_bridge_w = room {
 
	nam = "Атлантида, Аква, док Наутилуса, западная часть, мостик";
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус.  Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в западной части дока. ]];
 
	way = {
 
		kh_vroom("К стене", "atl_lfc_dock_e");
 
		kh_vroom("К стене", "atl_lfc_dock_w");
 
		kh_vroom("К субмарине", function(s)
 
			pr [[
 
				Мне там нечего делать
 
			]];
 
			pr [[Вам там нечего делать. ]];
 
			return false;
 
		end);
 
	};
 
    obj = {
 
        "atl_nd_crane";
 
        "atl_nd_barrel";
 
    };   
 
};
 
 
atl_lfc_sab = obj {
 
	var {
 
		tick = 1;
 
		tick = 3;
 
	};
 
	nam = "Мишель Леруа";
 
    disp2 = "Мишеля Леруа";
 
	canshoot = true;
 
	dsc = [[
 
		В нескольких метрах от вас стоит {Мишель Леруа}. Он обращен к вам спиной и не видит вас.
 
	]];
 
	dsc = function(s)
 
        if (where(s) == where(pl)) then
 
            return [[В нескольких метрах от вас стоит {Мишель Леруа}. Он обращен к вам спиной и не видит вас. ]];
 
        else
 
            return [[{Мишель Леруа} стоит около Наутилуса. ]];
 
        end;
 
    end;
 
    onshoot = function(s)
 
        remove(char_leroy, where('char_leroy'));
 
        walk("atl_lfc_dock_end_shot");
 
        lifeoff(atl_lfc_sab);
 
        return [[Вы стреляете в Мишеля Леруа, и убиваете его. Тело падает в воду. ]];
 
    end;
 
	act = function(s)
 
		walkin("atl_lfc_sab_dlg");
 
	end;
 
	life = function(s)
 
        if where(atl_lfc_sab_vis) ~= where(pl) and where(pl) ~= where(s) then
 
            move(atl_lfc_sab_vis, where(pl));
 
        end;   
 
		if (s.tick > 0) then
 
			s.tick = s.tick - 1;
 
		else
 
			s.tick = 1;
 
			pr("Вы видите, как Мишель медленно крадется по доку.");
 
			s.tick = 3;
 
			pr("Вы видите, как Мишель медленно крадется по доку ");
 
			if (where(s) == atl_lfc_dock_s) then
 
                pr("вдоль западной стены. ");
 
				move(s, atl_lfc_dock_w);
 
			elseif (where(s) == atl_lfc_dock_w) then
 
                pr("и поднимается на мостик в его западной части. Он не смотрит в вашу сторону. ");         
 
				move(s, atl_lfc_bridge_w);
 
			elseif (where(s) == atl_lfc_bridge_w) then
 
				pr("Леруа подходит к субмарине и забирается на нее, открывает люк и исчезает внутри. ");
 
				remove(s, where(s));
 
				pr("Леруа что-то делает рядом с субмариной. ");
 
			end;
 
		end;
 
	end;
 
@@ -546,61 +606,41 @@ atl_lfc_sab_vis = obj {
 
		shot = 0;
 
	};
 
	nam = "Мишель Леруа";
 
    disp2 = "Мишеля Леруа";
 
	canshoot = true;
 
	onshoot = function(s)
 
		if (s.shot == 0) then
 
			s.shot = 1;
 
			return [[
 
				Вы стреляете в силуэт, но промахиваетесь. Через мгновение, где-то рядом пролетает пуля.
 
			]];
 
			return [[Вы стреляете в силуэт, но промахиваетесь. Через мгновение, где-то рядом пролетает пуля. ]];
 
		else
 
			remove(char_leroy, where('char_leroy'));
 
			walk("atl_lfc_dock_end_shot");
 
			return [[
 
				Вы повторно стреляете в саботажника и, судя по всему, попадаете. Леруа хватается за грудь и медленно падает на пол.
 
			]];
 
            lifeoff(atl_lfc_sab);         
 
			return [[Вы повторно стреляете в саботажника и, судя по всему, попадаете. Леруа хватается за грудь и медленно оседает на пол. ]];
 
		end;
 
	end;
 
	dsc = function(s)
 
		if (where(pl) == atl_lfc_behind_boxes and where(atl_lfc_sab) == atl_lfc_bridge_w) then
 
			return [[
 
				Вы видите {Мишеля Леруа}, идущего по мостику, ведущему к Наутилусу.
 
			]];
 
			return [[Вы видите {Мишеля Леруа}, идущего по мостику, ведущему к Наутилусу. ]];
 
		elseif (where(pl) == atl_lfc_behind_boxes and where(atl_lfc_sab) == atl_lfc_dock_w) then
 
			return [[
 
				Вы видите {Мишеля Леруа}, идущего вдоль западной стены дока.
 
			]];
 
			return [[Вы видите {Мишеля Леруа}, идущего вдоль западной стены дока. ]];
 
        elseif (where(pl) == atl_lfc_behind_boxes and where(atl_lfc_sab) == atl_lfc_dock_s) then
 
            return [[Вы видите {Мишеля Леруа}, идущего вдоль южной стены дока. ]];
 
		elseif (where(atl_lfc_sab) == atl_lfc_bridge_w) then
 
			return [[
 
				Вы видите {Мишеля Леруа}, идущего по мостику в западной части дока. Он не видит вас.
 
			]];
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl)) then
 
			move(s, where(pl));
 
			return [[Вы видите {Мишеля Леруа}, идущего по мостику в западной части дока. Он не видит вас. ]];
 
		end;
 
	end;
 
};
 
 
atl_lfc_sab_dlg = dlg {
 
	nam = "Мишель Леруа";
 
	dsc = [[
 
		Мишель Леруа стоит спиной к вам и не видит вашего приближения. Вы можете воспользоваться этим.
 
	]];
 
	dsc = [[Мишель Леруа стоит спиной к вам и не видит вашего приближения. Вы можете воспользоваться этим. ]];
 
	phr = {
 
		{"Застрелить его", [[
 
			Вы стреляете саботажнику в спину и, не успев понять, что произошло, он падает в воду, пронзенный пулей.
 
		]], code [[ 
 
		{"Застрелить его", [[Вы стреляете саботажнику в спину и, не успев понять, что произошло, он падает в воду, пронзенный пулей. ]], code [[ 
 
			remove(char_leroy, where('char_leroy'));
 
			walk("atl_lfc_dock_end_shot");
 
		]]};
 
		{"Попытаться оглушить его", [[
 
			Вы оглушаете саботажника. 
 
		]], code [[ 
 
			remove(char_leroy, where('char_leroy'));
 
			remove(char_goldman, where('char_goldman'));
 
			atl_lfc_sab_alive = true;
 
		{"Попытаться оглушить его", [[Вы оглушаете саботажника. ]], code [[ 
 
			walk("atl_lfc_dock_end_ko");
 
		]]};
 
	};
 
@@ -608,47 +648,428 @@ atl_lfc_sab_dlg = dlg {
 
 
atl_lfc_dock_end_shot = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[
 
		Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан".^
 
		Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи... Проснувшись днем, вы слышите по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить".
 
	]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
	entered = function(s)
 
		leroy_state = 4;
 
        remove(char_leroy, where('char_leroy'));
 
        if (atl_lfc_goldman_exposed) then
 
            atl_lfc_state = 3;
 
            remove(char_goldman, where('char_goldman'));
 
        else
 
            atl_lfc_state = 5;
 
            return [[Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан". ^Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи.^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Моро: "Дрейк, жду вас в моем кабинете". ]];
 
        end;
 
	end;
 
    dsc = function(s)
 
        if (atl_lfc_goldman_exposed) then
 
            return [[Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан". ^Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи.^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Даркстара: "Дрейк, зайдите ко мне". ]];
 
        else
 
            return [[Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан". ^Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи.^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Моро: "Дрейк, жду вас в моем кабинете". ]];
 
        end;
 
    end;   
 
};
 
 
atl_lfc_dock_end_barreled = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[Вы попадаете в один из тросов, на который крепилась бочка и она с грохотом катится вниз, сбивая с ног саботажника. Тот падает в воду. Он не успевает придти в себя, как в помещение входит охрана станции, привлеченная шумом, во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам увести Мишеля, а сам обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним". ^Вы возвращаетесь в свою комнату и сразу же засыпаете. ^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Даркстара: "Дрейк, зайдите ко мне". ]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
	entered = function(s)
 
		atl_lfc_state = 3;
 
        atl_lfc_leroy_goldman = true;      
 
        atl_lfc_goldman_exposed = true;      
 
        remove(char_leroy, where('char_leroy'));
 
        remove(char_goldman, where('char_goldman'));
 
	end;
 
};
 
 
atl_lfc_dock_end_ko = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[Вы оглушаете саботажника и ждете, когда в помещение придут охранники. ^Они приходят через несколько минут вместе с Винсентом Даркстаром. Охранники уносят неподвижного Леруа, а Даркстар обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним". ^Вы возвращаетесь в свою комнату и сразу же засыпаете. ^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Даркстара: "Дрейк, зайдите ко мне". ]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
	entered = function(s)
 
		atl_lfc_state = 3;
 
		if (atl_lfc_goldman_exposed) then
 
			remove(char_goldman, where('char_goldman'));
 
		end;
 
        atl_lfc_goldman_exposed = true;
 
        atl_lfc_leroy_goldman = true;
 
        remove(char_leroy, where('char_leroy'));
 
        remove(char_goldman, where('char_goldman'));
 
	end;
 
};
 
 
atl_lfc_dock_end_barreled = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[
 
		Вы попадаете в один из тросов, на который крепилась бочка и она с грохотом катится вниз, сбивая с ног саботажника. Тот падает в воду. Он не успевает придти в себя, как в помещение входит охрана станции, привлеченная шумом, во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам увести Мишеля, а сам обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим".^
 
		Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить".
 
	]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
	entered = function(s)
 
		atl_lfc_state = 3;
 
	end;
 
atl_lfc_outro_expose = cutscene("Атлантида", "Атлантида", [[Даркстар поднимает трубку телефона и отдает приказ: "Приведите ко мне Леруа и Голдмана". Вас он просит отойти в угол комнаты и ждать там. ^Допрос продолжался недолго. Сперва Леруа упирался, но подельник сдал его с потрохами и в итоге ему осталось только признать свою вину. ^Подозреваемых заперли в их комнатах, а вас Даркстар отпустил отдыхать. Придя в свою комнату, вы тут же ложитесь спать. ^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Даркстара: "Дрейк, зайдите ко мне". ]], "atl_luna_drake_room", function(s)
 
    atl_lfc_state = 3;
 
    atl_rep_moreau = atl_rep_moreau + 1;
 
    atl_rep_darkstar = atl_rep_darkstar + 1;
 
    rel_walter = rel_walter + 1;
 
    remove(char_leroy, where('char_leroy'));
 
    remove(char_goldman, where('char_goldman'));
 
end);
 
 
atl_lfc_court = dlg {
 
    var {
 
        goldman = 0;
 
        leroy = 0;
 
    };
 
    nam = "Атлантида";
 
    entered = function(s)
 
        if atl_lfc_goldman_exposed then
 
            p([[В комнату входят руководители станции. Даркстар встает из-за стола и сообщает: "Дорогие друзья, сегодня мы обсуждаем важный вопрос. Как вы все знаете, мы поймали саботажников -- ими оказались Леонард Голдман и Мишель Леруа. Мы будем следовать обычной процедуры, однако, решено, что в этом заседании будет участвовать Дэвид Дрейк, оказавший неоценимую помощь в поимке преступников. ]]);
 
        else
 
            p([[В комнату входят руководители станции. Даркстар встает из-за стола и сообщает: "Дорогие друзья, сегодня мы обсуждаем важный вопрос. Как вы все знаете, мы поймали саботажника -- им оказался Мишель Леруа. Мы будем следовать обычной процедуры, однако, решено, что в этом заседании будет участвовать Дэвид Дрейк, оказавший неоценимую помощь в поимке преступников. ]]);
 
        end;
 
        p([[Фредерик Моро, вам слово". ^Фредерик Моро начинает говорить: "Ситуация экстраординарная и требует экстраординарных мер]]);
 
        --[[
 
            lfc_goldman_execute = 0;
 
            lfc_goldman_imprison = 0;
 
            lfc_goldman_banish = 1;
 
            lfc_leroy_execute = 0;
 
            lfc_leroy_imprison = 0;
 
            lfc_leroy_banish = 1;
 
        ]]
 
        if atl_lfc_goldman_exposed then
 
            if char_moreau_dlg.lfc_goldman_imprison > 0 then
 
                p([[, к которым мы пока не готовы. Я считаю, что Леонарда Голдмана следует посадить под арест, как минимум до того времени, как не вернется экспедиция Уильяма. ]]);
 
                if leroy_state ~= 4 then
 
                    if char_moreau_dlg.lfc_leroy_imprison > 0 then
 
                        p([[Что касается Мишеля Леруа, то его так же следует взять под стражу. ]]);
 
                    else
 
                        p([[Мишеля Леруа же слишком опасно держать здесь. Стоит высадить его где-нибудь на побережье Северной Америки. ]]);
 
                    end;
 
                end;
 
            else
 
                p([[. Единственным разумным решением, на мой взгляд, будет изгнать Леонарда Голдмана с Атлантиды. Высадить его где-нибудь неподалеку от какого-нибудь городка. ]]);
 
                if leroy_state ~= 4 then
 
                    if char_moreau_dlg.lfc_leroy_imprison > 0 then
 
                        p([[Что касается Мишеля Леруа, то его следует взять под стражу. Такого как он отпускать на поверхность слишком опасно. ]]);
 
                    else
 
                        p([[Мишеля Леруа следует отправить вместе с ним. Преступникам не место на станции. ]]);
 
                    end;
 
                end;
 
            end;
 
        else
 
            if char_moreau_dlg.lfc_leroy_imprison > 0 then
 
                p([[, к которым мы пока не готовы. Я считаю, что Мишеля Леруа следует посадить под арест, как минимум до того времени, как не вернется экспедиция Уильяма.]]);
 
            else
 
                p([[. Мишеля Леруа же слишком опасно держать здесь. Стоит высадить его где-нибудь на побережье Северной Америки. ]]);
 
            end;
 
        end;
 
        p([[ У меня все". ^Даркстар передает слово Екатерине Светловой и она предлагает свое решение:"]]);
 
        if atl_lfc_goldman_exposed then
 
            if leroy_state == 4 then
 
                if char_svetlova_dlg.lfc_goldman_banish > 0 then
 
                    p([[Я считаю, что Голдмана стоит выслать отсюда. Увезти куда подальше, только и всего. ]]);
 
                else
 
                    p([[Голдману стоит посидеть немного взаперти и подумать. Думаю, он не до конца потерян. ]]);
 
                end;
 
            else
 
                if char_svetlova_dlg.lfc_goldman_banish > 0 then
 
                    if char_svetlova_dlg.lfc_leroy_banish > 0 then
 
                        p([[Я считаю, что обоих стоит выслать отсюда. Увезти куда подальше, только и всего. ]]);
 
                    else
 
                        p([[Голдмана можно просто выслать на поверхность, но Леруа слишком опасен. Этот пусть остается здесь, под надзором. ]]);
 
                    end;
 
                else
 
                    if char_svetlova_dlg.lfc_leroy_banish > 0 then
 
                        p([[Голдману стоит посидеть немного взаперти и подумать. Думаю, он не до конца потерян. А вот Леруа не место на Атлантиде. ]]);
 
                    else
 
                        p([[Я считаю, что обоих нужно запереть и держать так, пока они не поймут свою ошибку. ]]);
 
                    end;
 
                end;
 
            end;
 
        else
 
            if char_svetlova_dlg.lfc_leroy_banish > 0 then
 
                p([[Леруа не место на Атлантиде. ]]);
 
            else
 
                p([[Пусть Леруа немного посидит взаперти, а потом посмотрим. ]]);
 
            end;
 
        end;
 
        p([[Это все". ^Даркстар передает слово Майклу Райту и он говорит следующее: "]]);
 
        if atl_lfc_goldman_exposed then
 
            if leroy_state == 4 then
 
                if char_michael_wright_dlg.lfc_goldman_banish > 0 then
 
                    p([[Голдману не место на Атлантиде. ]]);
 
                else
 
                    p([[Голдмана следует изолировать. ]]);
 
                end;
 
            else
 
                if char_michael_wright_dlg.lfc_goldman_banish > 0 then
 
                    if char_michael_wright_dlg.lfc_leroy_banish > 0 then
 
                        p([[Им не место на Атлантиде. ]]);
 
                    else
 
                        p([[Голдману не место на Атлантиде, а Леруа следует изолировать. ]]);
 
                    end;
 
                else
 
                    if char_michael_wright_dlg.lfc_leroy_banish > 0 then
 
                        p([[Голдмана следует изолировать, а вот Леруа не место на Атлантиде. ]]);
 
                    else
 
                        p([[Их следует изолировать. ]]);
 
                    end;
 
                end;
 
            end;
 
        else
 
            if char_michael_wright_dlg.lfc_leroy_banish > 0 then
 
                p([[Леруа не место на Атлантиде. ]]);
 
            else
 
                p([[Леруа следует изолировать. ]]);
 
            end;
 
        end;
 
        p([[Я закончил". ^Теперь Даркстар передает слово вам. ]]);
 
        if atl_lfc_goldman_exposed then
 
            psub("goldman");
 
        else
 
            psub("leroy");
 
        end;
 
    end;
 
    decision = function(s)
 
        local banish_g = 0;
 
        local execut_g = 1;
 
        local prison_g = 0;
 
        local banish_l = 0;
 
        local execut_l = 1;
 
        local prison_l = 0;
 
        
 
        if atl_lfc_court.goldman == 1 then
 
            execut_g = execut_g + 1;
 
        elseif atl_lfc_court.goldman == 2 then
 
            banish_g = banish_g + 1;
 
        elseif atl_lfc_court.goldman == 3 then
 
            prison_g = prison_g + 1;
 
        end;
 
        
 
        if atl_lfc_court.leroy == 1 then
 
            execut_l = execut_l + 1;
 
        elseif atl_lfc_court.leroy == 2 then
 
            execut_l = execut_l + 1;
 
        elseif atl_lfc_court.leroy == 3 then
 
            execut_l = execut_l + 1;
 
        end;
 
        
 
        if char_moreau_dlg.lfc_goldman_banish >= char_moreau_dlg.lfc_goldman_imprison then
 
            banish_g = banish_g + 1;
 
        else
 
            prison_g = prison_g + 1;
 
        end;
 
        
 
        if atl_lfc_court.goldman == 1 then
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
        end;
 
    
 
        if char_svetlova_dlg.lfc_goldman_banish >= char_svetlova_dlg.lfc_goldman_imprison and char_svetlova_dlg.lfc_goldman_banish >= char_svetlova_dlg.lfc_goldman_execute then
 
            banish_g = banish_g + 1;
 
            if atl_lfc_court.goldman == 1 then
 
                atl_rep_svetlova = atl_rep_svetlova - 1;
 
            end;
 
        elseif char_svetlova_dlg.lfc_goldman_imprison >= char_svetlova_dlg.lfc_goldman_execute then
 
            prison_g = prison_g + 1;
 
            if atl_lfc_court.goldman == 1 then
 
                atl_rep_svetlova = atl_rep_svetlova - 1;
 
            end;
 
        else
 
            execut_g = execut_g + 1;
 
        end;
 
        
 
        if char_michael_wright_dlg.lfc_goldman_banish >= char_michael_wright_dlg.lfc_goldman_imprison and char_michael_wright_dlg.lfc_goldman_banish >= char_michael_wright_dlg.lfc_goldman_execute then
 
            banish_g = banish_g + 1;
 
            if atl_lfc_court.goldman == 1 then
 
                atl_rep_wright = atl_rep_wright - 1;
 
            end;
 
        elseif char_michael_wright_dlg.lfc_goldman_imprison >= char_michael_wright_dlg.lfc_goldman_execute then
 
            prison_g = prison_g + 1;
 
            if atl_lfc_court.goldman == 1 then
 
                atl_rep_wright = atl_rep_wright - 1;
 
            end;
 
        else
 
            execut_g = execut_g + 1;
 
        end;
 
        
 
        if char_moreau_dlg.lfc_leroy_banish >= char_moreau_dlg.lfc_leroy_imprison then
 
            banish_l = banish_l + 1;
 
        else
 
            prison_l = prison_l + 1;
 
        end;
 
        
 
        if atl_lfc_court.leroy == 1 then
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
        end;
 
        
 
        if char_svetlova_dlg.lfc_leroy_banish >= char_svetlova_dlg.lfc_leroy_imprison and char_svetlova_dlg.lfc_leroy_banish >= char_svetlova_dlg.lfc_leroy_execute then
 
            banish_l = banish_l + 1;
 
            if atl_lfc_court.leroy == 1 then
 
                atl_rep_svetlova = atl_rep_svetlova - 1;
 
            end;
 
        elseif char_svetlova_dlg.lfc_leroy_imprison >= char_svetlova_dlg.lfc_leroy_execute then
 
            prison_l = prison_l + 1;
 
            if atl_lfc_court.leroy == 1 then
 
                atl_rep_svetlova = atl_rep_svetlova - 1;
 
            end;
 
        else
 
            execut_l = execut_l + 1;
 
        end;
 
        
 
        if char_michael_wright_dlg.lfc_leroy_banish >= char_michael_wright_dlg.lfc_leroy_imprison and char_michael_wright_dlg.lfc_leroy_banish >= char_michael_wright_dlg.lfc_leroy_execute then
 
            banish_l = banish_l + 1;
 
            if atl_lfc_court.leroy == 1 then
 
                atl_rep_wright = atl_rep_wright - 1;
 
            end;
 
        elseif char_michael_wright_dlg.lfc_leroy_imprison >= char_michael_wright_dlg.lfc_leroy_execute then
 
            prison_l = prison_l + 1;
 
            if atl_lfc_court.leroy == 1 then
 
                atl_rep_wright = atl_rep_wright - 1;
 
            end;
 
        else
 
            execut_l = execut_l + 1;
 
        end;
 
        
 
        local r = [[Даркстар забирает листы с решениями всех участников совета и, просмотрев их, оглашает вердикт: "]];
 
        
 
        if atl_lfc_goldman_exposed then
 
            if banish_g >= prison_g and banish_g >=execut_g then
 
                goldman_state = 3;
 
                r = r .. [[Леонард Голдман будет изгнан с Атлантиды. ]];
 
            elseif prison_g >= execut_g then
 
                goldman_state = 2;
 
                r = r .. [[Леонард Голдман будет содержаться в заключении. ]];
 
            else
 
                goldman_state = 1;
 
                r = r .. [[Леонард Голдман будет казнен. ]];
 
            end;
 
        end;
 
        
 
        if leroy_state ~= 4 then
 
            if banish_l >= prison_l and banish_l >=execut_l then
 
                leroy_state = 3;
 
                r = r .. [[Мишель Леруа будет изгнан с Атлантиды. ]];
 
            elseif prison_g >= execut_g then
 
                leroy_state = 2;
 
                r = r .. [[Мишель Леруа будет содержаться в заключении. ]];
 
            else
 
                leroy_state = 1;
 
                r = r .. [[Мишель Леруа будет казнен. ]];
 
            end;
 
        end;
 
        psub("leave");
 
        return r .. [[Решение принято, все свободны". ]];
 
    end;
 
    phr = {
 
        {tag="goldman"};
 
        {"Голдман -- просто жертва. Леруа задурил ему мозги. Пусть посидить в камере и подумает. ", function(s)
 
            char_moreau_dlg.lfc_goldman_imprison = char_moreau_dlg.lfc_goldman_imprison + 1;
 
            char_svetlova_dlg.lfc_goldman_imprison = char_svetlova_dlg.lfc_goldman_imprison + 1;
 
            char_michael_wright_dlg.lfc_goldman_imprison = char_michael_wright_dlg.lfc_goldman_imprison + 1;
 
            if leroy_state == 4 then
 
                psub("final_goldman");
 
                return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
            else
 
                psub("leroy");
 
                return "";
 
            end;
 
        end};
 
        {"Голдману не место на Атлантиде. ", function(s)
 
            char_moreau_dlg.lfc_goldman_banish = char_moreau_dlg.lfc_goldman_banish + 1;
 
            char_svetlova_dlg.lfc_goldman_banish = char_svetlova_dlg.lfc_goldman_banish + 1;
 
            char_michael_wright_dlg.lfc_goldman_banish = char_michael_wright_dlg.lfc_goldman_banish + 1;
 
            if leroy_state == 4 then
 
                psub("final_goldman");
 
                return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
            else
 
                psub("leroy");
 
                return "";
 
            end;
 
        end};
 
        {"Голдман подверг опасности всю станцию. Его следует казнить. ", function(s)
 
            char_svetlova_dlg.lfc_goldman_execute = char_svetlova_dlg.lfc_goldman_execute + 1;
 
            char_michael_wright_dlg.lfc_goldman_execute = char_michael_wright_dlg.lfc_goldman_execute + 1;        
 
            if leroy_state == 4 then
 
                psub("final_goldman");
 
                return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
            else
 
                psub("leroy");
 
                return "";
 
            end;
 
        end};
 
        {tag="leroy"};
 
        {"Нельзя давать Леруа то, ради чего он затеял все это. Держать его на станции также слишком опасно. Остается единственный способ избавиться от него. ", function(s)
 
            char_svetlova_dlg.lfc_leroy_execute = char_svetlova_dlg.lfc_leroy_execute + 1;
 
            char_michael_wright_dlg.lfc_leroy_execute = char_michael_wright_dlg.lfc_leroy_execute + 1;
 
            if atl_lfc_goldman_exposed then
 
                psub("final_goldman");
 
            else
 
                psub("final_leroy");
 
            end;
 
            return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
        end};
 
        {"Лучшим решением будет отослать Леруа. У нас нет возможности содержать его на станции, не говоря уж о повышенной опасности этого. ", function(s)
 
            char_moreau_dlg.lfc_leroy_banish = char_moreau_dlg.lfc_leroy_banish + 1;
 
            char_svetlova_dlg.lfc_leroy_banish = char_svetlova_dlg.lfc_leroy_banish + 1;
 
            char_michael_wright_dlg.lfc_leroy_banish = char_michael_wright_dlg.lfc_leroy_banish + 1;
 
            if atl_lfc_goldman_exposed then
 
                psub("final_goldman");
 
            else
 
                psub("final_leroy");
 
            end;
 
            return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
        end};
 
        {"Нельзя давать Леруа то, ради чего он затеял все это. Нужно изолировать его. ", function(s)
 
            char_moreau_dlg.lfc_leroy_imprison = char_moreau_dlg.lfc_leroy_imprison + 1;
 
            char_svetlova_dlg.lfc_leroy_imprison = char_svetlova_dlg.lfc_leroy_imprison + 1;
 
            char_michael_wright_dlg.lfc_leroy_imprison = char_michael_wright_dlg.lfc_leroy_imprison + 1;
 
            if atl_lfc_goldman_exposed then
 
                psub("final_goldman");
 
            else
 
                psub("final_leroy");
 
            end;
 
            return [[Даркстар продолжает: "Теперь каждый напишет свое решение, после чего я посчитаю и оглашу результат". ]];
 
        end};
 
        {tag="final_goldman"};
 
        {"[Казнить Голдмана]", function(s)
 
            atl_lfc_court.goldman = 1;
 
            if leroy_state == 4 then
 
                return atl_lfc_court:decision();
 
            else
 
                psub("final_leroy");
 
            end;
 
        end};
 
        {"[Изгнать Голдмана]", function(s)
 
            atl_lfc_court.goldman = 2;
 
            if leroy_state == 4 then
 
                return atl_lfc_court:decision();
 
            else
 
                psub("final_leroy");
 
            end;
 
        end};
 
        {"[Заключить Голдмана]", function(s)
 
            atl_lfc_court.goldman = 3;
 
            if leroy_state == 4 then
 
                return atl_lfc_court:decision();
 
            else
 
                psub("final_leroy");
 
            end;
 
        end};
 
        {tag="final_leroy"};
 
        {"[Казнить Леруа]", function(s)
 
            atl_lfc_court.leroy = 1;
 
            return atl_lfc_court:decision();
 
        end};
 
        {"[Изгнать Леруа]", function(s)
 
            atl_lfc_court.leroy = 2;
 
            return atl_lfc_court:decision();
 
        end};
 
        {"[Заключить Леруа]", function(s)
 
            atl_lfc_court.leroy = 3;
 
            return atl_lfc_court:decision();
 
        end};
 
        {tag="leave"};
 
        {"[Уйти]", function(s)
 
            walkin("atl_lfc_outro_court");
 
        end};
 
    };
 
};
 
 
atl_lfc_dock_end_ko = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[
 
		Вы оглушаете саботажника и ждете, когда в помещение придут охранники.^
 
		Они приходят через несколько минут вместе с Винсентом Даркстером. Охранники уносят неподвижного Леруа, а Даркстар обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим".^
 
		Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить".
 
	]];
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_luna_drake_room");
 
	};
 
	entered = function(s)
 
		atl_lfc_state = 3;
 
	end;
 
};
 
 
atl_lfc_outro_court = cutscene("atl_lfc_outro_court", "Атлантида", [[Вы возвращаетесь в свою комнату. Вскоре, раздается звонок телефона. вы поднимаете трубку и слышите голос Моро: "Дрейк, жду вас в моем кабинете". ]], "atl_luna_drake_room", function(s)
 
    atl_lfc_state = 5;
 
end);
 
\ No newline at end of file
atlantis_navjiarr.lua
Show inline comments
 
deleted file
battlefield.lua
Show inline comments
 
@@ -119,9 +119,20 @@ end;
 
    end;
 
end;
 

	
 
hp_indicator = obj {
 
    nam = "hp_indicator";
 
    disp = function(s)
 
        return "Здоровье:" .. pl.hp .. "/10";
 
    end;
 
};
 

	
 
hp_indicator:disable();
 

	
 

	
 
battlefield = function(tab)
 
    local make_turn = tab.make_turn;
 
    
 
    tab.nosave = true;
 
    tab.noautosave = true;
 
    tab.isPassable = function(s, x, y)
 
        if (x < 1 or x > 7 or y < 1 or y > 7 or tab.map[y][x] > 0) then
 
            return false;
 
@@ -244,12 +255,17 @@ battlefield = function(tab)
 

	
 
    tab.entered = function(s)
 
        s:check_walk();
 
        hp_indicator:enable();
 
        if (type(entered) == 'function') then
 
            return entered(s);
 
        else
 
            return entered;
 
        end;
 
    end;
 
    
 
    tab.left = function(s)
 
        hp_indicator:disable();
 
    end;
 

	
 
    tab.onreload = function(s)
 
        here():make_turn();
dock2.lua
Show inline comments
 
@@ -47,14 +47,12 @@ dock_gate = obj {
 
			return false;
 
		end;
 
	end;
 
	
 
};
 
 
dock_inside = room {
 
	nam = "dock_inside";
 
	disp = "Док";
 
    dsc = [[На территории дока повсюду раскиданы обломки дерева, железа, какие-то мешки. Ржавые ворота в заборе застыли в приоткрытом состоянии. Вдалеке, у причала, стоит старый грузовой кран. До вас доносятся завывания ветра и скрип ржавого металла. ]];
 
	--dsc = [[Вы находитесь на территории дока, принадлежавшего компании "Вестхейвен Трансоушен", о чем свидетельствует оставшаяся позади табличка. Вдалеке, у причала стоит старый грузовой кран. Вы не слышите ничего, кроме завываний ветра и скрипа ржавого металла. ]];
 
	way = {
 
		vroom("На улицу", "dock_2");
 
		vroom("К причалу", "dock_mooring");
 
@@ -66,18 +64,20 @@ dock_inside = room {
 
 
dock_boxes = obj {
 
    var {
 
        searched = false;
 
        searched = 0;
 
    };
 
	nam = "dock_boxes";
 
	disp = "Ящики";
 
	dsc = [[Ровными рядами вокруг расположены старые грузовые {контейнеры}. Краска на большинстве из них повреждена настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ]];
 
	act = function(s)
 
		if (not s.searched) then
 
			s.searched = true;
 
		if s.searched == 0 then
 
			s.searched = 1;
 
			put(item_pump_broken, pl);
 
			return [[
 
				В одном из ящиков вы находите неисправный ручной насос. 
 
			]];
 
			return [[В одном из ящиков вы находите неисправный ручной насос. ]];
 
        elseif s.searched == 1 then
 
            s.searched = 2;
 
            pl.money = pl.money + 5;
 
            return [[В одном из ящиков кто-то оставил монету в пять шиллингов. ]];
 
		end;
 
	end;
 
};
 
@@ -97,7 +97,7 @@ leviathan_entry = room {
 
dock_mooring = room {
 
	nam = "dock_inside";
 
	disp = "Причал";
 
	dsc = [[У причала пусто, не считая нескольких кучек мусора - старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. ]];
 
	dsc = [[У причала пусто, не считая нескольких кучек мусора: старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. ]];
 
	view = [[Левиафан находится в доке. ]];
 
	way = {
 
		vroom("К воротам", "dock_inside");
 
@@ -106,14 +106,15 @@ dock_mooring = room {
 
	};
 
	obj = {
 
		"dock_leviathan",
 
		"dock_crane"
 
		"dock_crane",
 
        "money_dock"      
 
	};
 
};
 
 
dock_leviathan = obj {
 
    var {
 
        submerged = true;
 
        pump_state = 0; -- 0 в отсеке вода; 1 - в отсеке нет воды
 
        pump_state = 0; -- 0 в отсеке вода; 1 в отсеке нет воды
 
        open = false;
 
    };
 
	nam = "dock_leviathan";
 
@@ -123,9 +124,9 @@ dock_leviathan = obj {
 
			return "Под поверхностью воды виден какой-то большой металлический {объект}. ";
 
		else
 
			if (s.open) then
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен открытый {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]];
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен открытый {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 -- Левиафан". ]];
 
			else
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен наглухо задраенный {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]];
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен наглухо задраенный {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 -- Левиафан". ]];
 
			end;
 
		end;
 
	end;
 
@@ -168,7 +169,7 @@ dock_crane = obj {
 
		if (s.state == 0) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} сейчас подняты. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 1) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно - они почти полностью погружены в грязную воду. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно -- они почти полностью погружены в грязную воду. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 2) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} подцеплены к предмету, скрывающемуся под водой. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		else
engineering.lua
Show inline comments
 
deleted file
final_battle.lua
Show inline comments
 
deleted file
final_scene.lua
Show inline comments
 
deleted file
first_city_inner_rim.lua
Show inline comments
 
deleted file
first_city_middle_rim.lua
Show inline comments
 
deleted file
first_city_outer_rim.lua
Show inline comments
 
deleted file
game_over.lua
Show inline comments
 
game_over_lfc_shot = game_over("game_over_lfc_shot", [[Саботажник замечает вас и делает выстрел. Пуля попадает вам в грудь и вы умираете. ]]);
 
 
game_over_crab_cave = game_over("game_over_crab_cave", [[Мощный удар острой клешни пробивает стекло скафандра. Захлебываясь холодной соленой водой океана, вы умираете. ]]);
 
 
game_over_caught_iraa = game_over("game_over_caught_iraa", [[Стражник замечает вас и поднимает тревогу. Теперь, даже если вам удастся одолеть его и добыть фрагмент карты, вы ничего не сможете сделать -- на Атлантиде вас немедленно посадят под арест, а навьяры тепеь точно нестанут вам помогать. ]]);
 
 
game_over_banished_lfc = game_over("game_over_banished_lfc", [[Как только вы оказываетесь в межсекционном коридоре, вас окружают стражники Атлантиды. Они просят вас проследовать за ними и вы понимаете, что сопротивление бесполезно. Вас проводят в кабинет Винсента Даркстара. Когда стражники выходят, начальник службы безопасности поднимается из-за стола и начинает вас отчитывать:"Господин Дрейк. Вы крайне разочаровали меня. Мало того! Вы поставили под угрозу дальнейшую работу станции", -- впервые вы слышите, как Даркстар практически срывается на крик -- до этого он всегда говорил спокойно и уверенно, -- "Отныне, вы лишены всяческих привилегий и при первой возможности будете депортированы". Когда вы выходите из кабинета, охранники сопроваждают вас в вашу каюту и запирают там. Несколько месяцев вы проводите взаперти. Уильям и Адриан Блэк так и не вернулись из своей экспедиции.^Вскоре вас в запертой каюте Левиафана, мало отличающейся от каюты на станции, высылают на поверхность. Вас высаживают возле одного из небольшихэ прибрежных городков соединенных штатов, откуда вы без проблем доберетесь куда угодно. Однако, путь на Атлантиду потерян для вас навсегда.  ]]);
 
@@ -16,11 +20,11 @@ game_over_za_temple = game_over("game_over_za_temple", [[Развернув субмарину вы подставили винт под удары ваших противников. Несколько попаданий в винт выводят его из строя и Левиафан оказывается обездвижен. Теперь вы совершенно беззащитны перед атаками противника. ]]);
 
 
game_over_kraken = game_over("game_over_kraken", [[От сильных ударов корпус субмарины начал расходиться по швам. В помещения хлынула вода. Озверевший кракен продолжает хлестать Левиафан своими щупальцами. Наконец, чудовище хватает подлодку и отправляется вместе с ней в бездну. К этому времени на борту уже не осталось никого живого, кроме, быть может, навьяров. ]]);
 
 
game_over_za_fight = game_over("game_over_za_fight", [[Стражники навьяров - опасные противники. Очередной удар копья проделывает дыру в вашем скафандре и он наполняется водой. Вскоре вы задыхаетесь. ]]);
 
game_over_za_fight = game_over("game_over_za_fight", [[Стражники навьяров -- опасные противники. Очередной удар копья проделывает дыру в вашем скафандре и он наполняется водой. Вскоре вы задыхаетесь. ]]);
 
 
game_over_za_learr = game_over("game_over_za_learr", [[Леарр пытается оттолкнуть вас от штурвала и остановить Левиафан. Вы делаете резкий поворот и субмарина кренится на бок. Леарр, не удержавшись на ногах, падает. Навьярка кричит в бессильной ярости, когда вы пролетаете над воротами Нлейисланотра. Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Еще через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку - отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
game_over_za_learr = game_over("game_over_za_learr", [[Леарр пытается оттолкнуть вас от штурвала и остановить Левиафан. Вы делаете резкий поворот и субмарина кренится на бок. Леарр, не удержавшись на ногах, падает. Навьярка кричит в бессильной ярости, когда вы пролетаете над воротами Нлейисланотра. Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Еще через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
 
game_over_za_anna = game_over("game_over_za_learr", [[Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Вы слышите едва различимый среди шума двигателей голос Анны: "Это была плохая идея". Через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку - отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
game_over_za_anna = game_over("game_over_za_learr", [[Вы берете курс к центру города, а вокруг вас начинают появляться целые отряды вооруженных навьяров. Восседая на белых акулах, всадники несутся наперерез Левиафану. Поначалу, копья отскакивают от металлической обшивки субмарины, не насося ей ущерба, а выстрелы из звуковой пушки выкашивают огромные прорехи в рядах противника. Однако, вскоре, несколько копий попадает в уязвимые места: на приборной панели загораются тревожные лампочки, сообщающие о поломках. Вы слышите едва различимый среди шума двигателей голос Анны: "Это была плохая идея". Через мгновение винт останавливается. Вы чувствуете запах дыма, заполняющий помещение. Вы пытаетесь использовать звуковую пушку, однако она не работает. Вы пытаетесь запустить торпеды, но мощный взрыв сотрясает подлодку -- отверстия торпедных аппаратов были заблокированы и торпеды взорвались находясь еще внутри Левиафана. Свет гаснет, а отсеки начинает заполнять вода. Вы наглухо задраиваете люк рубки, но вас это уже не спасет. ]]);
 
 
game_over_eaten_by_octopus = game_over("game_over_eaten_by_octopus", [[Гигантский спрут мгновенно опутывает вас своими щупальцами. Вы не можете вырваться из стальной хватки чудовища. Металл скафандра скрипит, не выдерживая давления и вы понимаете, что ваши дни сочтены. ]]);
 
hope.lua
Show inline comments
 
deleted file
hope_cutscene.lua
Show inline comments
 
deleted file
images/book_bones.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_city.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_cliff.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_current.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_ravine.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_stones.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_temple.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/book_weed.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_0.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_0p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_1.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_1p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_2.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_2p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_3.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_3p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_4.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_4p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_5.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/cavelock_5p.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/checkerblack.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/checkerblackq.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/checkerboard.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/checkerwhite.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/checkerwhiteq.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_0.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_1.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_10.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_11.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_12.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_13.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_14.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_15.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_2.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_3.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_4.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_5.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_6.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_7.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_8.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_9.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/king_crab.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/learr.png
Show inline comments
 
binary diff not shown
Show images
images/little_crab.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_1.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_2.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_3.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_4.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_5.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_6.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/little_crab_7.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/player.png
Show inline comments
 
binary diff not shown
Show images
images/unseen_enemy.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_bg.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_door.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_guard.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_guard_1.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_guard_2.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_guard_3.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_guard_4.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_mask.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_plan.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_player.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_shelves.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/wh32_wall.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
items.lua
Show inline comments
 
@@ -12,26 +12,81 @@ item_book_on_navjiarr = obj {
 
    end;
 
};
 
 
item_book_dlg = obj {
 
item_bankbook = obj {
 
    nam = "item_bankbook";
 
    disp = "Сберкнижка";
 
    inv = [[Ваша сберкнижка. Согласно ей, у вас есть 150 шиллингов на банковском счете. ]];
 
};
 
 
item_book_dlg = dlg {
 
    var = {
 
        a = false;
 
        b = false;
 
        c = false;
 
        d = false;
 
    };
 
    nam = "item_book_dlg";
 
    nam = "Книга о навьярах";
 
    entered = [[Вы открываете оглавление и ищете нужную вам информацию. ]];
 
    phr = {
 
        {always=true, "Арифметика", [[Навьяры используют шестеричную систему счисления. Для цифр используются цветовые обозначения, аналогичные буквам: фиолетовый - 0, синий - 1, зеленый - 2, желтый - 3, оранжевый - 4, красный - 5. названия каждой цифры на навьярском языке(записаны в системе Светловой) 0 – Nol, 1 – Lse, 2 – Dyle, 3 – Vlye, 4 – Elt, 5 – Tei. ]]};
 
        --TODO полезное описание картографии
 
        {always=true, "Картография", [[Навьярские карты значительно отличаются от наших. Масштабы не задаются и не выдерживаются, позволяя тем самым умещать множество деталей там где они нужны и сжимать расстояние там, где это не имеет значения. навьярские карты в основном используются для записи путей от центральной точки к нескольким удаленным от нее. ]]};
 
        {always=true, "Арифметика", [[Навьяры используют шестиричную систему счисления. Для цифр используются цветовые обозначения, аналогичные буквам. В скобках приведены названия на навьярском языке(запись по системе Светловой): ^]]..
 
            img('box:4x16,#8000FF,255') .. [[ - 0 (Nol)^]] ..
 
            img('box:4x16,#0080FF,255') .. [[ - 1 (Lse)^]] ..
 
            img('box:4x16,#00FF80,255') .. [[ - 2 (Dyle)^]] ..
 
            img('box:4x16,yellow,255') .. [[ - 3 (Vlye)^]] ..
 
            img('box:4x16,#FFCC00,255') .. [[ - 4 (Elt)^]] ..
 
            img('box:4x16,red,255') .. [[ - 5 (Tei)]]};
 
        {always=true, "Картография", [[Навьярские карты значительно отличаются от наших. Масштабы не задаются и не выдерживаются, позволяя тем самым умещать множество деталей там где они нужны и сжимать расстояние там, где это не имеет значения. навьярские карты в основном используются для записи путей от центральной точки к нескольким удаленным от нее. Некоторые обозначения: ^]] ..
 
        img('images/book_temple.png') .. " - храм ^" ..
 
        img('images/book_city.png') .. " - город ^" ..
 
        img('images/book_current.png') .. " - течение. Если символ идет из центра к краю - значит следует идти по(или против) направления течения, если перпендикулярно радиусу окружностей - то течение пересекает путь^" ..
 
        img('images/book_ravine.png') .. " - ущелье. Используется аналогично предыдущему ^" ..
 
        img('images/book_cliff.png') .. " - скала. Используется аналогично течению или ущелью. Сторона с отметками означает край, находящийся выше ^" ..
 
        img('images/book_stones.png') .. " - сооружение. Используется для любых искусственных сооружений ^" ..
 
        img('images/book_bones.png') .. " - кости ^Список продолжается еще на много страниц. ", code [[ cart_known = true; ]]};
 
        {always=true, "Язык", code [[ psub('language'); ]]};
 
        {always=true, "[Отложить книгу]", code [[ if item_book_dlg.a and item_book_dlg.b and item_book_dlg.c then language_known = true; end; back(); ]]};
 
        {always=true, "Язык", code [[ psub('language'); ]]};
 
        {tag="language"};
 
        --TODO заполнить этот раздел
 
        {always=true, "Алфавит и письменность", [[]], code [[ item_book_dlg.a = item_book_dlg.a + 1; ]]};
 
        {always=true, "Грамматика", [[]], code [[ item_book_dlg.b = item_book_dlg.b + 1; ]]};
 
        {always=true, "Словарь", [[]], code [[ item_book_dlg.c = item_book_dlg.c + 1; ]]};
 
        {always=true, "[В другой раздел]", code [[ pret(); ]]}
 
        {always=true, "Общение", [[В обычной жизни навьяры могут использовать два взаимозаменяемых способа общения: ^1) Наиболее часто навьяры используют цветовые сигналы, подаваемые с использованием особых отростков на голове, напоминающих плавники. Светящийся пигмент просвечивает через тонкую кожу и равномерно распространяется к краям "плавника", постепенно затухая. Как правило, навьяры "говорят" достаточно быстро - у взрослого навьяра на плавнике может одновременно находиться около десятка таких цветных полос. Последовательности цветов разделяются т.н. паузами и полупаузами(полупауза как правило заметно тоньше обычной цветной полосы). ^2) Альтернативно, навьяры могут общаться посредством устной речи, однако практически не пользуются этим в естественной среде обитания(примечание Сильвии Уинтерлайт: навьяры не рыбы, а амфибии. Вероятно некогда они жили преимущественно на поверхности и использовали этот способ общения в качестве основного). Количество звуков примерно соответствует колицеству цветов, используемых для первого способа. Каждому цвету имеется четкое звуковое соответствие. ]], code [[ item_book_dlg.a = true; ]]};
 
        {always=true, "Алфавит и письменность", [[Современные навьярские записи выглядят как каменные таблички с ровными рядами цветных полос. Ширина полос разнится от документа к документу и составляет от 1 до 15 мм. Хотя данный способ записи достаточно компактен, для нас он неудобен и дорог. С этой целью, я предлагаю использовать альтернативную систему письменности, основанную на латинском алфавите. Каждому цвету будет сопоставлена определенная буква. Ниже приведено соответствие цветов звукам и буквам. ^]] ..
 
        img('box:4x16,red,255') .. " - A^" ..
 
        img('box:4x16,orange,255') .. " - R^" ..
 
        img('box:4x16,#FFCC00,255') .. " - N^" ..
 
        img('box:4x16,yellow,255') .. " - E^" ..
 
        img('box:4x16,#B9FF00,255') .. " - V^" ..
 
        img('box:4x16,#7BAA00,255') .. " - F^" ..
 
        img('box:4x16,#00FF00,255') .. " - Y^" ..
 
        img('box:4x16,#00FF80,255') .. " - L^" ..
 
        img('box:4x16,#00FFFF,255') .. " - I^" ..
 
        img('box:4x16,#0080FF,255') .. " - H^" ..
 
        img('box:4x16,#0000FF,255') .. " - P^" ..
 
        img('box:4x16,#8000FF,255') .. " - K^" ..
 
        img('box:4x16,#BF00FF,255') .. " - O^" ..
 
        img('box:4x16,#FF00FF,255') .. " - D^" ..
 
        img('box:4x16,#800080,255') .. " - T^" ..
 
        img('box:4x16,#FF0080,255') .. " - Z^" ..
 
        img('box:4x16,#AA0055,255') .. " - S", code [[ item_book_dlg.b = true; ]]};
 
        {always=true, "Структура слова", [[В навьярском языке слова не являются фиксированными единицами, а составляются из множества корней-признаков, присущих данному предмету(rr) или действию (nn). Признаки могут отделяться от остальных корнями "e"(если речь идет о разделенных предметах) или "yhe"(если речь идет о под0группе). Примеры: ^Na'vji'a'rr - навьяр^Ty'yhe'na'vji'a'rr - ты -- навьяр^Vee'nn - двигаться^Zee'vee'nn - отдаляться^ Основные периоды времени:^Nley'elra'ysl'rr - сутки^Ynd'elra'ysl'rr - год^rja'elra'ysl'rr - 216 лет]], code [[ item_book_dlg.c = true; ]]};
 
        {always=true, "Словарь", [[A:^A, av, ava – живой^aed – океан, море^Ah - согласие^Arn – работа^Atre - предупреждение, опасность^Anot – жилище^Arhe – назад^Ayhe, Ayke – знание^]] ..
 
                                 [[D:^Dea - предложение^Doo - последствие^]] ..
 
                                 [[E:^Ere – множество, группа^Eanea - улица^E – признак объединения^Edhe – насмешка^Elra – период^Eyle – всеобщность^Eylesl - вечность^Eth - сон^Ef – способ действия^]] ..
 
                                 [[H:^Hi - помощь^He – верх^Hyd - причина^Has – неопределенность^Hya – память, хранение^]] ..
 
                                 [[I:^I – Я, Мы^In – добавление, дополнение^Ien — верх^Ile – видимость^Intre – уверенность^Iraa – среда(окружение)^]] ..
 
                                 [[J:^Jir — трава, водоросль^]]..
 
                                 [[K:^Kd – неодобрение^Ky - зуб^]] ..
 
                                 [[L:^Lea – Радость^Lek – место^Lyt - встреча^]]..
 
                                 [[N:^Nea – путь, дорога^Na – низ^Nev — изменение^Nley – малый(размер, объем, количество)^Ny – присутствие^Ndi - тьма^]]..
 
                                 [[P:^Pha - светящийся, сияющий^Per - вперед^Pte – он, они, она, оно, это^Pai — копье^]]..
 
                                 [[R:^Rja – большой^Ry - Порядок^]]..
 
                                 [[T:^Tel - значимость^Ta - указание места^Tna – привязка, принадлежность^Tla – источник^Tek – механизм^Tre – множество^Ty – Ты, Вы^]]..
 
                                 [[V:^Ven – тепло^Vil — покрывало, завеса^Vee – Подвижный, движущийся^Vji – разумный^Vta – неприязнь^Vtre – отрицание. Используется для обозначения противоположности другому признаку^Vlae – разделение^Vna – низ^Viv - острый^]] ..
 
                                 [[Y:^Tea — наблюдать, смотреть^Ynd - средний^Yhe – Разграничитель – ставится после необязательных признаков^Ysl – время^]]..
 
                                 [[Z:^Za – язык^Zy - вопрос^Zee – отдаление^Yz – святилище, храм]], code [[ item_book_dlg.d = true; ]]};
 
        {always=true, "[В другой раздел]", code [[ 
 
            pret(); 
 
            if item_book_dlg.a and item_book_dlg.b and item_book_dlg.c and item_book_dlg.d then
 
                language_known = true;
 
            end;
 
        ]]}
 
    };
 
};
 
 
@@ -99,7 +154,8 @@ item_colt = obj {
 
	disp = function(s)
 
		return "Кольт (" .. tostring(s.bullets) .. " зарядов)";
 
	end;
 
	dsc = [[Ваш револьвер. Надежное оружие в хорошем состоянии. Оно еще не раз спасет вашу жизнь. У вас также есть небольшой запас патронов к нему. ]];
 
	dsc = [[На столе лежит {револьвер}. ]];
 
    tak = "Вы забираете револьвер. ";
 
	use = function(s, o)
 
        if (here().underwater) then
 
            return "Под водой это вам не поможет. ";
 
@@ -155,9 +211,8 @@ item_harpoon = obj {
 
            return "Гарпунное ружье (заряжено)";
 
        end;
 
    end;
 
    dsc = [[
 
        
 
    ]];
 
    dsc = [[К стене прислонено {гарпунное ружье}. ]];
 
    tak = "Вы забираете ружье. ";
 
    use = function(s, o)
 
        if (s.charge == 0) then
 
            return "Ружье не заряжено. ";
 
@@ -253,14 +308,14 @@ item_lamp = obj {
 
	dsc = "На столе стоит {керосиновая лампа}. ";
 
	tak = "Вы забираете лампу с собой. ";
 
	inv = function(s)
 
		if (pl.where.nolamp) then
 
		if (here().nolamp) then
 
			return "Здесь не стоит зажигать лампу. ";
 
		end;
 
		if (pl.has_light) then
 
			pl.has_light = false;
 
		if (me().has_light) then
 
			me().has_light = false;
 
			return "Вы гасите свет. ";
 
		else
 
			pl.has_light = true;
 
			me().has_light = true;
 
			return "Вы зажигаете лампу. ";
 
		end;
 
	end;
 
@@ -277,7 +332,7 @@ item_toolbox = obj {
 
			return [[Вы забираете ящик с собой]], true;
 
		end;
 
	end;
 
	inv = [[Ящик со всевозможными полезными и не очень инструментами - отвертками, ключами, молотками и т.д. ]];
 
	inv = [[Ящик со всевозможными полезными и не очень инструментами: отвертками, ключами, молотками и т.д. ]];
 
};
 
 
item_money = obj {
 
@@ -338,17 +393,17 @@ item_bottle = obj {
 
	nam = "item_bottle";
 
	disp = "Бутылка с пойлом";
 
	inv = [[Бутылка дешевого пойла. Вас воротит от одного запаха этой дряни. ]];
 
	use = function(s, o)
 
	--[[use = function(s, o)
 
		if (o == char_worker) then
 
			remove(s, pl);
 
			char_worker.bought = true;
 
			pr([[Вы подходите к рабочему и, аккуратно доставая бутылку, спрашиваете: ^
 
			pr([ [Вы подходите к рабочему и, аккуратно доставая бутылку, спрашиваете: ^
 
				-- Выпить хочешь? ^
 
				-- Ага, -- удивленно и обрадованно восклицает рабочий, протягивая руки. ^
 
				-- Меняю на твой ящик с инструментами. ^
 
				-- Идет, -- отвечает рабочий, выхватывая из ваших рук заветную бутылку. ]]);
 
				-- Идет, -- отвечает рабочий, выхватывая из ваших рук заветную бутылку. ] ]);
 
		end;
 
	end;
 
	end;]]
 
};
 
 
item_pump_broken = obj {
 
@@ -388,6 +443,7 @@ item_electrodes = obj {
 
item_ducttape = obj {
 
	nam = "item_ducttape";
 
	disp = "Изолента";
 
    seen_level = 1;
 
	dsc = [[На столе лежит {моток изоленты}. ]];
 
	tak = [[Вы забираете изоленту. ]];
 
	inv = [[Моток изоленты. ]];
 
@@ -422,14 +478,14 @@ item_unknown_schematics = obj {
 
	inv = function(s) 
 
		remove(s, pl);
 
		put(item_leviathan_schematics, pl);
 
		return [[Вы рассматриваете чертежи, найденные на складе. Это чертежи какого-то необычного корабля. Многие детали конструкции кажутся вам непонятными, излишними, переусложненными пока вы не натыкаетесь на надпись в углу: _"Проект ,,Левиафан'', Вестхейвен Трансоушен, 1900"_. Чуть ниже написано: _"Подводный корабль предназначенный для долговременных автономных путешествий"_. Теперь все встает на свои места - вот что строил ваш отец. ]];
 
		return [[Вы рассматриваете чертежи, найденные на складе. Это чертежи какого-то необычного корабля. Многие детали конструкции кажутся вам непонятными, излишними, переусложненными пока вы не натыкаетесь на надпись в углу: _"Проект ,,Левиафан'', Вестхейвен Трансоушен, 1900"_. Чуть ниже написано: _"Подводный корабль предназначенный для долговременных автономных путешествий"_. Теперь все встает на свои места -- вот что строил ваш отец. ]];
 
	end;
 
};
 
 
item_leviathan_schematics = obj {
 
	nam = "item_leviathan_schematics";
 
	disp = "Чертежи \"Левиафана\"";
 
	inv = [[Чертежи "Левиафана" - субмарины, созданной Вестхейвен Трансоушен. ]];
 
	inv = [[Чертежи "Левиафана" -- субмарины, созданной Вестхейвен Трансоушен. ]];
 
};
 
 
item_cogs = obj {
 
@@ -475,43 +531,63 @@ item_temple_disk = obj {
 
	disp = "Светодиск из храма";
 
	dsc = [[У стены лежит небольшой блестящий диск. ]];
 
	tak = [[Вы поднимаете диск. ]];
 
	inv = [[Найденный в храме блестящий гладкий диск из неизвестного материала. Диаметр около 10 сантиметров. В центре небольшое треугольное отверстие. Вдоль внешней кромки - цветные полосы. ]];
 
	inv = [[Найденный в храме блестящий гладкий диск из неизвестного материала. Диаметр около 10 сантиметров. В центре небольшое треугольное отверстие. Вдоль внешней кромки тянутся цветные полосы. ]];
 
};
 
 
item_legend_of_temple = obj {
 
	nam = "item_legend_of_temple";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. 
 
		~Легенда о храме в глубинах~]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = function(s)
 
        if (language_known) then   
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. История, записанная здесь, гласит: "В одном городе жил навьяр по имени Тревенвеерр. Однажды он прослышал о монстре, угрожающем соседним городам. Позже, ему довелось увидеть нападение этого чудовища на группу путешественников. Проследив его путь, Тревенвеерр узнал, что живет чудовище в глубоком ущелье. Вернувшись домой, навьяр начал расспрашивать мудрецов своего города -- как же быть, но никто не дал ему ответ. Тогда Тревенвеерр решил разрушить жилище монстра и отправился туда. Но вместо жилища монстра нашел он древний, чудесный храм -- светящиеся картины в нем складывались в причудливые истории и многие предметы лежали внутри. Тревенвеерр забрал все что смог, но не стал разрушать святилище. Когда он принес реликвии в свой город, то никто не смог понять, как их использовать -- записи оказались непонятны даже для мудрецов, а остальные реликвии никто вообще никогда не видел. Тогда Тревенвеерр отправился бродить по свету в поисках ответов. Долго бродил, но в итоге, нашел он ската, который рассказал ему, как одолеть чудовище. Воодушевленный, Тревенвеерр отправился в логово чудовища и с тех пор никто никогда не видел ни того, ни другого". ]];
 
        else
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. ]];
 
        end;
 
    end;
 
};
 
 
item_legend_of_dark_source = obj {
 
	nam = "item_legend_of_dark_source";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу у входа валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. 
 
		~Легенда об излучающем тьму~]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = function(s)
 
        if (language_known) then   
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. История, записанная здесь, гласит: "С древних времен в океаны живут скаты огромных размеров. Размах плавников их столь широк, что они закрывают ими свет поверхности. Мудрость их не уступает размеру. Один из них, известный под именем Фаэндирр, жил в специально встроенном для него храме, где собирал древние ценности и охранял их от воров. Однажды, прознал Фаэндирр об артефакте, именуемом световым диском. Фаэндирр загорелся идеей заполучить себе его. Он долго упрашивал навьяров передать ему световой диск, но те раз за разом отказывали скату. Тогда Фаэндирр украл его прямо из храма. Темной ночью, когда его никто не видел, пробрался он в храм, проткнул охранников хвостовым шипом и забрал артефакт. Когда навьяры пришли к нему, чтобы отобрать реликвию, он спросил их, могут ли они сказать для чего она нужна. Но никто не ответил Фаэндирру. Тогда он заперся в храме, а когда вооруженные навьяры ворвались внутрь, обрушил потолок, похоронив вместе с ними и себя и световой диск". ]];
 
        else
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. ]];
 
        end;
 
    end;
 
};
 
 
item_legend_of_first_city = obj {
 
	nam = "item_legend_of_first_city";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. 
 
		~Легенда о первом городе~]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = function(s)
 
        if (language_known) then
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. История, записанная здесь, гласит: "Многие тысячелетия назад навьяры жили в огромных городах. Великие мудрецы их строили немыслимые машины, способные делать за навьяров практически все, что можно было придумать. Кроме одного -- машины не были способны мыслить. И только в одном городе мудрецы смогли построить такую машину. Но город этот был закрыт и никто посторонний не мог попасть в него -- накрытый незримым куполом, он был надежно защищен от проникновения извне. Долго ждали они, когда покажут им великое чудо. Но никто не выходил из закрытого города. Тогда собрали навьяры войско и отправились в нему. Но, как и раньше, никто не открыл им ворот и не впустил внутрь, а все их оружие оказалось бессильно перед прозрачным барьером. Испугались они тогда и решили забыть дорогу к страшному месту раз и навсегда. И только жители одного города сохранили карту, надежно спрятав ее, решив что однажды придет тот, кто достаточно умен, силен и безрассудлен, чтобы проникнуть в город и раскрыть его тайну". ]];
 
        else
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. ]];
 
        end;
 
    end;
 
};
 
 
item_legend_of_hunter = obj {
 
	nam = "item_legend_of_hunter";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. 
 
		~Легенда об охотнике~]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = function(s)
 
        if (language_known) then
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. История, записанная здесь, гласит: "Вивпаирр был охотником. Он часто путешествовал в далекие земли в поисках невиданных рыб и новых мест. Однажды, он узнал про ходящего по поверхности рьяхеарра. Вивпаирр собрался и поднялся на поверхность. В поисках рьяхеарра он наткнулся на хевьяров. Спросив их, где искать зверя он услышал ответ ,,Докажи, что достоин и потом мы покажем тебе его. Достань нам сияющий камень из пещеры''. Сходил Вивпаирр и принес камень -- не было в этом ничего сложного, кроме того, что камень глубоко под водой лежал. Но когда он вернулся, снова сказали ему хевьяры: ,,Теперь должен убить ты зубастую рыбу, угрожающую нашим рыбакам''. Сходил Вивпаирр и убил ее -- было это достойное молодого охотника испытание, ведь рыба та была сильной молодой акулой, быстрой и острозубой. Но и тут хевьяры ответили, что это не все. Для последнего испытания попросили они Вивпаирра украсть сияющий диск из подводного города. Сразу понял охотник, что дело нечисто, но жадность и гордыня взыграли в нем -- он во что бы то ни стало хотел найти рьяхеарра. Прокравшись ночью в город, вынес он световой диск из храма родного и отдал хевьярам. А ты в ответ лишь посмеялись и сказали, что рьяхеарр здесь не живет, а живет в землях далеких. Разозлился тогда Вивпаирр и убил их всех, забрал обратно и световой диск и камень, но не вернулся он в город родной, а так и ушел. И не знает никто, нашел он своего рьяхеарра или нет". ]];
 
        else
 
            return [[Металлическая табличка, на которую нанесены цветные полосы, соответствующие буквам языка навьяров. ]];
 
        end;
 
    end;
 
};
 
 
item_lse_map = obj {
 
@@ -529,15 +605,18 @@ item_lse_map = obj {
 
            return "Фрагменты карты";
 
        end;
 
    end;
 
    tak = [[Вы забираете табличку себе. ]];
 
    tak = function(s)
 
        atl_iyh_state = 8;
 
        return [[Вы забираете табличку себе. ]];
 
    end;
 
    dsc = [[На пьедестале посреди комнаты лежит металлическая {табличка}. ]];
 
    inv = function(s)
 
        if (s.state == 1) then
 
            return [[Один из фрагментов навьярской карты, ведущей в Лсэрианотр - легендарный город подводной расы. ]];
 
            return [[Один из фрагментов навьярской карты, ведущей в Лсэрианотр -- легендарный город подводной расы. ]];
 
        elseif (s.state == 5) then
 
            return [[Навьярская карта, ведущая в Лсэрианотр - легендарный город подводной расы. ]];
 
            return [[Навьярская карта, ведущая в Лсэрианотр -- легендарный город подводной расы. ]];
 
        else
 
            return [[Несколько фрагментов навьярской карты, ведущей в Лсэрианотр - легендарный город подводной расы. ]];
 
            return [[Несколько фрагментов навьярской карты, ведущей в Лсэрианотр -- легендарный город подводной расы. ]];
 
        end;
 
    end;
 
};
 
@@ -545,22 +624,29 @@ item_lse_map = obj {
 
item_venaedanotrr_map = obj {
 
    nam = "item_venaedanotrr_map";
 
    disp = "Навьярская карта";
 
    dsc = [[Древняя металлическая пластина с картой пути к Венаэданотру. Вы путаетесь в сложном переплетении символов, линий и обозначений -- это гораздо сложнее карт, описанных в учебнике и виденных вами до сих пор. ]];
 
};
 
 
item_navjiarr_chart_1 = obj {
 
	nam = "item_navjiarr_chart_1";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
    inv = function(s)
 
        local chars = "";
 
        if ArrayUtils.indexOf(pl.party, 'anna') ~= 0 and ArrayUtils.indexOf(pl.party, 'learr') ~= 0 then
 
            chars = "Анны и Леарр";
 
        elseif ArrayUtils.indexOf(pl.party, 'anna') ~= 0 then
 
            chars = "Анны";
 
        else
 
            chars = "Леарр";
 
        end;
 
        if (cart_known) then
 
            venaedanotrr_found = true;
 
            return [[Свиток из водорослей с картой пути к Венаэданотру. Вы путаетесь в сложном переплетении символов, линий и обозначений -- это гораздо сложнее карт, описанных в учебнике и виденных вами до сих пор, однако, будучи на Левиафане, вы скорее всего сможете проложить маршрут с помощью ]] .. chars .. ". ";
 
        else
 
            return [[Свиток из водорослей с картой пути к Венаэданотру. Вы не имеете никакого понимания условных обозначений на этой карте. ]];
 
        end;
 
    end;
 
};
 
 
item_navjiarr_chart_iraa = obj {
 
	nam = "item_navjiarr_chart_iraa";
 
	disp = "Карта из Ираафаанотра";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
@@ -575,32 +661,16 @@ item_navjiarr_chart_dyp = obj {
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_navjiarr_chart_2 = obj {
 
	nam = "item_navjiarr_chart_2";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_navjiarr_chart_ven = obj {
 
    nam = "item_navjiarr_chart_ven";
 
    disp = "Карта из Венаэданотра";
 
    inv = [[Металлическая табличка с нанесенными обозначениями. ]];
 
}
 
 
item_navjiarr_chart_3 = obj {
 
	nam = "item_navjiarr_chart_3";
 
	disp = "Навьярская табличка";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет - это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_navjiarr_cube = obj {
 
	nam = "item_navjiarr_cube";
 
	disp = "Навьярский артефакт";
 
	inv = [[Небольшой прозрачный куб, очень холодный на ощупь - холод ощущается даже в скафандре. От него исходит слабое свечение. ]];
 
	inv = [[Небольшой прозрачный куб, очень холодный на ощупь. Холод ощущается даже в скафандре. От него исходит слабое свечение. ]];
 
};
 
 
item_talk_device = obj {
 
@@ -628,7 +698,7 @@ item_navjiarr_chart_z = obj {
 
    disp = "Навьярская табличка";
 
    dsc = [[На пьедестале лежит небольшая металлическая {табличка}. ]];
 
    tak = function(s)
 
        return [[Вы поднимаете предмет - это небольшая металлическая табличка. Вдалеке вы слышите скрежет камней - дверь храма снова открыта. ]];
 
        return [[Вы поднимаете предмет. Это небольшая металлическая табличка. Вдалеке вы слышите скрежет камней -- дверь храма снова открыта. ]];
 
    end;
 
    inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
@@ -638,4 +708,106 @@ item_naethvjirr_key = obj {
 
    disp = "Ключ из древнего храма";
 
    dsc = [[На пьедестале лежит небольшая прозрачная {коробочка}, внутрь которой заключена прямоугольная пластинка из неизвестного материала. ]];
 
    inv = [[Небольшая прозрачная {коробочка}, внутрь которой заключена прямоугольная пластинка из неизвестного материала. Пластинка с обеих сторон покрыта тонкими металлическими нитями. ]];
 
};
 
 
item_dynamo = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "item_dynamo";
 
    disp = function(s)
 
        if s.state == 0 then
 
            return "Ручная динамо-машина";
 
        else
 
            return "Детали динамо-машины";
 
        end;
 
    end;
 
    dsc = [[На одном из столов лежит небольшая {коробочка} с вращающейся рукояткой. ]];
 
    inv = function(s)
 
        if s.state == 0 then
 
            return [[Небольшая динамо-машина с рукояткой и клеммами для подключения к электрической цепи. При вращении рукоятки вырабатывается электрический ток. ]];
 
        else
 
            return [[Разобранная динамо-машина. ]];
 
        end;
 
    end;
 
    tak = [[Вы забираете динамо-машину. ]];
 
    used = function(s, o)
 
        if s.state == 0 then
 
            if o == item_toolbox then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 1;
 
                    return [[Вы разбираете динамо-машину. ]];
 
                end;
 
            end;
 
        elseif s.state == 1 then
 
            if o == item_electric_lamp and item_electric_lamp.state == 1 then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    item_electric_lamp.state = 2;
 
                    remove(s, pl);
 
                    return [[Вы собираете лампу с динамо-машиной в одном корпусе. Теперь батарею можно заряжать не разбирая лампу. Вождь навьяров будет рад такому подарку. ]]
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 
 
item_electric_lamp = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "item_electric_lamp";
 
    disp = function(s)
 
        if s.state == 0 then
 
            return "Лампа";
 
        elseif s.state == 1 then
 
            return "Разобранная лампа";
 
        elseif s.state == 2 then
 
            return "Лампа с динамо-машиной";
 
        end;
 
    end;
 
    dsc = [[В шкафу лежат на полках {лампы}, предназначенные для монтирования на скафандры. ]];
 
    inv = function(s)
 
        if s.state == 0 then
 
            return "Электрическая лампа в герметичном корпусе, содержащем саму лампу и батарею для ее питания. Батареи хватит примерно на полчаса-час работы. ";
 
        elseif s.state == 1 then
 
            return "Детали электрической лампы: Корпус, лампа, батарея. ";
 
        elseif s.state == 2 then
 
            return "Электрическая лампа в герметичном корпусе, содержащем саму лампу, батарею для ее питания и динамо-машину. Батареи хватит примерно на полчаса-час работы. Покрутите рукоятку чтобы зарядить батарею. ";
 
        end;
 
    end;
 
    tak = "Вы забираете одну из ламп. ";
 
    used = function(s, o)
 
        if s.state == 0 then
 
            if o == item_toolbox then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 1;
 
                    return [[Вы разбираете лампу. ]];
 
                end;
 
            end;
 
        elseif s.state == 1 then
 
            if o == item_dynamo and item_dynamo.state == 1 then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 2;
 
                    remove(item_dynamo, pl);
 
                    return [[Вы собираете лампу с динамо-машиной в одном корпусе. Теперь батарею можно заряжать не разбирая лампу. Вождь навьяров будет рад такому подарку. ]]
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 
 
item_shark_tooth = obj {
 
    nam = "item_shark_tooth";
 
    disp = "Зуб акулы";
 
    dsc = [[{Мертвая акула} лежит здесь, пронзенная вашим гарпуном. ]];
 
    inv = [[Острый зуб кровожадной акулы, жившей у храма Ираафаанотра. ]];
 
    tak = [[Вы вырываете у акулы из пасти зуб и забираете его себе. ]];
 
};
 
\ No newline at end of file
journey_nleyyslanotrr.lua
Show inline comments
 
@@ -42,15 +42,15 @@ za_gate = dlg {
 
    end;
 
    phr = {
 
        {tag="learr"};
 
        {"[Остановить субмарину]И что нам делать?", [[
 
        {"[Остановить субмарину] И что нам делать?", [[
 
            Леарр пожимает плечами: "Мы незаметными-пройти-должны. Сильнее-они так-как много-их".
 
        ]], code [[ psub("control"); ]]};
 
        {"[Продолжать движение]Попробуем преподать им урок", code = [[ walk("game_over_za_learr"); ]]};
 
        {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_learr"); ]]};
 
        {tag="anna"};
 
        {"[Остановить субмарину]И что нам делать?", [[
 
        {"[Остановить субмарину] И что нам делать?", [[
 
            Анна пожимает плечами: "Понятия не имею".
 
        ]], code [[ psub("control"); ]]};
 
        {"[Продолжать движение]Попробуем преподать им урок", code = [[ walk("game_over_za_anna"); ]]};
 
        {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_anna"); ]]};
 
        {tag="control"};
 
        {always = true, "[Проплыть над воротами]", code = [[
 
            if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then
 
@@ -1210,7 +1210,6 @@ za_plaetlarr_fight = battlefield {
 
    win = "za_plaetlarr_victory";
 
    underwater = true;
 
    entered = function(s)
 
        --TODO prepend player associate - anna, learr, walter or jack
 
        if (char_learr.follow) then
 
            table.insert(s.obj, 2, za_cmbt_learr);
 
            s.plX = 3;
 
@@ -1886,7 +1885,7 @@ za_phaetlarr_dlg = dlg {
 
    end;
 
    phr = {
 
        {tag="intro"};
 
        {"[Цветокод]Венаэданотр неблизко. Как ты оказался здесь?", 
 
        {"[Цветокод] Венаэданотр неблизко. Как ты оказался здесь?", 
 
            function(s)
 
                if (char_learr.follow) then
 
                    return [[
 
@@ -1904,7 +1903,7 @@ za_phaetlarr_dlg = dlg {
 
                    psub("on_my_own");
 
                end;
 
        ]]};
 
        {"[Цветокод]Мы ищем Лсэрианотр", 
 
        {"[Цветокод] Мы ищем Лсэрианотр", 
 
            function(s)
 
                if (char_learr.follow) then
 
                    return [[
 
@@ -1919,50 +1918,50 @@ za_phaetlarr_dlg = dlg {
 
                psub("on_my_own");
 
        ]]};
 
        {tag="on_my_own"};
 
        {"[Цветокод]Расскажи больше о них", [[
 
        {"[Цветокод] Расскажи больше о них", [[
 
            "Что вы хотите знать?"
 
        ]], code [[ psub("more_on_them"); ]]};
 
        {"[Цветокод]Мы не враги тебе", [[
 
        {"[Цветокод] Мы не враги тебе", [[
 
            "Почему я должен вам верить?"
 
        ]], code [[ psub("trust");]]};
 
        {tag="more_on_them", empty = code [[ pret(); ]]};
 
        {"[Цветокод]Куда они направились?", [[
 
        {"[Цветокод] Куда они направились?", [[
 
            "Они идут в Лсэрианотр. Их цель - пробудить Наэтвьирра. Блэк хочет с его помощью стать правителем мира. Дрейк хотел найти древние знания. Но сейчас он мертв".
 
        ]], code [[ pon("black");pon("drake"); ]]};
 
        {"[Цветокод]Сколько их было?", [[
 
        {"[Цветокод] Сколько их было?", [[
 
            "Хевьяров было пятеро. Но на борту также были навьяры. Нас было много. Большинство из них свято верят в Наэтвьирра, способного возродить старый мир. Хотя Уильям Дрейк не одобрял этого, Адриан Блэк всячески поощрял это".
 
        ]]};
 
        {"[Цветокод]Почему они оставили тебя?", [[
 
        {"[Цветокод] Почему они оставили тебя?", [[
 
            "Мы должны были взять ключ. Я, Дрейк и Блэк. Местные были против, но у нас не было выбора - ключ нужен для открытия врат Лсэрианотра. Мы пробрались в храм без проблем. Потом начались проблемы. Когда я взял ключ, я оказался в ловушке. К сожалению, у них не было инструментов, чтобы вытащить меня. Тогда я отдал ключ Дрейку и они ушли за инструментами. Они не вернулись. А потом пришли местные. От них я узнал, что Дрейк был убит". 
 
        ]], code [[ pon("drake"); ]]};
 
        {tag="black", false, "[Цветокод]Теперь Блэк главный?", [[
 
        {tag="black", false, "[Цветокод] Теперь Блэк главный?", [[
 
            "Да. У других хевьяров нет выбора, а навьяры на его корабле почти поклоняются ему". 
 
        ]]};
 
        {tag="drake", false, "[Цветокод]Что случилось с Дрейком?", [[
 
        {tag="drake", false, "[Цветокод] Что случилось с Дрейком?", [[
 
            Фаэтларр долго молчал. Наконец он собрался с силами и ответил: "Его убили местные во время их отступления с ключем".
 
        ]], code [[ pon("i_am_drake"); ]]};
 
        {tag="i_am_drake", false, "[Цветокод]Я Дэвид Дрэйк. Сын Уильяма", [[
 
        {tag="i_am_drake", false, "[Цветокод] Я Дэвид Дрэйк. Сын Уильяма", [[
 
            Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки".
 
        ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; poff("i_am_drake2"); ]]};
 
        {tag="trust"};
 
        {"[Цветокод]Мы хотим остановить Блэка", [[Фаэтларр
 
        {"[Цветокод] Мы хотим остановить Блэка", [[Фаэтларр
 
            Фаэтларр кажется сильно удивленным. Он долго молчит, обдумывая ваши слова. Наконец, навьяр кивает. 
 
        ]], code [[ pon("need_help"); ]]};
 
        {tag="need_help", false, "[Цветокод]Нам нужна твоя помощь", [[
 
        {tag="need_help", false, "[Цветокод] Нам нужна твоя помощь", [[
 
            Фаэтларр делает вам знак продолжать. 
 
        ]], code [[ psub("not_sure"); ]]};
 
        {tag="i_am_drake2", "[Цветокод]Я сын Уильяма Дрейка", [[
 
        {tag="i_am_drake2", "[Цветокод] Я сын Уильяма Дрейка", [[
 
            Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки".
 
        ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; ]]};
 
        {tag="not_sure"};
 
        {"[Цветокод]Нам нужно знать, где находится храм Нлейисланотра", [[
 
        {"[Цветокод] Нам нужно знать, где находится храм Нлейисланотра", [[
 
            Фаэтларр уверенно говорит: "Вы спасли меня. Я помогу в ответ. Но я прошу вас еще об одном. Я хочу на борт вашего корабля".
 
        ]], code [[ pon('join'); pon('go'); ]]};
 
        {tag="join", false, "[Цветокод]Хорошо, мы согласны", code = [[
 
        {tag="join", false, "[Цветокод] Хорошо, мы согласны", code = [[
 
            nleyyslanotrr_temple_found = true;
 
            walk("za_phaetlarr_final");
 
        ]]};
 
        {tag="go", false, "[Цветокод]Что, если мы откажемся?", [[
 
        {tag="go", false, "[Цветокод] Что, если мы откажемся?", [[
 
            "Я не скажу вам где храм, и каждый идет своей дорогой".
 
        ]]};
 
    };
journey_venaedanotrr.lua
Show inline comments
 
@@ -53,9 +53,7 @@ item_ven_tablet = obj {
 
    inv = [[
 
        Металлическая табличка с рисунком, изображающим навьяра и человека, пожимающих друг другу руки.
 
    ]];
 
    tak = [[
 
        Вы забираете табличку.
 
    ]];
 
    tak = [[Вы забираете табличку. ]];
 
};
 

	
 
ven_obelisk = obj {
 
@@ -99,9 +97,7 @@ ven_chieftain_dlg = dlg {
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"[Цветокод]Кто?", [[
 
			"Их много было. Среди них двое главных. Прежде чем я скажу больше, ответьте - зачем вы здесь?"
 
		]], code [[ psub('why_here'); ]]};
 
		{"[Цветокод]Кто?", [["Их много было. Среди них двое главных. Прежде чем я скажу больше, ответьте -- зачем вы здесь?"]], code [[ psub('why_here'); ]]};
 
		{"[Цветокод]Куда они направились?", [[
 
			"Дальше к своей цели. Но зачем вы здесь?"
 
		]], code [[ psub('why_here'); ]]};
 
@@ -434,7 +430,7 @@ ven_tower_l2 = room {
 
        end );
 
    };
 
}
 
        
 

	
 
ven_tower_l3 = room {
 
    var {
 
        state = 0;
leviathan.lua
Show inline comments
 
@@ -54,7 +54,7 @@ submarine_leviathan = obj {
 
leviathan_airlock = darkroom {
 
	nam = "leviathan_airlock";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, шлюз";
 
	leviathan = true;
 
@@ -65,6 +65,7 @@ leviathan_airlock = darkroom {
 
		kh_vroom("В кают-компанию", function(s)
 
			if (have(item_suit)) then
 
				remove(item_suit, pl);
 
                me().has_light = false;
 
			end;
 
			return "leviathan_wardroom";
 
		end, 1);
 
@@ -78,6 +79,7 @@ leviathan_airlock = darkroom {
 
					put(item_suit, pl);
 
				elseif (have(item_suit)) then
 
					remove(item_suit, pl);
 
                    me().has_light = false;
 
				end;
 
				return where(submarine_leviathan);
 
			end;
 
@@ -101,11 +103,11 @@ leviathan_trapdoor = obj {
 
};
 
 
leviathan_captains_cabin = darkroom {
 
    var {
 
    --[[var {
 
        light_on = false;
 
    };
 
    };]]
 
    has_light = function(s)
 
        return s.light_on and submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;
 
	nam = "leviathan_captains_cabin";
 
	disp = "Левиафан, каюта капитана";
 
@@ -140,14 +142,14 @@ lev_capn_map = obj {
 
            return [[Карта Атлантического океана, судя по маркировке, принадлежащая компании "Вестхейвен Трансоушен". На ней изображено несколько объектов, имеющих значение для компании и, в частности, Атлантида. ]];
 
        else
 
            atlantis_found = true;
 
            return [[Карта Атлантического океана, судя по маркировке, принадлежащая компании "Вестхейвен Трансоушен". Вы внимательно осматриваете карту в поисках чего-нибудь необычного. Ваше внимание привлекает отметка "Атлантида", сделанная посреди океана. К сожалению, никаких пояснений у вас нет и единственное, что вы можете сделать - это попытаться добраться до этой точки. ]];
 
            return [[Карта Атлантического океана, судя по маркировке, принадлежащая компании "Вестхейвен Трансоушен". Вы внимательно осматриваете карту в поисках чего-нибудь необычного. Ваше внимание привлекает отметка "Атлантида", сделанная посреди океана. К сожалению, никаких пояснений у вас нет и единственное, что вы можете сделать это попытаться добраться до этой точки. ]];
 
        end;
 
    end;
 
};
 
 
lev_capn_chair = obj {
 
    nam = "lev_capn_chair";
 
    dsc = "Рядом со столом стоит {кресло}";
 
    dsc = "Рядом со столом стоит {кресло}. ";
 
    act = "Капитанское кресло. Удобное. ";
 
};
 
 
@@ -197,7 +199,7 @@ lev_capn_ls = obj {
 
leviathan_cabin_1 = darkroom {
 
	nam = "leviathan_cabin_1";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;
 
	disp = "Левиафан, каюта №1";
 
	leviathan = true;
 
@@ -217,7 +219,7 @@ leviathan_cabin_1 = darkroom {
 
leviathan_cabin_2 = darkroom {
 
	nam = "leviathan_cabin_2";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, каюта №2";
 
	leviathan = true;
 
@@ -235,9 +237,12 @@ leviathan_cabin_2 = darkroom {
 
};
 
 
leviathan_cabin_3 = darkroom {
 
    var {
 
        lock = false;
 
    };
 
	nam = "leviathan_cabin_3";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, каюта №3";
 
	leviathan = true;
 
@@ -257,7 +262,7 @@ leviathan_cabin_3 = darkroom {
 
leviathan_cabin_4 = darkroom {
 
	nam = "leviathan_cabin_4";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, каюта №4";
 
	leviathan = true;
 
@@ -277,7 +282,7 @@ leviathan_cabin_4 = darkroom {
 
leviathan_cabin_5 = darkroom {
 
	nam = "leviathan_cabin_5";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, каюта №5";
 
	leviathan = true;
 
@@ -318,7 +323,7 @@ lev_cab_view = obj {
 
leviathan_corridor = darkroom {
 
	nam = "leviathan_corridor";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, коридор";
 
	leviathan = true;
 
@@ -329,7 +334,13 @@ leviathan_corridor = darkroom {
 
		kh_vroom("В каюту капитана", "leviathan_captains_cabin", 1);
 
		kh_vroom("В каюту №1", "leviathan_cabin_1", 1);
 
		kh_vroom("В каюту №2", "leviathan_cabin_2", 1);
 
		kh_vroom("В каюту №3", "leviathan_cabin_3", 1);
 
		kh_vroom("В каюту №3", function(s)
 
            if not leviathan_cabin_3.lock then      
 
                return "leviathan_cabin_3";
 
            else
 
                return false;
 
            end;
 
        end, 1);
 
		kh_vroom("В каюту №4", "leviathan_cabin_4", 1);
 
		kh_vroom("В каюту №5", "leviathan_cabin_5", 1);
 
		kh_vroom("В кают-компанию", "leviathan_wardroom", 1);
 
@@ -345,7 +356,7 @@ leviathan_corridor = darkroom {
 
leviathan_cargo_hold = darkroom {
 
	nam = "leviathan_cargo_hold";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, грузовой отсек";
 
	leviathan = true;
 
@@ -369,7 +380,7 @@ leviathan_cargo_hold = darkroom {
 
leviathan_wardroom = darkroom {
 
	nam = "leviathan_wardroom";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, кают-компания";
 
	leviathan = true;
 
@@ -392,14 +403,13 @@ leviathan_wardroom = darkroom {
 
leviathan_engines = darkroom {
 
	nam = "leviathan_engines";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, машинное отделение";
 
	leviathan = true;
 
	dsc_lit = [[Вы стоите на небольшой металлической платформе посреди достаточно большого помещения. Вверху и внизу тянутся какие-то трубы. Слева и справа от вас расположены механизмы, приводящие субмарину в движение. Единственная лампа, расположенная над входом, дает достаточно света, чтобы можно было осмотреться. ]];
 
	dsc_halflit = [[В слабом свете лампы вы с трудом различаете очертания предметов. Вы стоите на небольшой металлической платформе посреди достаточно большого помещения. Вверху и внизу тянутся какие-то трубы. Слева и справа от вас расположены механизмы, приводящие субмарину в движение. ]];
 
	dsc_dark = [[Машинный отсек Левиафана погружен во мрак и вы совсем ничего не видите. ]];
 
	-- Равномерный гул электрических двигателей сообщает о полной готовности субмарины. 
 
	way = {
 
		kh_vroom("В коридор", "leviathan_corridor", 1);
 
	};
 
@@ -501,7 +511,7 @@ leviathan_breaker = obj {
 
leviathan_lower_deck = darkroom {
 
	nam = "leviathan_lower_deck";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, нижняя палуба";
 
	leviathan = true;
 
@@ -526,7 +536,7 @@ leviathan_lower_deck = darkroom {
 
leviathan_life_support = darkroom {
 
	nam = "leviathan_life_support";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;   
 
	disp = "Левиафан, система жизнеобеспечения";
 
	leviathan = true;
 
@@ -562,7 +572,7 @@ leviathan_airregen = obj {
 
        if (submarine_leviathan.refit) then
 
            return [[{Установка регенерации воздуха} расположена в углу и, судя по показаниям приборов, отлично работает. ]];
 
        else
 
            return [[{Установка регенерации воздуха} сейчас находится в плачевном состоянии - часть деталей отсутствуют, еще некоторые поломаны. ]];
 
            return [[{Установка регенерации воздуха} сейчас находится в плачевном состоянии -- часть деталей отсутствуют, еще некоторые поломаны. ]];
 
        end;
 
    end;
 
	seen_level = 1;
 
@@ -571,8 +581,8 @@ leviathan_airregen = obj {
 
leviathan_wheelhouse = darkroom {
 
	nam = "leviathan_wheelhouse";
 
    has_light = function(s)
 
        return submarine_leviathan.power_on and submarine_leviathan.battery;
 
    end;   
 
        return submarine_leviathan.power_on and submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0;
 
    end;
 
	disp = "Левиафан, рубка";
 
	leviathan = true;
 
	dsc_lit = function(s)
 
@@ -616,8 +626,6 @@ leviathan_wheelhouse = darkroom {
 
	};
 
};
 
 
leviathan_controls = obj {nam = '1'}
 
 
leviathan_handwheel = obj {
 
	nam = "leviathan_handwheel";
 
	dsc = [[Перед вами расположен {штурвал}. Рядом с ним расположено несколько рычагов. ]];
 
@@ -642,6 +650,19 @@ leviathan_handwheel = obj {
 
	end;
 
};
 
 
leviathan_airpump_timer = function()
 
    if (submarine_leviathan.power_on and submarine_leviathan.airpump and submarine_leviathan.battery) then
 
        submarine_leviathan.air_level = submarine_leviathan.air_level + 4000;
 
        if (submarine_leviathan.air_level > 432000) then 
 
            submarine_leviathan.air_level = 432000;
 
            timer:stop();
 
            lifeoff(leviathan_airpump_control);
 
            p("Кислородные баллоны заполнены. ");
 
        end;
 
    end;
 
    
 
end;
 
 
leviathan_airpump_control = obj {
 
	nam = "leviathan_airpump_control";
 
	dsc = function(s)
 
@@ -654,19 +675,24 @@ leviathan_airpump_control = obj {
 
	act = function(s)
 
		if (submarine_leviathan.airpump) then
 
			submarine_leviathan.airpump = false;
 
            timer:stop();
 
            lifeoff(s);
 
			return [[Вы выключаете воздушные насосы. ]];
 
		else
 
			lifeon(s);
 
			submarine_leviathan.airpump = true;
 
            game.timer = leviathan_airpump_timer;
 
            timer:set(1000);
 
            lifeon(s);
 
			return [[Вы включаете воздушные насосы. ]];
 
		end;
 
	end;
 
	life = function(s)
 
		if (submarine_leviathan.power_on and submarine_leviathan.airpump and submarine_leviathan.battery) then
 
            submarine_leviathan.air_level = submarine_leviathan.air_level + 4000;
 
            if (submarine_leviathan.air_level > 432000) then 
 
                submarine_leviathan.air_level = 432000;
 
                lifeoff(s);
 
                p("Кислородные баллоны заполнены. ");
 
                lifeoff(leviathan_airpump_control);
 
                timer:stop();
 
            end;
 
            if (here().leviathan) then
 
                pr([[Вы слышите гул работающих насосов. ]]);
 
@@ -729,7 +755,6 @@ leviathan_wiring_used = function(s, o)
 
		if (submarine_leviathan.circuit_breaks == 0) then
 
			for i = 1, #leviathan_wiring do
 
				leviathan_wiring[i]:disable();
 
				-- TODO если игрок ТУП pr("Скорее всего, это был последний разрыв. Можно проверять. ");
 
			end;
 
		end;
 
		return [[Вы соединяете провода и заматываете их изолентой. ]];
 
@@ -837,19 +862,22 @@ leviathan_dlg = dlg {
 
		return [[Вы находитесь в рубке Левиафана перед штурвалом. Отсюда вы можете направиться куда-нибудь. Яркий свет электрических ламп освещает помещение. ]] .. (view);
 
	end;
 
	update_options = function()
 
		leviathan_dlg:poff("atlantis", "old_temple", "iraaphaanotrr", "iraaphaanotrr_temple", "dypatreanotrr", "dypatreanotrr_temple");     
 
		leviathan_dlg:poff("atlantis", "old_temple", "iraaphaanotrr", "iraaphaanotrr_temple", "dypatreanotrr", "dypatreanotrr_temple", "venaedanotrr");     
 
		if (atlantis_found and where(submarine_leviathan) ~= atl_aqua_leviathan_dock) then
 
			leviathan_dlg:pon("atlantis");
 
		end;
 
		if (temple_found and where(submarine_leviathan) ~= iyh_far_from_entrance_foot) then
 
			leviathan_dlg:pon("old_temple");
 
		end;	
 
        if (iraaphaanotrr_found and where(submarine_leviathan) ~= ctt_iraa_city) then
 
        if (iraaphaanotrr_found and where(submarine_leviathan) ~= iraa_near_city_west) then
 
            leviathan_dlg:pon("iraaphaanotrr");
 
        end;
 
        if (dypatreanotrr_found and where(submarine_leviathan) ~= ctt_dyp_city) then
 
        if (dypatreanotrr_found and where(submarine_leviathan) ~= dyp_center) then
 
            leviathan_dlg:pon("dypatreanotrr");
 
        end;
 
        if venaedanotrr_found then -- and where(submarine_leviathan) ~= dyp_center then
 
            leviathan_dlg:pon("venaedanotrr");
 
        end;
 
		if (iraaphaanotrr_temple_found and where(submarine_leviathan) ~= ctt_iraa_near_temple) then
 
			leviathan_dlg:pon("iraaphaanotrr_temple");
 
		end;
 
@@ -864,7 +892,7 @@ leviathan_dlg = dlg {
 
		{tag="atlantis", always = "true", "Атлантида", nil, function()
 
			move(submarine_leviathan, "atl_aqua_leviathan_dock");
 
			leviathan_dlg:update_options();
 
            walk(atl_entry);         
 
            walk(atl_entry);
 
		end},
 
		{tag="old_temple", always = "true", "Старый храм", function()
 
			return "Вы прибыли в старый храм";
 
@@ -873,29 +901,31 @@ leviathan_dlg = dlg {
 
			leviathan_dlg:update_options();
 
		end},
 
		{tag="iraaphaanotrr", always = "true", "Ираафаанотр", function()
 
			return "Вы прибыли в Ираафаанотр";
 
		end, function()
 
			move(submarine_leviathan, "ctt_iraa_city");
 
			leviathan_dlg:update_options();
 
            move(submarine_leviathan, "iraa_near_city_west");
 
            leviathan_dlg:update_options();      
 
			walk(iraa_entry);
 
		end},
 
		{tag="iraaphaanotrr_temple", always = "true", "Храм Ираафаанотра", function()
 
			return "Вы прибыли в храм Ираафаанотра";
 
		end, function()
 
			move(submarine_leviathan, "ctt_iraa_near_temple");
 
			leviathan_dlg:update_options();
 
			move(submarine_leviathan, "iraa_temple_entrance");
 
            leviathan_dlg:update_options();      
 
            walk(iraa_temple_entry);
 
		end},
 
		{tag="dypatreanotrr", always = "true", "Дипатреанотр", function()
 
			return "Вы прибыли в Дипатреанотр";
 
		end, function()
 
			move(submarine_leviathan, "ctt_dyp_city");
 
			leviathan_dlg:update_options();
 
			move(submarine_leviathan, "dyp_center");
 
            leviathan_dlg:update_options();      
 
            walk(dyp_entry);
 
		end},
 
		{tag="dypatreanotrr_temple", always = "true", "Храм Дипатреанотра", function()
 
			return "Вы прибыли в храм Дипатреанотра";
 
		end, function()
 
			move(submarine_leviathan, "dyp_temple_entrance");
 
			leviathan_dlg:update_options();
 
            leviathan_dlg:update_options();      
 
            walk(dyp_temple_entry);
 
		end},
 
        {tag="venaedanotrr", always = "true", "Венаэданотр", function()
 
            --[[move(submarine_leviathan, "dyp_temple_entrance");
 
            leviathan_dlg:update_options();      
 
            walk(dyp_temple_entry);]]
 
            walk("preview_unavailable_venaedanotrr");
 
        end},      
 
		{always = "true", "Назад", "", function()
 
			back();
 
		end}
 
@@ -928,7 +958,7 @@ phone_cabin = obj {
 
        elseif (#pl.party < 1) then
 
            return [[Здесь никого нет. ]];
 
        else
 
            walkin(phone_dlg);
 
            walkin("phone_dlg");
 
        end;
 
	end;
 
	seen_level = 1;
 
@@ -937,14 +967,14 @@ phone_cabin = obj {
 
phone_wardroom = obj {
 
	nam = "phone_wardroom";
 
	disp = "Телефон";
 
	dsc = [[На столе, рядом с креслом командира установлен {телефонный аппарат} для связи в пределах субмарины. ]];
 
	dsc = [[На столе, рядом с креслом капитана установлен {телефонный аппарат} для связи в пределах субмарины. ]];
 
	act = function(s)
 
		if (not submarine_leviathan.power_on or not submarine_leviathan.battery) then
 
            return [[Без электричества телефон не заработает. ]];
 
        elseif (#pl.party < 1) then
 
            return [[Здесь никого нет. ]];
 
        else
 
            walkin(phone_dlg);
 
            walkin("phone_dlg");
 
        end;
 
	end;
 
	seen_level = 1;
 
@@ -963,23 +993,30 @@ phone_dlg = dlg {
 
	end;
 
	phr = {
 
		{ tag = "aikerjarr", always = true, "Аикерьярр", [[Аикерьярр не берет трубку. ]]},
 
		{ tag = "phaetlarr", always = true, "Фаэтларр", code = [[walkin(phaetlarr_phone_dlg)]]},
 
		{ tag = "learr", always = true, "Леарр", code = [[walkin(learr_phone_dlg)]]},
 
		{ tag = "radcliffe", always = true, "Уолтер Рэдклифф", code = [[walkin(radcliffe_phone_dlg)]]},
 
		{ tag = "wright", always = true, "Джек Райт", code = [[walkin(wright_phone_dlg)]]},
 
		{ tag = "anna", always = true, "Анна Рэдклифф", code = [[walkin(anna_phone_dlg)]]},
 
		{ tag = "phaetlarr", always = true, "Фаэтларр", code = [[walkin("phaetlarr_phone_dlg")]]},
 
		{ tag = "learr", always = true, "Леарр", code = [[walkin("learr_phone_dlg")]]},
 
		{ tag = "radcliffe", always = true, "Уолтер Рэдклифф", code = [[walkin("radcliffe_phone_dlg")]]},
 
		{ tag = "wright", always = true, "Джек Райт", code = [[walkin("wright_phone_dlg")]]},
 
		{ tag = "anna", always = true, "Анна Рэдклифф", code = [[walkin("anna_phone_dlg")]]},
 
		{ tag = "exit", always = true, "Положить трубку", code = [[back()]]}
 
	}
 
};
 
 
global {
 
    lev_started = false;
 
};
 
 
function leviathan_init()
 
	put(submarine_leviathan:disable(), dock_mooring);
 
	local i = 0;
 
	while i < submarine_leviathan.circuit_breaks do
 
		local t = rnd(#leviathan_wiring);
 
		if (leviathan_wiring[t].state == 2) then
 
			leviathan_wiring[t].state = 0;
 
			i = i + 1;
 
		end;
 
	end;
 
    if not lev_started then
 
        lev_started = true;
 
        put(submarine_leviathan:disable(), dock_mooring);
 
        local i = 0;
 
        while i < submarine_leviathan.circuit_breaks do
 
            local t = rnd(#leviathan_wiring);
 
            if (leviathan_wiring[t].state == 2) then
 
                leviathan_wiring[t].state = 0;
 
                i = i + 1;
 
            end;
 
        end;
 
    end;
 
end;
 
\ No newline at end of file
london.lua
Show inline comments
 
@@ -8,9 +8,9 @@ char_captain = npc {
 
	dsc = [[На носу судна стоит {капитан} и курит трубку, задумчиво смотря на происходящее на палубе. ]];
 
	phrases = {
 
		[[Капитан говорит: _"Завтра мы отправляемся обратно в Америку"_. ]],
 
		[[Капитан задумчиво произносит, держа трубку в руке: _",,Северное сияние'' - лучший из кораблей, которыми я управлял"_. ]],
 
		[[Капитан задумчиво произносит, держа трубку в руке: _",,Северное сияние'' -- лучший из кораблей, которыми я управлял"_. ]],
 
		[[Капитан оборачивается к вам: _"Как вам путешествие?"_ ]],
 
		[[Капитан вынимает трубку изо рта и произносит: _"Этот пароход - гордость компании, но до знаменитой ,,Огненной стрелы'' ему далеко"_. ]],
 
		[[Капитан вынимает трубку изо рта и произносит: _"Этот пароход -- гордость компании, но до знаменитой ,,Огненной стрелы'' ему далеко"_. ]],
 
		[[Окидывая взглядом порт, капитан вздыхает: _"Иногда я вспоминаю свою молодость на ,,Чайке'' и ,,Нефритовой королеве''"_. ]],
 
        [[Капитан задумчиво вертит трубку в руках. ]]    
 
	};
 
@@ -24,7 +24,7 @@ char_first_mate = npc {
 
		[[Первый помощник не обращает на вас внимания. ]],
 
		[[Первый помощник спрашивает: "Как вам путешествие?" ]],
 
		[[Первый помощник сообщает: "Капитан раньше командовал ,,Чайкой''. Я не знаю, что стало с ней сейчас". ]],
 
		[[Первый помощник с гордостью говорит: _",,Северное сияние'' - лучший корабль компании"_. ]],
 
		[[Первый помощник с гордостью говорит: _",,Северное сияние'' -- лучший корабль компании"_. ]],
 
		[[Первый помощник сообщает: "Это был мой первый трансатлантический рейс в качестве первого помощника". ]]
 
	};
 
};
 
@@ -39,7 +39,7 @@ aurora_borealis = room {
 
	};
 
};
 
 
london_mooring = cutscene("london_mooring", "Порт", [[Вместе с очередной группой пассажиров, вы сходите на берег. Толпа увлекает вас от причала и вы оказываетесь посреди порта. Вокруг снуют люди - пассажиры, грузчики, моряки. Со всех сторон доносится шум - голоса людей, гудки пароходов, ржание лошадей. ]], "port");
 
london_mooring = cutscene("london_mooring", "Порт", [[Вместе с очередной группой пассажиров, вы сходите на берег. Толпа увлекает вас от причала и вы оказываетесь посреди порта. Вокруг снуют люди: пассажиры, грузчики, моряки. Со всех сторон доносится шум: голоса людей, гудки пароходов, ржание лошадей. ]], "port");
 
 
port = room {
 
    var {
 
@@ -47,7 +47,7 @@ port = room {
 
    };
 
	nam = "port";
 
	disp = "Порт";
 
	dsc = [[Тяжелые тучи над головой, кажется, вот-вот разразятся дождем. Вокруг снуют люди - пассажиры, грузчики, моряки. Со всех сторон доносится шум - голоса людей, гудки пароходов, ржание лошадей. Вы стоите рядом с одним из складов. ]];
 
	dsc = [[Тяжелые тучи над головой, кажется, вот-вот разразятся дождем. Вокруг снуют люди: пассажиры, грузчики, моряки. Со всех сторон доносится шум: голоса людей, гудки пароходов, ржание лошадей. Вы стоите рядом с одним из складов. ]];
 
	way = {
 
		vroom("На улицу", "port_street");
 
	};
 
@@ -56,7 +56,7 @@ port = room {
 
            p("Сидящий у склада рабочий печально вздыхает: \"Выпить бы!\"");
 
        end;
 
        s.state = s.state + 1;
 
        if (s.state == 3) then
 
        if (s.state == 2) then
 
            s.state = 0;
 
        end;
 
    end;
 
@@ -74,6 +74,33 @@ port_street = room {
 
		vroom("В пивную лавку", "ginshop");
 
	};
 
	dsc = [[Вы с трудом пробираетесь сквозь толпы людей, спешащих по своим делам. Из порта доносятся гудки пароходов. Со всех сторон доносится шум большого города. Тяжелые черные тучи медленно плывут по небу, грозя разразиться дождем в любую минуту. ]];
 
    obj = {
 
        "dice_player"
 
    };
 
};
 
 
dice_player = npc {
 
    nam = "char_dice_player";
 
    disp = "Игрок";
 
    dsc = [[У дверей пивной лавки сидит на раскладном стульчике хитрого вида {тип} в мятом старом костюме и не менее старой и мятой кепке. В руке он вертит обычную шестигранную игральную кость. ^]];
 
    dlg = "dice_player_dlg";
 
};
 
 
dice_player_dlg = dlg {
 
    nam = "dice_player_dlg";
 
    disp = "Игрок";
 
    entered = [[Человек обращается к вам: "Эй, сыграем?"]];
 
    phr = {
 
        {always=true, "Во что играем?", [[Человек объясняет правила: "Играем в свинью. Все просто -- сперва мы бросаем кость. У кого выпадет больше -- тот ходит первым. Ходящий кидает кость пока не выкинет единицу или ему не надоест. Сколько выпадает на кости, стольок очков он прибавляет себе. Если выпадает единица -- все очки набранные за ход теряются. Ну так, что? Играем?"]]};
 
        {always=true, "Я сыграю. ", [[Человек потирает руки, спрашивая: "Сколько ставим?"]], code [[psub("stake");]]};
 
        {always=true, "Не в этот раз. ", code [[back();]]};
 
        {tag="stake"};
 
        {always=true, "5 шиллингов. ", code [[dice_game.stake = 5; walk("dice_game");]]};
 
        {always=true, "10 шиллингов. ", code [[dice_game.stake = 10; walk("dice_game");]]};
 
        {always=true, "25 шиллингов. ", code [[dice_game.stake = 25; walk("dice_game");]]};
 
        {always=true, "50 шиллингов. ", code [[dice_game.stake = 50; walk("dice_game");]]};
 
        {always=true, "Я передумал", code [[back();]]};
 
    };
 
};
 
 
char_worker = npc {
 
@@ -103,75 +130,105 @@ char_worker_dlg = dlg {
 
	nam = "char_worker_dlg";
 
	disp = "Портовый рабочий";
 
	entered = function(s)
 
        if have(item_bottle) then
 
            pon("bottle");
 
        end;
 
		pjump('new');
 
		return [[Недовольно посмотрев в вашу сторону, рабочий спрашивает: "Чего надо?" ]];
 
	end;
 
	phr = {
 
		{tag='new'},
 
        {tag='bottle', false,"[Предложить рабочему бутылку] Могу я воспользоваться вашими инструментами?", [[Глаза рабочего округляются и он тянет руки к вожделенной бутылке: "Да без проблем, забирай". ]], code [[
 
            remove(item_bottle, pl);
 
            char_worker.bought = true;
 
            back();
 
        ]]};      
 
		{always=true, "Могу я воспользоваться вашими инструментами?", [[Рабочий отрывисто отвечает: "Нет", -- после чего отворачивается в другую сторону. ]], [[ pjump 'bribe_try' ]]};
 
		{always=true, "Нет, ничего. ", [[Рабочий недовольно рычит: "Тогда отвали", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{tag='bribe_try'};
 
		{always=true, "Могу я купить их у вас?", [[Рабочий снова повернулся к вам. Он с плохо скрываемым интересом спрашивает: "Сколько?" ]], [[ pjump 'bribing_20' ]]};
 
		{always=true, "Нет, ничего. ", [[Рабочий недовольно рычит: "Тогда отвали", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{tag='bribing_20'};
 
		{"5 шиллингов?", [[ Рабочий усмехнулся: "Издеваешься?" ]]};
 
		{always=true, "10 шиллингов?", [[
 
			"15"
 
		]], [[pjump 'bribing_15']]};
 
		{always=true, "20 шиллингов?", function(s)
 
			if (pl:pay(20)) then
 
		{"10 шиллингов?", [[ Рабочий усмехнулся: "Издеваешься?" ]]};
 
		{always=true, "20 шиллингов?", [[
 
			"30"
 
		]], [[pjump 'bribing_30']]};
 
		{always=true, "40 шиллингов?", function(s)
 
			if (pl:pay(40)) then
 
				char_worker.bought = true;
 
				return [[Рабочий довольно потирает руки: "Идет". ]];
 
			else
 
				return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
			end;
 
		end, [[ char_worker.bought = true; back();]]};
 
		{always=true, "30 шиллингов?", function(s)
 
			if (pl:pay(30)) then
 
		{always=true, "60 шиллингов?", function(s)
 
			if (pl:pay(60)) then
 
				char_worker.bought = true;
 
				return [[Рабочий довольно потирает руки: "Идет". ]];
 
			else
 
				return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
			end;
 
		end, [[ char_worker.bought = true; back();]]};
 
		{tag='bribing_15'};
 
		{always=true, "10. ", [["14". ]], [[pjump 'bribing_14']]};
 
		{always=true, "11. ", [[
 
			"14"
 
		]], [[pjump 'bribing_14']]};
 
		{always=true, "12. ", [["14". ]], [[pjump 'bribing_14']]};
 
		{always=true, "13. ", [["14". ]], [[pjump 'bribing_14']]};
 
		{always=true, "14. ", function(s)
 
			if (pl:pay(14)) then
 
		{tag='bribing_30'};
 
		{always=true, "20. ", [[Рабочий потирает руки и предлагает: "28". ]], [[pjump 'bribing_28']]};
 
		{always=true, "22. ", [[Рабочий потирает руки и предлагает: "28". ]], [[pjump 'bribing_28']]};
 
		{always=true, "24. ", [[Рабочий потирает руки и предлагает: "28". ]], [[pjump 'bribing_28']]};
 
		{always=true, "26. ", [[Рабочий потирает руки и предлагает: "28". ]], [[pjump 'bribing_28']]};
 
		{always=true, "28. ", function(s)
 
			if (pl:pay(28)) then
 
				char_worker.bought = true;
 
				return [[Рабочий довольно потирает руки: "Идет". ]];
 
			else
 
				return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
			end;
 
		end, [[ char_worker.bought = true; back(); ]]};
 
		{tag='bribing_14'};
 
		{always=true, "10. ", [["13". ]], [[pjump 'bribing_13']]};
 
		{always=true, "11. ", [["13". ]], [[pjump 'bribing_13']]};
 
		{always=true, "12. ", [["13". ]], [[pjump 'bribing_13']]};
 
		{always=true, "13. ", function(s)
 
			if (pl:pay(13)) then
 
		end, [[ back(); ]]};
 
        {always=true, "Идет. ", function(s)
 
            if (pl:pay(30)) then
 
                char_worker.bought = true;
 
                return [[Рабочий довольно потирает руки: "Идет". ]];
 
            else
 
                return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
            end;
 
        end, [[ back(); ]]};
 
		{tag='bribing_28'};
 
		{always=true, "20. ", [[Рабочий потирает руки и предлагает: "26". ]], [[pjump 'bribing_26']]};
 
		{always=true, "22. ", [[Рабочий потирает руки и предлагает: "26". ]], [[pjump 'bribing_26']]};
 
		{always=true, "24. ", [[Рабочий потирает руки и предлагает: "26". ]], [[pjump 'bribing_26']]};
 
		{always=true, "26. ", function(s)
 
			if (pl:pay(26)) then
 
				char_worker.bought = true;
 
				return [[Рабочий довольно потирает руки: "Идет". ]];
 
			else
 
				return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
			end;
 
		end, [[ char_worker.bought = true; back(); ]]};
 
		{tag='bribing_13'};
 
		{always=true, "10. ", [[Рабочий недовольно рычит: "Не хочешь -- не надо", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{always=true, "11. ", [[Рабочий недовольно рычит: "Не хочешь -- не надо", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{always=true, "12. ", function(s)
 
			if (pl:pay(12)) then
 
		end, [[ back(); ]]};
 
        {always=true, "Идет. ", function(s)
 
            if (pl:pay(28)) then
 
                char_worker.bought = true;
 
                return [[Рабочий довольно потирает руки: "Идет". ]];
 
            else
 
                return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
            end;
 
        end, [[ back(); ]]};      
 
		{tag='bribing_26'};
 
		{always=true, "20. ", [[Рабочий недовольно рычит: "Не хочешь -- не надо", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{always=true, "22. ", [[Рабочий недовольно рычит: "Не хочешь -- не надо", -- после чего отворачивается в другую сторону. ]], [[ back(); ]]};
 
		{always=true, "24. ", function(s)
 
			if (pl:pay(24)) then
 
				char_worker.bought = true;
 
				return [[Рабочий довольно потирает руки: "Идет". ]];
 
			else
 
				return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
			end;
 
		end, [[  back(); ]]};
 
        {always=true, "Идет. ", function(s)
 
            if (pl:pay(26)) then
 
                char_worker.bought = true;
 
                return [[Рабочий довольно потирает руки: "Идет". ]];
 
            else
 
                return [[Рабочий недовольно рычит: "Ты дурак?" ]];
 
            end;
 
        end, [[ back(); ]]};      
 
	};
 
};
 
 
@@ -208,22 +265,22 @@ ginshop_trader_dlg = dlg {
 
	end;
 
	entered = [[Сняв очки, продавец смотрит на вас и спрашивает: "Добро пожаловать, господин. Чем могу помочь, господин?" ]];
 
	phr = {
 
		{always = true, "Бутылочку чего-нибудь покрепче, пожалуйста. ", [[Продавец кивает: "Сию секунду, господин". Почесав седую голову, он уходит в подвал, откуда возвращается через некоторое время с бутылкой. С громким стуком поставив бутылку на стол, он сообщает вам цену: "Это будет стоить вам 10 шиллингов, господин". ]], code = [[ psub("buy"); ]]};
 
		{always = true, "Бутылочку чего-нибудь покрепче, пожалуйста. ", [[Продавец кивает: "Сию секунду, господин". Почесав седую голову, он уходит в подвал, откуда возвращается через некоторое время с бутылкой. С громким стуком поставив бутылку на стол, он сообщает вам цену: "Это будет стоить вам 20 шиллингов, господин". ]], code = [[ psub("buy"); ]]};
 
		{always = true, "Это все, спасибо. ", [[Продавец одевает очки обратно и прощается с вами: "Приходите еще, господин". ]], function() 
 
				back();
 
			end;
 
		};
 
		{tag = "buy"};
 
		{always = true, "Беру. ", function(s)
 
			if (pl:pay(10)) then
 
			if (pl:pay(20)) then
 
				ginshop_trader.bought = true;
 
				take(item_bottle);
 
				return [[Расплывшись в широкой улыбке продавец подмигивает вам и говорит: "Приходите еще, господин!" ]];
 
			else
 
				return [[Одевая очки обратно, продавец прячет бутылку под прилавок: "Простите, господин, но я сказал 10 шиллингов". ]];
 
				return [[Одевая очки обратно, продавец прячет бутылку под прилавок: "Простите, господин, но я сказал 20 шиллингов". ]];
 
			end;
 
		end, code = [[ back(); ]]};
 
		{always = true, "Я передумал. ", [[Одевая очки обратно, продавец прячет бутылку под прилавок: "Подумайте еще, господин. Всего 10 шиллингов, господин!". ]], code = [[ pret(); ]]};
 
		{always = true, "Я передумал. ", [[Одевая очки обратно, продавец прячет бутылку под прилавок: "Подумайте еще, господин. Всего 20 шиллингов, господин!". ]], code = [[ pret(); ]]};
 
	};
 
};
 
 
@@ -233,7 +290,7 @@ hotel_street = room {
 
	entered = function(s)
 
		move(char_coachman, here());
 
	end;
 
    dsc = [[Перед вами стоит старое двухэтажное здание гостиницы. Массивные деревянные двери открыты, приглашая вас внутрь. Покосившаяся вывеска над ними гласит: "Гостиница Старого Фрэнки". Большинство домов поблизости выглядят старыми и неухоженными - очевидно, в этом районе живут не самые богатые горожане. Вокруг тихо - лишь редкие пешеходы проходят мимо, не обращая на вас никакого внимания. По небу неспешно плывут тяжелые темные тучи. ]];
 
    dsc = [[Перед вами стоит старое двухэтажное здание гостиницы. Массивные деревянные двери открыты, приглашая вас внутрь. Покосившаяся вывеска над ними гласит: "Гостиница Старого Фрэнки". Большинство домов поблизости выглядят старыми и неухоженными -- очевидно, в этом районе живут не самые богатые горожане. Вокруг тихо -- лишь редкие пешеходы проходят мимо, не обращая на вас никакого внимания. По небу неспешно плывут тяжелые темные тучи. ]];
 
	way = {
 
		vroom("В гостиницу", "hotel_hall");
 
	};
 
@@ -331,7 +388,7 @@ hotel_room_7 = room {
 
	disp = "Гостиница, Комната №7";
 
	dsc = [[Небольшая чистая комната. Деревянный столик в углу прикрыт белой скатертью. В углу стоит аккуратно сделанный стул. У окна расположена застеленная чистым бельем кровать. На скрипучем деревянном полу лежит старый коврик. ]];
 
	obj = {
 
		'item_lamp', 'room_7_window'
 
		'item_lamp', 'room_7_window', 'money_hotel'
 
	};
 
	way = {
 
		vroom("В коридор", "hotel_corridor_2");
 
@@ -342,8 +399,10 @@ hotel_room_7 = room {
 
};
 
 
room_7_window = obj {
 
    var {
 
        state = 0;
 
    };
 
	nam = "room_7_window";
 
	state = 0;
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return "{Окно} закрыто плотными ставнями. ";
 
@@ -449,21 +508,25 @@ starlight_first_dlg = dlg {
 
	left = function(s)
 
        remove(hotel_starlight, hotel_hall);
 
		path('В комнату №2', hotel_corridor_1):enable();
 
		put(hotel_corridor_2, "char_starlight_corridor");
 
		put("char_starlight_corridor", hotel_corridor_2);
 
		lifeon("char_starlight_corridor");
 
	end;
 
	phr = {
 
		{ "Мы встречались?", [[Человек пожимает плечами: "Скорее всего нет, мое имя Джозеф Старлайт. Вы случайно не родственник Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-то говорит?" ]], code [[ pstart('have_we_met') ]]};
 
		{ "Кто вы?", [[Человек протягивает вам руку: "Джозеф Старлайт, адвокат. Название Вестхейвен Трансоушен вам о чем-то говорит?" ]], code [[ pstart('who_are_you') ]]};
 
		{ "Да, я Дэвид Дрейк.", [[Человек протягивает вам руку: "Здравствйте! Я Джозеф Старлайт. Вы сын Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-нибудь говорит?" ]], code [[ pstart('i_am_drake') ]]};
 
		{ "Простите, я спешу.", [[Человек огорченно вздыхает: "Простите". Подойдя к лестнице он оборачивается и говорит: "Мое имя - Джозеф Старлайт. Если хотите поговорить о Вестхейвен Трансоушен, зайдите ко мне в комнату 2 когда у вас будет время". ]], code [[ back(); ]]};
 
		{ "Простите, я спешу.", [[Человек огорченно вздыхает: "Простите". Подойдя к лестнице он оборачивается и говорит: "Мое имя -- Джозеф Старлайт. Если хотите поговорить о Вестхейвен Трансоушен, зайдите ко мне в комнату 2 когда у вас будет время". ]], code [[ psub("end"); ]]};
 
		{tag = "have_we_met"};
 
		{ "Я сын Уильяма. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ back(); ]]};
 
		{ "Я сын Уильяма. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ psub("end"); ]]};
 
		{ "Кто вы?", [[Джозеф Старлайт отвечает: "Адвокат. Я занимался делом о банкротстве Вестхейвен Трансоушен". ]], code [[ pstart('who_are_you') ]]};
 
		{tag = "who_are_you"};
 
		{ "Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ back(); ]]};
 
		{ "Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ psub("end"); ]]};
 
		{tag = "i_am_drake"};
 
		{ "Да все верно. Это название компании моего отца. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ back(); ]]};
 
		{ "Да все верно. Это название компании моего отца. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже". ]], code [[ psub("end"); ]]};
 
        {tag="end"};
 
        {"Хорошо, я зайду.", code [[ back(); ]]};
 
        {"Спасибо, но я спешу.", code [[ back(); ]]};
 
        {"Делать мне больше нечего.", code [[ back(); ]]};
 
	};
 
};
 
 
@@ -516,26 +579,109 @@ starlight_dlg = dlg {
 
		end;
 
		char_starlight.forgetful = true;
 
		if (char_starlight.complete) then
 
			return [[Джозеф оборачивается к вам и удивленно вскакивает со стула: "Как вы сюда попали?!" Он подходит к двери, открывает ее и снова закрывает, после чего запирает замок: "Опять забыл, да что ж такое?!" Потом он снова оборачивается к вам и говорит: "Господин Дрейк? Мое имя Джозеф ..." - внезапно он делает паузу, после чего продолжает: "Мы же вроде все обсудили с вами?" ]];
 
			return [[Джозеф оборачивается к вам и удивленно вскакивает со стула: "Как вы сюда попали?!" Он подходит к двери, открывает ее и снова закрывает, после чего запирает замок: "Опять забыл, да что ж такое?!" Потом он снова оборачивается к вам и говорит: "Господин Дрейк? Мое имя Джозеф ..." -- внезапно он делает паузу, после чего продолжает: "Мы же вроде все обсудили с вами?" ]];
 
		else
 
			return [[Джозеф оборачивается к вам и удивленно вскакивает со стула: "Как вы сюда попали?!" Он подходит к двери, открывает ее и снова закрывает, после чего запирает замок: "Опять забыл, да что ж такое?!" Потом он снова оборачивается к вам и говорит: "Господин Дрейк? Мое имя Джозеф Старлайт. Я думаю нам есть что обсудить касательно компании вашего отца". ]];
 
			return [[Джозеф оборачивается к вам и удивленно вскакивает со стула: "Как вы сюда попали?!" ^Он подходит к двери, открывает ее и снова закрывает, после чего запирает замок: "Опять забыл, да что ж такое?!" Потом он снова оборачивается к вам и говорит: "Господин Дрейк? Мое имя Джозеф Старлайт. Я думаю нам есть что обсудить касательно компании вашего отца". ]];
 
		end;
 
	end;
 
	phr = {
 
		{1, "Вы уже представлялись. ", [[Джозеф Старлайт удивленно переспрашивает: "Да?! Что-то я этого не помню. Впрочем я такими мелочами себе голову не забиваю. Давайте к делу". ]]};
 
		{2, "Я вас слушаю. ", [[Джозеф Старлайт чешет подбородок: "Как я уже говорил, это дело было одним из самых запутанных. Судите сами: верхушка преуспевающей компании, внезапно исчезает, не оставив следов. Сначала мы предполагали, что это дело рук конкурентов - прибрать компанию к рукам, прикрыть или использовать их разработки. Однако, когда начали копать, выяснили, что к этому моменту Вестхейвен Трансоушен была не в лучшем состоянии -- отдел исследований закрыт, документы уничтожены, некоторые подразделения проданы. Говоря проще -- компания разваливалась". ]], code [[ pstart('father_bankrupt') ]]};
 
		{2, "Я вас слушаю. ", [[Джозеф Старлайт чешет подбородок: "Как я уже говорил, это дело было одним из самых запутанных. Судите сами: верхушка преуспевающей компании, внезапно исчезает, не оставив следов. Сначала мы предполагали, что это дело рук конкурентов -- прибрать компанию к рукам, прикрыть или использовать их разработки. Однако, когда начали копать, выяснили, что к этому моменту Вестхейвен Трансоушен была не в лучшем состоянии -- отдел исследований закрыт, документы уничтожены, некоторые подразделения проданы. Говоря проще -- компания разваливалась". ]], code [[ pstart('father_bankrupt') ]]};
 
		{3, tag = 'father_bankrupt'};
 
		{4, "Но зачем Уильяму разрушать собственную компанию? ", [[
 
			Джозеф Старлайт пожимает плечами: "Если бы я знал. Судя по той информации, что я о нем собрал, он весьма грамотный человек и у него были толковые помощники. Не знаю, сможете ли вы что-то сказать, господин Дрейк. Вам тогда сколько было? 10 лет?" Джозеф поправляет очки и продолжает: "У меня, конечно, есть предположение. Исследовательский отдел занимался чем-то принципиально новым, не связанным с основной деятельностью компании. Это подтверждают и отчеты компании - инженеры получали колоссальное финасирование, заказывалось огромное количество заказных деталей. Также компания зачем-то наняла нескольких видных ученых. В итоге, что бы там не планировалось - дело закончилось провалом и большими расходами, поэтому компанию пришлось закрыть. Чего я не понимаю - зачем он исчез? Любой банк бы выдал большой кредит такому человеку". ]], code [[ pstart('fathers_project') ]]};
 
			Джозеф Старлайт пожимает плечами: "Если бы я знал. Судя по той информации, что я о нем собрал, он весьма грамотный человек и у него были толковые помощники. Не знаю, сможете ли вы что-то сказать, господин Дрейк. Вам тогда сколько было? 10 лет?" Джозеф поправляет очки и продолжает: "У меня, конечно, есть предположение. Исследовательский отдел занимался чем-то принципиально новым, не связанным с основной деятельностью компании. Это подтверждают и отчеты компании -- инженеры получали колоссальное финасирование, заказывалось огромное количество заказных деталей. Также компания зачем-то наняла нескольких видных ученых. В итоге, что бы там не планировалось -- дело закончилось провалом и большими расходами, поэтому компанию пришлось закрыть. Чего я не понимаю -- зачем он исчез? Любой банк бы выдал большой кредит такому человеку". ]], code [[ pstart('fathers_project') ]]};
 
		{5, tag = 'fathers_project', empty = code [[psub('final') ]]};
 
		{6, "А может у него наоборот все получилось? ", [[Джозеф Старлайт пожимает плечами: "Тогда почему он исчез? Почему оставил семью? Еще больше вопросов". ]]};
 
		{7, "Не думаю, что из-за простой неудачи мой отец мог бы бросить вообще все. ", [[Джозеф Старлайт чешет подбородок: "Я и не говорил, что это *простая* неудача. Судя по всему, проект был весьма перспективным. Настолько, что можно было рискнуть всем". ]]};
 
		{8, "И что это мог быть за проект? ", [[Джозеф Старлайт пожимает плечами: "Понятия не имею. Какое-то масштабное исследование, может быть экспедиция - это подтверждают и большое количество заказанных компанией деталей и нанятые ученые". ]], code [[ psub('submarine'); ]]};
 
		{8, "И что это мог быть за проект? ", [[Джозеф Старлайт пожимает плечами: "Понятия не имею. Какое-то масштабное исследование, может быть экспедиция -- это подтверждают и большое количество заказанных компанией деталей и нанятые ученые". ]], code [[ psub('submarine'); ]]};
 
		{9, tag = 'submarine'};
 
		{10, "Для чего это могло понадобиться Уильяму? ", [[Джозеф Старлайт снимает очки: "Понятия не имею. Совершенно". ]]};
 
		{11, "Это бы объяснило куда он исчез. ", [[Джозеф Старлайт чешет голову: "Может быть, только никаких документов не сохранилось. Впрочем они очень много денег на какие-то секретные проекты тратили последнее время". ]]};
 
		{13, tag = 'final'};
 
		{14, always = true, "Вы можете посмотреть эти бумаги? Вам знакомы эти места? [Показать Джозефу документы отца]", [["Так вот зачем вы здесь! Я догадывался. Давайте ваши бумаги сюда", - Джозеф выхватывает документы из ваших рук и бегло просматривает их. Почесав голову, он говорит: "Одно из этих мест я знаю". Он сообщает вам адрес склада 18. ]], code [[ warehouse18_found = true; poff(14); ]]};
 
		{14, always = true, "Вы можете посмотреть эти бумаги? Вам знакомы эти места? [Показать Джозефу документы отца]", [["Так вот зачем вы здесь! Я догадывался. Давайте ваши бумаги сюда", -- Джозеф выхватывает документы из ваших рук и бегло просматривает их. Почесав голову, он говорит: "Одно из этих мест я знаю". Он сообщает вам адрес склада 18. ]], code [[ warehouse18_found = true; poff(14); ]]};
 
		{15, always = true, "Мне пора. ", [[Джозеф Старлайт отворачивается к столу: "До встречи". ]], code [[ back(); ]]};
 
	};
 
};
 
 
--[[
 
    Банк
 
]]
 
london_bank_street = room {
 
    nam = "london_bank_street";
 
    disp = "Улица";
 
    dsc = [[На улице перед банком людно -- прохожие спешат по своим делам, то и дело натыкаясь друг на друга и разбегаясь в разные стороны. Среди этой суеты возвышается, словно игнорируя ее, здание, высокое и широкое, с резными колоннами, мраморными ступенями, ведущими к широким и тяжелым дверям из красного дерева и позолоченной табличкой над входом, гласящей, что перед лицезреющими это ни что иное, как банк. ]];
 
    way = {
 
        kh_vroom("В банк", "london_bank");
 
    };
 
    entered = function(s)
 
        move(char_coachman, here());
 
    end;
 
};
 
 
london_bank = room {
 
    nam = "london_bank";
 
    disp = "Банк";
 
    dsc = [[Внутри банка прохладно и светло. ]];
 
    way = {
 
        kh_vroom("На улицу", "london_bank_street");
 
    };
 
    obj = {
 
        "bank_clerks";
 
        "bank_guard";
 
    };
 
};
 
 
bank_clerks = npc {
 
    nam = "bank_clerks";
 
    dsc = [[Людей внутри почти нет, не считая нескольких скучающих за мраморной стойкой {клерков} ]];
 
    dlg = "bank_clerks_dlg";
 
};
 
 
bank_clerks_dlg = dlg {
 
    nam = "bank_clerks_dlg";
 
    disp = "Клерк";
 
    entered = [[Вы подходите к одному из клерков. Молодой человек в аккуратном пиджаке и галстуке уставляет свой взор на вас и спрашивает: "Чем я могу помочь?"]];
 
    phr = {
 
        {"[Передать сберкнижку] Я хотел бы снять деньги со своего счета. ", [[Вы протягиваете клерку сберкнижку. Он просматривает ее и отвечает: "Конечно. Минутку". Он уходит из зала и через несколько минут возвращается с мешочком монет. ]], code [[ remove(item_bankbook, pl); pl.money = pl.money + 150; ]]};
 
        {always=true; "Я вернусь позже. ", [[Клерк возвращается к своим делам. ]], code [[ back(); ]]}
 
    };
 
};
 
 
bank_guard = npc {
 
    nam = "bank_guard";
 
    dsc = "и одинокого {охранника}, застывшего у входа.";
 
    phrases = {
 
        [[Охранник вежливо приветствует вас: "Добро пожаловать, господин". ]];
 
        [[Охранник пожимает плечами: "Я ничем не могу вам помочь". ]];
 
        [[Охранник зевает. ]];
 
        [[Охранник задумчиво чешет подбородок. ]];
 
    };
 
};
 
 
money_dock = obj {
 
    nam = "money_dock";
 
    dsc = "Среди куч мусора вы видите что-то {блестящее}. ";
 
    act = function(s)
 
        remove(money_dock, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
 
money_wh32 = obj {
 
    nam = "money_wh32";
 
    seen_level=1;
 
    dsc = "На столе лежат несколько {монет}. ";
 
    act = function(s)
 
        remove(money_wh32, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
 
money_hotel = obj {
 
    nam = "money_hotel";
 
    dsc = "Под кроватью вы замечаете {что-то блестящее}. ";
 
    act = function(s)
 
        remove(money_hotel, here());
 
        return "Пять шиллингов!";
 
    end;
 
};
 
\ No newline at end of file
london_checkers.lua
Show inline comments
 
new file 100644
 
checkers_game = room {
 
    var {
 
        board = {};
 
        selected = 0;
 
        select_lock = false;
 
    };
 
    nam = "checkers_game";
 
    nosave = true;
 
    noautosave = true;
 
    forcedsc = true;
 
    randomness = 15;
 
    depth = 6;
 
    cutoff_lo = -3;
 
    cutoff_hi = 3;
 
    draw_board = function(board)
 
        rval = {
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
            {0,0,0,0,0,0,0,0};
 
        };
 
        
 
        for i = 1, #board do
 
            if board[i][3] then
 
                if board[i][4] then
 
                    rval[board[i][1]][board[i][2]] = 3;
 
                else
 
                    rval[board[i][1]][board[i][2]] = 1;
 
                end;
 
            else
 
                if board[i][4] then
 
                    rval[board[i][1]][board[i][2]] = 4;
 
                else
 
                    rval[board[i][1]][board[i][2]] = 2;
 
                end;
 
            end;
 
        end;
 
        
 
        return rval;
 
    end;
 
    calc_take = function(s, x, y, w, q, map)
 
        local rval = {};
 
        local r = nil;
 
        if w then
 
            -- белый рубит черного - рубит вверх
 
            if (map[x - 1][y - 1] == 2 or map[x - 1][y - 1] == 4)
 
                and map[x - 2][y - 2] == 0 and x - 2 > 0 and y - 2 > 0 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x - 2, y - 2, w, q or y == 2, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x-1, y-1}}, q or y == 2, x-2, y-2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x-1, y-1};
 
                    r[i][3] = r[i][3] or q or y == 2;
 
                    rval[#rval + 1] = r[i]
 
                end;
 
            end;
 
            if (map[x + 1][y - 1] == 2 or map[x + 1][y - 1] == 4)
 
                and map[x + 2][y - 2] == 0 and x + 2 < 9 and y - 2 > 0 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x + 2, y - 2, w, q or y == 2, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x+1, y-1}}, q or y == 2, x+2, y-2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x+1, y-1};
 
                    r[i][3] = r[i][3] or q or y == 2;
 
                    rval[#rval + 1] = r[i]
 
                end;
 
            end;
 
            --Дамка может рубить и вниз
 
            if q and (map[x - 1][y + 1] == 2 or map[x - 1][y + 1] == 4)
 
                and map[x - 2][y + 2] == 0 and x - 2 > 0 and y + 2 < 9 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x - 2, y + 2, w, q, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x-1, y+1}}, q, x-2, y+2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x-1, y+1};
 
                    r[i][3] = r[i][3] or q;
 
                    rval[#rval + 1] = r[i];
 
                end;
 
            end;
 
            if q and (map[x + 1][y + 1] == 2 or map[x + 1][y + 1] == 4)
 
                and map[x + 2][y + 2] == 0 and x + 2 < 9 and y + 2 < 9 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x + 2, y + 2, w, q, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x+1, y+1}}, q, x+2, y+2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x+1, y+1};
 
                    r[i][3] = r[i][3] or q;
 
                    rval[#rval + 1] = r[i];
 
                end;
 
            end;
 
        else
 
            --черный рубит белого - рубит вниз
 
            if (map[x - 1][y + 1] == 1 or map[x - 1][y + 1] == 3)
 
                and map[x - 2][y + 2] == 0 and x - 2 > 0 and y + 2 < 9 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x - 2, y + 2, w, q or y == 6, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x-1, y+1}}, q or y == 6, x-2, y+2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x-1, y+1};
 
                    r[i][3] = r[i][3] or q or y == 6;
 
                    rval[#rval + 1] = r[i]
 
                end;
 
            end;
 
            if (map[x + 1][y + 1] == 1 or map[x + 1][y + 1] == 3)
 
                and map[x + 2][y + 2] == 0 and x + 2 < 9 and y + 2 < 9 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x + 2, y + 2, w, q or y == 6, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x+1, y+1}}, q or y == 6, x+2, y+2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x+1, y+1};
 
                    r[i][3] = r[i][3] or q or y == 2;
 
                    rval[#rval + 1] = r[i]
 
                end;
 
            end;
 
            --Дамка может рубить и вниз
 
            if q and (map[x - 1][y - 1] == 1 or map[x - 1][y - 1] == 3)
 
                and map[x - 2][y - 2] == 0 and x - 2 > 0 and y - 2 > 0 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x - 2, y - 2, w, q, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x-1, y-1}}, q or y == 6, x-2, y-2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x-1, y-1};
 
                    r[i][3] = r[i][3] or q;
 
                    rval[#rval + 1] = r[i];
 
                end;
 
            end;
 
            if q and (map[x + 1][y - 1] == 1 or map[x + 1][y - 1] == 3)
 
                and map[x + 2][y - 2] == 0 and x + 2 < 9 and y - 2 > 0 then
 
                mcopy = deepcopy(map);
 
                r = s:calc_take(x + 2, y - 2, w, q, mcopy);
 
                if #r == 0 then
 
                    rval[#rval + 1] = {1, {{x+1, y-1}}, q or y == 6, x+2, y-2};
 
                end;
 
                for i = 1, #r do
 
                    r[i][1] = r[i][1] + 1;
 
                    r[i][2][#r[i][2] + 1] = {x+1, y-1};
 
                    r[i][3] = r[i][3] or q;
 
                    rval[#rval + 1] = r[i];
 
                end;
 
            end;
 
        end;
 
        return rval;
 
    end;
 
    calc_turn = function(s, d, w, board)
 
        if d > s.depth then
 
            return nil, 0;
 
        end;
 
        local cost = 0;
 
        local turns = {};
 
        local bmap = s.draw_board(board);
 
        local takes = false;
 
        for i = 1, #board do
 
            --Рубка обязательна, поэтому сперва проверяем рубки
 
            if board[i][3] == w then
 
                -- своя фигура. Проверяем рубки
 
                local r = s:calc_take(board[i][1], board[i][2], w, board[i][4], bmap);
 
                if #r > 0 then
 
                    takes = true;
 
                    for j = 1, #r do
 
                        --Восстанавливаем состояние поля после рубки и уходим глубже
 
                        local bcopy = deepcopy(board);
 
                        for k = #bcopy, 1, -1 do
 
                            for l = 1, #r[j][2] do
 
                                if r[j][2][1] == bcopy[k][2] and r[j][2][1] == bcopy[k][2] then
 
                                    table.remove(bcopy, k);
 
                                    break;
 
                                end;
 
                            end;
 
                        end;
 
                        local rr, pts = s:calc_turn(d + 1, not w, bcopy);
 
                        turns[#turns + 1] = {board[i][1], board[i][2], r[j][4], r[j][5], r[j][2], r[j][1] - pts};
 
                    end;
 
                end;
 
            end;
 
        end;
 
        -- Если была рубка, не обрабатываем дальше
 
        if takes then
 
            table.sort(turns, function(a,b) 
 
                return a[6] > b[6];
 
            end);
 
            return turns[0], turns[0][6];
 
        end;
 
        for i = 1, #board do
 
            if board[i][3] == w then
 
                --Проверяем ходы
 
                if q or w then
 
                    --белая или дамка - ходит вверх
 
                    if bmap[board[i][1] - 1][board[i][2] - 1] == 0 then
 
                        local bcopy = deepcopy(board);
 
                        bcopy[i][1] = bcopy[i][1] - 1;
 
                        bcopy[i][2] = bcopy[i][2] - 1;
 
                        local rr, pts = s:calc_turn(d + 1, not w, bcopy);
 
                        turns[#turns + 1] = {board[i][1], board[i][2], bcopy[i][1], bcopy[i][2], nil, - pts};
 
                    end;
 
                    if bmap[board[i][1] - 1][board[i][2] + 1] == 0 then
 
                        local bcopy = deepcopy(board);
 
                        bcopy[i][1] = bcopy[i][1] - 1;
 
                        bcopy[i][2] = bcopy[i][2] + 1;
 
                        local rr, pts = s:calc_turn(d + 1, not w, bcopy);
 
                        turns[#turns + 1] = {board[i][1], board[i][2], bcopy[i][1], bcopy[i][2], nil, - pts};
 
                    end;
 
                end;
 
                if q or not w then
 
                    --черная или дамка - ходит вниз
 
                    if bmap[board[i][1] + 1][board[i][2] - 1] == 0 then
 
                        local bcopy = deepcopy(board);
 
                        bcopy[i][1] = bcopy[i][1] + 1;
 
                        bcopy[i][2] = bcopy[i][2] - 1;
 
                        local rr, pts = s:calc_turn(d + 1, not w, bcopy);
 
                        turns[#turns + 1] = {board[i][1], board[i][2], bcopy[i][1], bcopy[i][2], nil, - pts};
 
                    end;
 
                    if bmap[board[i][1] + 1][board[i][2] + 1] == 0 then
 
                        local bcopy = deepcopy(board);
 
                        bcopy[i][1] = bcopy[i][1] + 1;
 
                        bcopy[i][2] = bcopy[i][2] + 1;
 
                        local rr, pts = s:calc_turn(d + 1, not w, bcopy);
 
                        turns[#turns + 1] = {board[i][1], board[i][2], bcopy[i][1], bcopy[i][2], nil, - pts};
 
                    end;
 
                end;
 
            end;
 
        end;
 

	
 
        table.sort(turns, function(a,b) 
 
            return a[6] > b[6];
 
        end);
 
        return turns[0], turns[0][6];
 
    end;
 
    enemy_turn = function(s)
 
    end;
 
    click = function(s, x, y)
 
        x = math.floor((x - 4) / 24) + 1;
 
        y = math.floor((y - 4) / 24) + 1;
 
        if x > 0 and x < 9 and y > 0 and y < 9 then
 
            for i = 1,#s.board do
 
                if s.board[i][1] == x and s.board[i][2] == y then
 
                    if s.board[i][3] then
 
                        s.selected = i;
 
                        walkin(here());
 
                        return;
 
                    else
 
                        --Может рубим?
 
                        if s.selected > 0 then
 
                            print("q");
 
                            local dx = x - s.board[s.selected][1];
 
                            local dy = y - s.board[s.selected][2];
 
                            if s.board[s.selected][4] then
 
                                if math.abs(dx) == 1 and math.abs(dy) == 1 then
 
                                    s.board[s.selected][1] = s.board[s.selected][1] + dx * 2;
 
                                    s.board[s.selected][2] = s.board[s.selected][2] + dy * 2;
 
                                    s.selected = 0;
 
                                    walkin(here());
 
                                    return;
 
                                end;
 
                            else
 
                                if math.abs(dx) == 1 and dy == -1 then
 
                                    s.board[s.selected][1] = s.board[s.selected][1] + dx * 2;
 
                                    s.board[s.selected][2] = s.board[s.selected][2] + dy * 2;
 
                                    s.selected = 0;
 
                                    walkin(here());
 
                                    return;
 
                                end;
 
                            end;
 
                    end;
 
                        return;
 
                    end;
 
                end;
 
            end;
 
            
 
            if s.selected > 0 then
 
                local dx = x - s.board[s.selected][1];
 
                local dy = y - s.board[s.selected][2];
 
                print(dx, dy);
 
                if s.board[s.selected][4] then
 
                    if math.abs(dx) == 1 and math.abs(dy) == 1 then
 
                        s.board[s.selected][1] = x;
 
                        s.board[s.selected][2] = y;
 
                        s.selected = 0;
 
                        walkin(here());
 
                        return;
 
                    end;
 
                else
 
                    if math.abs(dx) == 1 and dy == -1 then
 
                        s.board[s.selected][1] = x;
 
                        s.board[s.selected][2] = y;
 
                        print(s.board[s.selected][1], s.board[s.selected][2])
 
                        s.selected = 0;
 
                        walkin(here());
 
                        return;
 
                    end;
 
                end;
 
            end;
 
            s.selected = 0;
 
        
 
            
 
        end;
 
        walkin(here());
 
    end;
 
    disp = "Шашки";
 
    reset = function(s)
 
        s.board = {
 
            {2, 3, false, false};
 
            {4, 3, false, false};
 
            {6, 3, false, false};
 
            {8, 3, false, false};
 
            
 
            --{1, 2, false, false};
 
            --{3, 2, false, false};
 
            --{5, 2, false, false};
 
            --{7, 2, false, false};
 
            
 
            {2, 5, false, false};
 
            {4, 5, false, false};
 
            {6, 5, false, false};
 
            {8, 5, false, false};
 
            
 
            {1, 6, true, false};
 
            {3, 6, true, false};
 
            {5, 6, true, false};
 
            {7, 6, true, false};
 
            
 
            {2, 7, true, false};
 
            {4, 7, true, false};
 
            {6, 7, true, false};
 
            {8, 7, true, false};
 
            
 
            {1, 8, true, false};
 
            {3, 8, true, false};
 
            {5, 8, true, false};
 
            {7, 8, true, false};
 
        };
 
    end;
 
    pic = function(s)
 
        local rval = "images/checkerboard.png";
 
        if s.selected > 0 then
 
            rval = rval .. [[;box:24x24,red,32@]] .. tostring(s.board[s.selected][1] * 24 - 20) .. "," .. tostring(s.board[s.selected][2] * 24 - 20);
 
        end;
 
        for i = 1, #s.board do
 
            if s.board[i][3] and s.board[i][4] then
 
                rval = rval .. [[;images/checkerwhiteq.png@]] .. tostring(s.board[i][1] * 24 - 20) .. "," .. tostring(s.board[i][2] * 24 - 20);
 
            elseif not s.board[i][3] and s.board[i][4] then
 
                rval = rval .. [[;images/checkerblackq.png@]] .. tostring(s.board[i][1] * 24 - 20) .. "," .. tostring(s.board[i][2] * 24 - 20);
 
            elseif s.board[i][3] and not s.board[i][4] then
 
                rval = rval .. [[;images/checkerwhite.png@]] .. tostring(s.board[i][1] * 24 - 20) .. "," .. tostring(s.board[i][2] * 24 - 20);
 
            elseif not s.board[i][3] and not s.board[i][4] then
 
                rval = rval .. [[;images/checkerblack.png@]] .. tostring(s.board[i][1] * 24 - 20) .. "," .. tostring(s.board[i][2] * 24 - 20);
 
            end;
 
        end;
 
        return rval;
 
    end;
 
};
 
\ No newline at end of file
london_dice.lua
Show inline comments
 
new file 100644
 
dice_game = room {
 
    var {
 
        player_pts = 0;
 
        current_pts = 0;
 
        enemy_pts = 0;
 
        first = false;
 
        state = 0;
 
    };
 
    nosave = true;
 
    noautosave = true;
 
    forcedsc = true;
 
    hideinv = true;
 
    nam = "dice_game";
 
    disp = "Игра в кости";
 
    win = "dice_game_win";
 
    lose = "dice_game_lose";
 
    draw = "dice_game_draw";
 
    entered = function(s)
 
        s.player_pts = 0;
 
        s.enemy_pts = 0;
 
        s.current_pts = 0;
 
        s.state = 0;
 
        dg_pass:disable();
 
        dg_roll:enable();
 
    end;
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Определяем очередность ходов. Бросайте кость. ]];
 
        else
 
            return([[Очки:^Вы:]] .. s.player_pts .. [[^Соперник:]] .. s.enemy_pts .. [[^Текущий раунд:]] .. s.current_pts);
 
        end;
 
    end;
 
    obj = {
 
        "dg_roll";
 
        "dg_pass";
 
    };
 
    player_turn = function(s)
 
        if s.turn and (s.player_pts >= 100 or s.enemy_pts >= 100) then
 
            timer:stop();
 
            game.timer = nil;
 
            if s.player_pts >= 100 and s.enemy_pts >= 100 then
 
                walk(s.draw);
 
            elseif s.player_pts >= 100 then
 
                walk(s.win);
 
            else
 
                walk(s.lose);
 
            end;
 
            return;
 
        end;
 
        s.state = 1;
 
        s.current_pts = 0;
 
        timer:stop();
 
        game.timer = nil;
 
        dg_roll:enable();
 
        dg_pass:enable();
 
    end;
 
    enemy_turn = function(s)
 
        if not s.turn and (s.player_pts >= 100 or s.enemy_pts >= 100) then
 
            timer:stop();
 
            game.timer = nil;
 
            if s.player_pts >= 100 and s.enemy_pts >= 100 then
 
                walk(s.draw);
 
            elseif s.player_pts >= 100 then
 
                walk(s.win);
 
            else
 
                walk(s.lose);
 
            end;
 
            return;
 
        end;
 
        s.state = 1;
 
        s.current_pts = 0;
 
        game.timer = s.make_enemy_turn;
 
        timer:set(2500);
 
        dg_roll:disable();
 
        dg_pass:disable();
 
    end;
 
    make_enemy_turn = function()
 
        local s = dice_game;
 
        local pl = rnd(6);
 
        pr [[Соперник бросает кости. ]];
 
        pr([[Результат броска: ]] .. tostring(pl) .. [[.^]]);
 
        if pl == 1 then
 
            pr [[Ваш соперник теряет ход. ]];
 
            s:player_turn();
 
        else
 
            s.current_pts = s.current_pts + pl;
 
            local r = rnd(10);
 
            if r == 1 then
 
                s.enemy_pts = s.enemy_pts + s.current_pts;
 
                pr [[Соперник передает вам ход. ]];
 
                s:player_turn();
 
            elseif r == 2 then
 
                pr [[Соперник продолжает игру. ]];
 
            elseif s.enemy_pts > s.player_pts then
 
                if s.enemy_pts + s.current_pts >= 100 then
 
                    s.enemy_pts = s.enemy_pts + s.current_pts;
 
                    pr [[Соперник передает вам ход. ]];
 
                    s:player_turn();
 
                else
 
                    pr [[Соперник продолжает игру. ]];
 
                end;
 
            else
 
                if s.enemy_pts + s.current_pts >= s.player_pts then
 
                    s.enemy_pts = s.enemy_pts + s.current_pts;
 
                    pr [[Соперник передает вам ход. ]];
 
                    s:player_turn();
 
                else
 
                    pr [[Соперник продолжает игру. ]];
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 

	
 
dg_roll = obj {
 
    nam = "dg_roll";
 
    dsc = [[{Бросить кость. }^]];
 
    act = function(s)
 
        if dice_game.state == 0 then
 
            local pl = rnd(6);
 
            local en = rnd(6);
 
            pr([[У вас выпало ]] .. tostring(pl) .. [[ очков. У соперника -- ]] .. tostring(en) .. [[. ]]);
 
            if pl > en then
 
                pr [[Вы ходите первым. Бросайте кость. ]];
 
                dice_game.first = true;
 
                dice_game:player_turn();
 
            elseif pl < en then
 
                pr [[Ваш соперник ходит первым. ]];
 
                dice_game.first = false;
 
                dice_game:enemy_turn();
 
            else
 
                pr [[Результаты совпали. Повторите бросок. ]];
 
            end;
 
        else
 
            local pl = rnd(6);
 
            pr([[Результат броска: ]] .. tostring(pl) .. [[.^]]);
 
            if pl == 1 then
 
                pr [[Вы теряете набранные очки. ]];
 
                dice_game:enemy_turn();
 
            else
 
                dice_game.current_pts = dice_game.current_pts + pl;
 
            end;
 
        end;
 
    end;
 
};
 

	
 
dg_pass = obj {
 
    nam = "dg_pass";
 
    dsc = [[{Передать ход. }^]];
 
    act = function(s)
 
        dice_game.player_pts = dice_game.player_pts + dice_game.current_pts;
 
        dice_game.current_pts = 0;
 
        dice_game:enemy_turn();
 
        return [[]];
 
    end;
 
};
 

	
 
dice_game_draw = cutscene("dice_game_draw", "Игра в кости", [[Человек разводит руками: "Ничья. Сыграем еще раз?"]], "port_street");
 

	
 

	
 
dice_game_win = cutscene("dice_game_win", "Игра в кости", [[Человек вручает вам сумму выигрыша: "Поздравляю, вы выиграли! Сыграем еще?"]], "port_street", function()
 
    pl.money = pl.money + dice_game.stake;
 
end);
 

	
 
dice_game_lose = cutscene("dice_game_lose", "Игра в кости", [[Человек довольно потирает руки и прячет в карман ваши деньги: "В следующий раз вам повезет. Может сыграем еще?"]], "port_street", function()
 
    pl.money = pl.money - dice_game.stake;
 
end);
 
\ No newline at end of file
lseryanotrr_intro.lua
Show inline comments
 
@@ -89,7 +89,7 @@ lse_entered2 = cutscene("lse_entered2", "Левиафан, рубка", function(s)
 
end, "lse_entered3");
 

	
 
lse_entered3 = cutscene("lse_entered3", "Левиафан, рубка", [[
 
    Вашему удивлению нет предела, когда яркие зеленые огни указывают вам на открывающийся проем в стене Лсэрианотра - древний город словно приглашает вас внутрь. Не раздумывая, вы направляетесь туда. Части стены словно раздвигаются, пропуская вас внутрь. Вы аккуратно проплываете в открывшийся проход и оказываетесь в огромном хорошо освещенном помещении. Стены, пол и потолок его излучают мягкий белый свет. Но вас удивляет, что зал заполнен водой лишь наполовину и в верхней части вас уже ждет группа навьяров. Среди них выделяется один стоящий в центре. Вместо простого одеяния сшитого из водорослей, он одет в человеческие рубашку и брюки!
 
    Вашему удивлению нет предела, когда яркие зеленые огни указывают вам на открывающийся проем в стене Лсэрианотра -- древний город словно приглашает вас внутрь. Не раздумывая, вы направляетесь туда. Части стены словно раздвигаются, пропуская вас внутрь. Вы аккуратно проплываете в открывшийся проход и оказываетесь в огромном хорошо освещенном помещении. Стены, пол и потолок его излучают мягкий белый свет. Но вас удивляет, что зал заполнен водой лишь наполовину и в верхней части вас уже ждет группа навьяров. Среди них выделяется один стоящий в центре. Вместо простого одеяния сшитого из водорослей, он одет в человеческие рубашку и брюки!
 
    Стена позади вас закрывается и вы оказываетесь отрезаны от внешнего мира. Вы дергаете один из рычагов на приборной панели и Левиафан поднимается наверх...
 
]], "leviathan_wheelhouse");
 

	
 
@@ -552,7 +552,7 @@ lse_black_intro = dlg {
 
            "Если мы все сделаем правильно, Наэтвьирр будет подвластен мне и не сможет сделать ничего без моего ведома. И мне не помешает ваша помощь".
 
        ]], code [[ psub("choise"); ]]};
 
        {tag="choise"};
 
        {tag="control", false, "[Показать ключ из древнего храма]Вы не сможете управлять Наэтвьирром без этого", [[
 
        {tag="control", false, "[Показать ключ из древнего храма] Вы не сможете управлять Наэтвьирром без этого", [[
 
            В глазах Блэка мелькнуло любопытство: "Дайте его сюда, господин Дрейк". Вы не успеваете среагировать, как Аэдхиарр вырывает ключ из ваших рук. 
 
        ]], code [[ lse_key = true; ]]};
 
        {"Я готов помочь", function(s)
main.lua
Show inline comments
 
@@ -9,6 +9,7 @@ require "quotes"
 
require "hideinv"
 
require "kbd"
 
require "timer"
 
require "click"
 
 
-- Код и ядро
 
dofile "utils.lua"
 
@@ -25,17 +26,18 @@ dofile "dock2.lua"
 
dofile "warehouse18.lua"
 
dofile "warehouse32.lua"
 
dofile "leviathan.lua"
 
dofile "london_dice.lua"
 
-- Часть 2: Атлантида
 
dofile "atlantis.lua"
 
dofile "atlantis_ignis.lua"
 
dofile "atlantis_dlg.lua"
 
dofile "atlantis_intro.lua"
 
dofile "atlantis_ignis_on_fire.lua"
 
dofile "atlantis_navjiarr.lua"
 
dofile "atlantis_iraa.lua"
 
dofile "atlantis_dyp.lua"
 
dofile "atlantis_looking_for_clues.lua"
 
dofile "atlantis_from_the_ashes.lua"
 
dofile "atlantis_iyhehevjiarr.lua"
 
dofile "atlantis_catching_the_tail.lua"
 
-- Часть 3: Путь в Лсэрианотр
 
dofile "journey_venaedanotrr.lua"
 
dofile "journey_nleyyslanotrr.lua"
 
@@ -47,135 +49,5 @@ dofile "lseryanotrr_locations.lua"
 
dofile "lse_service_tunnels.lua"
 
dofile "lse_powerplant.lua";
 
dofile "lse_final_battle.lua";
 
--dofile "final_scene.lua";
 
--dofile "final_battle.lua";
 
--dofile "first_city_inner_rim.lua"
 
--dofile "first_city_middle_rim.lua"
 
--dofile "first_city_outer_rim.lua"
 
 
global {
 
	warehouse18_found = false;
 
	warehouse32_found = false;
 
    warehouse32_visited = false;   
 
	dock_found = false;
 
	leviathan_discovered = false;
 
	atlantis_found = false;
 
	temple_found = false;
 
	iraaphaanotrr_found = false;
 
    dypatreanotrr_found = false;
 
	iraaphaanotrr_temple_found = false;
 
	dypatreanotrr_temple_found = false;
 
    venaedanotrr_temple_found = false;
 
    nleyyslanotrr_temple_found = false;
 
    deep_temple_found = false;
 
    lseryanotrr_found = false;
 
	
 
	rel_phaetlarr = 0;
 
	rel_walter = 0;
 
	rel_learr = 0;
 
	rel_anna = 0;
 
	rel_jack = 0;
 
    language_known = false;
 
    
 
    dt_code = {};
 
    dt_buttons = {};
 
};
 
 
 
 
player_drake = player {
 
    var {
 
        hp = 10;
 
        has_light = false;
 
        party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
 
        companion = nil;
 
        money = 200;
 
    };
 
	nam = "player";
 
	disp = "Дэвид Дрейк";
 
    disp2 = "Дрейка";
 
    disp3 = "Дрейку";
 
	where = 'port';
 
	
 
	obj = {'item_umbrella', 'item_charts', 'item_note_1', 'item_money', 
 
	};
 
	
 
	pay = function(s, c)
 
		if (s.money >= c) then
 
			s.money = s.money - c;
 
			return true;
 
		else
 
			return false;
 
		end;
 
	end;
 
};
 
 
intro = room {
 
	nam = "intro";
 
	hideinv = true;
 
	disp = "Вступление";
 
	dsc = [[
 
		ВНИМАНИЕ: Это специальная предварительная версия игры. Ни один фрагмент игры не является финальным. ^^
 
		ВНИМАНИЕ: Данная версия игры не предназначена для какого-либо распространения, исключая прямую передачу файлов автором. ^^
 
		Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка - единственного сына богатого и уважаемого владельца транспортной компании "Вестхейвен Трансоушен". ^
 
		Несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
 
		После исчезновения отца Дэвид жил в Вашингтоне с бабушкой. Он пошел по стопам отца и выучился на инженера-кораблестроителя. Несколько дней назад в доме, где он жил, был обнаружен тайник, хранящий секретные документы отца - карты, указывающие по-видимому на какие-то тайники Уильяма и записка с адресом и именем.^
 
		Одержимый идеей узнать больше, Дэвид отправляется в Лондон...
 
	]];
 
	obj = {
 
		vway("Начать игру", "{Начать игру}", 'aurora_borealis');
 
	}
 
};
 
 
pl = player_drake;
 
 
game.nam = "Пробуждение";
 
game.dsc = [[
 
	Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка, сына владельца крупной транспортной компании "Вестхейвен Трансоушен". Несколько лет назад Уильям Дрейк, отец главного героя бесследно пропадает. Компания вскоре разваливается. Поиски ни к чему не приводят. Когда казалось бы уже все потеряно, в доме Дрейков находят тайник с документами Уильяма. Несколько схем строений, принадлежащих компании и клочок бумаги с адресом некоего Майкла Райта в Лондоне. Естественно, Дэвид как можно скорее отправляется в Великобританию...
 
	Вам предстоит отыскать подводную лодку, посетить подводную станцию, построенную Уильямом, встретить древнюю расу подводных жителей, поучаствовать в событиях, описанных древними легендами этой расы и узнать, что стало с Уильямом Дрейком.
 
]];
 
 
game_act_phrases = {
 
	"Вы не знаете, что с этим делать. ";
 
	"Вам нет смысла это трогать. ";
 
	"Вам это ничем не поможет. ";
 
	"Это бессмысленно. ";
 
	"Незачем это трогать. ";
 
};
 
 
game_use_phrases = {
 
	"Вам это ничем не поможет. ";
 
	"Это бессмысленно. ";
 
	"Вы не знаете, как это сделать. "
 
};
 
 
game.act = function(s)
 
	return game_act_phrases[rnd(#game_act_phrases)];
 
end;
 
 
game.use = function(s)
 
	return game_use_phrases[rnd(#game_use_phrases)];
 
end;
 
game.inv = "INV: Если вы видите это сообщение - это баг. ";
 
 
function init()
 
	---modules init
 
	leviathan_init();
 
	warehouse18_init();
 
	warehouse32_init();
 
    
 
    local nums = {1,2,3,4,5,6};
 
    for i = 1, 4 do 
 
        local index = rnd(#nums);
 
        table.insert(dt_code, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
    nums = {1,2,3,4,5,6};
 
    for i = 1, 3 do 
 
        local index = rnd(#nums);
 
        table.insert(dt_buttons, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
    ---game init
 
    pl.where = intro;
 
end;
 
\ No newline at end of file
 
dofile "startup.lua";
 
\ No newline at end of file
navjiarr_hostile_settlement.lua
Show inline comments
 
deleted file
navjiarr_settlement.lua
Show inline comments
 
deleted file
party.lua
Show inline comments
 
@@ -13,7 +13,7 @@ end;
 
 
party_follow = function(s)
 
    if (where(pl).cutscene or where(pl).not_follow) then
 
    elseif (where(pl).leviathan) then
 
    elseif where(pl).leviathan or where(pl).atlantis then
 
        if (stead.nameof(where(s)) ~= s.home) then
 
            move(s, s.home, where(s));
 
        end;
 
@@ -25,20 +25,24 @@ end;
 
-- TODO больше отвлеченных диалогов, дабы было о чем поговорить с сопартийцами. Не стоит делать их деревянными безжизненными манекенами
 
char_learr = obj {
 
	var {
 
        home = "leviathan_wardroom";
 
		follow = false;
 
        
 
        on_books = 0;
 
        on_join = 0;
 
        on_before = 0;
 
        on_atlantis = 0;
 
        on_conflict = 0;
 
	};
 
	nam = "learr";
 
	disp = "Леарр";
 
	dsc = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
			return [[{Леарр} стоит возле одного из иллюминаторов и наблюдает за происходящим снаружи субмарины. ^]];
 
			return [[{Леарр} сидит в кресле, листая книгу. ^]];
 
		else
 
			return [[{Леарр} ждет ваших указаний. ^]];
 
		end;
 
	end;
 
	home = "leviathan_wardroom";
 
	accompany = party_accompany;
 
	life = party_follow;
 
	act = function(s)
 
@@ -48,10 +52,12 @@ char_learr = obj {
 
			walkin(learr_dlg);
 
		end;
 
	end;
 
    seen_level = 2;
 
};
 
 
char_phaetlarr = obj {
 
	var {
 
        home = "leviathan_engines";   
 
		follow = false;
 
	};
 
	nam = "phaetlarr";
 
@@ -63,7 +69,6 @@ char_phaetlarr = obj {
 
			return [[{Фаэтларр} ждет ваших указаний. ^]];
 
		end;
 
	end;
 
	home = "leviathan_engines";
 
	accompany = party_accompany;
 
	life = party_follow;
 
	act = function(s)
 
@@ -73,13 +78,23 @@ char_phaetlarr = obj {
 
			walkin(phaetlarr_dlg);
 
		end;
 
	end;
 
    seen_level = 2;
 
};
 
 
char_radcliffe = obj {
 
	var {
 
        home = "leviathan_engines";   
 
		follow = false;
 
        
 
        rel_on_join = nil;
 
        
 
        on_walter = 0;
 
        on_atlantis = 0;
 
        on_black = 0;
 
        on_drake = 0;
 
        on_anna = 0;
 
        on_join = 0;
 
        on_conflict = 0;
 
	};
 
	nam = "radcliffe";
 
	disp = "Уолтер Рэдклифф";
 
@@ -90,7 +105,6 @@ char_radcliffe = obj {
 
			return [[{Уолтер Рэдклифф} ждет ваших указаний. ^]];
 
		end;
 
	end;
 
	home = "leviathan_engines";
 
	accompany = party_accompany;
 
	life = party_follow;
 
	act = function(s)
 
@@ -100,16 +114,19 @@ char_radcliffe = obj {
 
			walkin(radcliffe_dlg);
 
		end;
 
	end;
 
    seen_level = 2;
 
};
 
 
char_wright = obj {
 
	var {
 
        home = "leviathan_wardroom";
 
		follow = false;
 
        
 
        iof_reaction = 0;
 
        
 
        on_learr = 0;
 
        on_leviathan = 0;
 
        on_conflict = 0;
 
	};
 
	nam = "wright";
 
	disp = "Джек Райт";
 
@@ -120,12 +137,12 @@ char_wright = obj {
 
			return [[{Джек Райт} ждет ваших указаний. ^]];
 
		end;
 
	end;
 
	home = "leviathan_wardroom";
 
	accompany = party_accompany;
 
	life = party_follow;
 
	act = function(s)
 
		walkin(wright_main_dlg);
 
	end;
 
    seen_level = 2;
 
};
 
 
char_anna = obj {
 
@@ -137,6 +154,7 @@ char_anna = obj {
 
        atlantis_asked = 0;
 
        drake_asked = 0;
 
        join_asked = 0;
 
        black_asked = 0;
 
        rel_on_join = nil;
 
	};
 
	nam = "anna";
 
@@ -158,13 +176,76 @@ char_anna = obj {
 
			walkin(anna_dlg);
 
		end;
 
	end;
 
    seen_level = 2;
 
};
 
 
learr_phone_dlg = dlg {
 
    nam = "Леарр";
 
    entered = function(s)
 
        if (char_learr.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[Вы слышите в трубке голос Леарр: "Ты говори". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз.", [[Леарр отвечает: "Хорошо". ]], 
 
            function()
 
                char_learr:accompany(true);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                pon('stay');
 
                poff('join');
 
            end;
 
        };
 
        { tag = "stay", always = true, "Оставайся на Левиафане.", [[Леарр отвечает: "Хорошо". ]], 
 
            function()
 
                char_learr.accompany(char_learr, false);
 
                poff('stay');
 
                pon('join');
 
            end;
 
        };
 
        { tag = "exit", always = true, "Это все.", [[Леарр отвечает: "Ты приходи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
learr_home_dlg = dlg {
 
	nam = "learr_dlg";
 
	disp = "Леарр";
 
	hideinv = true;
 
    var {
 
        iraa_temple_asked = false;
 
    };
 
	nam = "Леарр";
 
	entered = function(s)
 
        poff("on_books", "on_join", "on_before", "on_atlantis", "talk");
 
        if (rel_learr < 0) then
 
            pon("talk");
 
        else
 
            --[[if (char_learr.on_books < 3) then
 
                pon("on_books");
 
                pon("talk");
 
            end;]]
 
            if (char_learr.on_join < 2) then
 
                pon("on_join");
 
                pon("talk");
 
            end;
 
            if (char_learr.on_before < 2) then
 
                pon("on_before");
 
                pon("talk");
 
            end;
 
            if (char_learr.on_atlantis < 2) then
 
                pon("on_atlantis");
 
                pon("talk");
 
            end;
 
        end;
 
    
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
@@ -178,16 +259,67 @@ learr_home_dlg = dlg {
 
			pon('join');
 
			poff('stay');
 
		end;
 
	
 
		return [[
 
			Леарр вопросительно смотрит на вас
 
		]];
 
        
 
        if atl_ctt_iraa_refusal and not s.iraa_temple_asked then
 
            s.iraa_temple_asked = true;
 
            pon("on_iraa_temple");
 
        end;
 
	    
 
        psub("generic");   
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
		{ tag = "on_iyh", always = true, "Что ты можешь рассказать мне о храме?", [[
 
			"Каждый-храм два-входа-имеет. Большой-главный-вход далеко-виден. Тайный-задний-вход незаметен-но-всегда-есть. Мы давно-потеряли дорогу-к-этому-святилищу и задний-вход-не-помним. Если мы задний-вход-найдем, то обманим затмевающего-свет и в-храм-проникнем".
 
		]]};
 
		{ tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", 
 
        {tag="on_solution_not_returned"};
 
        {tag="sp11", "Будет лучше если артефакты останутся у нас. ", [[Леарр удивляется вашим словам: "Они принадлежат нам!" ]], code [[ rel_learr = rel_learr - 1; psub("generic");]]};
 
        {tag="sp12", "Светлова вернет вам артефакты, как только всесторонне изучит их, бояться нечего. ", [[Леарр кивает: "Я знаю". ]], code [[ rel_learr = rel_learr + 1; psub("generic");]]};
 
        {"Посмотрим, что светлова сможет извлечь из этого. Но я пришел поговорить от другом. ", function(s)
 
            if rel_learr < 0 then
 
                return [[Леаар просит: "Ты ответь". ]];
 
            else
 
                psub("generic");
 
                return [[Леарр кивает: "Ты говори". ]];
 
            end;
 
        end};
 
        {tag="on_solution_returned_ok"};
 
        {tag="sp21", "Было бы лучше, если бы артефакты остались у нас. ", [[Леарр удивляется вашим словам: "Они принадлежат нам!" ]], code [[ rel_learr = rel_learr - 1; psub("generic");]]};
 
        {tag="sp22", "Правила есть правила. ", [[Леарр кивает: "Я знаю". ]], code [[ rel_learr = rel_learr + 1; psub("generic");]]};
 
        {"Я пришел поговорить от другом. ", function(s)
 
            if rel_learr < 0 then
 
                return [[Леаар просит: "Ты ответь". ]];
 
            else
 
                psub("generic");
 
                return [[Леарр кивает: "Ты говори". ]];
 
            end;
 
        end};        
 
        {tag="more_questions"};
 
        --[[{tag="on_books", "", function() 
 
            
 
        end};]]
 
        {tag="on_join", "Почему ты отправилась с нами?", function() 
 
            char_learr.on_join = 2;
 
            return [[Леарр отвечает: "Я с-Уильямом-Дрейком-хотела-отправиться, но отец не-разрешил. Он сейчас-изменил-решение и я могу-с-тобой-искать". ]];
 
        end};
 
        {tag="on_before", "Расскажи о своей жизни в Ираафаанотре.", function() 
 
            char_learr.on_before = 2;
 
            return [[Леарр отвечает: "Я вождя-дочь. Я думать-искать-решать-сложно-но-интересно-было-училась. Хевьяры пришли-и-все-изменили. Я теперь-говорить-не-с-навьярами-учусь. Отец будущему-вождю-полезно-это-говорит. Я согласна-с-ним-в-этом".]];
 
        end};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function() 
 
            char_learr.on_atlantis = 2;
 
            return [[Леарр отвечает: "Мы многому-научиться-у-вас-должны-и-можем. Вы в-воде-не-дышите-как-мы, но вы машины-делающие-это-за-вас-строите. Легенды гласят, что мы тоже-это-умели, но почему-разучились? Я не умею. Отец не умеет. Другие не умеют. И в-книгах-не-написано". Леарр печально вздыхает. ]];
 
        end};
 
        {tag="quit", always=true, "Поговорим в другой раз. ", [[Уолтер кивает: "Хорошо".]], code [[pret();]]};
 
        {tag="generic"};
 
        { tag = "talk", always = true, "Я хочу кое-что спросить.", function(s)
 
            if rel_learr >= 0 then
 
                psub("more_questions");
 
                return [[Леарр кивает: "Ты говори". ]];
 
            else
 
                return [[Леарр отвечает: "Мы потом-поговорим". ]];
 
            end;
 
        end};
 
        { tag = "on_iraa_temple", always = true, "Нам нужно попасть в храм и найти карту. Ты можешь уговорить вождя дать нам доступ?", [[Плавники Леарр окрашиваются сиреневым, она говорит: "Ты невозможного-просишь". Кажется, она закончила, но через мгновение, навьяресса внезапно добавляет: "Я карту-найду, если ты-Дрейк разрешишь". ]]};
 
		{ tag = "on_iyh", always = true, "Что ты можешь рассказать мне о храме?", [["Каждый-храм два-входа-имеет. Большой-главный-вход далеко-виден. Тайный-задний-вход незаметен-но-всегда-есть. Мы давно-потеряли дорогу-к-этому-святилищу и задний-вход-не-помним. Если мы задний-вход-найдем, то обманем затмевающего-свет и в-храм-проникнем". ]]};
 
		{ tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз.", [[Леарр отвечает: "Хорошо". ]], 
 
			function()
 
				char_learr:accompany(true);
 
				char_phaetlarr:accompany(false);
 
@@ -198,25 +330,62 @@ learr_home_dlg = dlg {
 
				poff('join');
 
			end;
 
		};
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", 
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане.", [[Леарр отвечает: "Хорошо". ]], 
 
			function()
 
				char_learr.accompany(char_learr, false);
 
				poff('stay');
 
				pon('join');
 
			end;
 
		};
 
		{ tag = "exit", always = "true", "Это все", "Хорошо", 
 
		{ tag = "exit", always = "true", "Это все.", [[Леарр отвечает: "Ты возвращайся". ]], 
 
			function() 
 
				back();
 
			end;
 
		}
 
		};
 
	};
 
};
 
 
phaetlarr_phone_dlg = dlg {
 
    nam = "Фаэтларр";
 
    entered = function(s)
 
        if (char_phaetlarr.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[Вы слышите голос Фаэтларра: "Фаэтларр слушает. Ты говори". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Фаэтларр отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(true);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                poff('join');
 
                pon('stay');
 
            end; 
 
        };
 
        { tag = "stay", always = "true", "Оставайся на Левиафане.", [[Фаэтларр отвечает: "Хорошо". ]], 
 
            function()
 
                char_phaetlarr.accompany(char_phaetlarr, false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        { tag = "exit", always = "true", "Это все.", [[Фаэтларр отвечает: "Ты приходи. Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        }
 
    };
 
};
 
 
phaetlarr_home_dlg = dlg {
 
	nam = "phaetlarr_dlg";
 
	disp = "Фаэтларр";
 
	hideinv = true;
 
	nam = "Фаэтларр";
 
	entered = function(s)
 
		if (char_phaetlarr.follow) then
 
			pon('stay');
 
@@ -226,43 +395,116 @@ phaetlarr_home_dlg = dlg {
 
			poff('stay');
 
		end;
 
	
 
		return [[
 
			Фаэтларр ждет ваших указаний
 
		]];
 
		return [[Фаэтларр ждет ваших указаний. ]];
 
	end;
 
	phr = {
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо",
 
			function()
 
				char_learr:accompany(false);
 
				char_phaetlarr:accompany(true);
 
				char_radcliffe:accompany(false);
 
				char_wright:accompany(false);
 
				char_anna:accompany(false);
 
				poff('join');
 
				pon('stay');
 
			end; 
 
		};
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", 
 
			function()
 
				char_phaetlarr.accompany(char_phaetlarr, false);
 
				pon('join');
 
				poff('stay');
 
			end;
 
		};
 
		{ tag = "exit", always = "true", "Это все", "Хорошо", 
 
			function() 
 
				back();
 
			end;
 
		}
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Фаэтларр отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(true);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                poff('join');
 
                pon('stay');
 
            end; 
 
        };
 
        { tag = "stay", always = "true", "Оставайся на Левиафане.", [[Фаэтларр отвечает: "Хорошо". ]], 
 
            function()
 
                char_phaetlarr.accompany(char_phaetlarr, false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        { tag = "exit", always = "true", "Это все.", [[Фаэтларр отвечает: "Ты возвращайся". ]], 
 
            function() 
 
                back();
 
            end;
 
        }
 
	};
 
};
 
 
radcliffe_phone_dlg = dlg {
 
    nam = "Уолтер Рэдклифф";
 
    entered =function(s)
 
        if (char_radcliffe.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Уолтера Рэдклиффа: "Рэдклифф слушает". ]];
 
    end;
 
    phr = {
 
        {tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз.", [[ Уолтер отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(true);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                pon('stay');
 
                poff('join');
 
                return [[Я готов]];
 
            end;  
 
        };
 
        {tag="stay", always="true", "Оставайся на Левиафане.", [[ Уолтер отвечает: "Хорошо". ]], 
 
            function()
 
                char_radcliffe.accompany(char_radcliffe, false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        {tag="exit", always="true", "Это все.", [[Уолтер отвечает: "Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
radcliffe_home_dlg = dlg {
 
	nam = "radcliffe_dlg";
 
	disp = "Уолтер Рэдклифф";
 
	hideinv = true;
 
    var {
 
        iraa_temple_asked = false
 
    };
 
	nam = "Уолтер Рэдклифф";
 
	entered = function (s)
 
		if (atl_iyh_state == 7) then
 
        if atl_ctt_iraa_refusal and not s.iraa_temple_asked then
 
            iraa_temple_asked = true;
 
            pon("on_iraa_temple");
 
        end;
 
        poff("on_anna", "on_walter", "on_atlantis", "on_drake", "on_black", "on_join", "questions");
 
        if (rel_walter < 0) then
 
            pon("questions");
 
        else
 
            if (char_radcliffe.on_anna < 3) then
 
                pon("on_anna");
 
                pon("questions");
 
            end;
 
            if (char_radcliffe.on_black < 2) then
 
                pon("on_black");
 
                pon("questions");
 
            end;
 
            if (char_radcliffe.on_walter < 2) then
 
                pon("on_walter");
 
                pon("questions");
 
            end;
 
            if (char_radcliffe.on_atlantis < 2) then
 
                pon("on_atlantis");
 
                pon("questions");
 
            end;
 
            if (char_radcliffe.on_drake < 2) then
 
                pon("on_drake");
 
                pon("questions");
 
            end;
 
            if (char_radcliffe.on_join < 2) then
 
                pon("on_join");
 
                pon("questions");
 
            end;
 
        end;
 
        
 
        if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
			poff("on_iyh");
 
@@ -276,16 +518,115 @@ radcliffe_home_dlg = dlg {
 
			poff('stay');
 
		end;
 
        psub("generic");
 
		return [[
 
			Уолтер задумчиво смотрит на вас
 
		]];
 
        
 
        if char_radcliffe.on_conflict == 0 and conflict_resolved then
 
            char_radcliffe.on_conflict = 1;
 
            if (rel_walter < 0) then
 
                if atl_iyh_shockfish_dead then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Может убивать ската было и не обязательно, но мы получили, что чего хотели". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Убийство ската было опрометчивым, Дрейк. Отношения с навьярами безнадежно испорчены. Могу лишь понадеяться, что твои действия не помешают нам найти Уильяма и Адриана". ]];
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Цель оправдывает средства. Храм и сам развалился бы через пару тысяч лет, только ценные артефакты, остались бы погребены навеки. Теперь они у нас". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Цель оправдывает средства. Храм и сам развалился бы через пару тысяч лет, только ценные артефакты, остались бы погребены навеки. Теперь они у навьяров". ]];
 
                    end;
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Не ожидал, что получится закончить все настолько гладко там в храме". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Не ожидал, что получится закончить все настолько гладко там в храме. Жаль, что артефакты мы так и не посмотрели". ]];
 
                    end;
 
                end;
 
            else
 
                if atl_iyh_shockfish_dead then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Может убивать ската было и не обязательно, но мы получили, что хотели. Я поступил бы так же на твоем месте". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Убийство ската было опрометчивым, Дрейк. Отношения с навьярами безнадежно испорчены и теперь нам придется обходиться без их помощи". ]];
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Цель оправдывает средства. Храм и сам развалился бы через пару тысяч лет, только ценные артефакты, остались бы погребены навеки. Теперь они у нас. Думаю, под твоим руководством мы сможем найти экипаж Надежды". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Цель оправдывает средства. Храм и сам развалился бы через пару тысяч лет, только ценные артефакты, остались бы погребены навеки. Теперь они у навьяров. Думаю, под твоим руководством мы сможем найти экипаж Надежды". ]];
 
                    end;
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Уолтер при виде вас заявляет: "Отличная работа, Дрейк. Артефакты у нас, Ираафаанотр получит свою реликвию, а мы можем продолжать наши поиски". ]];
 
                    else
 
                        return [[Уолтер при виде вас заявляет: "Отличная работа, Дрейк. Ираафаанотр получил свою реликвию, а мы можем продолжать наши поиски". ]];
 
                    end;
 
                end;
 
            end;
 
        end;
 
        
 
		return [[Уолтер задумчиво смотрит на вас. ]];
 
	end;
 
	phr = {
 
        {tag="talk"};
 
        {tag="on_black", "Что ты можешь сказать о Блэке?", function(s)
 
            char_radcliffe.on_black = 2;
 
            return [[Уолтер пожимает плечами: "Что я могу сказать про него? Думаю, Дрейк выбрал хорошего партнера". ]];
 
        end};
 
        {tag="on_walter", "Расскажи о себе.", function(s)
 
            char_radcliffe.on_walter = 2;
 
            return [[Уолтер пожимает плечами: "Да мне нечего рассказать. Мы с сестрой жили в Лондоне, я уже работал в Вестхейвен Трансоушен, когда наши родители погибли -- пароход, на котором они отправились в США просто не прибыл в порт назначения. Мы с Анной остались одни. Она еще даже школу не закончила тогда. А потом мы построили Надежду, Атлантиду и далее по списку. Потом мне предложили работать внизу, на станции. Я, конечно, мог тогда отказаться, уйти в другую компанию, но направление, избранное Дрейком слишком меня привлекало. Я согласился". ]];
 
        end};
 
        {tag="on_anna", "Расскажи о своей сестре, Анне.", function(s)
 
            char_radcliffe.on_anna = 3;
 
            if (ArrayUtils.indexOf(pl.party, 'anna') ~= 0) then
 
                return [[Уолтер вздыхает: "Будь у меня выбор тогда, я ни за что не взял бы ее на Атлантиду. И жалел бы сейчас об этом. Не думаю, что на поверхности она стала бы той, кто она сейчас. Все-таки общество поглощенных своей работой людей накладывает определенный отпечаток, я думаю. Я все еще не уверен, что взять ее на Левиафан было хорошей идеей -- Бог знает, с чем мы столкнемся в наших странствиях, но она очень этого хотела". ]];
 
            else
 
                return [[Уолтер вздыхает: "Будь у меня выбор тогда, я ни за что не взял бы ее на Атлантиду. И жалел бы сейчас об этом. Не думаю, что на поверхности она стала бы той, кто она сейчас. Все-таки общество поглощенных своей работой людей накладывает определенный отпечаток, я думаю. То, что она осталась на станции успокаивает меня, хотя она так рвалась в эту экспедицию вместе с нами". ]];
 
            end;
 
        end};
 
        {tag="on_drake", "Что ты можешь сказать о Дрейке?", function(s)
 
            char_radcliffe.on_drake = 2;
 
            return [[Уолтер отвечает: "Не думаю, что скажу про него больше чем кто-то еще. Послушайте Райта, Моро, быть может Даркстара, хотя черт знает, что у этого типа на уме. Они скажут вам все и даже больше. "]];
 
        end};
 
        {tag="on_join", "Почему ты решил присоединиться к нам?", function(s)
 
            char_radcliffe.on_join = 2;
 
            if (ArrayUtils.indexOf(pl.party, 'anna') ~= 0) then
 
                if char_anna.rel_on_join >= 0 and char_radcliffe.rel_on_join >= 0 then
 
                    return [[Уолтер Рэдклифф отвечает: "Мы с Анной очень хотели отправиться в эту экспедицию: во-первых, вам не помешает наша помощь, а во-вторых -- мы хотим узнать, что стало с экипажем Надежды". ]];
 
                elseif char_anna.rel_on_join >= 0 then
 
                    return [[Уолтер Рэдклифф отвечает: "Признаюсь, я не слишком доверял вам тогда, но Анна убедила меня отправиться на Левиафане вместе с вами. И вот мы здесь".]]
 
                elseif char_radcliffe.rel_on_join >= 0 then
 
                    return [[Уолтер Рэдклифф отвечает: "Ты сразу мне понравился, и это путешествие предоставляет мне возможность узнать, что стало с экипажем Надежды. Хотя Анна не хотела отправляться с вами, я решил, что будет лучше, если мы с ней будем на борту вместе".]]
 
                else
 
                    return [[Уолтер Рэдклифф отвечает: "Скажу честно, единственная причина, почему мы отправились с вами кроется в нашем желании найти Надежду".]]
 
                end;
 
            else
 
                if (char_radcliffe.rel_on_join >= 0) then
 
                    return [[Уолтер Рэдклифф отвечает: "Мы с Анной очень хотели отправиться в эту экспедицию, но к счастью, мне удалось уговорить ее остаться на Атлантиде. Я не хочу подвергать ее опасностям, которые могут подстерегать нас". ]];
 
                else
 
                    return [[Уолтер Рэдклифф отвечает: "Признаюсь, я не слишком доверял тебе тогда, но это единственный способ узнать, что стало с Надеждой". ]];
 
                end;
 
            end;
 
            
 
            
 
        end};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s)
 
            char_radcliffe.on_atlantis = 2;
 
            return [[Уолтер отвечает: "Думаю только Райт и Уинтерлайт в полной мере осознают, насколько большим достижением для нас, для всего человечества, является постройка этой станции. Тем не менее, они, отчего-то, не спешат поделиться своими знаниями с другими. Не думаю, что сегодняшнее общество сможет по достоинству оценить новые возможности, даруемые этими технологиями. Да и что станет с навьярами? Вспомните Новый Свет, посмотрите на другие наши колонии -- хотите ли вы этого для Леарр и других?"]];
 
        end};
 
        {tag="quit", always=true, "Поговорим в другой раз. ", [[Уолтер кивает: "Хорошо".]], code [[pret();]]};
 
        {tag="generic"};
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[
 
			"Возможно, мы сможем разрушить вход в храм. Однако я не знаю, как навьяры на это отреагируют. "
 
		]]};
 
		{tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо",
 
        {tag="questions", always=true, "У меня есть несколько вопросов. ", function(s)
 
            if (rel_anna < 0) then
 
                return [[Уолтер отрицательно качает головой: "Не сейчас, я занят". ]];
 
            else
 
                psub("questions");
 
                return [[Уолтер кивает: "Слушаю". ]];
 
            end;
 
        end};
 
        {tag="on_iraa_temple", "Вождь Ираафаанотра не хочет пускать меня в храм. Что мы можем сделать?", [[Уолтер отвечает: "В прошлый раз нам оказалось достаточно оказаться рядом с храмом, чтобы найти искомое. Быть может, в этот раз нам так же не нужно проникать внутрь? И я бы не стал исключать возможность скрытного проникновения. Раз они не знают о карте, то и не заметят потери". ]]};
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[Уолтер пожимает клечами: "Возможно, мы сможем разрушить вход в храм. Однако я не знаю, как навьяры на это отреагируют". ]]};
 
		{tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз.", [[ Уолтер отвечает: "Хорошо". ]],
 
			function()
 
				if (submarine_leviathan.suits > 1) then
 
					char_learr:accompany(false);
 
@@ -302,24 +643,57 @@ radcliffe_home_dlg = dlg {
 
				end;
 
			end;  
 
		};
 
		{tag="stay", always="true", "Оставайся на Левиафане", "Хорошо", 
 
		{tag="stay", always="true", "Оставайся на Левиафане.", [[ Уолтер отвечает: "Хорошо". ]], 
 
			function()
 
				char_radcliffe.accompany(char_radcliffe, false);
 
				pon('join');
 
				poff('stay');
 
			end;
 
		};
 
		{tag="exit", always="true", "Это все", "Хорошо", 
 
		{tag="exit", always="true", "Это все.", [[ Уолтер отвечает: "До встречи". ]], 
 
			function() 
 
				back();
 
			end;
 
		};      
 
		};
 
	};
 
};
 
 
wright_phone_dlg = dlg {
 
    nam = "Джек Райт";
 
    entered = function(s)
 
        if (char_wright.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Джека Райта: "Райт на связи". ]];
 
    end;
 
    phr = {
 
        {tag="join", always="true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Джек Райт отвечает: "Хорошо". ]], code [[
 
            char_learr:accompany(false);
 
            char_phaetlarr:accompany(false);
 
            char_radcliffe:accompany(false);
 
            char_wright:accompany(true);
 
            char_anna:accompany(false);
 
            pon('stay');
 
            poff('join');
 
        ]]};
 
        {tag="stay", always="true", "Оставайся на Левиафане.", [[Джек Райт отвечает: "Хорошо". ]], code [[
 
            char_wright:accompany(false);
 
            pon('join');
 
            poff('stay');
 
        ]]};
 
        {tag="exit", always="true", "Это все.", [[Джек Райт отвечает: "Конец связи". ]], code [[ back(); ]]};
 
    };
 
};
 
 
wright_main_dlg = dlg {
 
	nam = "wright_main_dlg";
 
	disp = "Джек Райт";
 
	var {
 
        iraa_temple_asked = false
 
    };
 
    nam = "Джек Райт";
 
	entered = function(s)
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
@@ -335,24 +709,83 @@ wright_main_dlg = dlg {
 
			poff('stay');
 
		end;
 
        
 
        poff("talk");
 
        if (rel_jack < 0) then
 
            if (char_wright.on_learr == 0) then pon("on_learr"); end;
 
            if (char_wright.on_leviathan == 0) then pon("on_leviathan"); end;
 
            if (char_wright.on_jack == 0) then pon("on_jack"); end;
 
            if (char_wright.on_learr == 0) then pon("on_learr", "talk"); end;
 
            if (char_wright.on_leviathan == 0) then pon("on_leviathan", "talk"); end;
 
            if (char_wright.on_jack == 0) then pon("on_jack", "talk"); end;
 
        else
 
            if (char_wright.on_learr < 3 and ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then pon("on_learr"); end;
 
            if (char_wright.on_leviathan < 2) then pon("on_leviathan"); end;
 
            if (char_wright.on_jack < 2) then pon("on_jack"); end;
 
            if (char_wright.on_learr < 3 and ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then pon("on_learr", "talk"); end;
 
            if (char_wright.on_leviathan < 2) then pon("on_leviathan", "talk"); end;
 
            if (char_wright.on_jack < 2) then pon("on_jack", "talk"); end;
 
        end;
 
        
 
        if atl_ctt_iraa_refusal and not s.iraa_temple_asked then
 
            iraa_temple_asked = true;
 
            pon("on_iraa_temple");
 
        end;
 
    
 
        psub("generic");      
 
		return [[
 
			Джек ждет ваших указаний
 
		]];
 
        
 
        psub("generic");
 
        
 
        if char_wright.on_conflict == 0 and conflict_resolved then
 
            char_wright.on_conflict = 1;
 
            if (rel_jack < 0) then
 
                if atl_iyh_shockfish_dead then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Должен признать, Дрейк, у меня на твоем месте не хватило бы смелости. Надеюсь, ты понимаешь, что делаешь". ]];
 
                    else
 
                        if iof_learr_dead then
 
                            return [[Джек при виде вас заявляет: "Ты точно псих, Дрейк. Ты видел рожу Аиверьярра, когда ты это сделал?" ]];
 
                        else
 
                            return [[Джек при виде вас заявляет: "Ты точно псих, Дрейк. Леарр будет в ярости и я ее понимаю". ]];
 
                        end;
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Не думаю, что разнести храм было лучшим решением. Но, по-крайней мере, что-то мы оттуда вынесли". ]];
 
                    else
 
                        return [[Джек при виде вас заявляет: "Не думаю, что разнести храм было лучшим решением. Навьяры, конечно, получили свою реликвию, но с целым храмом, они получили бы гораздо больше". ]];
 
                    end;
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Неплохо, Дрейк. Гораздо лучше, чем я ожидал. Надеюсь, я не ошибся в тебе, отправившись в эту экспедицию". ]];
 
                    else
 
                        return [[Джек при виде вас заявляет: "Неплохо, Дрейк. Лучше, чем я ожидал. Надеюсь, я не ошибся в тебе, отправившись в эту экспедицию". ]];
 
                    end;
 
                end;
 
            else
 
                if atl_iyh_shockfish_dead then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Должен признать, Дэвид, у меня на твоем месте не хватило бы смелости. Я все еще думаю, что был менее кровопролитный способ, но это же всего лишь рыбина. Надеюсь, что навьяры не узнают об этом". ]];
 
                    else
 
                        if iof_learr_dead then
 
                            return [[Джек при виде вас заявляет: "Должен признать, Дэвид, у меня на твоем месте не хватило бы смелости. Конечно, стоило утереть нос этому типу, Аикерьярру. Но не стоило при этом оборачивать против себя всех: и Ираафаанотр, и Дипатреанотр, и даже Атлантиду". ]];
 
                        else
 
                            return [[Джек при виде вас заявляет: "Должен признать, Дэвид, у меня на твоем месте не хватило бы смелости. Жаль, Леарр не оценила твоей решимости". ]];
 
                        end;
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Жаль, что пришлось разрушить храм. Все-таки это памятник навьярской архитектуры и все такое. Но, наверное, лучшего решения не было. К счастью, мы смогли вытащить оттуда кое-что ценное". ]];
 
                    else
 
                        return [[Джек при виде вас заявляет: "Жаль, что пришлось разрушить храм. Все-таки это памятник навьярской архитектуры и все такое. Но, наверное, лучшего решения не было. К тому же, мы вернули навьярам то, что смогли найти". ]];
 
                    end;
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Джек при виде вас заявляет: "Мы блестяще справились, не находишь? Вытащили кучу ценных артефактов и никто не пострадал". ]];
 
                    else
 
                        return [[Джек при виде вас заявляет: "Мы отлично справились, не находишь? Вытащили кучу ценных артефактов и никто не пострадал. Правда, артефакты пришлось отдать навьярам, но думаю Светлова договорится об их изучении". ]];
 
                    end;
 
                end;
 
            end;
 
        end;
 
        
 
		return [[Джек вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
        {tag="generic"};
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[Джек Райт задумчиво произносит: "Возможно получится выманить ската, если направить прожектор на вход храма..." Немного подумав, он добавляет: "Другое дело, что при этом он, скорее всего, атакует Левиафан. "]]};
 
        {tag="on_iraa_temple", "Вождь Ираафаанотра не хочет пускать меня в храм. Что мы можем сделать?", [[Джек отвечает: "Нам не нужна сама карта. Мы можем попробовать проникнуть в храм и сделать копию карты. Никто ничего не заметит, никто ничего не потеряет". ]]};
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[Джек Райт задумчиво произносит: "Возможно получится выманить ската, если направить прожектор на вход храма..."^Немного подумав, он добавляет: "Другое дело, что при этом он, скорее всего, атакует Левиафан". ]]};
 
		{tag="join", always="true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Джек Райт отвечает: "Хорошо". ]], code [[
 
            char_learr:accompany(false);
 
            char_phaetlarr:accompany(false);
 
@@ -367,6 +800,7 @@ wright_main_dlg = dlg {
 
			pon('join');
 
			poff('stay');
 
		]]};
 
        {tag="talk", "Я хочу кое-что спросить.", [[Джек Райт кивает: "Слушаю". ]], code [[psub("more_questions");]]};
 
		{tag="exit", always="true", "Это все.", [[Джек Райт отвечает: "Хорошо". ]], code [[ back(); ]]};
 
        {tag = "more_questions"};
 
        {tag="on_learr", "Что ты думаешь о Леарр?", function()
 
@@ -383,7 +817,7 @@ wright_main_dlg = dlg {
 
                return [[Джек отвечает: "Левиафан, без сомнения, превосходный корабль. Жаль, что ему не нашлось лучшего капитана". ]];
 
            else
 
                char_wright.on_leviathan = 2;
 
                return [[Джек не скрывает своего восхищения: "Никогда не видел ничего подобного. Неудивительно, что отец оставил жизнь на поверхности в пользу возможности создавать подобное здесь. Пока мы были в пути, я подробно изучил субмарину. Многие решения до сих пор кажутся мне невероятными - например, использование электричества в качестве движущей силы или наличие звуковой пушки. Я уже успел обсудить с отцом детали диагностических цепей. Это совершенно непостижимо, чтобы машина сама сообщала, что с ней что-то не так". ]];
 
                return [[Джек не скрывает своего восхищения: "Никогда не видел ничего подобного. Неудивительно, что отец оставил жизнь на поверхности в пользу возможности создавать подобное здесь. Пока мы были в пути, я подробно изучил субмарину. Многие решения до сих пор кажутся мне невероятными -- например, использование электричества в качестве движущей силы или наличие звуковой пушки. Я уже успел обсудить с отцом детали диагностических цепей. Это совершенно непостижимо, чтобы машина сама сообщала, что с ней что-то не так". ]];
 
            end;
 
        end};
 
        {tag="on_jack", "Чем ты занимался все это время?", function()
 
@@ -397,11 +831,53 @@ wright_main_dlg = dlg {
 
	};
 
};
 
 
anna_phone_dlg = dlg {
 
    nam = "Анна Рэдклифф";
 
    entered = function(s)
 
        if (char_anna.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Анны Рэдклифф: "Рэдклифф слушает". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз.", [[Анна отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(true);
 
                pon('stay');
 
                poff('join');
 
            end; 
 
        };
 
        { tag = "stay", always = "true", "Оставайся на Левиафане.", [[Анна отвечает: "Хорошо". ]], 
 
            function()
 
                char_anna:accompany(false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        { tag = "exit", always = "true", "Это все.", [[Анна отвечает: "Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
anna_home_dlg = dlg {
 
	nam = "anna_home_dlg";
 
	disp = "Анна Рэдклифф";
 
	hideinv = true;
 
    var {
 
        iraa_temple_asked = false
 
    };
 
	nam = "Анна Рэдклифф";
 
	entered = function(s)
 
        psub("generic");
 
    
 
		if (atl_iyh_state == 7) then
 
			pon("on_iyh");
 
		else
 
@@ -432,6 +908,11 @@ anna_home_dlg = dlg {
 
                pon("on_join");
 
                pon("talk");
 
            end;
 
            if (char_anna.black_asked < 2) then
 
                pon("on_black");
 
                pon("talk");
 
            end;
 
            
 
        end;
 
        
 
       
 
@@ -442,11 +923,53 @@ anna_home_dlg = dlg {
 
			pon('join');
 
			poff('stay');
 
		end;
 
		return [[
 
			Анна ждет ваших указаний
 
		]];
 
        
 
        if atl_ctt_iraa_refusal and not s.iraa_temple_asked then
 
            iraa_temple_asked = true;
 
            pon("on_iraa_temple");
 
        end;
 
        
 
        if char_anna.on_conflict == 0 and conflict_resolved then
 
            char_anna.on_conflict = 1;
 
            if (rel_anna < 0) then
 
                if atl_iyh_shockfish_dead then
 
                    return [[Анна при виде вас заявляет: "Твои методы, Дрейк, меня совершенно не устраивают. Там в храме, ты просто закидал несчастную рыбину торпедами!" ]];
 
                elseif atl_iyh_entrance_destroyed then
 
                    return [[Анна при виде вас заявляет: "Твои методы, Дрейк, меня совершенно не устраивают. Этот храм мог раскрыть слишком многое о навьярах и их истории, чтобы его просто разрушить!" ]];
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Анна при виде вас заявляет: "Артефакты у нас, навьяры довольны. Уолтер был прав". ]];
 
                    else
 
                        return [[Анна при виде вас заявляет: "Мы смогли найти реликвию и вернуть ее в Ираафаанотр. Уолтер не ошибся в тебе, Дрейк". ]];
 
                    end;
 
                end;
 
            else
 
                if atl_iyh_shockfish_dead then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Анна при виде вас заявляет: "Твои методы, Дрейк, меня совершенно не устраивают. Там в храме, ты просто закидал несчастную рыбину торпедами! Конечно, мы достигли цели..." ]];
 
                    else
 
                        return [[Анна при виде вас заявляет: "Твои методы, Дрейк, меня совершенно не устраивают. Там в храме, ты просто закидал несчастную рыбину торпедами! Что теперь будет с Атлантидой и навьярами?" ]];
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Анна при виде вас заявляет: "Я все понимаю, Дрейк, но все же... Неужели не было менее разрушительного решения? Часть артефактов, конечно, у нас. Но сколько еще мы могли бы получить, если бы храм остался стоять". ]];
 
                    else
 
                        return [[Анна при виде вас заявляет: "Я все понимаю, Дрейк, но все же... Неужели не было менее разрушительного решения?" ]];
 
                    end;
 
                else
 
                    if atl_iyh_artifacts_on_atlantis then
 
                        return [[Анна при виде вас заявляет: "Артефакты у нас, навьяры довольны. Реликвия в Ираафаанотре, на своем законном месте. Прекрасно". ]];
 
                    else
 
                        return [[Анна при виде вас заявляет: "Реликвия в Ираафаанотре, на своем законном месте. Прекрасно". ]];
 
                    end;
 
                end;
 
            end;
 
        end;
 
        
 
		return [[Анна ждет ваших указаний. ]];
 
	end;
 
	phr = {
 
        {tag="generic"};
 
        {tag="talk", false, "Мы можем поговорить?", function(s)
 
            if (rel_anna < 0) then
 
                return [[Анна отрицательно качает головой: "Не сейчас". ]];
 
@@ -455,34 +978,35 @@ anna_home_dlg = dlg {
 
                return [[Анна кивает: "Да, конечно. Я вас слушаю". ]];
 
            end;
 
        end};
 
        {tag="on_iraa_temple", "Вождь Ираафаанотра не хочет пускать меня в храм. Есть какой-то способ попасть внутрь?", function(s)
 
            if ArrayUtils.indexOf(pl.party, 'learr') ~= 0 then
 
                return [[Анна отвечает: "Вам стоит поговорить с Леарр. Во-первых, она лучше знает традиции навьяров, во-вторых, в храм она может входить свободно". ]];
 
            else
 
                return [[Анна отвечает: "Не знаю способа, который не вызвал бы недовольство навьяров". ]];
 
            end;
 
        end};
 
		{tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[
 
			"Ночью скат скорее всего покинет свое логово в поисках пищи. Мы можем воспользоваться его отсутствием".
 
		]]};
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", 
 
		{ tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", [[Анна отвечает: "Хорошо". ]],
 
			function()
 
				if (submarine_leviathan.suits > 1) then
 
					char_learr:accompany(false);
 
					char_phaetlarr:accompany(false);
 
					char_radcliffe:accompany(false);
 
					char_wright:accompany(false);
 
					char_anna:accompany(true);
 
					pon('stay');
 
					poff('join');
 
					return [[Я готова]];
 
				else
 
					-- TODO сообщать это только если в партии есть навьяры
 
					return [[У нас не хватит оборудования. Лучше возьми кого-нибудь из навьяров]];
 
				end;
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(true);
 
                pon('stay');
 
                poff('join');
 
			end; 
 
		};
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", 
 
		{ tag = "stay", always = "true", "Оставайся на Левиафане", [[Анна отвечает: "Хорошо". ]], 
 
			function()
 
				char_anna:accompany(false);
 
				pon('join');
 
				poff('stay');
 
			end;
 
		};
 
		{ tag = "exit", always = "true", "Это все", "Хорошо", 
 
		{ tag = "exit", always = "true", "Это все", [[Анна отвечает: "До встречи". ]], 
 
			function() 
 
				back();
 
			end;
 
@@ -490,29 +1014,34 @@ anna_home_dlg = dlg {
 
        { tag = "talk_more"};
 
        {tag="on_anna", "Расскажи о себе. ", function(s)
 
            char_anna.anna_asked = 2;
 
            return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдалеке от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- здесь есть навьяры. Когда они заняты -- я сижу в библиотеке, с Мари, или смотрю фильмы в Игнисе". ]];
 
            return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдали от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- здесь есть навьяры. Когда они заняты -- я сижу в библиотеке, с Мари, или смотрю фильмы в Игнисе". ]];
 
        end};
 
        {tag="on_walter", "Расскажи об Уолтере. ", function(s)
 
            char_anna.walter_asked = 2;
 
            return [[Анна Рэдклифф отвечает: "Уолтер -- мой старший брат. Он заботится обо мне с тех пор, как мама с папой покинули нас. Хотя моя жизнь сильно изменилась, когда Уолтер забрал меня с собой на Атлантиду, я не жалею об этом". ]];
 
        end};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s)
 
            char_anna.on_atlantis = 2;
 
            char_anna.atlantis_asked = 2;
 
            return [[Анна Рэдклифф отвечает: "Последние десять лет я живу здесь, на Атлантиде. Я хорошо помню, как расстроена я была, приехав сюда. Конечно, я не думала, что мы все проведем здесь лет десять. Мне казалось, что уже через полгода-год мы вернемся на поверхность, но намерения вашего отца сильно отличались от этого. Потом Екатерина и Сильвия познакомили меня с Телнеарром и Хетеарром -- двумя навьярами, которые первыми жили на станции. Потом Хетеарр вернулся домой, а вместо него на станцию прибыл Ривеерр. А затем покинул станцию и Телнеарр. Его заменила Леарр". ]];
 
        end};
 
        {tag="on_drake", "Расскажи об Уильяме Дрейке. ", function(s)
 
            char_anna.on_drake = 2;
 
            char_anna.drake_asked = 2;
 
            return [[Анна Рэдклифф отвечает: "Хотя Дрейк -- руководитель Атлантиды, он проводит больше времени здесь, в Окулусе, чем в своем кабинете в Доминусе. Сейчас он в экспедиции -- они с Блэком отправились на поиски отдаленных навьярских поселений". ]];
 
        end};
 
        {tag="on_black", "Расскажи об Адриане Блэке. ", function(s)
 
            char_anna.black_asked = 2;
 
            return [[Анна Рэдклифф пожимает плечами: "Он никогда мне не нравился. Остальные говорят, что он хорошо справляется с управлением станцией и вообще многое сделал для нас, но мне не нравится его холодность и неискренность".]];
 
        end};
 
        {tag="on_join", "Почему ты решила присоединиться к нам?", function(s)
 
            char_anna.on_join = 2;
 
            if (char_anna.rel_on_join >= 0) then
 
                return [[Анна Рэдклифф отвечает: "". ]];
 
            elseif (char_walter.rel_on_join >= 0) then
 
                return [[Анна Рэдклифф отвечает: "". ]];
 
                return [[Анна Рэдклифф отвечает: "Я хотела помочь вам найти Уильяма. Если он не вернулся до сих пор, то возможно, что-то произошло с Надеждой". ]];
 
            elseif (char_radcliffe.rel_on_join >= 0) then
 
                return [[Анна Рэдклифф отвечает: "Уолтер убедил меня отправиться на Левиафане. Ему нужна была моя помощь". ]];
 
            else
 
                return [[Анна Рэдклифф отвечает: "". ]];
 
                return [[Анна Рэдклифф отвечает: "Уолтер убедил меня отправиться на Левиафане. Ему нужна была моя помощь". ]];
 
            end;
 
        end};
 
        {tag="quit", always=true, "Поговорим в другой раз. ", [[Анна кивает: "Хорошо".]], code [[pret();]]};
 
	};
 
};
 
\ No newline at end of file
startup.lua
Show inline comments
 
new file 100644
 
global {
 
    warehouse18_found = false;
 
    warehouse32_found = false;
 
    warehouse32_visited = false;   
 
    dock_found = false;
 
    leviathan_discovered = false;
 
    atlantis_found = false;
 
    temple_found = false;
 
    iraaphaanotrr_found = false;
 
    dypatreanotrr_found = false;
 
    venaedanotrr_found = false;
 
    nleyyslanotrr_found = false;
 
    iraaphaanotrr_temple_found = false;
 
    dypatreanotrr_temple_found = false;
 
    venaedanotrr_temple_found = false;
 
    nleyyslanotrr_temple_found = false;
 
    deep_temple_found = false;
 
    lseryanotrr_found = false;
 
    
 
    rel_phaetlarr = 0;
 
    rel_walter = 0;
 
    rel_learr = 0;
 
    rel_anna = 0;
 
    rel_jack = 0;
 
    language_known = false;
 
    cart_known = false;
 
    
 
    dt_code = {};
 
    dt_buttons = {};
 
    
 
    --Глобальные состояния(для концовок)
 
    conflict_resolved = false; -- Решен ли конфликт между навьярами
 
    artifacts_returned = false; -- Вернили ли артефакты из храма навьярам?
 
    wright_state = 0; -- был взят Райт на борт или нет
 
    goldman_state = 0; -- 0 - Голдман не раскрыт, 1 - Голдман казнен, 2 - Голдман задержан, 3 - Голдман изгнан
 
    leroy_state = 0; -- 0 - Леруа не раскрыт, 1 - Леруа казнен, 2 - Леруа задержан, 3 - Леруа изгнан
 
    iraa_scepter = false; -- был ли возвращен скипетр в Ираафаанотр
 
    iraa_map = false; -- был ли возвращен оригинал карты в Ираафаанотр
 
    dyp_map = false; -- Передана ли карта(оригинал или копия в Дипатреанотр)
 
    svetlova_help = 0; -- Дополнительная помощь, оказанная Светловой в исследовании навьяров --увеличивается, если показать ей КНО и скипетр
 
};
 

	
 
game.enable_save = function ()
 
    if here().nosave then
 
        return false;
 
    end;
 
    return true;
 
end;
 

	
 
game.enable_autosave = function ()
 
    if here().noautosave then
 
        return false;
 
    end;
 
    return true;
 
end;
 

	
 

	
 
player_drake = player {
 
    var {
 
        hp = 10;
 
        has_light = false;
 
        party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
 
        companion = nil;
 
        money = 200;
 
    };
 
    nam = "player";
 
    disp = "Дэвид Дрейк";
 
    disp2 = "Дрейка";
 
    disp3 = "Дрейку";
 
    where = 'port';
 
    
 
    obj = {'hp_indicator', 'item_umbrella', 'item_charts', 'item_note_1', 'item_money', "item_bankbook"};
 
    
 
    pay = function(s, c)
 
        if (s.money >= c) then
 
            s.money = s.money - c;
 
            return true;
 
        else
 
            return false;
 
        end;
 
    end;
 
};
 

	
 
intro = room {
 
    nam = "intro";
 
    hideinv = true;
 
    disp = "Вступление";
 
    dsc = [[
 
        ВНИМАНИЕ: Это специальная предварительная версия игры. Ни один фрагмент игры не является финальным.^^
 
        Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка -- единственного сына богатого и уважаемого владельца транспортной компании "Вестхейвен Трансоушен". ^
 
        Несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
 
        После исчезновения отца Дэвид жил в Вашингтоне с бабушкой. Он пошел по стопам отца и выучился на инженера-кораблестроителя. Несколько дней назад в доме, где он жил, был обнаружен тайник, хранящий секретные документы отца -- карты, указывающие, по-видимому, на какие-то тайники Уильяма и записка с адресом и именем.^
 
        Одержимый идеей узнать больше, Дэвид отправляется в Лондон...
 
    ]];
 
    obj = {
 
        vway("Начать игру", "{Начать игру}", 'aurora_borealis');
 
    }
 
};
 

	
 
game.nam = "Пробуждение";
 
game.dsc = [[
 
    Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка, сына владельца крупной транспортной компании "Вестхейвен Трансоушен". Несколько лет назад Уильям Дрейк, отец главного героя бесследно пропадает. Компания вскоре разваливается. Поиски ни к чему не приводят. Когда казалось бы уже все потеряно, в доме Дрейков находят тайник с документами Уильяма. Несколько схем строений, принадлежащих компании и клочок бумаги с адресом некоего Майкла Райта в Лондоне. Естественно, Дэвид как можно скорее отправляется в Великобританию...
 
    Вам предстоит отыскать подводную лодку, посетить подводную станцию, построенную Уильямом, встретить древнюю расу подводных жителей, поучаствовать в событиях, описанных древними легендами этой расы и узнать, что стало с Уильямом Дрейком.
 
]];
 

	
 
game_act_phrases = {
 
    "Вы не знаете, что с этим делать. ";
 
    "Вам нет смысла это трогать. ";
 
    "Вам это ничем не поможет. ";
 
    "Это бессмысленно. ";
 
    "Незачем это трогать. ";
 
};
 

	
 
game_use_phrases = {
 
    "Вам это ничем не поможет. ";
 
    "Это бессмысленно. ";
 
    "Вы не знаете, как это сделать. "
 
};
 

	
 
game.act = function(s)
 
    return game_act_phrases[rnd(#game_act_phrases)];
 
end;
 

	
 
game.use = function(s)
 
    return game_use_phrases[rnd(#game_use_phrases)];
 
end;
 
game.inv = "INV: Если вы видите это сообщение -- это баг. ";
 

	
 
preview_unavailable_learr = game_over("preview_unavailable_learr", [[Спасти Леарр у обитателей Атлантиды не получилось. Гибель навьярессы поставила под угрозу многое, чего удалось добиться экипажу станции за долгие годы под водой. ^^Узнать, что произошло дальше, вы сможете в полной версии игры.^^Вы можете загрузить игру и попробовать спасти Леарр самостоятельно. ]]);
 

	
 
preview_unavailable_rayfish = game_over("preview_unavailable_rayfish", [[Убив ската, вы восстанавливаете против себя всех навьяров из Дипатреанотра и Ираафаанотра. В ваших дальнейших поисках вам придется расчитывать только на себя.^^Узнать, что произошло дальше, вы сможете в полной версии игры.^^Вы можете загрузить игру и попробовать обойтись без убийства ската. ]]);
 

	
 
preview_unavailable_venaedanotrr = cutscene("preview_unavailable_venaedanotrr", "Спасибо за игру", [[Левиафан полным ходом несется вдаль, к невиданным доселе навьярским поселениям. Кто знает, какие приключения ждут вас и остальных членов экипажа субмарины?^^Узнать, что произошло дальше, вы сможете в полной версии игры. Если вы не собрали три фрагмента карты, то вы можете продолжить игру. ^^Поздравляем с успешным прохождением предварительной версии игры. Мы ждем ваших отзывов на почту: inbox@silverwing.one^Следите за выходом новых версий на нашем сайте: awakening.silverwing.one]], "leviathan_wheelhouse");
 

	
 
function init()
 
    ---modules init
 
    pl = player_drake;
 
    require "dbg";
 
    atlantis_init();
 
    leviathan_init();
 
    warehouse18_init();
 
    warehouse32_init();
 
    
 
    local nums = {1,2,3,4,5,6};
 
    for i = 1, 4 do 
 
        local index = rnd(#nums);
 
        table.insert(dt_code, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
    nums = {1,2,3,4,5,6};
 
    for i = 1, 3 do 
 
        local index = rnd(#nums);
 
        table.insert(dt_buttons, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
    ---game init
 
    pl.where = intro;
 
    ---debug
 
    
 
    --pl.where = "item_book_dlg";
 
    --pl.where = "dyp_obelisk_puzzle";
 
    --language_known = true;
 
    --put("item_toolbox", pl);
 
    --put("item_electric_lamp", pl);
 
    --put("item_dynamo", pl);
 
    --put("item_toolbox", pl);
 
    --put("item_cogs", pl);
 
    --put("item_ducttape", pl);
 
    --put("item_electrodes", pl);
 
    --pl.where = dock_2;
 
    --pl.where = warehouse_32;
 
    --put(item_lamp, pl);
 
    --language_known = true;
 
    --pl.where = "leviathan_airlock";
 
    --move(submarine_leviathan, "iyh_rear_entrance_foot");
 
    --put(item_suit, pl);
 
    --put(item_suit, pl);
 

	
 
    --pl.where = "atlantis_intro_dock";
 

	
 
    ---leviathan
 
    --submarine_leviathan.airpump = false;
 
    --[[
 
    leviathan_airlock.has_light = true;
 
    leviathan_wardroom.has_light = true;
 
    leviathan_wheelhouse.has_light = true;
 
    leviathan_corridor.has_light = true;
 
    leviathan_cabin_1.has_light = true;
 
    leviathan_cabin_2.has_light = true;
 
    leviathan_cabin_3.has_light = true;
 
    leviathan_cabin_4.has_light = true;
 
    leviathan_cabin_5.has_light = true;
 
    leviathan_captains_cabin.has_light = true;
 
    leviathan_cargo_hold.has_light = true;
 
    leviathan_engines.has_light = true;
 
    leviathan_lower_deck.has_light = true;
 
    leviathan_life_support.has_light = true;
 
    submarine_leviathan.air_level = 432000;
 
    submarine_leviathan.battery = true; 
 
    submarine_leviathan.battery_charge = 100;
 
    submarine_leviathan.circuit_breaks = 0;
 
    submarine_leviathan.valves_to_replace = 0;
 
    submarine_leviathan.power_on = true
 
    pl.party = {'wright', 'learr'};
 
    char_learr.follow = true;
 
    atlantis_found = true;--]]
 
    --take(item_colt);
 
    --take(item_harpoon);
 
   -- checkers_game:reset();
 
    --pl.where = "checkers_game";
 
    --- iraaphaanotrr
 
   --move(submarine_leviathan, "iraa_temple_entrance");
 
    --[[
 
    ---IYH
 
    lifeon(char_learr);
 
    lifeon(char_wright);
 
    lifeon(char_radcliffe);
 
    lifeon(char_anna);
 
    lifeon(char_aikerjarr_lev);
 
    pl.party = {'learr', 'wright', 'radcliffe', 'anna'};
 
    atlantis_found = true;
 
    move(submarine_leviathan, "ctt_dyp_temple_entrance");
 
    --move(submarine_leviathan, "iyh_far_from_entrance_foot");
 
    pl.where = leviathan_wheelhouse;
 
    submarine_leviathan.battery = true; -- Состояние батареи 
 
    submarine_leviathan.battery_charge = 100; -- Уровень заряда батареи
 
    submarine_leviathan.circuit_breaks = 0; -- Разрывы цепи
 
    submarine_leviathan.valves_to_replace = 0; -- Количество клапанов, которые нужно заменить для полноценной работы
 
    submarine_leviathan.power_on = true; -- включена ли энергия
 
    submarine_leviathan.air_level = 432000; -- запас воздуха. Максимум - 5 дней(5 * 24 * 60 * 60 = 432000)
 
    submarine_leviathan.airpump = false;
 
    leviathan_airlock.has_light = true;
 
    leviathan_wardroom.has_light = true;
 
    leviathan_wheelhouse.has_light = true;
 
    leviathan_corridor.has_light = true;
 
    leviathan_cabin_1.has_light = true;
 
    leviathan_cabin_2.has_light = true;
 
    leviathan_cabin_3.has_light = true;
 
    leviathan_cabin_4.has_light = true;
 
    leviathan_cabin_5.has_light = true;
 
    leviathan_captains_cabin.has_light = true;
 
    leviathan_cargo_hold.has_light = true;
 
    leviathan_engines.has_light = true;
 
    leviathan_lower_deck.has_light = true;
 
    leviathan_life_support.has_light = true;
 
    --]]
 
    
 
    --- Chapter 1: Atlantis
 
    --[[submarine_leviathan.battery = true; -- Состояние батареи 
 
    submarine_leviathan.battery_charge = 100; -- Уровень заряда батареи
 
    submarine_leviathan.circuit_breaks = 0; -- Разрывы цепи
 
    submarine_leviathan.valves_to_replace = 0; -- Количество клапанов, которые нужно заменить для полноценной работы
 
    submarine_leviathan.power_on = true; -- включена ли энергия
 
    submarine_leviathan.air_level = 432000; -- запас воздуха. Максимум - 5 дней(5 * 24 * 60 * 60 = 432000)
 
    submarine_leviathan.airpump = false;
 
    leviathan_airlock.has_light = true;
 
    leviathan_wardroom.has_light = true;
 
    leviathan_wheelhouse.has_light = true;
 
    leviathan_corridor.has_light = true;
 
    leviathan_cabin_1.has_light = true;
 
    leviathan_cabin_2.has_light = true;
 
    leviathan_cabin_3.has_light = true;
 
    leviathan_cabin_4.has_light = true;
 
    leviathan_cabin_5.has_light = true;
 
    leviathan_captains_cabin.has_light = true;
 
    leviathan_cargo_hold.has_light = true;
 
    leviathan_engines.has_light = true;
 
    leviathan_lower_deck.has_light = true;
 
    leviathan_life_support.has_light = true;
 
    
 
    pl.party = {'wright'};
 
    put(item_toolbox, pl);
 
    put(item_ducttape, pl);
 
    pl.where = "leviathan_airlock";
 
    atlantis_found = true;
 
    move(submarine_leviathan, "atl_aqua_leviathan_dock");
 
    submarine_leviathan:enable();   ]]
 
           
 
    --ven_temple_l1.position = "66";   
 
    --put(item_ven_tablet, pl);
 
    --put(item_harpoon, pl);
 
    --put(item_colt, pl);
 
    --ven_shark.position = "55";
 
    --pl.where = "za_plaetlarr_fight";
 
    --pl.where = "lse_final_battle";
 
    --move(submarine_leviathan, "za_temple_back_entrance_foot");
 
    --char_anna.follow = true;
 
    --pl.where = "ven_chest_look";
 
    --move(ven_shark, "ven_temple_l1");
 
    
 
    --put(item_suit, pl);
 
    
 
    -- pl.where = warehouse_32;
 
    -- pl.where = w32_mgr;
 
    
 
    -- put(item_cogs, pl);
 
    -- put(item_pump_details, pl);
 
    -- put(item_electrodes, pl);
 
    --put(item_lamp, pl);
 
    -- pl.where = aurora_borealis;
 
    -- move(submarine_leviathan, first_city_entrance);
 
    -- move(submarine_leviathan, first_city_outer_east);
 
    -- walk(final_scene);
 
    -- walk(leviathan_wardroom);
 
    -- walk(leviathan_wardroom);
 
    -- put("char_learr", "leviathan_wardroom");
 
    -- put("char_phaetlarr", "leviathan_engines");
 
    -- put("char_radcliffe", "leviathan_engines");
 
    -- put("char_wright", "leviathan_wardroom");
 
    -- pl.where = leviathan_airlock;
 
    -- pl.where = hotel_street;
 
    -- pl.where = warehouse_32_entry;
 
    -- dock_found = true;
 
end; 
theme.ini
Show inline comments
 
new file 100644
 
;win.col.link = #801010
 
scr.gfx.scalable = 1
travel.lua
Show inline comments
 
--[[
 
Кучер, который будет за деньги возить вас по локациям первой части
 
]]
 
--TODO случайный ответ кучера из нескольких вариантов
 
char_coachman = obj {
 
	nam = "coachman";
 
	disp = "экипаж";
 
@@ -33,6 +32,9 @@ coachman_dlg = dlg {
 
	hideinv = true;
 
	entered = function(s)
 
		poff(1, 2, 3, 4, 5, 6, 7);
 
        if (where(char_coachman) ~= london_bank_street) then
 
            pon(7);
 
        end;
 
		if (where(char_coachman) ~= port_street) then
 
			pon(6);
 
		end;
 
@@ -119,6 +121,17 @@ coachman_dlg = dlg {
 
				end;
 
			end
 
		},
 
        {7, always = true, "В банк (5 монет). ",
 
            function (s)
 
                if (pl:pay(5)) then
 
                    walk 'london_bank_street';
 
                    return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
                else
 
                    back();
 
                    return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
                end;
 
            end
 
        },
 
		{255, always = true, "Я передумал. ", function(s) 
 
			back()
 
		end}
utils.lua
Show inline comments
 
@@ -165,8 +165,12 @@ end);
 
function npc(tab)
 
	if (not tab.act) then
 
		tab.act = function(s)
 
			if (s.dlg) then
 
				walkin(s.dlg);
 
            local dlg = nil;      
 
			if s.dlg then
 
                dlg = EngineUtils.getValue(s.dlg, s);
 
		    end;
 
            if dlg then
 
                walkin(dlg);      
 
			else
 
                local phrases = EngineUtils.getValue(s.phrases, s);
 
				return phrases[rnd(#phrases)];
 
@@ -207,7 +211,7 @@ function darkroom(tab)
 
	end;
 
	tab.life = function(s)
 
        local hasLight = EngineUtils.getValue(s.has_light, s);
 
        local plLight = EngineUtils.getValue(pl.has_light, pl);
 
        local plLight = EngineUtils.getValue(me().has_light, pl);
 
		if (hasLight) then
 
			-- show all objects that were not explicitly disabled(any seen_level)
 
			for i = 1, #objs(s) do
 
@@ -258,7 +262,7 @@ function darkroom(tab)
 
		tab.dsc = function(s)
 
			local lt;
 
            local hasLight = EngineUtils.getValue(s.has_light, s);
 
            local plLight = EngineUtils.getValue(pl.has_light, pl);
 
            local plLight = EngineUtils.getValue(me().has_light, pl);
 
			if (hasLight) then
 
				lt = EngineUtils.getValue(s.dsc_lit);
 
			elseif (plLight) then
 
@@ -282,7 +286,7 @@ function game_over(nam, dsc)
 
    };
 
end;
 
 
function cutscene(nam, disp, dsc, nxt, entered)
 
function cutscene(nam, disp, dsc, nxt, entered, pic)
 
    return room {
 
        nam = nam;
 
        not_follow = true;
 
@@ -291,6 +295,7 @@ function cutscene(nam, disp, dsc, nxt, e
 
        hideinv = true;
 
        cutscene = true;
 
        dsc = dsc;
 
        pic = pic;
 
        obj = {
 
            vway("continue", "{Продолжить}", nxt);
 
        };
 
@@ -667,6 +672,7 @@ end;
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "0";
 
        end;
 
        return "";
 
    end;
 
};
 
 
@@ -677,6 +683,7 @@ end;
 
        if (here().input:len() > 0) then
 
            here().input = here().input:sub(1, here().input:len() - 1);
 
        end;
 
        return "";
 
    end;
 
};
 
 
@@ -685,6 +692,7 @@ end;
 
    dsc = "{Отмена}";
 
    act = function(s)
 
        back();
 
        return "";
 
    end;
 
};
 
 
@@ -695,6 +703,7 @@ end;
 
        if (here().input) then
 
            here():check(here().input);
 
        end;
 
        return "";
 
    end;
 
};
 
 
@@ -765,33 +774,33 @@ end;
 
        end;
 
    end;   
 
	phr = {
 
		{1, always = "true", "Использовать рацию", function(s)
 
			local val = EngineUtils.getValue(_atlantis.suit_menu._item.dlg, _atlantis.suit_menu._item);
 
		{1, always = "true", "[Использовать рацию]", function(s)
 
			local val = EngineUtils.getValue(_atlantis_suit_menu._item.dlg, _atlantis_suit_menu._item);
 
			if (val) then
 
				walkin(val);
 
				stead.ref(val).__from__ = _atlantis.suit_menu.__from__;
 
				stead.ref(val).__from__ = _atlantis_suit_menu.__from__;
 
			else
 
				back();
 
				return "Никто не отвечает";
 
			end;
 
		end};
 
        {2, always = "true", function(s)
 
            if (pl.has_light) then
 
                return "Выключить фонарь";
 
            if (me().has_light) then
 
                return "[Выключить фонарь]";
 
            else
 
                return "Включить фонарь";
 
                return "[Включить фонарь]";
 
            end;
 
        end, function(s)
 
            if (pl.has_light) then
 
                pl.has_light = false;
 
            if (me().has_light) then
 
                me().has_light = false;
 
                return "Вы выключаете фонарь. ";
 
            else
 
                pl.has_light = true;
 
                me().has_light = true;
 
                return "Вы включаете фонарь. ";
 
            end;
 
        end};
 
        {3, always = "true", "Использовать кодировщик", code [[ walkin("_atlantis_coder"); ]]};
 
		{4, always = "true", "Снять скафандр", function(s)
 
        {3, always = "true", "[Использовать кодировщик]", code [[ walkin("_atlantis_coder"); ]]};
 
		{4, always = "true", "[Снять скафандр]", function(s)
 
			if (EngineUtils.getValue(_atlantis_suit_menu._item.cantakeoff, _atlantis_suit_menu._item)) then
 
				drop(_atlantis._uit_menu._item);
 
				back();
 
@@ -875,6 +884,8 @@ labyrinth = function(tab)
 
    tab.dsc = function(s)
 
        if (type(dsc) == "function") then
 
            return dsc(s);
 
        elseif dsc == nil then
 
            return s.map[s.position].name;
 
        else
 
            return dsc .. s.map[s.position].name;
 
        end;
 
@@ -918,4 +929,19 @@ labyrinth = function(tab)
 
    
 
    stead.add_var(tab, { oldposition = tab.position; });
 
    return lab;
 
end;
 
 
function deepcopy(orig)
 
    local orig_type = type(orig)
 
    local copy
 
    if orig_type == 'table' then
 
        copy = {}
 
        for orig_key, orig_value in next, orig, nil do
 
            copy[deepcopy(orig_key)] = deepcopy(orig_value)
 
        end
 
        setmetatable(copy, deepcopy(getmetatable(orig)))
 
    else -- number, string, boolean, etc
 
        copy = orig
 
    end
 
    return copy
 
end;
 
\ No newline at end of file
warehouse18.lua
Show inline comments
 
@@ -55,12 +55,12 @@ dlg_w18_sec_out_first = dlg {
 
		{2, "Я Дэвид Дрейк. ", [[Охранник пожимает плечами: "Мне это ни о чем не говорит". ]]};
 
		{3, "Могу я поговорить с управляющим?", [[Охранник отрицательно качает головой: "Управляющий занят". ]], [[ pon(4); ]]};
 
		{4, false, "У меня срочное дело к управляющему. ", [[Охранник чешет подбородок: "Я не могу вас пропустить". ]], [[ pon(5);pon(6); ]]};
 
		{5, false, "Может эти 5 шиллингов помогут вам принять решение? ", function(s)
 
            if (pl:pay(5)) then
 
		{5, false, "Может эти 10 шиллингов помогут вам принять решение? ", function(s)
 
            if (pl:pay(10)) then
 
                walkin('warehouse_18_manager');
 
                return [[Глаза охранника заблестели. Он выхватывает монеты из ваших рук и говорит: "Следуйте за мной". ]]
 
            else
 
                return [[Охранник с непониманием смотрит на вас: "Какие 5 шиллингов? Здесь их нет". ]]
 
                return [[Охранник с непониманием смотрит на вас: "Какие 10 шиллингов? Здесь их нет". ]]
 
            end;
 
        end};
 
		{6, false, "Может есть способ договориться? ", [[Охранник отрицательно качает головой: "Что вам нужно от управляющего?" ]], [[ pon(7);pon(8); ]]};
warehouse32.lua
Show inline comments
 
@@ -128,6 +128,16 @@ wright_travel_dlg = dlg {
 
	};
 
};
 
 
w32_tablet = cutscene("w32_tablet", "Склад 32, задняя дверь", "Табличка со схемой склада висит рядом с дверью. ", "w32_backdoor", null, "images/wh32_plan.png");
 
 
w32_tablet_obj = obj {
 
    nam = "w32_tablet_obj";
 
    dsc = "Рядом с дверью висит {табличка}. ";
 
    act = function(s)
 
        walk(w32_tablet);
 
    end;
 
};
 
 
w32_backdoor = room {
 
	nam = "w32_backdoor";
 
	disp = "Склад 32, задняя дверь";
 
@@ -137,8 +147,8 @@ w32_backdoor = room {
 
	end;
 
	way = {
 
		kh_vroom("Войти", function(s)
 
			if (pl.has_light) then
 
				pn("Мне стоит погасить лампу, прежде чем заходить внутрь. ");
 
			if (me().has_light) then
 
				pn("Стоит погасить лампу, прежде чем заходить внутрь. ");
 
				return false;
 
			else
 
				return "warehouse_32";
 
@@ -146,6 +156,9 @@ w32_backdoor = room {
 
		end);
 
		kh_vroom("Через забор", "warehouse_32_behind_night");
 
	};
 
    obj = {
 
        "w32_tablet_obj";
 
    };   
 
};
 
 
w32_mgr = darkroom {
 
@@ -155,12 +168,8 @@ w32_mgr = darkroom {
 
    };
 
	nam = "w32_mgr";
 
	disp = "Склад 32, кабинет управляющего";
 
	dsc_dark = [[
 
		Вы находитесь в кабинете управляющего. В темноте вы можете лишь смутно различить очертания предметов.
 
	]];
 
	dsc_halflit = [[
 
		Вы находитесь в кабинете управляющего. 
 
	]];
 
	dsc_dark = [[Вы находитесь в кабинете управляющего. В темноте вы можете лишь смутно различить очертания предметов. ]];
 
	dsc_halflit = [[Вы находитесь в кабинете управляющего. ]];
 
	entered = function(s)
 
		warehouse_32.pos = "54";
 
	end;
 
@@ -171,25 +180,24 @@ w32_mgr = darkroom {
 
			if (not w32_mgr.key_inplace or not w32_mgr.book_inplace) then
 
				pr("Стоит вернуть все как было. ");
 
				return false;
 
			elseif (pl.has_light) then
 
			elseif (me().has_light) then
 
				pr("Если я не погашу лампу, меня заметят. ");
 
				return false;
 
			else
 
				return "warehouse_32"
 
				return "warehouse_32";
 
			end;
 
		end, 2);
 
	};
 
	obj = {
 
		'w32_mgr_table',
 
		'w32_mgr_bookcase'
 
		'w32_mgr_bookcase',
 
        'money_wh32'
 
	};
 
};
 
 
w32_journal = obj {
 
	nam = 'w32_journal';
 
	dsc = [[
 
		В ящике стола лежит {учетная книга}, в которую занесено все содержимое склада. 
 
	]];
 
	dsc = [[В ящике стола лежит {учетная книга}, в которую занесено все содержимое склада. ]];
 
	act = function(s)
 
		local list = [[Среди сотен записей вы натыкаетесь на несколько, отмеченных как "Westhaven":]];
 
		for i = 1, #w32_shelf_input.items do
 
@@ -209,13 +217,9 @@ w32_mgr_table = obj {
 
	nam = 'w32_mgr_table';
 
	dsc = function(s)
 
		if (s.open) then
 
			return [[
 
				В центре комнаты расположен большой письменный стол. {Ящик} стола выдвинут.
 
			]];
 
			return [[В центре комнаты расположен большой письменный стол. {Ящик} стола выдвинут. ]];
 
		else
 
			return [[
 
				В центре комнаты расположен большой письменный стол. В столе имеется {ящик}.
 
			]];
 
			return [[В центре комнаты расположен большой письменный стол. В столе имеется {ящик}. ]];
 
		end;
 
	end;
 
	act = function(s)
 
@@ -223,20 +227,14 @@ w32_mgr_table = obj {
 
			if (s.open) then
 
				s.open = false;
 
				w32_journal:disable();
 
				return [[
 
					Вы задвигаете ящик. 
 
				]];
 
				return [[Вы задвигаете ящик. ]];
 
			else
 
				s.open = true;
 
				w32_journal:enable();
 
				return [[
 
					Вы выдвигаете ящик. 
 
				]];
 
				return [[Вы выдвигаете ящик. ]];
 
			end;
 
		else 
 
			return [[
 
				Ящик заперт. Вам придется найти ключ. 
 
			]];
 
			return [[Ящик заперт. Вам придется найти ключ. ]];
 
		end;
 
	end;
 
	used = function(s, o)
 
@@ -260,21 +258,27 @@ w32_mgr_table = obj {
 
};
 
 
w32_mgr_bookcase = obj {
 
    var {
 
        state = 0;
 
    };
 
	seen_level = 1;
 
	nam = 'w32_mgr_bookcase';
 
	dsc = [[
 
		Одну из стен практически целиком занимает {шкаф}, заполненный книгами и записями. 
 
	]];
 
	dsc = [[Одну из стен практически целиком занимает {шкаф}, заполненный книгами и записями. ]];
 
	act = function(s)
 
		item_w32_key:enable();
 
		return "Вы замечаете спрятанный за книгами ключ. ";
 
        if (s.state == 0) then
 
            s.state = 1;
 
		    return "Вы замечаете спрятанный за книгами ключ. ";
 
        else
 
            return "Записи, журналы и прочие малоинтересные вам книги. ";
 
        end;      
 
	end;
 
	used = function(s, o)
 
		if (o == item_w32_key) then
 
			w32_mgr.key_inplace = true;
 
			remove(item_w32_key, pl);
 
			put(item_w32_key, s);
 
			return "Вы возвращает ключик на место";
 
			return "Вы возвращаете ключик на место. ";
 
		end;
 
	end;
 
	obj = {
 
@@ -284,22 +288,12 @@ w32_mgr_bookcase = obj {
 
 
warehouse_32_definitions = {
 
	---line E
 
	["01"] = { name="у задней двери", dsc=[[
 
		К югу от вас расположена задняя дверь склада. 
 
	]], e1 = "11", ex3 = "w32_backdoor"};
 
	["02"] = { name="тупик", dsc=[[
 
		
 
	]], e1 = "12", corner = true};
 
	["03"] = { name="тупик", dsc=[[
 
		
 
	]], e1 = "13", corner = true};
 
	["04"] = { name="тупик", dsc=[[
 
		
 
	]], e1 = "14", corner = true};
 
	["01"] = { name="у задней двери", dsc=[[К югу от вас расположена задняя дверь склада. ]], e1 = "11", ex3 = "w32_backdoor"};
 
	["02"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "12", corner = true};
 
	["03"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "13", corner = true};
 
	["04"] = { name="тупик", dsc=[[Вы в тупике. К югу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e1 = "14", corner = true};
 
	---line DE
 
	["10"] = { name="тупик", dsc=[[
 
		
 
	]], e2 = "11", corner = true};
 
	["10"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "11", corner = true};
 
	["11"] = { name="секция D1", dsc=[[
 
		
 
	]], e1 = "21", e2="12", e3="01", e4="10", sector = "D1"};
 
@@ -312,13 +306,9 @@ warehouse_32_definitions = {
 
	["14"] = { name="секция D4", dsc=[[
 
		
 
	]], e1 = "24", e2="15", e3="04", e4="13", sector = "D4"};
 
	["15"] = { name="тупик", dsc=[[
 
		
 
	]], e4 = "14", corner = true};
 
	["15"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "14", corner = true};
 
	---line CD
 
	["20"] = { name="тупик", dsc=[[
 
		
 
	]], e2 = "21", corner = true};
 
	["20"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "21", corner = true};
 
	["21"] = { name="секция C1", dsc=[[
 
		
 
	]], e1 = "31", e2="22", e3="11", e4="20", sector = "C1"};
 
@@ -331,13 +321,9 @@ warehouse_32_definitions = {
 
	["24"] = { name="секция C4", dsc=[[
 
		
 
	]], e1 = "34", e2="25", e3="14", e4="23", sector = "C4"};
 
	["25"] = { name="тупик", dsc=[[
 
		
 
	]], e4 = "24", corner = true};
 
	["25"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "24", corner = true};
 
	---line BC
 
	["30"] = { name="тупик", dsc=[[
 
		
 
	]], e2 = "31", corner = true};
 
	["30"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "31", corner = true};
 
	["31"] = { name="секция B1", dsc=[[
 
		
 
	]], e1 = "41", e2="32", e3="21", e4="30", sector = "B1"};
 
@@ -350,13 +336,9 @@ warehouse_32_definitions = {
 
	["34"] = { name="секция B4", dsc=[[
 
		
 
	]], e1 = "44", e2="35", e3="24", e4="33", sector = "B4"};
 
	["35"] = { name="тупик", dsc=[[
 
		
 
	]], e4 = "34", corner = true};
 
	["35"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "34", corner = true};
 
	---line AB
 
	["40"] = { name="тупик", dsc=[[
 
		
 
	]], e2 = "41", corner = true};
 
	["40"] = { name="тупик", dsc=[[Вы в тупике. К западу от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e2 = "41", corner = true};
 
	["41"] = { name="секция A1", dsc=[[
 
		
 
	]], e1 = "51", e2="42", e3="31", e4="40", sector = "A1"};
 
@@ -369,22 +351,12 @@ warehouse_32_definitions = {
 
	["44"] = { name="секция A4", dsc=[[
 
		
 
	]], e1 = "54", e2="45", e3="34", e4="43", sector = "A4"};
 
	["45"] = { name="тупик", dsc=[[
 
		
 
	]], e4 = "34", corner = true};
 
	["45"] = { name="тупик", dsc=[[Вы в тупике. К востоку от вас находится стена, на севере и юге -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e4 = "34", corner = true};
 
	---line A
 
	["51"] = { name="тупик", dsc=[[
 
		
 
	]], e3 = "41", corner = true};
 
	["52"] = { name="у входа", dsc=[[
 
		К северу от вас расположен главный вход склада, но он заперт. 
 
	]], e3 = "42"};
 
	["53"] = { name="тупик", dsc=[[
 
		
 
	]], e3 = "43", corner = true};
 
	["54"] = { name="у входа в кабинет управляющего", dsc=[[
 
		К северу от вас расположена дверь, ведущая, судя по табличке на ней, в кабинет управляющего. 
 
	]], e3 = "44", ex1="w32_mgr"};
 
	["51"] = { name="тупик", dsc=[[Вы в тупике. К северу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e3 = "41", corner = true};
 
	["52"] = { name="у входа", dsc=[[К северу от вас расположен главный вход склада, но он заперт. ]], e3 = "42"};
 
	["53"] = { name="тупик", dsc=[[Вы в тупике. К северу от вас находится стена, на востоке и западе -- стеллажи. Здесь составлено несколько больших ящиков, за которыми можно спрятаться. ]], e3 = "43", corner = true};
 
	["54"] = { name="у входа в кабинет управляющего", dsc=[[К северу от вас расположена дверь, ведущая в кабинет управляющего. ]], e3 = "44", ex1="w32_mgr"};
 
};
 
 
function getDirName(dir)
 
@@ -404,14 +376,84 @@ warehouse_32 = room {
 
        pos = "01";
 
        hidden = false;
 
        guards = {
 
            { pos = "21", dir=1, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "31", dir=4, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "24", dir=2, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "34", dir=3, s = 1 }; --s=1 - должен повернуть направо, s=2 - должен пройти прямо
 
            { pos = "11", dir=1, s = 2 }; --s=1 - должен идти на юг(или повернуть по часовой стрелке, если смотрит не на юг), s=2 - на север
 
            { pos = "42", dir=2, s = 1 }; --s=1 - должен идти на юг(или повернуть по часовой стрелке, если смотрит не на юг), s=2 - на север
 
            { pos = "13", dir=1, s = 2 }; --s=1 - должен идти на юг(или повернуть по часовой стрелке, если смотрит не на юг), s=2 - на север
 
            { pos = "44", dir=2, s = 1 }; --s=1 - должен идти на юг(или повернуть по часовой стрелке, если смотрит не на юг), s=2 - на север
 
        };
 
    };
 
	nam = "warehouse_32";
 
	nolamp = true;
 
    map = {
 
        {1,1,2,1,1,1,1,1,1,1,1};
 
        {1,3,0,3,0,3,0,3,0,3,1};
 
        {1,0,0,0,0,0,0,0,0,0,1};
 
        {1,3,0,3,0,3,0,3,0,3,1};
 
        {1,0,0,0,0,0,0,0,0,0,1};
 
        {1,3,0,3,0,3,0,3,0,3,1};
 
        {1,0,0,0,0,0,0,0,0,0,1};
 
        {1,3,0,3,0,3,0,3,0,3,1};
 
        {1,0,0,0,0,0,0,0,0,0,1};
 
        {1,3,0,3,0,3,0,3,0,3,1};
 
        {1,1,1,1,2,1,1,1,2,1,1};
 
    };
 
    pic = function(s)
 
        local pl_y = math.floor(tonumber(s.pos) / 10);
 
        local pl_x = tonumber(s.pos) % 10;
 
        local pl_xm = pl_x * 2 + 1;
 
        local deltax = 0;
 
        local deltay = 0;
 
        if pl_x == 0 then
 
            pl_xm = 2;
 
            deltax = -32;
 
        elseif pl_x == 5 then
 
            pl_xm = 10;
 
            deltax = 32;
 
        end;
 
        local pl_ym = pl_y * 2 + 1;
 
        if pl_y == 0 then
 
            pl_ym = 2;
 
            deltay = 32;
 
        elseif pl_y == 5 then
 
            pl_ym = 10;
 
            deltay = -32;
 
        end;
 
        local rval = "images/wh32_bg.png";
 
        
 
        
 
        for x = 0, 8 do
 
            for y = 0, 8 do
 
                print(pl_ym - 4 + y, pl_xm - 4 + x)
 
                if pl_xm - 4 + x > 0 and pl_ym - 4 + y > 0 and pl_xm - 4 + x < 12 and pl_ym - 4 + y < 12 then
 
                    if s.map[pl_ym - 4 + y][pl_xm - 4 + x] == 1 then
 
                        rval = rval .. ";images/wh32_wall.png@" .. tostring((x) * 32) .. "," .. tostring(256 - (y) * 32);
 
                    elseif s.map[pl_ym - 4 + y][pl_xm - 4 + x] == 2 then
 
                        rval = rval .. ";images/wh32_door.png@" .. tostring((x) * 32) .. "," .. tostring(256 - (y) * 32);
 
                    elseif s.map[pl_ym - 4 + y][pl_xm - 4 + x] == 3 then
 
                        rval = rval .. ";images/wh32_shelves.png@" .. tostring((x) * 32) .. "," .. tostring(256 - (y) * 32);
 
                    end;
 
                else
 
                    rval = rval .. ";box:32x32,black,255@" .. tostring((x) * 32) .. "," .. tostring(256 - (y) * 32);
 
                end;
 
            end;
 
        end;
 
        
 
        
 
        for i = 1, #s.guards do
 
            local g_y = math.floor(tonumber(s.guards[i].pos) / 10);
 
            local g_x = tonumber(s.guards[i].pos) % 10;
 
            if pl_y - g_y == 0 or pl_x - g_x == 0 and math.abs(pl_y - g_y) + math.abs(pl_x - g_x) < 3 then
 
                rval = rval .. ";images/wh32_guard_" .. tostring(s.guards[i].dir) .. ".png@" .. tostring((g_x - pl_x) * 64 + 128 + deltax) .. ",".. tostring((pl_y - g_y) * 64 + 128 + deltay);
 
            end;
 
            if math.abs(pl_y - g_y) == 1 and math.abs(pl_x - g_x) == 1 then
 
                rval = rval .. ";images/unseen_enemy.png@" .. tostring((g_x - pl_x) * 64 + 128 + deltax) .. ",".. tostring((pl_y - g_y) * 64 + 128 + deltay);
 
            end;
 
        end;
 
        
 
        rval = rval .. ";images/wh32_player.png@128,128";
 
        print(rval);
 
        return rval .. ";images/wh32_mask.png";
 
    end;
 
	disp = function(s)
 
		return "Склад 32, " .. s.definitions[s.pos].name;
 
	end;
 
@@ -460,11 +502,31 @@ warehouse_32 = room {
 
	guardTurn = function(s)
 
		local pl_y = math.floor(tonumber(s.pos) / 10);
 
		local pl_x = tonumber(s.pos) % 10;
 
		--print("player:", pl_x, pl_y);
 
		--Каждый стражник делает ход, игрок получает сообщения, о том, слышит ли он шаги, откуда и как они движутся
 
		for i = 1, #s.guards do
 
			--TODO play with this random number to assume good gameplay: predictable enough, yet somewhat random
 
			if (rnd(10) < 9) then
 
                --[[if (s.guards[i].s == 1) then
 
                    if s.guards[i].dir ~= 3 then
 
                        s.guards[i].dir = s.guards[i].dir + 1;
 
                    else
 
                        s.guards[i].pos = s.definitions[s.guards[i].pos].e3;
 
                        if not s.definitions[s.definitions[s.guards[i].pos].e3].e3 then
 
                            s.guards[i].s = 2;
 
                        end;
 
                    end;
 
                else
 
                    if s.guards[i].dir ~= 1 then
 
                        s.guards[i].dir = s.guards[i].dir + 1;
 
                        if (s.guards[i].dir > 4) then
 
                            s.guards[i].dir = 1;
 
                        end;
 
                    else
 
                        s.guards[i].pos = s.definitions[s.guards[i].pos].e1;
 
                        if not s.definitions[s.definitions[s.guards[i].pos].e1].e1 then
 
                            s.guards[i].s = 1;
 
                        end;
 
                    end;
 
                end;]]
 
				if (s.guards[i].s == 1) then
 
					s.guards[i].s = 2;
 
					s.guards[i].dir = s.guards[i].dir + 1;
 
@@ -522,13 +584,13 @@ warehouse_32 = room {
 
				end;
 
			else
 
				if (g_x - pl_x == 1 and g_y - pl_y == 1) then
 
					pr("К северовостоку от вас вы слышите шаги охранника. ");
 
					pr("К северо-востоку от вас вы слышите шаги охранника. ");
 
				elseif (g_x - pl_x == 1 and pl_y - g_y == 1) then
 
					pr("К юговостоку от вас вы слышите шаги охранника. ");
 
					pr("К юго-востоку от вас вы слышите шаги охранника. ");
 
				elseif (pl_x - g_x == 1 and g_y - pl_y == 1) then
 
					pr("К северозападу от вас вы слышите шаги охранника. ");
 
					pr("К северо-западу от вас вы слышите шаги охранника. ");
 
				elseif (pl_x - g_x == 1 and pl_y - g_y == 1) then
 
					pr("К югозападу от вас вы слышите шаги охранника. ");
 
					pr("К юго-западу от вас вы слышите шаги охранника. ");
 
				end;
 
			end;
 
		end;
wright.lua
Show inline comments
 
@@ -59,7 +59,7 @@ wright_dlg = dlg {
 
			return [[Джек Райт отвлекается от газеты: "Добрый день". ]];
 
		elseif (s.state == 1) then
 
			--First meeting
 
            char_wright_home.known = true;         
 
            char_wright_home.known = true;
 
			psub('first_visit');
 
			return [[Перед вами молодой человек, одетый в недорогой, но опрятный костюм. Его бледное лицо украшает короткая темная борода и пышные усы. Темные волосы коротко острижены. Серые глаза с интересом разглядывают вас. Он протягивает вам руку и представляется: "Добрый день. Мое имя -- Джек Райт. Майкл -- мой отец, но он пропал несколько лет назад". ]];
 
		elseif (s.state == 2) then
 
@@ -75,7 +75,8 @@ wright_dlg = dlg {
 
				s.state = 5;
 
				warehouse32_found = true;
 
				psub('warehouse_discovered');
 
				return [[Джек отвлекается от документов: "Добрый день. У меня хорошие новости. Я нашел склад 32", - он достает карту города и показывает вам место. ]];
 
                pl.money = pl.money + 100;
 
				return [[Джек отвлекается от документов: "Добрый день. У меня хорошие новости. Я нашел склад 32", -- он достает карту города и показывает вам место. Потом он достает из стола мешочек денег и протягивает вам со словами: "Надеюсь, это поможет тебе в поисках". ]];
 
			end;
 
		elseif (s.state == 4) then
 
			--Documents taken back
 
@@ -92,47 +93,47 @@ wright_dlg = dlg {
 
                pon("phr_leviathan");
 
            end;
 
			return [[Джек отвлекается от газеты: "Добрый день". ]];
 
		elseif (s.state == 7) then
 
		elseif (s.state == 6) then
 
			psub('warehouse_discovered3');
 
			return [[Джек отвлекается от газеты: "Добрый день". ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag='first_visit'};
 
		{"Мое имя -- Дэвид Дрейк. Мне удалось найти кое-какие документы в одном из тайников отца. Этот адрес был среди них. Вы что-то знаете о судьбе моего отца? ", [[Джек вздыхает: "Это бесполезно. Я изучил практически все, до чего сумел дотянуться - газеты, судебные дела. И ничего - никаких зацепок. Компания обанкротилась, руководители пропали". ]], code [[wright_dlg.state = 2; psub('ask_documents'); ]]};
 
		{"Мое имя -- Дэвид Дрейк. Мне удалось найти кое-какие документы в одном из тайников отца. Этот адрес был среди них. Вы что-то знаете о судьбе моего отца? ", [[Джек вздыхает: "Это бесполезно. Я изучил практически все, до чего сумел дотянуться: газеты, судебные дела. И ничего -- никаких зацепок. Компания обанкротилась, руководители пропали". ]], code [[wright_dlg.state = 2; psub('ask_documents'); ]]};
 
		{tag='ask_documents'};
 
		{always = true, "[Отдать документы]Посмотрите это. Не думаю, что вы это видели. ", [[Джек нехотя забирает бумаги из ваших рук и бегло их осматривает. Пожимая плечами, он комментирует: "Ничего интересного, просто планы старых зданий. Док 2? Отец там часто бывал, впрочем не думаю, что после 10 лет там что-то осталось. Если хотите - можете оставить документы, я попробую разузнать побольше". ]], code [[ 
 
		{always = true, "[Отдать документы] Посмотрите это. Не думаю, что вы это видели. ", [[Джек нехотя забирает бумаги из ваших рук и бегло их осматривает. Пожимая плечами, он комментирует: "Ничего интересного, просто планы старых зданий. Док 2? Отец там часто бывал, впрочем не думаю, что после 10 лет там что-то осталось. Если хотите, можете оставить документы, я попробую разузнать побольше". ]], code [[ 
 
			dock_found = true;
 
			wright_dlg.state = 3; 
 
			remove(item_charts, pl); 
 
			psub("checking_documents");
 
		]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу -- помогу". ]], code [[psub('questions')]]};
 
		{always = true, "Я вернусь позже.", [[ Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
 
		{tag='checking_documents'};
 
		{always = true, "Вы можете вернуть мне бумаги?", [["Конечно. Если принесете их снова -- я возобновлю поиски", - Джек возвращает вам документы. ]], code [[
 
		{always = true, "Вы можете вернуть мне бумаги?", [["Конечно. Если принесете их снова -- я возобновлю поиски", -- Джек возвращает вам документы. ]], code [[
 
			wright_dlg.state = 4;
 
			put(item_charts, pl);
 
			back();
 
		]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу -- помогу". ]], code [[psub('questions')]]};
 
		{always = true, "Я вернусь позже.", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
 
		{tag='questions'};
 
		{"Вы знаете, чем занимался ваш отец в Вестхейвен Трансоушен?", [["Частично", - Джек показывает на картину на стене: "Он проектировал корабли, был главным инженером. Перед тем, как исчезнуть, он часто запирался в этом кабинете, подолгу что-то чертил. До глубокой ночи книги читал... Никаких материалов он не оставил. Он, вообще, очень ответственно относился к этому - никто никогда не знал, чем конкретно он занимается, кроме его подчиненных и вашего отца". ]]};
 
		{"Вы знаете, чем занимался ваш отец в Вестхейвен Трансоушен?", [["Частично", -- Джек показывает на картину на стене: "Он проектировал корабли, был главным инженером. Перед тем, как исчезнуть, он часто запирался в этом кабинете, подолгу что-то чертил. До глубокой ночи книги читал... Никаких материалов он не оставил. Он, вообще, очень ответственно относился к этому -- никто никогда не знал, чем конкретно он занимается, кроме его подчиненных и вашего отца". ]]};
 
		{always = true, "Вернемся к делу.", [[Джек кивает: "Хорошо". ]], code [[ pret(); ]]};
 
		{tag='ask_documents2'};
 
		{always = true, "[Отдать документы]Вот документы.", [[Джек забирает бумаги и раскладывает их на своем столе: "Спасибо, я посмотрю, что смогу найти". ]], code[[ wright_dlg.state = 3; remove(item_charts, pl); back(); ]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
 
		{always = true, "[Отдать документы] Вот документы.", [[Джек забирает бумаги и раскладывает их на своем столе: "Спасибо, я посмотрю, что смогу найти". ]], code[[ wright_dlg.state = 3; remove(item_charts, pl); back(); ]]};
 
		{always = true, "У меня есть несколько вопросов.", [[Джек кивает: "Чем смогу -- помогу". ]], code [[psub('questions')]]};
 
		{always = true, "Я вернусь позже.", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
 
		{tag='warehouse_discovered'};
 
		{"[Рассказать о Левиафане]Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
 
		{"[Рассказать о Левиафане] Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
 
            char_wright_home.known_leviathan = true;
 
            rel_jack = rel_jack + 1;
 
            walkin('wright_leviathan_cutscene1a'); 
 
        ]]};
 
		{always = true, "Отлично, я съезжу туда и посмотрю, что удастся найти.", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
 
		{tag='warehouse_discovered2'};
 
        {tag="phr_leviathan", "[Рассказать о Левиафане]Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
 
        {tag="phr_leviathan", "[Рассказать о Левиафане] Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
 
            char_wright_home.known_leviathan = true;
 
            rel_jack = rel_jack + 1;
 
            walkin('wright_leviathan_cutscene1a'); 
 
@@ -148,29 +149,32 @@ wright_dlg = dlg {
 
        end};
 
		{always = true, "Я вернусь позже.", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
 
		{tag='warehouse_break_in'};
 
		{always = true, "Надо попробовать.", [["Хорошо", - отвечает Джек. Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[ walk('warehouse_32_night'); ]]};
 
		{always = true, "Надо попробовать.", [["Хорошо", -- отвечает Джек. ]], code [[ 
 
            wright_dlg.state = 6;      
 
            walk('wright_warehouse_32_entry'); 
 
        ]]};
 
		{always = true, "Лучше не стоит.", [[Джек разочарованно отвечает: "Очень жаль". ]], code [[ pret(); ]]};
 
        {tag='warehouse_break_in_reluctant'};
 
        {always = true, "Мы можем попробовать проникнуть туда. Вдруг там что-то сохранилось?", [[Джек удивленно переспрашивает: "Проникнуть? Дэвид, вы в своем уме?"]], code [[ psub("w_bir2");]]};
 
        {always = true, "Я пойду.", [[Джек возвращается к своим делам: "До встречи". ]]};
 
        {tag="w_bir2"};
 
        {always = true, "Если мы хотим найти моего и вашего отца - нам нужно действовать вместе.", [[Джек отрицательно качает головой: "Я не готов действовать такими методами". ]], code [[ psub("w_bir3");]]};
 
        {always = true, "Если мы хотим найти моего и вашего отца -- нам нужно действовать вместе.", [[Джек отрицательно качает головой: "Я не готов действовать такими методами". ]], code [[ psub("w_bir3");]]};
 
        {always = true, "Вы правы, это глупо.", [[Джек молча кивает. ]], code [[ pret(); ]]};
 
        {tag="w_bir3"};
 
        {"Вы готовы остановиться в шаге от цели?", [[Джек отвечает не сразу: "Мы не знаем, насколько мы близко. "]]};
 
        { "У нас нет другого выбора. Это наша единственная зацепка", [[Джек берет карандаш, вертит его в руках несколько минут, потом смотрит на картину. Наконец, он соглашается: "Будь по вашему". Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[
 
            wright_dlg.state = 7;
 
            walk("warehouse_32_night");
 
        {"Вы готовы остановиться в шаге от цели?", [[Джек отвечает не сразу: "Мы не знаем, насколько мы близко".]]};
 
        { "У нас нет другого выбора. Это наша единственная зацепка.", [[Джек берет карандаш, вертит его в руках несколько минут, потом смотрит на картину. Наконец, он соглашается: "Будь по-вашему". ]], code [[
 
            wright_dlg.state = 6;
 
            walk("wright_warehouse_32_entry");
 
        ]]};
 
        {"У вас есть другие предложения?", [[Джек вздыхает: "Нет. Придется признать, поиски зашли в тупик". ]]};
 
        {always = true, "Вы правы, это глупо.", [[Джек молча кивает. ]], code [[ psub("warehouse_break_in_reluctant"); ]]};
 
		{tag='warehouse_discovered3'};
 
		{always = true, "Надо еще раз попасть на склад.", [["Хорошо", - отвечает Джек. После наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[ psub('warehouse_break_in'); ]]};
 
		{always = true, "Надо еще раз попасть на склад.", [["Хорошо", -- отвечает Джек. После наступления темноты, вы садитесь в повозку Джека, и он привозит вас к складу 32. ]], code [[ psub('warehouse_break_in'); ]]};
 
		{always = true, "Я вернусь позже.", [["До встречи". ]], code [[ back(); ]]};
 
		{tag='leviathan_restored_known'};
 
		{always = true, "Мне удалось починить \"Левиафан\". Мне понадобится помощник на борту.", [[Джек поднимается с кресла и одевает пальто: "Безусловно, я готов", - сообщает вам он. "Здесь меня ничто не держит". ]], code [[ 
 
			lifeon("char_wright");
 
		{always = true, "Мне удалось починить \"Левиафан\". Мне понадобится помощник на борту.", [[Джек поднимается с кресла и одевает пальто: "Безусловно, я готов", -- сообщает вам он. "Здесь меня ничто не держит". ]], code [[ 
 
			table.insert(pl.party, 'wright');
 
            move(char_wright, char_wright.home);
 
			walk('leviathan_wardroom'); 
 
		]]};
 
		{always = true, "Я вернусь позже.", [[
 
@@ -178,14 +182,16 @@ wright_dlg = dlg {
 
		]], code [[ back(); ]]};
 
        {tag='leviathan_restored'};
 
        {always = true, "Я нашел подводный корабль. Мне понадобится помощь в управлении им. ", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе! Я должен это видеть!". ]], code [[ 
 
            lifeon("char_wright");
 
            table.insert(pl.party, 'wright');
 
            walk('wright_leviathan_cutscene2'); 
 
            move(char_wright, char_wright.home);
 
            walk('wright_leviathan_cutscene2');
 
        ]]};
 
        {always = true, "Я вернусь позже.", [[Джек возвращается к своим делам: "До встречи".]], code [[ back(); ]]};
 
	};
 
};
 
 
wright_warehouse_32_entry = cutscene("wright_warehouse_32_entry", "Склад 32", [[Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку, и Джек привозит вас к складу 32. ]], 'warehouse_32_night');
 
 
wright_leviathan_cutscene2 = cutscene("wright_leviathan_cutscene2", "Причал", [[Вместе с Джеком вы приезжаете в док. Райт долго и с интересом осматривает корпус _"Левиафана"_. Внутри, Джек долго обходит отсеки, разглядывая все узлы. Наконец, вы оказываетесь в кают-компании и он сообщает: "Я готов". ]], 'leviathan_wardroom');
 
 
wright_leviathan_cutscene1a = cutscene("wright_leviathan_cutscene1a", "Причал", [[Вместе с Джеком Райтом вы отправляетесь в док 2. После прибытия на место, Джек долго и с интересом осматривает металлический корпус субмарины. С задумчивым видом он ходит туда-сюда вдоль причала. ]], 'wright_leviathan_cutscene1b');
 
@@ -195,9 +201,12 @@ wright_leviathan_cutscene1b = dlg {
 
	disp = "Причал";
 
	entered = [[После очередного круга, он спрашивает: "Она работает?"]];
 
	phr = {
 
		{"Десять лет под водой. Не думаю, что там хоть что-то сохранилось.", [[Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Пора ехать. Вы со мной?" ]], code [[ psub('choice'); ]]};
 
		{"Не уверен, но, думаю, да.", [[Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Пора ехать. Вы со мной?"]], code [[ psub('choice'); ]]}; 
 
		{tag='choice'};
 
		{"Десять лет под водой. Не думаю, что там хоть что-то сохранилось.", [[Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Повернувшись к вам он сообщает: "Вы можете расчитывать на меня, если вам потребуется помощь в управлении этой посудиной". ]], code [[ psub('choice'); ]]};
 
		{"Не уверен, но, думаю, да.", [[Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Повернувшись к вам он сообщает: "Вы можете расчитывать на меня, если вам потребуется помощь в управлении этой посудиной". ]], code [[ psub('choice'); ]]}; 
 
        {tag='choice'};
 
        {"Несомненно, я сообщу вам, если получится ее оживить.", [[Джек кивает и спрашивает: "Пора ехать. Вы со мной?" ]], code [[ psub('end'); ]]};
 
        {"Спасибо, но я справлюсь и сам.", [[Джек пожимает плечами, но отвечает: "Тем не менее, мое предложение остается в силе", -- и, чуть выждав, спрашивает -- "Пора ехать. Вы со мной?" ]], code [[ psub('end'); ]]};
 
		{tag='end'};
 
		{"Да, поехали.", [[	Вы садитесь в кэб и возвращаетесь домой к Джеку. ]], [[
 
			walk('wright_house_cabinet');
 
		]]};
 
@@ -220,11 +229,11 @@ wright_entry_dlg = dlg {
 
		{always = true, "Могу я увидеть Майкла Райта?", [[Голос за дверью повторяет вопрос: "Кто спрашивает?"]], code [[ psub('who') ]]};
 
		{always = true, "Извините, я ошибся адресом.", code [[ back(); ]]},
 
		{tag = 'who'};
 
		{"Вы знаете Уильяма Дрейка?", [["Понятия не имею. Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство. ]], code [[ psub('irritated') ]]};
 
		{"Майкл Райт здесь живет?", [["Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство. ]], code [[ psub('irritated') ]]};
 
		{always = true, "У меня важное сообщение для него.", [["Он тут не живет уже много лет. Уходите" - вам показалось, что голос собеседника слегка дрогнул при этих словах. ]], code [[ back(); ]]};
 
		{"Вы знаете Уильяма Дрейка?", [["Понятия не имею. Кто спрашивает?" -- В голосе собеседника явно прослеживается некоторое недовольство. ]], code [[ psub('irritated') ]]};
 
		{"Майкл Райт здесь живет?", [["Кто спрашивает?" -- В голосе собеседника явно прослеживается некоторое недовольство. ]], code [[ psub('irritated') ]]};
 
		{always = true, "У меня важное сообщение для него.", [["Он тут не живет уже много лет. Уходите" -- вам показалось, что голос собеседника слегка дрогнул при этих словах. ]], code [[ back(); ]]};
 
		{tag = 'irritated'};
 
		{"Мой отец - Уильям Дрейк, работал с Майклом Райтом. Так вы знаете его?", [[Вы слышите звук отодвигающегося засова и ответ: "Проходите". ]], code [[ 
 
		{"Мой отец -- Уильям Дрейк, работал с Майклом Райтом. Так вы знаете его?", [[Вы слышите звук отодвигающегося засова и ответ: "Проходите". ]], code [[ 
 
			door_wright.locked = false;
 
			path("В дом", wright_house):enable();
 
			back();
 
@@ -261,7 +270,7 @@ wright_house_cabinet = room {
 
wright_house_front_room = room {
 
	nam = "wright_house_front_room";
 
	disp = "Дом Райта, гостиная";
 
	dsc = [[Окна в гостиной завешены тяжелыми занавесками и в полутьме вы с трудом различаете очертания предметов интерьера - дорогих старых кресел, изящно украшенных шкафов, покрытых многолетним слоем пыли канделябров. ]];
 
	dsc = [[Окна в гостиной завешены тяжелыми занавесками и в полутьме вы с трудом различаете очертания предметов интерьера: дорогих старых кресел, изящно украшенных шкафов, покрытых многолетним слоем пыли канделябров. ]];
 
	entered = function(s)
 
		if (not s.visited) then
 
			s.visited = true;
 
@@ -280,7 +289,7 @@ wright_house = room {
 
	enter = function(s)
 
		put(char_coachman, here());
 
	end;
 
    dsc = [[Небольшой кирпичный особняк, принадлежащий Майклу Райту, стоит на одной из тихих улочек, на окраине Лондона. Дом выглядит неухоженным - штукатурка местами осыпалась, лужайка заросла высокой травой, часть окон закрыта ставнями, явно давно не открывавшимися. ]];
 
    dsc = [[Небольшой кирпичный особняк, принадлежащий Майклу Райту, стоит на одной из тихих улочек, на окраине Лондона. Дом выглядит неухоженным -- штукатурка местами осыпалась, лужайка заросла высокой травой, часть окон закрыта ставнями, явно давно не открывавшимися. ]];
 
	obj = {'door_wright'};
 
	way = {
 
		vroom("В дом", "wright_house_front_room"):disable();
0 comments (0 inline, 0 general)