Changeset - 287dc9bc33ea
[Not reviewed]
default
0 1 0
Silverwing - 8 years ago 2017-03-26 10:28:11

Progress on dlg rewrite; Learr intro dlg rewritten
1 file changed with 9 insertions and 36 deletions:
0 comments (0 inline, 0 general)
atlantis_ignis_on_fire.lua
Show inline comments
 
atlantis_learr_intro = room {
 
	nam = "Атлантида, Окулус, Главный коридор";
 
	dsc = [[
 
		Вы выходите из межсекционного коридора в главный коридор секции _"Окулус"_ и сталкиваетесь лицом к лицу с неведомым существом: ^
 
		стройное, покрытое серо-зеленой чешуей тело, рыбья голова с небольшими отростками-плавниками. Ярко-оранжевые глаза с интересом разглядывают вас, а в приоткрытом рте видны острые треугольные зубы. Одето оно в белую рубашку и ярко-синюю юбку до колен(явно человеческие). Перепонки между пальцами на руках и ногах существа говорят о том, что оно большую часть времени проводит в воде. На шее его вы замечаете жабры, однако сейчас они не двигаются. _"Плавники"_ на голове существа начинают изменять цвет - вы замечаете, что цвета движутся полосами от места соединения плавника с телом, до его дальнего края и очень быстро сменяют друг друга. 
 
	]];
 
	dsc = [[Вы выходите из межсекционного коридора в главный коридор секции _"Окулус"_ и сталкиваетесь лицом к лицу с неведомым существом: ^стройное, покрытое блестящей серо-зеленой чешуей тело, рыбья голова с небольшими отростками-плавниками, тонкие ноги и руки с широкими перепонками между длинными пальцами. Ярко-оранжевые глаза существа с интересом разглядывают вас. Во рту существа сверкают острые треугольные зубы. Одето оно в белую рубашку и ярко-синюю юбку до колен. На шее существа вы замечаете жабры. Отростки на голове существа принимают слабо уловимый сине-зеленый оттенок. ]];
 
	obj = {
 
		vway('continue', '{Продолжить}', 'atlantis_learr_first_dlg')
 
	};
 
};
 
 
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, "Это твое имя?", [[
 
			"Да. Я-Леарр-из-навьяров". 
 
		]], code [[psub('learr'); ]]};
 
		{"Аааа, монстр, помогите!!!", [[
 
			На лице существа вы читаете изумление: "Я-монстр? Вы на-станции-недавно? Я раньше-не-видела вас". Вы почти не чувствуете эмоций в ее речи - она говорит достаточно монотонно. 
 
		]], code [[ pon('it_speaks'); ]]};
 
		{tag="it_speaks", false, "Оно разговаривает!", [[
 
			Щелкнув зубами, _"Чудовище"_ отталкивает вас в сторону и уходит со словами: _"Вы-монстр! Я нет-времени-тратить на вас"_.
 
		]], 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') ]]};
 
		{"Ты живешь на станции?", [[
 
			_"Да. Я и Ry'vee'rr здесь-некоторое-время-живем"_.
 
		]], code [[ pon("ryveerr"); ]]};
 
		{"Ты странно говоришь. ", [[
 
			Леарр отвечает: _"Я плохо-говорю ваш-необычный-язык. Он Много-отдельных-бессмысленных-слов-содержит. Наш-язык сильно-проще-есть. Одно-слово почти-весь-смысл-включает"_.
 
		]]};
 
		{tag="ryveerr", false, "Ry'vee'rr?", [[
 
			"Другой-навьяр-из-Dyp'atre'anot'rr. Мы-оба здесь-живем".
 
		]]};
 
		{"Рад знакомству. Я Дэвид Дрейк. ", [[Леарр переспрашивает: "Ты ззнаешшь Уильяма-Дррейка?" -- Вам кажется, вы чувствуете удивление, хотя интонации в словах существа вам совершенно чужды. ]], code [[ psub('drake') ]]};
 
        {"Откуда ты?", [[Леарр отвечает: "Я изз Iraa'pha'anot'rr. Я на-Атлантиде-жживу-ссейчасс".]]};
 
		{tag="drake"};
 
		{"Да, я его сын. Ты видела его?", [[
 
			Головные плавники Леарр поочередно окрашиваются в сине-зеленый и красный цвета. Она отвечает: _"Я крайне-знакомству-рада. Уильям-Дрейк наши-легенды-изучал-наши-древние-знания-искал. Я у-него-получилось-думаю. Он искать-отправился lse'ry'anot'rr"_. Головные плавники окрасились в темносерый, потом Леарр продолжила: _"Я вы-продолжите-его-дело-надеюсь"_
 
		]], code [[ psub('follow_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"); ]]};
 
	};
 
};
 
 
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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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;
 
	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
 
			return [[
 
				Вы добираетесь до аварийного шлюза Игниса. Вы с трудом отдраиваете его и заходите в шлюзовую камеру. Задраив дверь изнутри, вы начинаете открывать внешний люк. ^
 
				Отсек быстро заполняет вода и вы замечаете некоторую растерянность Леарр. Снаружи вы видите Наутилус, находящийся прямо под люком. Вы спрыгиваете вниз. Леарр следует за вами. К вам тут же подходят несколько человек, облаченных в такие же скафандры и приглашают вас войти внутрь Наутилуса.
 
			]];
 
		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 (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_lab_c);
 
		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)