Changeset - 7c5feb4c760f
[Not reviewed]
default
0 2 0
Silverwing - 8 years ago 2017-04-15 06:01:56

320
2 files changed with 29 insertions and 7 deletions:
0 comments (0 inline, 0 general)
atlantis.lua
Show inline comments
 
global {
 
	atl_jack_in_party = false;
 
	atl_lev_state = 0;
 
	
 
	atl_iof_completed = false;
 
	atl_iof_learr_dead = false;
 
	atl_iof_learr_suit = false;
 
	
 
	atl_nih_state = 0;
 
	
 
	atl_iyh_state = 0;
 
	atl_iyh_ryveerr_spoken = false;
 
	atl_iyh_shockfish_dead = false;
 
	atl_iyh_shockfish_left = false;
 
	atl_iyh_shockfish_away = 0;
 
	atl_iyh_entrance_destroyed = false;
 
	atl_iyh_artifacts_on_atlantis = false;
 
	
 
	atl_lfc_state = 0;
 
	atl_lfc_panic = 0;
 
	atl_lfc_hallrooms = 0;
 
	atl_lfc_electric = 0;
 
	atl_lfc_board = 0;
 
	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_fta_state = 0;
 
	
 
	atl_rep_moreau = 0;
 
	atl_rep_darkstar = 0;
 
	atl_rep_svetlova = 0;
 
	atl_rep_wright = 0;
 
};
 
 
atl_illuminators = obj {
 
	nam = "Иллюминаторы";
 
	dsc = [[Через равные промежутки в стены встроены небольшие круглые {иллюминаторы}. ]];
 
	act = [[Через иллюминаторы видны несколько других секций и коридоров. В лучах света, проникающих с поверхности вы видите массивные металлические конструкции непонятного вам назначения. На покрытом илом дне видно большое количество следов от тяжелых металлическых подошв персонала станции. ]];
 
};
 
 
atl_illuminator = obj {
 
    nam = "Иллюминатор";
 
    dsc = [[В стену встроен небольшой {иллюминатор}. ]];
 
    act = [[Через иллюминатор вы видите несколько других секций и коридоров. В лучах света, проникающих с поверхности вы видите массивные металлические конструкции непонятного вам назначения. На покрытом илом дне видно большое количество следов от тяжелых металлическых подошв персонала станции. ]];
 
};
 
 
atl_intersect_phone = obj {
 
    nam = "Телефон";
 
    dsc = [[На одной из стен укреплен {телефонный аппарат} в герметичном контейнере. ]];
 
    act = [[Вам незачем кому-то звонить. ]];
 
};
 
 
atl_intersect_suit = obj {
 
    nam = "Скафандр";
 
    dsc = [[В углу стоит {скафандр}. ]];
 
    act = [[Сейчас нет смысла это делать. ]];
 
}
 
 
atl_aqua_corridor_b = room {
 
	nam = "Атлантида, Аква, коридор B";
 
	dsc = [[Широкий коридор, заполненный ярким светом электрических ламп. В одном конце коридора расположена шлюзовая дверь, ведущая в основной коридор секции _"Аква"_. По бокам коридора находятся еще несколько дверей, ведущих в другие помещения секции: гостевые доки A, B и С. ]];
 
	way = {
 
		kh_vroom("В гостевой док A", function()
 
			if (atl_lev_state == 0) then
 
				pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
				return false;
 
			elseif (atl_lev_state == 1) then
 
				return "atl_lev_radcliffe_dlg";
 
			else
 
				return "atl_aqua_leviathan_dock";
 
			end;
 
		end);
 
		kh_vroom("В гостевой док B", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В гостевой док C", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В главный коридор", "atl_aqua_main_corridor");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
		"atl_nih_tubes_aqua_b"
 
	};
 
};
 
 
atl_aqua_leviathan_dock = room {
 
	var {
 
		visited = false;
 
	};
 
	nam = "Атлантида, Аква, гостевой док A";
 
	enter = function(s)
 
		if (not s.visited) then
 
			s.visited = true;
 
			walk(atlantis_intro_dock);
 
		end;
 
		if (atl_iyh_state == 8) then
 
			atl_iyh_state = 9;
 
			if (atl_iof_learr_dead) then
 
				walk('iyh_outro_aikerjarr');
 
			else
 
				walk('iyh_outro_learr');
 
			end;
 
		end;
 
	end;
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Левиафан. Под потолком, на высоте примерно в пять метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Снизу, под водой, огромный люк закрывает доступ внутрь дока. Несколько легких подвижных мостиков находятся на поверхности воды. ]];
 
	view = [[Левиафан находится в просторном доке. Под потолком на высоте пяти метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Внизу расположен закрытый люк, закрывающий вам путь наружу. ]];
 
	way = {
 
		kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
	};
 
}; 
 
 
atl_aqua_nautilus_dock = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Под потолком, на высоте примерно в пять метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Снизу, под водой, огромный люк закрывает доступ внутрь дока. Несколько легких подвижных мостиков находятся на поверхности воды. ]];
 
	way = {
 
		kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
	};
 
	obj = {
 
		"char_page"
 
	};
 
};
 
 
atl_aqua_corridor_a = room {
 
	nam = "Атлантида, Аква, коридор A";
 
	dsc = [[Широкий коридор, заполненный ярким светом электрических ламп. В одном конце коридора расположена шлюзовая дверь, ведущая в основной коридор секции _"Аква"_. По бокам коридора находятся еще несколько дверей, ведущих к докам. ]];
 
	way = {
 
		kh_vroom("В док \"Надежды\"", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В док \"Энтерпрайза\"", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В док \"Наутилуса\"", function()
 
			if (atl_lfc_state == 2) then
 
				return "atl_lfc_dock_s";
 
			else
 
				return "atl_aqua_nautilus_dock";
 
			end;
 
		end);
 
		kh_vroom("В главный коридор", "atl_aqua_main_corridor");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
		"atl_nih_tubes_aqua_a"
 
	};
 
};
 
 
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"
 
	};
 
};
 
 
atl_intersection_aqua_dom = room {
 
	nam = "Атлантида, межсекционный коридор";
 
	dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
	way = {
 
		kh_vroom("В секцию \"Аква\"", "atl_aqua_main_corridor");
 
		kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_aqua");
 
	};
 
	obj = {
 
		"atl_illuminator",
 
        "atl_intersect_phone",
 
        "atl_intersect_suit"      
 
	};
 
};
 
 
atl_dom_main_near_aqua = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию \"Аква\"";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами расположен шлюз, ведущий в соседнюю секцию. ]];
 
	way = {
 
		kh_vroom("В секцию \"Аква\"", "atl_intersection_aqua_dom");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_adm");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_near_a");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		-- TODO добавить скамейки, табличку секции Аква
 
		"atl_nih_tubes_near_aqua"
 
	};
 
};
 
 
atl_dom_main_near_a = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в коридор А";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Вы находитесь в северной части зала. Рядом с вами расположен шлюз, ведущий в коридор А. ]];
 
	way = {
 
		kh_vroom("В коридор A", "atl_dom_corridor_a");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_aqua");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_near_luna");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		-- TODO добавить табличку
 
		"atl_nih_panel_near_a"
 
	};
 
};
 
 
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");
 
		
 
	};
 
	obj = {
 
		-- TODO добавить скамейки
 
	};
 
};
 
 
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 = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в кабинет администратора. ]];
 
	way = {
 
		kh_vroom("В кабинет администратора", "atl_dom_administator_room");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_arctos");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_near_aqua");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		-- TODO добавить скамейки, воздуховоды
 
		"atl_nih_panel_near_admin"
 
	};
 
};
 
 
atl_dom_main_near_luna = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию \"Луна\"";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса.Рядом с вами находится шлюз, ведущий в секцию "Луна". ]];
 
	way = {
 
		kh_vroom("В секцию \"Луна\"", "atl_intersection_luna_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
	};
 
	obj = {
 
		"atl_nih_panel_near_luna"
 
	};
 
};
 
 
atl_dom_main_near_oculus = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию \"Окулус\"";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Окулус". ]];
 
	way = {
 
		kh_vroom("В секцию \"Окулус\"", "atl_intersection_oculus_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_oculus"
 
	};
 
};
 
 
atl_dom_main_near_terra = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию \"Терра\"";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Терра". ]];
 
	way = {
 
		kh_vroom("В секцию \"Терра\"", "atl_intersection_terra_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_terra"
 
	};
 
};
 
 
atl_dom_main_near_arctos = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в секцию \"Арктос\"";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Арктос". ]];
 
	way = {
 
		kh_vroom("В секцию \"Арктос\"", "atl_intersection_arctos_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
	};
 
	obj = {
 
		"atl_nih_tubes_near_arctos"
 
	};
 
};
 
 
atl_dom_corridor_a = room {
 
	nam = "Атлантида, Доминус, коридор A";
 
	dsc = [[Просторный коридор, расположенный в западном крыле секции Доминус, заполнен ярким светом электрических ламп. В одном конце коридора расположена дверь, ведущая в главный зал. Две другие ведут в оружейную и кабинет начальника службы безопасности. ]];
 
	way = {
 
		kh_vroom("В кабинет начальника СБ", "atl_dom_security_office");
 
		kh_vroom("В оружейную", function()
 
			pr("Люк наглухо задраен и опечатан. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В центральный зал", "atl_dom_main_near_a");
 
	};
 
};
 
 
atl_dom_security_office = room {
 
	nam = "Атлантида, Доминус, кабинет начальника СБ";
 
	dsc = [[Спартанская обстановка кабинета начальника службы безопасности сразу бросается вам в глаза. небольшая комната почти пуста. Здесь нет ничего кроме массивного металлического стола в центре и двух кресел по разные стороны его. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_dom_corridor_a");
 
	};
 
	obj = {
 
		'char_darkstar'
 
	};
 
};
 
 
atl_dom_administator_room = room {
 
	nam = "Атлантида, Доминус, кабинет администратора";
 
	dsc = [[Кабинет администратора представляет собой небольшую комнату. Вдоль стен установлено несколько шкафов с какими-то бумагами. В центре расположен металлический стол. 
 
	]];
 
	way = {
 
		kh_vroom("В центральный зал", "atl_dom_main_near_adm");
 
	};
 
	obj = {
 
		'char_moreau'
 
	};
 
};
 
 
atl_intersection_luna_dom = room {
 
	nam = "Атлантида, межсекционный коридор";
 
	dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
	way = {
 
		kh_vroom("В секцию \"Луна\"", "atl_luna_main_corridor");
 
		kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_luna");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
        "atl_intersect_phone",
 
        "atl_intersect_suit"      
 
	};
 
};
 
 
atl_intersection_arctos_dom = room {
 
	nam = "Атлантида, межсекционный коридор";
 
	dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
	way = {
 
		kh_vroom("В секцию \"Арктос\"", "atl_arctos_main_corridor");
 
		kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_arctos");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
        "atl_intersect_phone",
 
        "atl_intersect_suit"  
 
	};
 
};
 
 
atl_luna_main_corridor = room {
 
    var {
 
        state = 0;
 
    };
 
	nam = "Атлантида, Луна, главный коридор";
 
	dsc = [[Узкий длинный коридор c дверьми, ведущими в комнаты персонала, по сторонам. Яркий свет электрических ламп заполняет помещение. ]];
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (where(char_jack_wright_atlantis) == atl_luna_jack_room) then
 
                path("В комнату Джека"):enable();
 
            end;
 
        end;
 
    end;
 
	way = {
 
		kh_vroom("В вашу комнату", "atl_luna_drake_room");
 
        kh_vroom("В комнату Джека", "atl_luna_jack_room"):disable();
 
		kh_vroom("В общую комнату", "atl_luna_common_room");
 
		kh_vroom("В секцию \"Доминус\"", "atl_intersection_luna_dom");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
		"atl_nih_tubes_luna"
 
	};
 
};
 
 
atl_luna_jack_room = room {
 
    nam = "Атлантида, Луна, комната Джека";
 
    dsc = [[небольшая уютная комната, расчитанная на двух человек. ]];
 
    way = {
 
        kh_vroom("В главный коридор", "atl_luna_main_corridor");
 
    };
 
    obj = {
 
        "atl_illuminators"
 
    };
 
};
 
 
atl_luna_drake_room = room {
 
	nam = "Атлантида, Луна, ваша комната";
 
	dsc = [[Небольшая, но уютная комната, выделенная вам на Атлантиде. Хотя она расчитана на двух человек, пока нет необходимости расселять людей по двое. ]];
 
	way = {
 
		kh_vroom("В главный коридор", "atl_luna_main_corridor");
 
	};
 
	obj = {
 
		"atl_illuminators"
 
	};
 
};
 
 
atl_arctos_main_corridor = room {
 
	nam = "Атлантида, Арктос, главный коридор";
 
	dsc = [[Узкий длинный коридор c дверьми, ведущими в комнаты персонала, по сторонам. Яркий свет электрических ламп заполняет помещение. ]];
 
	way = {
 
		kh_vroom("В комнату Голдмана", "atl_arctos_goldmans_room");
 
		kh_vroom("В комнату Джонса", "atl_arctos_jones_room");
 
	 	kh_vroom("В общую комнату", "atl_arctos_common_room");
 
		kh_vroom("В секцию \"Доминус\"", "atl_intersection_arctos_dom");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
		"atl_nih_tubes_arctos"
 
	};
 
};
 
 
atl_arctos_goldmans_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
	obj = {
 
		"char_goldman"
 
	};
 
};
 
 
atl_arctos_jones_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
	obj = {
 
		"char_jones"
 
	};
 
};
 
 
atl_luna_common_room = room {
 
	nam = "Атлантида, Луна, общая комната";
 
	dsc = [[Средних размеров комната с массивным металлическим столом в центре. Вокруг него расположено несколько стульев. ]];
 
	way = {
 
		kh_vroom("В главный коридор", "atl_luna_main_corridor");
 
	};
 
	obj = {
 
		"atl_illuminators"
 
	};
 
};
 
 
atl_arctos_common_room = room {
 
	nam = "Атлантида, Луна, общая комната";
 
	dsc = [[Средних размеров комната с массивным металлическим столом в центре. Вокруг него расположено несколько стульев. ]];
 
	way = {
 
		kh_vroom("В главный коридор", "atl_arctos_main_corridor");
 
	};
 
	obj = {
 
		"atl_illuminators"
 
	};
 
};
 
 
atl_intersection_terra_dom = room {
 
	nam = "Атлантида, межсекционный коридор";
 
	dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
	way = {
 
		kh_vroom("В секцию \"Терра\"", "atl_terra_main_corridor");
 
		kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_terra");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
        "atl_intersect_phone",
 
        "atl_intersect_suit" 
 
	};
 
};
 
 
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"
 
	};
 
};
 
 
atl_terra_workshop_a = room {
 
	nam = "Атлантида, мастерская А";
 
	dsc = [[Просторное помещение, выделенное для производства и сборки различных машин под нужды Атлантиды. Вдоль стен расположены шкафы с инструментами, около входа составлено несколько ящиков с материалами. По всей комнате установлены верстаки, различные станки и другое оборудование. Под потолком видно большое количество вентиляционных решеток. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
		"char_michael_wright"
 
	};
 
};
 
 
atl_terra_workshop_b = room {
 
	nam = "Атлантида, мастерская B";
 
	dsc = [[Просторное помещение, выделенное для производства и сборки различных машин под нужды Атлантиды. Вдоль стен расположены шкафы с инструментами, около входа составлено несколько ящиков с материалами. По всей комнате установлены верстаки, различные станки и другое оборудование. Под потолком видно большое количество вентиляционных решеток. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
		"char_radcliffe_atlantis"
 
	};
 
};
 
 
atl_terra_workshop_c = room {
 
	nam = "Атлантида, мастерская C";
 
	dsc = [[Просторное помещение, выделенное для производства и сборки различных машин под нужды Атлантиды. Вдоль стен расположены шкафы с инструментами, около входа составлено несколько ящиков с материалами. По всей комнате установлены верстаки, различные станки и другое оборудование. Под потолком видно большое количество вентиляционных решеток. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
		"char_leroy"
 
	};
 
};
 
 
atl_terra_workshop_d = room {
 
	nam = "Атлантида, мастерская D";
 
	dsc = [[Просторное помещение, выделенное для производства и сборки различных машин под нужды Атлантиды. Вдоль стен расположены шкафы с инструментами, около входа составлено несколько ящиков с материалами. По всей комнате установлены верстаки, различные станки и другое оборудование. Под потолком видно большое количество вентиляционных решеток. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
};
 
 
atl_intersection_oculus_dom = room {
 
	nam = "Атлантида, межсекционный коридор";
 
	dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
	way = {
 
		kh_vroom("В секцию \"Окулус\"", "atl_oculus_main_corridor");
 
		kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_oculus");
 
	};
 
	obj = {
 
		"atl_illuminators",
 
        "atl_intersect_phone",
 
        "atl_intersect_suit"  
 
	};
 
};
 
 
atl_oculus_main_corridor = room {
 
	var {
 
		first_visit = true;
 
	};
 
	nam = "Атлантида, Окулус, главный коридор";
 
    dsc = [[Широкий просторный коридор, по обе стороны которого расположены двери, ведущие в лаборатории. В конце коридора находится дверь, ведущая в одну из технических секций станции. ]];
 
	enter = function(s)
 
		if (s.first_visit) then
 
			s.first_visit = false;
 
			walkin("atlantis_learr_intro");
 
		end;
 
	end;
 
	way = {
 
		kh_vroom("В лабораторию A", "atl_oculus_lab_a");
 
		kh_vroom("В лабораторию B", "atl_oculus_lab_b");
 
		kh_vroom("В лабораторию C", "atl_oculus_lab_c");
 
		kh_vroom("В библиотеку", "atl_oculus_library");
 
		kh_vroom("В секцию Аэрис", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В секцию Доминус", "atl_intersection_oculus_dom");
 
	};
 
	obj = {
 
		"atl_nih_panel_oculus"
 
	};
 
};
 
 
atl_oculus_lab_a = room {
 
	nam = "Атлантида, Окулус, лаборатория A";
 
	dsc = [[Просторное помещение уставлено множеством столов, шкафов и различных приборов. Вдоль стен над столами расположены многочисленные решетки вентиляции. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_oculus_main_corridor");
 
	};
 
	obj = {
 
		"char_svetlova"
 
	};
 
};
 
 
atl_oculus_lab_b = room {
 
	nam = "Атлантида, Окулус, лаборатория B";
 
	dsc = [[Просторное помещение уставлено множеством столов, шкафов и различных приборов. Вдоль стен над столами расположены многочисленные решетки вентиляции. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_oculus_main_corridor");
 
	};
 
	obj = {
 
		"char_winterlight"
 
	};
 
};
 
 
atl_oculus_lab_c = room {
 
	nam = "Атлантида, Окулус, лаборатория C";
 
	dsc = [[Просторное помещение уставлено множеством столов, шкафов и различных приборов. Вдоль стен над столами расположены многочисленные решетки вентиляции. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_oculus_main_corridor");
 
	};
 
	obj = {
 
		"char_ryveerr",
 
		"char_anna_atlantis",
 
		"char_evans"
 
	};
 
};
 
 
atl_oculus_library = room {
 
	nam = "Атлантида, Окулус, библиотека";
 
	dsc = [[Рядом со входом в библиотеку расположен небольшой столик, на котором покоится каталог. Практически все пространство комнаты занято высокими стеллажами, заполненными книгами, журналами и документами. ]];
 
	way = {
 
		kh_vroom("В коридор", "atl_oculus_main_corridor");
 
	};
 
    obj = {
 
        "char_legrand"
 
    };
 
};
 
 
atl_dom_lift = room {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Атлантида, лифт";
 
	dsc = [[Герметичная кабина лифта, рассчитанная на 5-6 человек. ]];
 
	way = {
 
		kh_vroom("Выйти", function()
 
			if (atl_dom_lift.state == 0) then
 
				return "atl_dom_main_c";
 
			else
 
				return "atl_ignis_main_center";
 
			end;
 
		end);
 
	};
 
	obj = {
 
		"atl_lift_lever"
 
	};
 
};
 
 
atl_lift_lever = obj {
 
	nam = "Рычаг";
 
	dsc = [[На стене укреплен массивный {рычаг}, повернув который, вы приведете в движение механизм лифта. ]];
 
	act = function(s)
 
		if (atl_dom_lift.state == 1) then
 
			atl_dom_lift.state = 0;
 
			return [[Вы поворачиваете рычаг и слышите грохот механизмов, плавно опускающих кабину лифта. ]];
 
		else
 
			atl_dom_lift.state = 1;
 
			return [[Вы поворачиваете рычаг и слышите грохот механизмов, плавно поднимающих кабину лифта. ]];
 
		end;
 
	end;
 
};
 
 
--[[
 
Персонажи
 
]]
 
 
char_darkstar = npc {
 
    var {
 
        drake_asked = 0;
 
        black_asked = 0;
 
        darkstar_asked = 0;
 
        svetlova_asked = 0;
 
        moreau_asked = 0;
 
        wright_asked = 0;
 
        leroy_asked = 0;
 
        jones_asked = 0;
 
        goldman_asked = 0;
 
        atlantis_asked = 0;
 
        navjiarr_asked = 0;
 
        learr_asked = 0;
 
        ryveerr_asked = 0;
 
        aikerjarr_asked = 0;
 
    };
 
	nam = "Винсент Даркстар";
 
	dsc = function(s)
 
        if (char_darkstar_dlg == 0) then
 
            return [[В одном из кресел сидит средних лет {мужчина} с короткими черными волосами. Он одет в строгий деловой костюм черного цвета. Лицо его гладко выбрито. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
        else
 
            return [[В одном из кресел сидит {Винсент Даркстар}. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
        end;
 
    end;   
 
	dlg = "char_darkstar_dlg";
 
};
 
 
char_moreau = npc {
 
    var {
 
        drake_asked = 0;
 
        black_asked = 0;
 
        darkstar_asked = 0;
 
        svetlova_asked = 0;
 
        moreau_asked = 0;
 
        wright_asked = 0;
 
        leroy_asked = 0;
 
        jones_asked = 0;
 
        goldman_asked = 0;
 
        atlantis_asked = 0;
 
        navjiarr_asked = 0;
 
        learr_asked = 0;
 
        ryveerr_asked = 0;
 
        aikerjarr_asked = 0;
 
    };
 
	nam = "Фредерик Моро";
 
	dsc = function(s)
 
        if (char_moreau_dlg.state == 0) then
 
            return [[За столом в кресле сидит немолодой {мужчина}. Кудрявые седые волосы обрамляют его лицо. Он носит длинные седые усы. Одет человек в строгий деловой костюм бежевого цвета. Его серые глаза, скрытые очками, внимательно рассматривают вас. В руках он вертит перо. ]];
 
        else
 
            return [[За столом в кресле сидит {Фредерик Моро} и внимательно наблюдает за вами сквозь стекла очков. В руках он вертит перо. ]];
 
        end;
 
    end;   
 
	dlg = "char_moreau_dlg";
 
};
 
 
char_svetlova = npc {
 
    var {
 
        drake_asked = 0;
 
        black_asked = 0;
 
        darkstar_asked = 0;
 
        svetlova_asked = 0;
 
        moreau_asked = 0;
 
        wright_asked = 0;
 
        leroy_asked = 0;
 
        jones_asked = 0;
 
        goldman_asked = 0;
 
        atlantis_asked = 0;
 
        navjiarr_asked = 0;
 
        learr_asked = 0;
 
        ryveerr_asked = 0;
 
        aikerjarr_asked = 0;
 
    };
 
	nam = "Екатерина Светлова";
 
	dsc = function(s)
 
        if (char_svetlova_dlg.state == 0) then   
 
            return [[За столом сидит {женщина} лет сорока-пяти. Золотистые волосы собраны в пучок на затылке. Она одета в простое синее платье. В правой руке она держит карандаш, которым периодически делает пометки в бумагах, лежащих на столе. Кажется, она не обращает на вас никакого внимания. ]];
 
        else
 
            return [[За столом сидит {Екатерина Светлова}. Периодически она делает какие-то пометки карандашом в ]];
 
        end;
 
    end;
 
	dlg = "char_svetlova_dlg";
 
};
 
 
char_anna_atlantis = npc {
 
	nam = "Анна Рэдклифф";
 
	disp = "Анна Рэдклифф";
 
	dsc = function(s)
 
		if (where(char_learr_atlantis) ~= atl_oculus_lab_c) then
 
            if (char_anna_atlantis_dlg.state == 0) then
 
                return [[{Девушка} лет двадцати-пяти--тридцати внимательно слушает навьяра, иногда что-то спрашивая. ]];
 
            else
 
			    return [[{Анна Рэдклифф} внимательно слушает навьяра, иногда что-то спрашивая. ]];
 
            end;         
 
		else
 
            if (char_anna_atlantis_dlg.state == 0) then      
 
                return [[{Девушка} лет тридцати внимательно слушает навьяров, иногда что-то спрашивая. ]];
 
            else
 
			    return [[{Анна Рэдклифф} внимательно слушает навьяров, иногда что-то спрашивая. ]];
 
            end;         
 
		end;
 
	end;
 
	dlg = "char_anna_atlantis_dlg";
 
};
 
 
char_learr_atlantis = npc {
 
	var {
 
		offended = false;
 
	};
 
	nam = "Леарр";
 
	dsc = function(s)
 
        if (stead.deref(here()) == "atl_oculus_library") then
 
            return [[{Леарр} сидит за одним из столов, листая какую-то книгу. ]];
 
        else
 
            if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
                return [[{Леарр} стоит перед иллюминатором и что-то рассказывает ]];
 
            else
 
                return [[{Леарр} стоит перед иллюминатором и смотрит вдаль. ]];
 
            end;
 
        end;
 
	end;
 
	dlg = "char_learr_atlantis_dlg";
 
};
 
 
char_aikerjarr = npc {
 
	nam = "Аикерьярр";
 
	dsc = function(s)
 
        if (char_aikerjarr_dlg.state == 0) then
 
            return [[У одного из столов неподвижно стоит {навьяр}. ]];
 
        else
 
		    return [[У одного из столов неподвижно стоит {Аикерьярр}. ]];
 
        end;      
 
	end;
 
	dlg = "char_aikerjarr_dlg";
 
};
 
 
char_ryveerr = npc {
 
	nam = "Ривеерр";
 
	dsc = function(s)
 
		if (where(char_learr_atlantis) ~= atl_oculus_lab_c) then
 
            if (char_ryveerr_dlg.state == 0) then
 
			    return [[У одного из столов стоит {навьяр} и что-то рассказывает. ]];
 
            else
 
                return [[У одного из столов стоит {Ривеерр} и что-то рассказывает. ]];
 
            end;         
 
		else
 
            if (char_ryveerr_dlg.state == 0) then
 
			    return [[Рядом стоит {навьяр} и иногда прерывает рассказ Леарр, добавляя что-то. ]];
 
            else
 
                return [[Рядом стоит {Ривеерр} и иногда прерывает рассказ Леарр, добавляя что-то. ]];
 
            end;
 
		end;
 
	end;
 
	dlg = "char_ryveerr_dlg";
 
};
 
 
char_evans = npc {
 
	nam = "Кристиан Эванс";
 
	dsc = function(s)
 
		if (char_evans_dlg.state == 0) then
 
            return [[Там же стоит пожилой {мужчина} с блокнотом и делает какие-то записи. ]];
 
        else
 
            return [[Там же стоит {Кристиан Эванс} с блокнотом и делает какие-то записи. ]];
 
        end;
 
	end;
 
	dlg = "char_evans_dlg";
 
};
 
 
char_winterlight = npc {
 
	nam = "Сильвия Уинтерлайт";
 
	dsc = function(s)
 
        if (char_winterlight_dlg.state == 0) then
 
            return [[{Женщина} лет тридцати-пяти--сорока стоит, склонишись над картой. Длинные темные волосы спадают на плечи. Она одета в длинную черную юбку и серую блузку. Ее зеленые глаза внимательно изучают документ, лежащий перед ней. ]];
 
        else
 
            return [[{Сильвия Уинтерлайт} стоит возле одного из столов, рассматривая карту. ]];
 
        end;
 
    end;   
 
	dlg = "char_winterlight_dlg";
 
};
 
 
char_jack_wright_atlantis = npc {
 
	nam = "Джек Райт";
 
	dsc = function(s)
 
		if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
        if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
			return [[{Джеку Райт}, стоящему рядом. ]];
 
		else 
 
			return [[{Джеком}. ]];
 
			return [[{Джек Райт} лежит на койке, листая какую-то книгу. Рядом лежит блокнот, в котором он время от времени он делает пометки карандашом. ]];
 
		end;
 
	end;
 
	dlg = "char_jack_wright_atlantis_dlg";
 
};
 
 
char_michael_wright = npc {
 
	nam = "Майкл Райт";
 
    var {
 
        drake_asked = 0;
 
        black_asked = 0;
 
        darkstar_asked = 0;
 
        svetlova_asked = 0;
 
        moreau_asked = 0;
 
        wright_asked = 0;
 
        leroy_asked = 0;
 
        jones_asked = 0;
 
        goldman_asked = 0;
 
        atlantis_asked = 0;
 
        navjiarr_asked = 0;
 
        learr_asked = 0;
 
        ryveerr_asked = 0;
 
        aikerjarr_asked = 0;
 
        jack_asked = 0;
 
    };   
 
	dsc = function(s)
 
        if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
            return [[{Майкл Райт} оживленно беседует о чем-то с ]];
 
        else
 
            return [[{Майкл Райт} просматривает какие-то чертежи. ]];
 
        end;
 
        return [[{Майкл Райт} просматривает какие-то чертежи. ]];
 
    end;
 
	dlg = "char_michael_wright_dlg";
 
};
 
 
char_legrand = npc {
 
	nam = "Мари Легран";
 
	dsc = function(s)
 
        if (char_legrand_dlg.state == 0) then
 
            return [[На стуле в углу сидит {женщина} лет сорока--сорока-пяти и листает какую-то книгу.]];
 
        else
 
            return [[На стуле в углу сидит {Мари Легран} и листает какую-то книгу. ]];
 
        end;   
 
    end;   
 
	dlg = "char_legrand_dlg";
 
};
 
 
char_radcliffe_atlantis = npc {
 
	nam = "Уолтер Рэдклифф";
 
	dsc = function(s)
 
        if (char_radcliffe_atlantis_dlg.state == 0) then
 
            return [[{Человек} лет пятидесяти стоит, навалившись на стену. ]];
 
        else
 
            return [[{Уолтер Рэдклифф} стоит, навалившись на стену. ]];
 
        end;
 
    end;
 
	dlg = "char_radcliffe_atlantis_dlg";
 
};
 
 
char_page = npc {
 
	nam = "Фрэнсис Пейдж";
 
	dsc = function(s)
 
        if (char_page_dlg.state == 0) then
 
            return [[Пожилой {мужчина} в рабочей одежде осматривает Наутилус. ]];
 
        else
 
            return [[{Фрэнсис Пейдж} осматривает Наутилус. ]];
 
        end;   
 
    end;   
 
	dlg = "char_page_dlg";
 
};
 
 
char_leroy = npc {
 
	nam = "Мишель Леруа";
 
	dsc = function(s)
 
        if (char_leroy_dlg.state == 0) then
 
            return [[{Мужчина} лет пятидесяти работает над каким-то чертежом. ]];
 
        else
 
            return [[{Мишель Леруа} работает над каким-то чертежом. ]];
 
        end;
 
    end;   
 
    dlg = "char_leroy_dlg";   
 
};
 
 
char_goldman = npc {
 
	nam = "Леонард Голдман";
 
	dsc = function(s)
 
        if (char_goldman_dlg.state == 0) then
 
            return [[На койке, закинув руки за голову, лежит светловолосый {мужчина} лет пятидесяти. ]];
 
        else
 
            return [[На койке, закинув руки за голову, лежит {Леонард Голдман}. ]];
 
        end;   
 
    end;   
 
	dlg = "char_goldman_dlg";
 
};
 
 
char_jones = npc {
 
	nam = "Чарли Джонс";
 
	dsc = function(s)
 
        if (char_jones_dlg.state == 0) then
 
            return [[Пожилой {человек}, одетый в простой серый костюм, сидит на койке и задумчиво вертит в руках карандаш. ]];
 
        else
 
            return [[{Чарли Джонс} сидит на койке и задумчиво вертит в руках карандаш. ]];
 
        end;
 
    end;
 
	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;
 
	};
 
end;
 
 
atl_nih_tubes_near_aqua = atl_nih_tubes_gen("atl_nih_tubes_near_aqua", [[Рядом со шлюзом из стены выходят несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_a = atl_nih_tubes_gen("atl_nih_tubes_near_a", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_admin = atl_nih_tubes_gen("atl_nih_tubes_near_admin", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_luna = atl_nih_tubes_gen("atl_nih_tubes_near_luna", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_oculus = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_terra = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_near_arctos = atl_nih_tubes_gen("atl_nih_tubes_near_arctos", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_oculus = atl_nih_tubes_gen("atl_nih_tubes_oculus", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_terra = atl_nih_tubes_gen("atl_nih_tubes_terra", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_luna = atl_nih_tubes_gen("atl_nih_tubes_luna", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_arctos = atl_nih_tubes_gen("atl_nih_tubes_arctos", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_aqua = atl_nih_tubes_gen("atl_nih_tubes_aqua", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_aqua_a = atl_nih_tubes_gen("atl_nih_tubes_aqua_a", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_tubes_aqua_b = atl_nih_tubes_gen("atl_nih_tubes_aqua_b", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
 
atl_nih_panel_near_a = obscured_obj("atl_nih_panel_near_a", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_near_a", true);
 
 
atl_nih_panel_near_admin = obscured_obj("atl_nih_panel_near_admin", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_near_admin", true);
 
 
atl_nih_panel_near_luna = obscured_obj("atl_nih_panel_near_luna", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_near_luna", true);
 
 
atl_nih_panel_oculus = obscured_obj("atl_nih_panel_oculus", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_oculus", true);
 
 
atl_nih_boxes_near_oculus = obscured_obj("atl_nih_boxes_near_oculus", [[За грудой {ящиков}, вы замечаете несколько труб подачи воздуха. ]], [[Вы сдвигаете несколько ящиков, открывая себе доступ к трубам. ]], "atl_nih_tubes_near_oculus", false, [[У стены расположена груда ящиков. ]], [[Вам незачем что-то еще здесь делать. ]]);
 
 
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_tubes_near_aqua:disable();
 
atl_nih_panel_near_a:disable();
 
atl_nih_panel_near_admin:disable();
 
atl_nih_panel_near_luna:disable();
 
atl_nih_boxes_near_oculus:disable();
 
atl_nih_boxes_near_terra:disable();
 
atl_nih_tubes_near_arctos:disable();
 
atl_nih_panel_oculus:disable();
 
atl_nih_boxes_terra:disable();
 
atl_nih_tubes_luna:disable();
 
atl_nih_tubes_arctos:disable();
 
atl_nih_tubes_aqua:disable();
 
atl_nih_tubes_aqua_a:disable();
 
atl_nih_tubes_aqua_b:disable();
 
 
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;
 
end;
 
\ No newline at end of file
atlantis_ignis_on_fire.lua
Show inline comments
 
atlantis_learr_intro = room {
 
	nam = "Атлантида, Окулус, Главный коридор";
 
	dsc = [[Вы выходите из межсекционного коридора в главный коридор секции _"Окулус"_ и сталкиваетесь лицом к лицу с неведомым существом: ^стройное, покрытое блестящей серо-зеленой чешуей тело, рыбья голова с небольшими отростками-плавниками, тонкие ноги и руки с широкими перепонками между длинными пальцами. Ярко-оранжевые глаза существа с интересом разглядывают вас. Во рту существа сверкают острые треугольные зубы. Одето оно в белую рубашку и ярко-синюю юбку до колен. На шее существа вы замечаете жабры. Отростки на голове существа принимают слабо уловимый сине-зеленый оттенок. ]];
 
	obj = {
 
		vway('continue', '{Продолжить}', 'atlantis_learr_first_dlg')
 
	};
 
};
 
 
atlantis_learr_first_dlg = dlg {
 
	nam = "Леарр";
 
	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 [[
 
            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. Я на-Атлантиде-жживу-ссейчасс".]]};
 
		{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"); ]]};
 
	};
 
};
 
 
char_wright_iof = obj {
 
	nam = "Джек Райт";
 
	dsc = function(s) 
 
		if (atl_iof_time_state.pl_safe) then
 
			if (atl_iof_time_state.carry_learr) then
 
				return [[{Джек Райт} облачен в скафандр и ждет ваших указаний. Леарр бессильно лежит на его руках. ]];
 
			else
 
				return [[{Джек Райт} облачен в скафандр и ждет ваших указаний. ]];
 
			end;
 
		else
 
			if (atl_iof_time_state.life_left > 3) then
 
				return [[{Джек Райт} ждет ваших указаний. ]];
 
			else
 
				return [[{Джек Райт} с трудом стоит на ногах. ]];
 
			end;
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl) and where(pl).iof) then
 
			move(s, where(pl));
 
		end;
 
	end;
 
	act = function(s)
 
		return [[
 
			Некогда разговаривать. 
 
		]];
 
	end;
 
};
 
 
char_learr_faint = obj {
 
	nam = "Леарр";
 
	inv = [[На руках вы держите Леарр. Она дышит очень слабо. Вам нужно поторопиться, если вы не хотите, чтобы она умерла. ]];
 
	life = function(s)
 
		if (rnd(12) > 11) then
 
			pr([[Вы чувствуете слабое дыхание Леарр, лежащей у вас на руках. ]]);
 
		end;
 
	end;
 
};
 
 
char_learr_iof = obj {
 
	var {
 
		faint = false;
 
	};
 
	nam = "Леарр";
 
	dsc = function(s)
 
		if (s.faint) then
 
			return [[{Леарр} лежит на полу без сознания. ]];
 
		end;
 
		if (atl_iof_time_state.learr_safe) then
 
			return [[{Леарр} облачена в скафандр и ждет ваших указаний. ]];
 
		else
 
			if (atl_iof_time_state.life_left > 3) then
 
				return [[{Леарр} ждет ваших указаний. ]];
 
			else
 
				return [[{Леарр} с трудом стоит на ногах. ]];
 
			end;
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl) and where(pl).iof) then
 
			move(s, where(pl));
 
		end;
 
	end;
 
	act = function(s)
 
		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');
 
		else		
 
			return [[Некогда разговаривать. ]];
 
		end;
 
	end;
 
};
 
 
dlg_learr_suit = dlg {
 
	var {
 
		state = false;
 
	};
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = function(s)
 
		s.state = true;
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
		{"Я хочу, чтобы ты одела скафандр. ", [[Леарр недоуменно смотрит на вас: "Ззачем он мне? Ссама-я в-воде-дышшу. Мне не-нужжны вашши-пррисспоссобления". ]], code [[
 
			psub('tag1');
 
		]]};
 
		{"Мы сейчас наденем скафандры. Продолжай следовать за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag1"};
 
		{"Не спорь, полезай внутрь. ", [[Леарр все еще не понимает: "Я в-этой-шштуке-двигатьсся-не-ссмогу". ]], code [[
 
			psub('tag2');
 
		]]};
 
		{"Ладно, обойдемся без этого, просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag2"};
 
		{"Хорошо Просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{"Эта штука защитит тебя от жара. И тебе будет легче дышать, пока мы не выбрались. ", [[Леарр кивает: "Хорошо. Я по-вашему-сделаю". Вы помогаете навьярессе забраться в скафандр и надеваете на нее шлем. ]], code [[
 
			atl_iof_time_state.learr_safe = true;
 
			back();
 
		]]};
 
	};
 
};
 
 
dlg_learr_iof = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = [[Леарр подбегает к вам и спрашивает: "Что происходит?" ]];
 
	phr = {
 
		{'Надеюсь, все в порядке, следуй за мной', [[Леарр молча кивает. ]], code [[
 
			lifeon('char_learr_iof');
 
			char_learr_iof.state = 1;
 
			walk('atl_iof_ignis_hall_a');
 
		]]};
 
		{'Такое уже происходило?', [[Леарр пожимает плечами: "Я не-видела". ]]};
 
	};
 
};
 
 
atl_iof_intro = room {
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	dsc = [[Внезапно свет в зале гаснет и вы оказываетесь в полной темноте. Вскоре вы начинаете ощущать запах дыма, проникающего из вентиляционных отверстий. Леарр кажется очень удивленной. В темноте вы видите слабое свечение цветных полос, бегущих по ее головным плавникам: пурпурная, зеленая, серая, -- тонкая, едва заметная, голубая, зеленая, ярко-розовая, снова серая -- на этот раз заметно толще, оранжевая, желтая, желто-зеленая и снова оранжевая. Цвета сменяют друг-друга за несколько мгновений и вы с трудом успеваете различить их все.]];
 
	obj = {
 
		vobj('Продолжить','{Продолжить}', 'dlg_learr_iof');
 
	};
 
};
 
 
atl_iof_ignis_hall_a = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	dsc = [[Средних размеров прямоугольный зал. Из вентиляционных отверстий выплывают тонкие струйки дыма. ]];
 
	entered = function(s)
 
		if (not s.ready) then
 
			s.ready = true;
 
			lifeon('char_learr_iof');
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				atl_iof_time_state.wright_here = true;
 
				if (where(char_jack_wright_atlantis) == atlantis_ignis_hall_a) then
 
					lifeon('char_wright_iof');
 
				end;
 
			else
 
				atl_iof_time_state.wright_here = false;
 
			end;
 
 
		end;
 
	end;
 
	obj = {
 
		'char_learr_iof'
 
	};
 
	way = {
 
		vroom("В коридор",'atl_iof_main_n3');
 
	};
 
};
 
 
atl_iof_blocked_by_fire = function() 
 
	pr("Огонь преграждает вам путь");
 
	return false;
 
end;
 
 
atl_iof_blocked_by_rubble = function() 
 
	pr("Обломки обрушившихся стеллажей преграждают вам путь");
 
	return false;
 
end;
 
 
atl_iof_time_state = obj {
 
	nam = 'atl_iof_time_state';
 
	var {
 
		life_left = 6;
 
		pl_safe = false;
 
		learr_safe = false;
 
		wright_here = false;
 
		carry_learr = false;
 
	};
 
	life = function(s)
 
		if (not where(pl).iof) then 
 
			return;
 
		end;
 
		s.life_left = s.life_left - 1;
 
		if (s.life_left == 5) then
 
			if (not s.pl_safe) then 
 
				pr("Вы чувствуете жар");
 
			end;
 
		elseif (s.life_left == 4) then
 
			if (s.wright_here and not s.pl_safe and where(char_wright_iof) == where(pl)) then 
 
				pr("Джек утирает пот со лба");
 
			end;
 
		elseif (s.life_left == 3) then
 
			if (not s.learr_safe) then
 
				pr("Леарр тяжело дышит");
 
			end;
 
		elseif (s.life_left == 2) then
 
			if (not s.pl_safe) then 
 
				pr("Вам трудно дышать, жар становится нестерпимым");
 
			end;
 
		elseif (s.life_left == 1) then
 
			if (s.wright_here and not s.pl_safe and where(char_wright_iof) == where(pl)) then 
 
				pr("Джек с трудом следует за вами");
 
			end;
 
		elseif (s.life_left == 0) then
 
			if (not s.learr_safe) then
 
				pr("Леарр едва передвигает ногами");
 
			end;
 
		else
 
			lifeoff(s);
 
			lifeoff(char_learr_iof);
 
			if (not s.pl_safe) then
 
				walkin("game_over_ignis");
 
			elseif (s.wright_here) then
 
				walkin("atl_iof_learr_faint_wright");
 
			else
 
				walkin("atl_iof_learr_faint_alone");
 
			end;
 
		end;
 
	end;
 
};
 
 
atl_iof_learr_faint_alone = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". ]];
 
	phr = {
 
		{"Совсем немного осталось, пойдем. [Помочь Леарр подняться]", [[Леарр пытается подняться опираясь на вашу руку, но снова падает, теряя сознание. ]], code [[
 
			tag('faint');
 
		]]};
 
		{"Оставайся здесь, я вернусь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"Оставайся здесь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], 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(); 
 
		]]};
 
		{tag='faint'};
 
		{"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], 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_wright = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". Райт подходит к ней и пытается помочь ей подняться. ]];
 
	phr = {
 
		{"Все в порядке?", [[По радио вы слышите голос Райта: "Да, я помогу ей. Идем". Джек аккуратно берет Леарр на руки и идет к вам. ]], code [[ 
 
			remove(char_learr_iof, where(char_learr_iof));
 
			atl_iof_time_state.carry_learr = true;
 
			back();
 
		]]};
 
	};
 
};
 
 
atl_iof_wright_dlg = dlg {
 
	nam = "Джек Райт";
 
	disp = "Джек Райт";
 
	entered = [[Едва вы оказываетесь в главном зале, Джек Райт спрашивает: _"У вас все в порядке? Здесь все в огне. Здесь недалеко должно быть служебное помещение со скафандрами. Нам следует добраться до туда. Без них мы до выхода не дотянем"_. ]];
 
	phr = {
 
		{"А лифт?", [[Джек отрицательно качает головой: _"Без скафандров мы туда не попадем. К тому же, он наверняка отключен"_. ]]};
 
		{"Ты знаешь куда идти?", [[Джек неуверенно пожал плечами: _"Насколько я помню, совсем рядом если идти по часовой стрелке вдоль стены зала"_. ]], code [[
 
			psub('next');
 
		]]};
 
		{tag = "next"};
 
		{"Идем", [[Джек молча кивает. ]], code [[
 
			lifeon('char_wright_iof');
 
			back();
 
		]]};
 
	};
 
};
 
 
atl_iof_main_n3 = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, главный зал, вход в зал А";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал А";
 
	iof = true;
 
	dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северной части зала у самого его края. ]];
 
	enter = function(s) 
 
		if (not s.ready) then
 
			s.ready = true;
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				if (where(char_wright_iof) ~= s) then
 
					walkin("atl_iof_wright_dlg");
 
				end;
 
			end;
 
		else
 
			lifeon(atl_iof_time_state);
 
		end;
 
	end;
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_nw3");
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", "atl_iof_main_n2");
 
		kh_vroom("В зал А", "atl_iof_ignis_hall_a");
 
	};
 
};
 
 
atl_iof_main_n2 = room {
 
	nam = "Атлантида, Игнис, главный зал, север";
 
	disp = "Атлантида, Игнис, главный зал, север";
 
	iof = true;
 
 dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северной части зала. ]];   
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", "atl_iof_main_ne2");
 
		kh_vroom("К центру", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_n3");
 
	};
 
};
 
 
atl_iof_main_n1 = room {
 
	nam = "Атлантида, Игнис, главный зал, север, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, север, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к северу от лифта. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_nw1");
 
		kh_vroom("По часовой", "atl_iof_main_ne1");
 
		kh_vroom("В Лифт", function()
 
			pr("Лифт не работает");
 
			return false;
 
		end);
 
		kh_vroom("К краю", atl_iof_blocked_by_rubble);
 
	};
 
};
 
 
atl_iof_main_ne3 = room {
 
	nam = "Атлантида, Игнис, главный зал, вход в служебное помещение";
 
	disp = "Атлантида, Игнис, главный зал, вход в служебное помещение";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-восточной части зала у самого его края. Рядом с вами расположен вход в служебное помещение. ]];   
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", "atl_iof_main_se3");
 
		kh_vroom("К центру", "atl_iof_main_ne2");
 
		kh_vroom("В служебное помещение", "atl_iof_ignis_service_room");
 
	};
 
};
 
 
atl_iof_main_ne2 = room {
 
	nam = "Атлантида, Игнис, главный зал, северовосток";
 
	disp = "Атлантида, Игнис, главный зал, северовосток";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-восточной части зала. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_n2");
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_ne3");
 
	};
 
};
 
 
atl_iof_main_ne1 = room {
 
	nam = "Атлантида, Игнис, главный зал, северовосток, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, северовосток, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к северо-востоку от лифта. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_n1");
 
		kh_vroom("По часовой", "atl_iof_main_se1");
 
		kh_vroom("К краю", atl_iof_blocked_by_rubble);
 
	};
 
};
 
 
atl_iof_main_se3 = room {
 
	nam = "Атлантида, Игнис, главный зал, вход в зал B";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал B";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-восточной части зала у самого его края. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_ne3");
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", atl_iof_blocked_by_fire);
 
		kh_vroom("В зал B", function()
 
			pr("Дверь заклинило");
 
			return false;
 
		end);
 
	};
 
};
 
 
atl_iof_main_se2 = room {
 
	nam = "Атлантида, Игнис, главный зал, юговосточная часть";
 
	disp = "Атлантида, Игнис, главный зал, юговосточная часть";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-восточной части зала. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", "atl_iof_main_se1");
 
		kh_vroom("К краю", atl_iof_blocked_by_fire);
 
	};
 
};
 
 
atl_iof_main_se1 = room {
 
	nam = "Атлантида, Игнис, главный зал, юговосточная часть, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, юговосточная часть, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к юго-востоку от лифта. ]];      
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_ne1");
 
		kh_vroom("По часовой", "atl_iof_main_s1");
 
		kh_vroom("К краю", "atl_iof_main_se2");
 
	};
 
};
 
 
atl_iof_main_s3 = room {
 
	nam = "Атлантида, Игнис, главный зал, экстренный выход";
 
	disp = "Атлантида, Игнис, главный зал, экстренный выход";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в южной части зала у самого его края. Рядом с вами расположен шлюз экстренного выхода. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", "atl_iof_main_s2");
 
		kh_vroom("Выход", "atl_iof_outside");
 
	};
 
};
 
 
atl_iof_main_s2 = room {
 
	nam = "Атлантида, Игнис, главный зал, южная часть";
 
	disp = "Атлантида, Игнис, главный зал, южная часть";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в южной части зала. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", "atl_iof_main_s1");
 
		kh_vroom("К краю", "atl_iof_main_s3");
 
	};
 
};
 
 
atl_iof_main_s1 = room {
 
	nam = "Атлантида, Игнис, главный зал, южная часть, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, южная часть, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь югу от лифта. ]];      
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_se1");
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_s2");
 
	};
 
};
 
 
atl_iof_main_sw3 = room {
 
	nam = "Атлантида, Игнис, главный зал, вход в зал C";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал C";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-западной части зала у самого его края. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("По часовой", "atl_iof_main_nw3");
 
		kh_vroom("К центру", atl_iof_blocked_by_fire);
 
		kh_vroom("В зал C", function()
 
			pr("Дверь заклинило");
 
			return false;
 
		end);
 
	};
 
};
 
 
atl_iof_main_sw2 = room {
 
	nam = "Атлантида, Игнис, главный зал, югозападная часть";
 
	disp = "Атлантида, Игнис, главный зал, югозападная часть";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-западной части зала. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("По часовой", "atl_iof_main_nw2");
 
		kh_vroom("К центру", "atl_iof_main_sw1");
 
		kh_vroom("К краю", atl_iof_blocked_by_fire);
 
	};
 
};
 
 
atl_iof_main_sw1 = room {
 
	nam = "Атлантида, Игнис, главный зал, югозападная часть, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, югозападная часть, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к юго-западу от лифта. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", "atl_iof_main_nw1");
 
		kh_vroom("К краю", "atl_iof_main_sw2");
 
	};
 
};
 
 
atl_iof_main_nw3 = room {
 
	nam = "Атлантида, Игнис, главный зал, северозапад, внешний край";
 
	disp = "Атлантида, Игнис, главный зал, северозапад, внешний край";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-западной части зала у самого его края. ]];      
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_n3");
 
		kh_vroom("По часовой", "atl_iof_main_sw3");
 
		kh_vroom("К центру", "atl_iof_main_nw2");
 
	};
 
};
 
 
atl_iof_main_nw2 = room {
 
	nam = "Атлантида, Игнис, главный зал, северозапад";
 
	disp = "Атлантида, Игнис, главный зал, северозапад";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-западной части зала. ]];         
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_sw2");
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_nw3");
 
	};
 
};
 
 
atl_iof_main_nw1 = room {
 
	nam = "Атлантида, Игнис, главный зал, северозапад, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, северозапад, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к северо-западу от лифта. ]];         
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_sw1");
 
		kh_vroom("По часовой", "atl_iof_main_n1");
 
		kh_vroom("К краю", atl_iof_blocked_by_rubble);
 
	};
 
};
 
 
atl_iof_suits = obj {
 
	nam = "Скафандры";
 
	dsc = "Вдоль стен помещения расставлено несколько {скафандров}";
 
	act = function(s)
 
		atl_iof_time_state.pl_safe = true;
 
		walkin("atl_iof_external_radio_dlg");
 
	end;
 
};
 
 
atl_iof_external_radio_dlg = dlg {
 
	nam = "Атлантида, Игнис, служебное помещение";
 
	entered = function(s)
 
		if (where(char_wright_iof) == where(pl)) then
 
			return [[Забравшись в скафандр, вы настраиваете радио. Наконец, вы натыкаетесь на основную частоту станции и слышите голос Моро: "... вытащить их с Игниса. Что мы можем сделать?"^Даркстар отвечает: "Мы подойдем на Наутилусе к экстренному выходу и попробуем проникнуть внутрь". ]];
 
		else
 
			return [[Забравшись в скафандр, вы настраиваете радио. Наконец, вы натыкаетесь на основную частоту станции и слышите голос Моро: "... вытащить их с Игниса. Что мы можем сделать?"^Даркстар отвечает: "Мы подойдем на Наутилусе к экстренному выходу и попробуем проникнуть внутрь". ]];
 
		end;
 
	end;
 
	phr = {
 
		{"Вы слышите меня?", [[В динамике вы слышите встревоженный голос начальника станции: "Моро на связи! Дрейк, вы там все в порядке?" ]], code [[psub('is_ok')]]};
 
		{tag = "is_ok"};
 
		{"Да, все здесь. Мы одеваем скафандры", [[В динамике раздается голос Майкла Райта: "Отлично. Они защитят вас от жара и обеспечат воздухом. Лифт не работает, поэтому воспользуйтесь экстренным шлюзом в южной части секции. Наутилус подхватит вас там". ]], code [[psub('clear')]]};
 
		{"Да, все здесь. Как нам выбраться?", [[В динамике раздается голос Майкла Райта: "Лифт не работает, поэтому воспользуйтесь экстренным шлюзом в южной части секции. Оденьте скафандры - они защитят вас от жара и обеспечат воздухом. Наутилус подхватит вас у выхода". ]], code [[psub('clear')]]};
 
		{tag = "clear"};
 
		{"Вас понял, конец связи[Выключить радио].", code [[back();]]};  
 
	};
 
};
 
 
atl_iof_ignis_service_room = room {
 
	nam = "Атлантида, Игнис, служебное помещение";
 
	disp = "Атлантида, Игнис, служебное помещение";
 
	iof = true;
 
	dsc = [[Небольшое помещение, используемое для хранения различного оборудования, необходимого для обслуживания секции. ]];
 
	way = {
 
		kh_vroom("В главный зал", function(s)
 
			if (atl_iof_time_state.pl_safe) then
 
				return "atl_iof_main_ne3";
 
			else
 
				pr("Я не вернусь туда без снаряжения");
 
				return false;
 
			end;
 
		end);
 
	};
 
	obj = {
 
		'atl_iof_suits'
 
	};
 
};
 
 
atl_iof_outside = room {
 
	nam = "Атлантида, Игнис";
 
	iof = true;
 
	entered = function(s)
 
		lifeoff(atl_iof_time_state);
 
	end;
 
	dsc = function(s)
 
		if (have(char_learr_faint)) then
 
			if (atl_iof_time_state.wright_here) then
 
				return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Как только вы задраиваете внутренний люк, Райт опускает Леарр на пол и начинает вместе с вами отдраивать внешний люк. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
			else
 
				return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Вы кладете Леарр на пол и снова задраиваете внутренний люк и, тяжело вздохнув, начинаете открывать внешний. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы берете Леарр и выходите наружу. Тяжелый скафандр тянет вас вниз и вы плавно опускаетесь на верхнюю обшивку Наутилуса. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
			end;
 
		else
 
            if (atl_iof_time_state.learr_safe) then
 
			    return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек и вы замечаете некоторую растерянность Леарр. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Леарр следует за вами. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
            else
 
                return [[Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив люк изнутри, вы приступаете к открытию внешнего. ^Вода быстро заполняет отсек. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Группа людей, облаченных в скафандры помогает вам забраться внутрь Наутилуса. ]];
 
            end;         
 
		end;
 
	end;
 
	obj = {
 
		vobj("Продолжить", "{Продолжить}", "atl_iof_part2_dlg");
 
	};
 
};
 
 
atl_iof_part2_dlg = dlg {
 
	nam = "Атлантида, Игнис";
 
	entered = [[Вы слышите голос, доносящийся из динамика: "Все в порядке. Наутилус доставит вас на станцию". ]];
 
	phr = {
 
		{"Хорошо[Войти в шлюз Наутилуса].", [[Вы забираетесь внутрь Наутилуса - эта субмарина заметно меньше вашего Левиафана, но также вмещает довольно большой экипаж. Вы снимаете скафандры и проходите в кают-компанию. По радио вы слышите голос Моро: "Как только вы придете в себя после произошедшего, я жду вас в моем кабинете". ^Через считанные минуты вы оказываетесь в доке. Вы с трудом добираетесь до своей каюты, где без сил засыпаете. ]], code [[ walk('atlantis_luna_drake_room'); ]]};
 
		{"Я могу чем-то помочь?", [[По радио вы слышите голос Райта: "Было бы очень здорово, если бы вы смогли отключить подачу кислорода в Игнис". ]], code [[ psub('help'); ]]};
 
		{tag="help"};
 
		{"Хорошо, я готов", [[Райт продолжает: "Спускайтесь вниз, на крышу Доминуса, и идите к лифту. Где-то с южной стороны должна быть панель управления. С ней вы, думаю, разберетесь". Вы аккуратно спрыгиваете с Наутилуса вниз и идете к лифту. ]], code [[ walk('atl_iof_outside_lift'); ]]};
 
		{"Я передумал", [[Райт отвечает: "Хорошо, возвращайтесь на станцию. Мои люди все сделают". ]], code [[ walk('atl_iof_end'); ]]};
 
	};
 
};
 
 
atl_iof_outside_lift = room {
 
	nam = "Атлантида";
 
	dsc = [[Над вами нависает громада Игниса, покоящаяся на множестве опор. Вы находитесь снаружи шахты лифта, одновременно служащей центральной опорой секции. Сверху вы слышите скрежет металла, подвергаемого сильному термальному воздействию. ]];
 
	obj = {
 
		"atl_iof_air_valves"
 
	};
 
};
 
 
atl_iof_air_valves = room {
 
	var {
 
		valves = { 0,0,0,0,0,0 };
 
		selected = 0;
 
	};
 
	nam = "Кислородные клапаны";
 
	entered = function(s)
 
		atl_iof_select1:enable();
 
		atl_iof_select2:enable();
 
		atl_iof_select3:enable();
 
		atl_iof_select4:enable();
 
		atl_iof_select5:enable();
 
		atl_iof_select6:enable();
 
		atl_iof_air_ccw:disable();
 
		atl_iof_air_cw:disable();
 
		atl_iof_air_cancel:disable();
 
		
 
		atl_iof_air_valves.selected = 0;
 
	end;
 
	pic = function(s)
 
		local image = 'images/air_bg.png';
 
		for i = 1, #s.valves do
 
			image = image .. ";images/air_" .. tostring(s.valves[i]) .. ".png@" .. tostring(((i - 1) % 3) * 32) .. "," .. tostring(math.floor((i - 1) / 3) * 32);
 
		end;
 
		
 
		return image;
 
	end;
 
	dsc = function(s)
 
		if (s.selected == 0) then
 
			return [[Перед собой вы видите 6 клапанов. Каждый из них пропускает через себя воздух только в одном направлении. По показаниям манометра вы видите, что воздух продолжает поступать в Игнис. ]];
 
		else
 
			return "Перед собой вы видите 6 клапанов. Каждый из них пропускает через себя воздух только в одном направлении. По показаниям манометра вы видите, что воздух продолжает поступать в Игнис. В какую сторону вы хотите повернуть выбранный клапан (" .. tostring(s.selected) .. ")?";
 
		end;
 
	end;
 
	obj = {
 
		'atl_iof_select1';
 
		'atl_iof_select2';
 
		'atl_iof_select3';
 
		'atl_iof_select4';
 
		'atl_iof_select5';
 
		'atl_iof_select6';
 
		'atl_iof_air_ccw';
 
		'atl_iof_air_cw';
 
		'atl_iof_air_cancel';
 
	};
 
	is_solved = function(s)
 
		local current = 1;
 
		local visited = {false, false, false, false, false, false};
 
		while not visited[current] do
 
			visited[current] = true;
 
			if (s.valves[current] == 0) then
 
				if (current == 3 or current == 6) then 
 
					return false;
 
				else
 
					current = current + 1;
 
				end;
 
			elseif (s.valves[current] == 1) then
 
				current = current + 3;
 
			elseif (s.valves[current] == 2) then
 
				current = current - 1;
 
			elseif (s.valves[current] == 3) then
 
				current = current - 3;
 
			end;
 
		end;
 
		current = 4;
 
		visited = {false, false, false, false, false, false};
 
		while not visited[current] do
 
			visited[current] = true;
 
			if (s.valves[current] == 0) then
 
				if (current == 3 or current == 6) then 
 
					return false;
 
				else
 
					current = current + 1;
 
				end;
 
			elseif (s.valves[current] == 1) then
 
				current = current + 3;
 
			elseif (s.valves[current] == 2) then
 
				current = current - 1;
 
			elseif (s.valves[current] == 3) then
 
				current = current - 3;
 
			end;
 
		end;
 
		return true;
 
	end;
 
};
 
 
atl_iof_select = function(index)
 
	return obj {
 
		nam = "Клапан " .. tostring(index);
 
		dsc = "{Выбрать клапан " .. tostring(index) .. "}^";
 
		act = function(s)
 
			atl_iof_select1:disable();
 
			atl_iof_select2:disable();
 
			atl_iof_select3:disable();
 
			atl_iof_select4:disable();
 
			atl_iof_select5:disable();
 
			atl_iof_select6:disable();
 
			atl_iof_air_ccw:enable();
 
			atl_iof_air_cw:enable();
 
			atl_iof_air_cancel:enable();
 
			atl_iof_air_valves.selected = index;
 
			return "Вы беретесь за клапан " .. tostring(index);
 
		end;
 
	};
 
end;
 
 
atl_iof_select1 = atl_iof_select(1);
 
atl_iof_select2 = atl_iof_select(2);
 
atl_iof_select3 = atl_iof_select(3);
 
atl_iof_select4 = atl_iof_select(4);
 
atl_iof_select5 = atl_iof_select(5);
 
atl_iof_select6 = atl_iof_select(6);
 
 
atl_iof_air_ccw = obj {
 
	nam = "Повернуть против часовой стрелки";
 
	dsc = "{Повернуть против часовой стрелки}^";
 
	act = function(s)
 
		atl_iof_select1:enable();
 
		atl_iof_select2:enable();
 
		atl_iof_select3:enable();
 
		atl_iof_select4:enable();
 
		atl_iof_select5:enable();
 
		atl_iof_select6:enable();
 
		atl_iof_air_ccw:disable();
 
		atl_iof_air_cw:disable();
 
		atl_iof_air_cancel:disable();
 
		
 
		local t;
 
		local r = "";
 
		if (atl_iof_air_valves.valves[atl_iof_air_valves.selected] > 0) then
 
			t = atl_iof_air_valves.valves[atl_iof_air_valves.selected] - 1;
 
		else
 
			t = 3;
 
		end;
 
		
 
		if (atl_iof_air_valves.selected == 1) then
 
			if (t == 3 or t == 2 or
 
				(t == 0 and atl_iof_air_valves.valves[2] == 2) or
 
				(t == 1 and atl_iof_air_valves.valves[4] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 2) then
 
			if (t == 3 or
 
				(t == 2 and atl_iof_air_valves.valves[1] == 0) or
 
				(t == 0 and atl_iof_air_valves.valves[3] == 2) or
 
				(t == 1 and atl_iof_air_valves.valves[5] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 3) then
 
			if (t == 3 or 
 
				(t == 2 and atl_iof_air_valves.valves[2] == 0) or
 
				(t == 1 and atl_iof_air_valves.valves[6] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 4) then
 
			if (t == 1 or t == 2 or
 
				(t == 3 and atl_iof_air_valves.valves[1] == 1) or
 
				(t == 0 and atl_iof_air_valves.valves[5] == 2)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 5) then
 
			if (t == 1 or
 
				(t == 3 and atl_iof_air_valves.valves[2] == 1) or
 
				(t == 2 and atl_iof_air_valves.valves[4] == 0) or
 
				(t == 0 and atl_iof_air_valves.valves[6] == 2)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 6) then
 
			if (t == 1 or 
 
				(t == 3 and atl_iof_air_valves.valves[3] == 1) or
 
				(t == 2 and atl_iof_air_valves.valves[5] == 0)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		end;
 
		
 
		atl_iof_air_valves.valves[atl_iof_air_valves.selected] = t;
 
		
 
		atl_iof_air_valves.selected = 0;
 
		
 
		if (atl_iof_air_valves:is_solved()) then
 
			walk("atl_iof_electr_dlg");
 
		end;
 
		
 
		return r;
 
	end;
 
};
 
 
atl_iof_air_cw = obj {
 
	nam = "Повернуть по часовой стрелке";
 
	dsc = "{Повернуть по часовой стрелке}^";
 
	act = function(s)
 
		atl_iof_select1:enable();
 
		atl_iof_select2:enable();
 
		atl_iof_select3:enable();
 
		atl_iof_select4:enable();
 
		atl_iof_select5:enable();
 
		atl_iof_select6:enable();
 
		atl_iof_air_ccw:disable();
 
		atl_iof_air_cw:disable();
 
		atl_iof_air_cancel:disable();
 
		
 
		local t;
 
		local r = "";
 
		if (atl_iof_air_valves.valves[atl_iof_air_valves.selected] < 3) then
 
			t = atl_iof_air_valves.valves[atl_iof_air_valves.selected] + 1;
 
		else
 
			t = 0;
 
		end;
 
		
 
		if (atl_iof_air_valves.selected == 1) then
 
			if (t == 3 or t == 2 or
 
				(t == 0 and atl_iof_air_valves.valves[2] == 2) or
 
				(t == 1 and atl_iof_air_valves.valves[4] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 2) then
 
			if (t == 3 or
 
				(t == 2 and atl_iof_air_valves.valves[1] == 0) or
 
				(t == 0 and atl_iof_air_valves.valves[3] == 2) or
 
				(t == 1 and atl_iof_air_valves.valves[5] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 3) then
 
			if (t == 3 or 
 
				(t == 2 and atl_iof_air_valves.valves[2] == 0) or
 
				(t == 1 and atl_iof_air_valves.valves[6] == 3)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 4) then
 
			if (t == 1 or t == 2 or
 
				(t == 3 and atl_iof_air_valves.valves[1] == 1) or
 
				(t == 0 and atl_iof_air_valves.valves[5] == 2)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 5) then
 
			if (t == 1 or
 
				(t == 3 and atl_iof_air_valves.valves[2] == 1) or
 
				(t == 2 and atl_iof_air_valves.valves[4] == 0) or
 
				(t == 0 and atl_iof_air_valves.valves[6] == 2)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		elseif (atl_iof_air_valves.selected == 6) then
 
			if (t == 1 or 
 
				(t == 3 and atl_iof_air_valves.valves[3] == 1) or
 
				(t == 2 and atl_iof_air_valves.valves[5] == 0)) then
 
				t = atl_iof_air_valves.valves[atl_iof_air_valves.selected];
 
				r = "Клапан не поворачивается";
 
			end;
 
		end;
 
		
 
		atl_iof_air_valves.valves[atl_iof_air_valves.selected] = t;
 
		
 
		atl_iof_air_valves.selected = 0;
 
		
 
		if (atl_iof_air_valves:is_solved()) then
 
			walk("atl_iof_electr_dlg");
 
		end;
 
		
 
		return r;
 
	end;
 
};
 
 
atl_iof_air_cancel = obj {
 
	nam = "Выбрать другой клапан";
 
	dsc = "{Выбрать другой клапан}";
 
	act = function(s)
 
		atl_iof_select1:enable();
 
		atl_iof_select2:enable();
 
		atl_iof_select3:enable();
 
		atl_iof_select4:enable();
 
		atl_iof_select5:enable();
 
		atl_iof_select6:enable();
 
		atl_iof_air_ccw:disable();
 
		atl_iof_air_cw:disable();
 
		atl_iof_air_cancel:disable();
 
		
 
		atl_iof_air_valves.selected = 0;
 
		
 
		return "";
 
	end;
 
};
 
 
atl_iof_electr_dlg = dlg {
 
	nam = "Атлантида, Игнис";
 
	entered = [[Вы останавливаете подачу кислорода и собиратесь сообщить об этом по радио, когда из динамика раздается голос Майкла Райта: "Как у вас успехи? Нужно отключить еще подачу электричества". ]];
 
	phr = {
 
		{"Подача воздуха отключена. Как я смогу отключить электричество?", [[Райт продолжает: "Отлично. Там рядом должна быть панель, она подписана. Там замок хитрый, но, думаю, вы разберетесь. Затем просто дергаете рубильник и дело сделано". ]], code [[ psub("next"); ]]};
 
		{tag="next"};
 
		{"Вас понял. Конец связи", [[Вы быстро находите необходимую панель и приступаете к работе. ]], code [[ walk("atl_iof_electr_panel_closed"); ]]};
 
	};
 
};
 
 
atl_iof_electr_panel_closed = room {
 
	var {
 
		locks = { true, true, true, true, true, true, true, true };
 
	};
 
	nam = "Электрощит";
 
	pic = function(s)
 
		local image = 'images/electr_bg.png';
 
		for i = 1, 4 do
 
			if (s.locks[i]) then
 
				image = image .. ";images/air_3.png@" .. tostring(((i - 1) % 4) * 32) .. "," .. tostring(math.floor((i - 1) / 4) * 32);
 
			else
 
				image = image .. ";images/air_1.png@" .. tostring(((i - 1) % 4) * 32) .. "," .. tostring(math.floor((i - 1) / 4) * 32);
 
			end;
 
		end;
 
		for i = 5, 8 do
 
			if (s.locks[i]) then
 
				image = image .. ";images/air_1.png@" .. tostring(((i - 1) % 4) * 32) .. "," .. tostring(math.floor((i - 1) / 4) * 32);
 
			else
 
				image = image .. ";images/air_3.png@" .. tostring(((i - 1) % 4) * 32) .. "," .. tostring(math.floor((i - 1) / 4) * 32);
 
			end;
 
		end;
 
		return image;
 
	end;
 
	dsc = [[Перед вами расположен щиток с восемью защелками. Сейчас щиток закрыт и вы не можете его снять. ]];
 
	obj = {
 
		"atl_iof_electr_select1",
 
		"atl_iof_electr_select2",
 
		"atl_iof_electr_select3",
 
		"atl_iof_electr_select4",
 
		"atl_iof_electr_select5",
 
		"atl_iof_electr_select6",
 
		"atl_iof_electr_select7",
 
		"atl_iof_electr_select8"
 
	};
 
	is_solved = function(s)
 
		local unsolved = false;
 
		for i = 1, #locks do
 
			unsolved = unsolved or s.locks[i];
 
		end;
 
		
 
		return not unsolved;
 
	end;
 
};
 
 
atl_iof_electr_select = function(index)
 
	return obj {
 
		nam = "Защелка " .. tostring(index);
 
		dsc = "{Сдвинуть защелку " .. tostring(index) .. "}^";
 
		act = function(s)			
 
			atl_iof_electr_panel_closed.locks[index] = not atl_iof_electr_panel_closed.locks[index];
 
			if (index ~= 4 and index ~= 8) then
 
				atl_iof_electr_panel_closed.locks[index + 1] = not atl_iof_electr_panel_closed.locks[index + 1];
 
			end;
 
			if (index ~= 1 and index ~= 5) then
 
				atl_iof_electr_panel_closed.locks[index - 1] = not atl_iof_electr_panel_closed.locks[index - 1];
 
			end;
 
			if (index > 4) then
 
				atl_iof_electr_panel_closed.locks[index - 4] = not atl_iof_electr_panel_closed.locks[index - 4];
 
			end;
 
			if (index < 5) then
 
				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
 
				walk("atl_iof_electr_panel_open");
 
			
 
				return "";
 
			end;
 
			
 
			return "Вы сдвигаете защелку " .. tostring(index);
 
		end;
 
	};
 
end;
 
 
atl_iof_electr_select1 = atl_iof_electr_select(1);
 
atl_iof_electr_select2 = atl_iof_electr_select(2);
 
atl_iof_electr_select3 = atl_iof_electr_select(3);
 
atl_iof_electr_select4 = atl_iof_electr_select(4);
 
atl_iof_electr_select5 = atl_iof_electr_select(5);
 
atl_iof_electr_select6 = atl_iof_electr_select(6);
 
atl_iof_electr_select7 = atl_iof_electr_select(7);
 
atl_iof_electr_select8 = atl_iof_electr_select(8);
 
 
atl_iof_electr_panel_open = dlg {
 
	nam = "Атлантида, Игнис";
 
	dsc = [[Вы снимаете щиток и дергаете рубильник, обесточивая Игнис. Вы связываетесь по радио с Наутилусом. ]];
 
	phr = {
 
		{"Подача электричества в Игнис отключена, возвращаюсь на станцию", [[В динамике вы слышите голос Райта: "Отлично, возвращайтесь". ]], code [[ walk("atl_iof_end"); ]]};
 
	};
 
};
 
 
atl_iof_end = room {
 
	nam = "Атлантида";
 
	dsc = [[Вы возвращаетесь на станцию и сразу же отправляетесь в свою комнату, чтобы отдохнуть. Вы просыпаетесь утром. ^Едва вы поднимаетесь с койки, к вам в комнату входят двое охранников. Они просят вас проследовать за ними к начальнику службы безопасности - Винсенту Даркстару. У вас нет никакого выхода, кроме как пойти с ними. ]];
 
	entered = function(s)
 
		atl_lfc_state = 1;
 
        if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
            put(char_jack_wright_atlantis, atl_luna_jack_room);
 
        end;
 
		if (atl_iof_time_state.learr_safe) then
 
			atl_iof_learr_suit = true;
 
		end;
 
		if (atl_iof_time_state.carry_learr or atl_iof_time_state.learr_safe or not char_learr_iof.faint) then
 
			-- learr saved
 
			put(char_learr_atlantis, atl_oculus_library);
 
		else
 
			atl_iof_learr_dead = true;
 
			put(char_aikerjarr, atl_oculus_lab_b);
 
		end;
 
		atl_iof_completed = true;
 
	end;
 
	obj = {
 
		vway("Продолжить", "{Продолжить}", "atl_lfc_darkstar_dlg");
 
	};
 
};
 
\ No newline at end of file
0 comments (0 inline, 0 general)