Changeset - 99af403fcdf0
[Not reviewed]
default
0 3 0
Silverwing - 7 years ago 2017-11-05 19:43:43

Atlantis suit fix and fta fix
3 files changed with 41 insertions and 38 deletions:
0 comments (0 inline, 0 general)
atlantis_dlg.lua
Show inline comments
 
@@ -249,1556 +249,1559 @@ char_moreau_dlg = dlg {
 
	};
 
	nam = "Фредерик Моро";
 
	disp = "Фредерик Моро";
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");
 
        
 
        if (atl_rep_moreau < 0) then
 
            if (char_moreau.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_moreau.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_moreau.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_moreau.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_moreau.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_moreau.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_moreau.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_moreau.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_moreau.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            
 
            if (char_moreau.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_moreau.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_moreau.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_moreau.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_moreau.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_moreau.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_moreau.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_moreau.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_moreau.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_moreau.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_moreau.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_moreau.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_moreau.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_moreau.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_moreau.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_moreau.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_moreau.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;   
 
	enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Фредерик Моро сообщает вам: "Месье Дрейк, добрый день. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
    
 
		if (atl_lfc_state == 3) then
 
			atl_lfc_state = 4;
 
			atl_lev_state = 1;
 
			local reputation = 0;
 
			if (atl_rep_darkstar > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_moreau > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_svetlova > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			if (atl_rep_wright > 0) then
 
				reputation = reputation + 1;
 
			end;
 
			
 
			if (reputation > 2 and atl_rep_moreau >= 0) then
 
				psub("lfc_debrief_good");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Огромное спасибо. Посовещавшись, мы решили вернуть вам Левиафан. Также, вы можете посещать Атлантиду в любое удобное для вас время -- мы всегда будем рады вас видеть". ]];
 
			elseif (reputation > 2) then
 
				psub("lfc_debrief_good");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Посовещавшись, мы решили вернуть вам Левиафан. Также, мы решили не запрещать вам доступ на Атлантиду, но не думайте, что я рад вас видеть". ]];
 
			elseif (atl_rep_moreau >= 0) then
 
				psub("lfc_debrief_bad");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Огромное спасибо. Посовещавшись, мы решили вернуть вам Левиафан. К сожалению, совет решил ограничить вам доступ к станции, поэтому я прошу вас покинуть Атлантиду как можно скорее". ]];
 
			else
 
				psub("lfc_debrief_bad");
 
				return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Вы очень помогли нам в поимке саботажника. Посовещавшись, мы решили вернуть вам Левиафан. Убирайтесь и больше не возвращайтесь сюда". ]];
 
			end;
 
		end;
 
		
 
		if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
			s.lfc_dialog = true;
 
			pon('sabotage', 'ignis_what');
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
		end;
 
        
 
        s:reset_more();
 
	
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[За столом перед вами сидит немолодой мужчина. Кудрявые седые волосы обрамляют его лицо. Он носит длинные седые усы. Одет человек в строгий деловой костюм бежевого цвета. Его серые глаза, скрытые очками, внимательно рассматривают вас. Вертя в руках перо он приветствует вас: "Добро пожаловать на Атлантиду, месье Дрейк. Мое имя -- Фредерик Моро и я исполняю обязанности начальника станции в отсутствие Уильяма и Адриана. Ваше прибытие крайне удивило нас -- мы думали, с поверхности найти нашу станцию невозможно. Пока мы думаем, что делать с вами дальше, вы можете воспользоваться ресурсами станции, чтобы узнать побольше о вашем отце и, быть может, понять, куда в точности он направился. Для начала, стоит немного ввести вас в курс дела".^
 
				Моро подходит к книжной полке и берет какую-то книгу. Вернувшись за стол, он раскрывает ее и приступает к рассказу: "Когда мы строили Надежду, нашей целью было создать быстрый и безопасный способ путешествий через Атлантику. Однако, все с самого начала пошло не так, как планировалось. Мы встретили племя подводных существ, именующих себя навьярами -- они похожи на рыб и людей одновременно -- ходят на двух ногах, используют две руки, но покрыты чешуей и имеют жабры. Тогда мы приняли решение исследовать их тщательнее. Были построены Энтерпрайз, Наутилус и сама Атлантида. Потом мы переселились сюда. Дрейк был захвачен одной из легенд этих рыбней и не так давно, наконец, решился отправиться в экспедицию". ]];
 
		elseif (char_moreau.iof_reaction == 0 and atl_iof_completed) then
 
            char_moreau.iof_reaction = 1;      
 
            if (atl_iof_learr_dead) then
 
                psub("iof_learr_dead");
 
                return [[Фредерик Моро как обычно сидит за столом. Как только вы подходите, он сообщает вам: "Месье Дрейк, рад видеть, что с вами все в порядке. К сожалению, нам не удалось спасти Леарр. Это большая потеря для всех нас. Думаю, вам стоит знать, что на станцию прибыл Аикерьярр, чтобы продолжить ее работу". ]];
 
            elseif (atl_iof_learr_suit) then
 
                psub("iof_learr_suit");
 
                return [[Фредерик Моро как обычно сидит за столом. Как только вы подходите, он сообщает вам: "Месье Дрейк, рад видеть, что с вами все в порядке. Леарр рассказала мне о вашей идее со скафандром. Спасибо, что позаботились о ней". ]];
 
            else
 
                psub("iof_learr");
 
                return [[Фредерик Моро как обычно сидит за столом. Как только вы подходите, он сообщает вам: "Месье Дрейк, рад видеть, что с вами все в порядке. Спасибо, что позаботились о Леарр. С ней все хорошо". ]];
 
            end;
 
        else      
 
			psub("generic");
 
			return [[Фредерик Моро приветствует вас: "Месье Дрейк, добрый день. Чем могу помочь?" ]];
 
		end;		
 
	end;
 
	phr = {
 
        {tag="lfc_warning"};
 
        {always = true, "Я пойду.", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
        {tag="iof_learr_dead"};
 
        {"Я ничего не мог сделать. ", [[Фредерик Моро кивает: "Я понимаю". Немного помолчав он говорит: "Давайте к делу". ]], code [[psub("generic");]]};
 
        {"Давайте к делу. ", [[Фредерик Моро неодобрительно кивает: "Слушаю". ]], code [[
 
            atl_rep_moreau = atl_rep_moreau - 1;
 
            psub("generic");
 
        ]]};
 
        {tag="iof_learr_suit"};
 
        {"Рад, что никто не пострадал. ", [[Фредерик Моро кивает: "Ваши действия достойны уважения. Еще раз благодарю вас. Но, перейдем к делу". ]], code [[psub("generic");]]};
 
        {tag="iof_learr"};
 
        {"Рад, что никто не пострадал. ", [[Фредерик моро кивает: "Перейдем к делу". ]], code [[psub("generic");]]};
 
		{tag="first_meeting", empty = code[[ psub("generic"); ]]};
 
		{"Я не имею намерения раскрывать существование Атлантиды.", [[Фредерик Моро кивает: "Рад это слышать, но нам нужно больше чем ваши слова". ]]};
 
		{"Что за навьяры?", [[Фредерик Моро отвечает: _"Na'vji'a'rr -- с их языка это переводится, как ,,Живущие в глубинах''. Как я сказал, они чем-то похожи на людей, но по сути своей они -- рыбы. Подробнее о них вам смогут нассказать наши ученые в секции Окулус. Там же вы можете встретить Ривеерра и Леарр -- наших гостей из двух ближайших поселений навьяров"_. ]]};
 
		{"Как получилось, что Левиафан остался на поверхности?", [[Фредерик Моро задумчиво чешет подбородок. Через некоторое время он отвечает: _"Сложно сказать. Это было в ведении Майкла Райта. Скорее всего, они с Дрейком сознательно спрятали его"_. ]]};
 
        {"Куда конкретно направился Уильям?", [[Фредерик Моро вздыхает: "У нас нет точных данных. И, похоже, их не было и у Блэка с Дрейком. Мы знаем, что их цель -- древний навьярский город". ]]};
 
        {tag="ask_more"};
 
        {tag="on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.drake_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.drake_asked = 2;
 
                return [[Фредерик Моро отвечает: "Уильям Дрейк, безусловно, гениальный предприниматель и грамотный руководитель, однако он не достиг бы таких успехов, если бы работал один. Адриан Блэк всегда помогал ему управлять компанией. Майкл Райт придумал и построил многие суда компании. Уильям всегда понимал важность сотрудников Вестхейвен Трансоушен и оказывал и продолжает оказывать должное уважение всем нам". ]];
 
            end;
 
        end};
 
        {tag="on_black", false, "Расскажите об Адриане Блэке. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.black_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.black_asked = 2;
 
                return [[Фредерик Моро отвечает: "Адриан Блэк -- один из основателей Вестхейвен Трансоушен. Он совсем не похож на Уильяма -- осторожный и рассчетливый, он часто вступал в спор с Дрейком по поводу особенно рискованных предприятий. Ему мы тоже многим обязаны, но, если говорить честно, Уильям гораздо популярнее среди сотрудников". ]];
 
            end;
 
        end};
 
        {tag="on_darkstar", false, "Расскажите о Винсенте Даркстаре. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.darkstar_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.darkstar_asked = 2;
 
                return [[Фредерик Моро отвечает: "О нем мало что известно, да он и неразговорчив. Впрочем, он справляется со своими обязанностями, и Дрейк доверяет ему". ]];
 
            end;
 
        end};
 
        {tag="on_svetlova", false, "Расскажите о Екатерине Светловой. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.svetlova_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.svetlova_asked = 2;
 
                return [[Фредерик Моро отвечает: "Екатерина здесь только из-за навьяров. Ваш отец пригласил ее в Вестхейвен Трансоушен сразу после первой экспедиции Надежды. Сейчас она руководит исследованиями на Атлантиде и отлично справляется благодаря личной заинтересованности в этом". ]];
 
            end;
 
        end};
 
        {tag="on_moreau", false, "Расскажите о себе. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.moreau_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.moreau_asked = 2;
 
                return [[Фредерик Моро отвечает: "Я мало что могу рассказать. Мы с вашим отцом, Адрианом и Майклом вместе учились. Когда мы основали Вестхейвен Трансоушен, я остался в тени моих более талантливых друзей. Впрочем, меня, если честно, вполне устраивало такое положение. Сейчас, когда Уильям и Адриан отправились в свою экспедицию, мне пришлось занять пост руководителя станции, но я с радостью вернусь на свою прежнюю должность, как только они вернутся". ]];
 
            end;
 
        end};
 
        {tag="on_wright", false, "Расскажите о Майкле Райте. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.wright_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.wright_asked = 2;
 
                return [[Фредерик Моро отвечает: "Майкл Райт в компании с самого основания. Он гениальный инженер и изобретатель. Атлантиду тоже спроектировал он и для него она стала смыслом существования. Майкл даже оставил жену и сына на поверхности в пользу возможности развивать станцию". ]];
 
            end;
 
        end};
 
        {tag="on_leroy", false, "Что вы думаете о Мишеле Леруа?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.leroy_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.leroy_asked = 2;
 
                return [[Фредерик Моро отвечает: "Мишель Леруа -- один из наших инженеров. Последнее время он очень активно выступает в пользу завершения работы станции и возвращения на поверхность. К счастью, его пока поддерживает не слишком много людей. Майкл Райт расскажет вам больше про него". ]];
 
            end;
 
        end};
 
        {tag="on_jones", false, "Что вы думаете о Чарли Джонсе?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.jones_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.jones_asked = 2;
 
                return [[Фредерик Моро отвечает: "Чарли Джонс -- один из наших инженеров. Кажется, он поддался влиянию Леруа и поддерживает его в плане возвращения на поверхность. Майкл Райт расскажет вам больше про него". ]];
 
            end;
 
        end};
 
        {tag="on_goldman", false, "Что вы думаете о Леонарде Голдмане?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.goldman_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.goldman_asked = 2;
 
                return [[Фредерик Моро отвечает: "Леонард Голдман -- один из наших инженеров. Он один из сторонников возвращения на поверхность -- он первым на станции начал поднимать этот вопрос . Майкл Райт расскажет вам больше про него". ]];
 
            end;
 
        end};
 
        {tag="on_atlantis", false, "Расскажите об Атлантиде. ", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.atlantis_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.atlantis_asked = 2;
 
                return [[Фредерик Моро отвечает: "Мы построили Атлантиду чтобы изучать навьяров. Для этого же мы собрали команду ученых, которую возглавила Екатерина Светлова. Станция постепенно росла, благодаря усилиям инженерной команды под руководством Майкла Райта. Мы пригласили сюда навьяров из ближайших поселений -- Леарр из Ираафаанотра и Ривеерра из Дипатреанотра. Можете поговорить с ними, если хотите -- они сейчас на станции". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.navjiarr_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.navjiarr_asked = 2;
 
                return [[Фредерик Моро отвечает: "Интересные существа. Наши ученые говорят, что они ближе к рыбам, чем к нам. Однако, они ходят на двух ногах, имеют руки, способны дышать воздухом и мыслить! Более подробно вам расскажут ученые, -- он делает небольшую паузу, -- Атлантида обязана им своим существованием. Если бы мы не встретили их при первой экспедиции, вряд ли кто-то стал бы строить эту станцию, тем более здесь. Первое время они создавали нам проблемы, но, к счастью, нам удалось их разрешить и наладить отношения с ними. Сейчас на станции проживают двое навьяров: Леарр и Ривеерр. Думаю, они не откажутся от разговора с вами". ]];
 
            end;
 
        end};
 
        {tag="on_learr", false, "Что вы думаете о Леарр?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.learr_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_moreau.learr_asked = 3;
 
                    return [[Фредерик Моро тяжело вздыхает: "Ее гибель -- большая потеря для всех нас. Кажется, даже Винсент Даркстар, не способный, как мне казалось на дружеские чувства, относился к ней с некоторой теплотой". ]];
 
                else
 
                    char_moreau.learr_asked = 2;
 
                    return [[Фредерик Моро отвечает: "Милая девушка, хоть и рыба. Она, конечно, порой бывает надоедлива ввиду своей излишней, на мой взгляд любознательности, но вы себя на ее месте представьте -- она родилась и росла в своей примитивной деревне, а тут мы -- неспособные дышать в воде, зато способные строить поразительные машины. Нет ничего удивительного, что она только и делает, что носится между Игнисом, Окулусом и Террой, расспрашивая всех обо всем". ]];
 
                end;
 
            end;
 
        end};
 
        {tag="on_ryveerr", false, "Что вы думаете о Ривеерре?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.ryveerr_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.ryveerr_asked = 2;
 
                return [[Фредерик Моро отвечает: "Я мало что могу о нем сказать. Он почти не покидает Окулус, общаясь только с учеными. Возможно их вам и стоит спросить о нем". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы думаете об Аикерьярре?", function()
 
            if (atl_rep_moreau < 0) then
 
                char_moreau.aikerjarr_asked = 1;
 
                return [[Фредерик Моро отвечает: "Я не хочу говорить об этом сейчас". ]];
 
            else
 
                char_moreau.aikerjarr_asked = 2;
 
                return [[Фредерик Моро отвечает: "Пренеприятный персонаж. Будь моя воля -- я бы прогнал его со станции, и большая часть руководителей со мной согласна. Однако, понимая, какие у этого будут последствия, я вынужден позволить ему находиться здесь". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Фредерик Моро спрашивает: "Вы что-то хотели?"]], code [[ char_moreau_dlg:reset_more(); pret(); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", false, "Вы знаете, что пожар начался из-за саботажа?", [[Фредерик Моро несколько раз стучит пальцем по столу. Недовольным тоном он делает вам замечание: "Месье Дрейк, -- он выдерживает небольшую паузу, -- Если вы хотите вернуть себе Левиафан, вам стоит следовать нашим правилам и, в частности, не нарушать прямых наших распоряжений". ]], code [[
 
			atl_rep_moreau = atl_rep_moreau - 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
		]]};
 
		{tag="ignis_what", false, "Почему начался пожар в Игнисе?", [[Фредерик Моро пожимает плечами и как-то неуверенно проговаривает: "Не знаю. Этим вопросом занимаются инженеры и служба безопасности. Будьте спокойны, наши специалисты не допустят повторения аварии". ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Моро кивает: "Да, конечно. Я слушаю".]], code [[ psub('ask_more'); ]]};    
 
		{always = true, "Я пойду.", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]};
 
		{tag="lfc_debrief_good"};
 
		{always = true, "Спасибо, это все.", [[Моро спрашивает: "Вы что-то хотели?". ]], code [[ psub("generic");]]};
 
		{tag="lfc_debrief_bad"};
 
		{always = true, "Я пойду.", [[Моро кивает. ]], code [[ walk("game_over_banished"); ]]};
 
	};
 
};
 
 
char_svetlova_dlg = dlg {
 
	var {
 
		state = 0;
 
		lfc_sabotage = false;
 
		lfc_dialog = false;
 
		flag_help = false;
 
		flag_explain = false;
 
	};
 
	nam = "Екатерина Светлова";
 
	disp = "Екатерина Светлова";
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");
 
        if (atl_rep_svetlova < 0) then
 
            if (char_svetlova.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_svetlova.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_svetlova.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_svetlova.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_svetlova.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_svetlova.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_svetlova.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_svetlova.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            
 
            if (char_svetlova.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_svetlova.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_svetlova.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_svetlova.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_svetlova.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_svetlova.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_svetlova.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_svetlova.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_svetlova.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_svetlova.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_svetlova.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_svetlova.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_svetlova.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            
 
            if (char_svetlova.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_svetlova.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_svetlova.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_svetlova.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;
 
	enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Екатерина Светлова сообщает вам: "Добрый день, господин Дрейк. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
    
 
        s:reset_more();
 
    
 
		if (s.state == 0) then
 
			psub('first_meeting');
 
            s.state = 1;         
 
			return [[За столом сидит женщина лет сорока-пяти. Золотистые волосы собраны в пучок на затылке. Она одета в простое синее платье. В правой руке она держит карандаш, которым периодически делает пометки в бумагах, лежащих на столе. ^Она отрывает взгляд от бумаг и приветствует вас: _"Добрый день, господин Дрейк. Мое имя -- Екатерина Светлова, я управляю исследованиями на Атлантиде. Даркстар сказал, что вы зайдете. ^Должна признать, вы нас всех изрядно напугали, появившись вот так внезапно. Однако, думаю, вы будете полезны нам. ^У меня есть предложение для вас. Я знаю, что вы ищете своего отца. Уходя в экспедицию, он не оставил нам почти никаких материалов -- карты, схемы, переводы -- они забрали все с собой. Я прошу вас помочь нам с некоторыми проблемами. Взамен мы предоставим вам все имеющиеся у нас материалы. Возможно, они помогут вам найти отца"_.]];
 
        elseif (char_svetlova.iof_reaction == 0 and atl_iof_completed) then
 
            char_svetlova.iof_reaction = 1;
 
            if (atl_iof_learr_dead) then
 
                psub("iof_learr_dead");
 
                return [[Екатерина Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Господин Дрейк, вы были в Игнисе, вместе с Леарр. И все же, вы не смогли спасти ее". ]];
 
            elseif (atl_iof_learr_suit) then
 
                psub("iof_learr_suit");
 
                return [[Екатерина Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Господин Дрейк, добрый день. Спасибо, что помогли Леарр выбраться из Игниса. Она рассказала мне о вашей замечательной идее. Благодарю вас от лица всех работников Окулуса". ]];
 
            else
 
                psub("iof_learr");
 
                return [[Екатерина Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас:"Господин Дрейк, добрый день. Спасибо, что вытащили Леарр из Игниса. Благодарю вас от лица всех работников Окулуса". ]];
 
            end;         
 
		elseif (s.state == 2) then
 
			psub('ryveerr_on_steal');
 
			return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Ну как? Поговорили с Ривеерром?" ]];
 
        else
 
			if (atl_iyh_state == 9) then
 
				atl_iyh_state = 10;
 
                conflict_resolved = 1;
 
                if atl_iyh_shockfish_dead then
 
                    psub('iyh_more');
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        -- навьяры не знают про гибель ската. Светловой пофиг
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        -- навьяры в ярости, светлова тоже
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Дрейк! Вы понимаете, что вы сделали?! Одним маленьким взрывом вы погубили годы работы по налаживанию отношений с навьярами! Конечно, вы решили проблему, но разве не было другого способа?!"^Чуть подождав, она сообщает: "К делу. Покажите фрагмент карты, который вы нашли". ]];
 
                    end;
 
                elseif atl_iyh_entrance_destroyed then
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        -- навьяры не знают про разрушение храма. Светловой пофиг
 
                        psub('iyh_more');
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        -- навьяры в ярости, светлова тоже
 
                        if iof_learr_dead then
 
                            psub('iyh_more');
 
                            return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Однако, из-за ваших поспешных действий они теперь гораздо хуже относятся к нам и, скорее всего, нам не придется расчитывать на их помощь в ближайшее время. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                        else
 
                            psub('learr_back');
 
                            return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Мы еще раз обсудили все с Леарр, она хотела бы вернуться в экипаж Левиафана. Вы возьмете ее?" ]]
 
                        end;
 
                    end;
 
                else
 
                    psub('iyh_more');
 
                    if (atl_iyh_artifacts_on_atlantis) then
 
                        --Храм в целости, навьяры пляшут, Светлова довольна :)
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены. Ваши действия в храме были воистину потрясающи. Мы не зря отправили туда именно вас. Мы изучили артефакты, найденные вами в храме, но, к сожалению для вас, не обнаружили ничего, что могло бы помочь найти Уильяма. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    else
 
                        --Храм в целости, навьяры пляшут, Светлова довольна, но без артефактов :(
 
                        return [[Светлова отрывает взгляд от бумаг, лежащих перед ней, и смотрит на вас: "Добрый день, Дрейк. Благодаря вам отношения между Дипатреанотром и Ираафаанотром восстановлены.  сожалению, мы не смогли получить доступ к артефактам, добытым вами в храме. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]];
 
                    end;
 
                end;
 
			else
 
				psub('generic');
 
				
 
				if (atl_lfc_state ~= 1) then
 
					poff('sabotage', 'ignis_what');
 
				end;
 
				
 
				if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
					s.lfc_dialog = true;
 
					pon('sabotage', 'ignis_what');
 
				end;
 
				
 
                poff("iyh1_learr", "iyh1_aikerjarr");
 
                if (atl_iyh_state == 1 and atl_iyh_learr_spoken and atl_iyh_ryveerr_spoken) then
 
                    pon('iyh1_learr');
 
                elseif (atl_iyh_state == 1 and atl_iyh_aikerjarr_spoken and atl_iyh_ryveerr_spoken) then
 
                    pon('iyh1_aikerjarr');
 
                end;
 
                
 
				return [[Светлова отрывает взгляд от бумаг, лежащих перед ней и смотрит на вас: "Добрый день". ]];
 
			end;
 
		end;
 
	end;
 
	phr = {
 
        {tag="lfc_warning"};
 
        {always = true, "Я пойду.", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {tag = "iof_learr_dead"};
 
        {"Я ничего не мог сделать. ", [[Екатерина Светлова опускает глаза: "Я понимаю". Вздохнув, она спрашивает: "Вам что-то нужно?" ]], code [[ psub("generic"); ]]};
 
        {"Перейдем к делу. ", [[Екатерина Светлова кивает: "Что вам нужно?" ]], code [[ 
 
            atl_rep_svetlova = atl_rep_svetlova - 1;
 
            psub("generic"); 
 
        ]]};
 
        {tag = "iof_learr_suit"};
 
        {"Был рад помочь. ", [[Екатерина Светлова кивает и спрашивает: "Вам что-то нужно?"]], code [[ psub("generic"); ]]};
 
        {tag = "iof_learr"};
 
        {"Рад, что никто не пострадал. ", [[Екатерина Светлова кивает и спрашивает: "Вам что-то нужно?"]], code [[ psub("generic"); ]]};
 
		{tag = "first_meeting"};
 
		{"Как так получилось, что не осталось никакой информации?", [[Екатерина Светлова поясняет: "Блэк сильно торопил Уильяма и, едва закончив минимальные исследования, они отправились в Венаэданотр -- отдаленный навьярский город где-то к западу от Атлантиды. К сожалению, его точное местоположение нам неизвестно". ]], code [[ pon('venaedanotrr'); ]]};
 
        {"В чем заключается цель экспедиции?", [[Екатерина Светлова отвечает: "Дрейк и Блэк ищут Лсэрианотр -- легендарный навьярский город". ]], code [[pon('lseryanotrr')]]};
 
        {tag = "venaedanotrr", false, "Венаэданотр?", [[Екатерина светлова отвечает: "Поселения навьяров раскинулись по всему океанскому дну. Мы точно знаем, что Венаэданотр расположен далеко к западу отсюда и точно знаем, что он значительно больше, нежели Ираафаанотр или Дипатреанотр. Дрейк и Блэк смогут рассказать многое рассказать о нем, когда вернутся из своей экспедиции". ]], code [[ pon("dypatreanotrr", "iraaphaanotrr");]]};
 
		{tag = "lseryanotrr", false, "Лсэрианотр?", [[Екатерина Светлова отвечает: "По легенде Лсэрианотр -- древний навьярский город, хранящий какие-то тайные знания их народа. Описания разнятся. В одних источниках говорится о страшном монстре, по имени Наэтвьирр, охраняющем город. В других этот же Наэтвьирр предстает как хранитель города и его тайн, призванный самими навьярами. Однако, во всех вариантах легенды именно Наэтвьирр выступает причиной того, что навьяры покидают Лсэрианотр. Мы предполагаем, что Наэтвьирр это кракен или еще какое-то морское чудовище, с которым древние навьяры просто не могли справиться и вынуждены были покинуть Лсэрианотр". ]], code [[ pon("dypatreanotrr", "iraaphaanotrr");]]};
 
        {tag = "dypatreanotrr", false, "Дипатреанотр?", [[Екатерина Светлова отвечает: "Дипатреанотр расположен чуть дальше к северу от Атлантиды, чем Ираафаанотр. Как и Ираафаанотр, городом в полной мере он не является. В поселении нет даже улиц -- дома просто нагромождены вокруг центральной площади. Впрочем, как вы понимаете, улицы навьярам и ни к чему". ]]};
 
        {tag = "iraaphaanotrr", false, "Ираафаанотр?", [[Екатерина Светлова отвечает: "Ираафаанотр -- самое близкое к Атлантиде поселение навьяров. Мы называем его городом, хотя по нашим меркам это даже не деревня. Полтора десятка домов, да несколько полей вокруг. И все же, навьяры Ираафаанотра сильно помогают нам, обменивая ресурсы, которые они добывают здесь на более сложные вещи, производить которые самостоятельно они не способны". ]]};
 
		{"В чем заключается ваше предложение?", [[Екатерина Светлова откладывает бумаги в сторону, достает из ящика стола карту и раскладывает ее на столе. После чего продолжает: _"На самом деле, вы прибыли как нельзя вовремя. Наши отношения с навьярами несколько натянулись в последнее время, и, боюсь, разрешить разногласия поможете только вы. Я попробую кратко изложить ситуацию, задавайте вопросы по ходу рассказа, если вам потребуется дополнительная информация, -- Светлова делает небольшую паузу, -- Неподалеку от Атлантиды находятся два навьярских поселения: Ираафаанотр и Дипатреанотр. Первая встреча с жителями Дипатреанотра прошла не совсем гладко и в результате ее погибло несколько человек. К счастью, в дальнейшем отношения удалось наладить. Недавно, между Ираафаанотром и Дипатреанотром произошел конфликт, который может негативно повлиять на нас и наши отношения с этими городами. Мы пытались вмешаться, но это лишь обострило разногласия и в дальнейшем может поставить под угрозу само существование станции"_. ]], code [[ psub('help')]]};
 
		{tag = 'help'};
 
		{"И как я смогу помочь?", [[Екатерина Светлова поясняет: _"Навьяры знают, что вы не с Атлантиды, поэтому вы предстанете как нейтральная сторона. Сейчас вам стоит поговорить с Леарр и Ривеерром и узнать их взгляд на ситуацию. Потом приходите ко мне и решим, что делать"_. ]], code [[
 
			char_svetlova_dlg.flag_help = true;
 
			if (char_svetlova_dlg.flag_explain) then
 
				pon("first_meeting_end");
 
			end;
 
		]]};
 
		{"И в чем суть этого конфликта?", [[Екатерина Светлова отвечает: "Все одновременно очень просто и очень сложно. Из Ираафаанотра и Дипатреанотра не так давно пропали ценные реликвии. Города обвиняют друг друга и непонятно, к чему это приведет. Мы не понимаем, что могло быть причиной этому -- никаких предпосылок к такому у навьяров не было. С самого основания станции города жили в мире и согласии. К несчастью, ни Дипатреанотр, ни Ираафаанотр не дают нам доступа в храмы, где хранились реликвии". ]], code [[
 
			char_svetlova_dlg.flag_explain = true;
 
			if (char_svetlova_dlg.flag_help) then
 
				psub("first_meeting_end");
 
			end;
 
		]]};
 
		{tag = "first_meeting_end"};
 
		{"Хорошо, я помогу вам. ", function(s)
 
                if (atl_iof_completed) then
 
                    if (atl_iof_learr_dead) then
 
                        return [[Екатерина Светлова кивает: _"Поговорите с Аикерьярром и Ривеерром, разберитесь, узнайте больше. Они оба скорее всего где-то здесь, в Окулусе"_. ]];
 
                    else
 
                        return [[Екатерина Светлова кивает: _"Поговорите с Леарр и Ривеерром, разберитесь, узнайте больше. Они оба скорее всего где-то здесь, в Окулусе"_. ]];
 
                    end;
 
                else
 
                    return [[Екатерина Светлова кивает: _"Поговорите с Леарр и Ривеерром, разберитесь, узнайте больше. Ривеерр большую часть времени находится здесь, в Окулусе. Леарр вы, скорее всего, найдете в Игнисе"_. ]];
 
                end;
 
        end, code [[
 
			char_svetlova_dlg.state = 1;
 
			atl_iyh_state = 1;
 
			psub("generic");
 
		]]};
 
		{"Я прибыл сюда искать своего отца, а не решать проблемы полуразумных рыбней", [[Екатерина Светлова пожимает плечами и недовольно отвечает: "Если вы не станете помогать нам, мы не станем помогать вам. Можете сидеть и ждать возвращения Надежды". ]]};
 
        {tag = "ask_more"};
 
        {tag = "on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.drake_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.drake_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Дрейк смог многого достигнуть и, хотя он работал не один, именно благодаря его таланту Вестхейвен Трансоушен просуществовала многие годы. Меня всегда удивляло его чутье -- он часто принимает странные, но, в конечном итоге, выгодные решения. Боюсь, когда-нибудь это чутье подведет его". ]];
 
            end;
 
        end};
 
        {tag = "on_black", false, "Расскажите об Адриане Блэке. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.black_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.black_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Блэк и Дрейк всегда работали вместе. Там где Дрейк готов пойти на риск, Блэк предлагает поступить осторожно. Зачастую Дрейк полностью передает управление в руки Блэка и Блэк всегда хорошо справляется. В свою очередь, Дрейк всегда умел собирать вокруг себя правильных людей, чего Блэк никогда бы не смог". ]];
 
            end;
 
        end};
 
        {tag="on_darkstar", false, "Расскажите о Винсенте Даркстаре. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.darkstar_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.darkstar_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Если вы уже говорили с ним, то вы итак все знаете. Вы можете посчитать его чрезмерно осторожным, но для его должности это скорее достоинство, чем недостаток. Не знаю, что творится у него в голове и почему он вообще занимается этим здесь, но пока у нас нет причин не доверять ему". ]];
 
            end;
 
        end};
 
        {tag="on_svetlova", false, "Расскажите о себе. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.svetlova_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.svetlova_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Не знаю, что вам рассказать. Я родилась в России, но образование получала уже в Европе, во Франции. После завершения обучения, я занималась некоторыми исследованиями в своей области, отправлялась с несколькими экспедициями в различные уголки света. А потом на меня вышел Фредерик Моро -- я тогда как раз искала возможности для новой экспедиции, Атлантиды тогда еще не было, но уже была Надежда и в Вестхейвен Трансоушен уже знали про навьяров. Потом была построена Атлантида и вот я здесь, занимаюсь делом всей моей жизни". ]];
 
            end;
 
        end};
 
        {tag="on_moreau", false, "Расскажите о Фредерике Моро. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.moreau_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.moreau_asked = 2;
 
                return [[Екатерина Светлова отвечает: "С Фредериком Моро я познакомилась раньше, чем с другими руководителями Вестхейвен Трансоушен. Хотя он и работает в компании с самого ее основания, его имя звучит гораздо реже, чем имена Блэка и Дрейка, однако, вклад Моро в развитие Вестхейвен Трансоушен трудно переоценить. Со всей своей скрупулезностью и точностью, он умело управлял ресурсами компании и продолжает это делать на Атлантиде. Что меня в нем удивляет, так это то, что он, при всех своих способностях, предпочитает оставаться в тени Дрейка и Блэка". ]];
 
            end;
 
        end};
 
        {tag="on_wright", false, "Расскажите о Майкле Райте. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.wright_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.wright_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Без Майкла Райта Вестхейвен Трансоушен никогда не достигла бы вершин. Сперва все более и более быстроходные и комфортабельные суда, а затем и Надежда с Атлантидой -- все было придумано им. Он напоминает мне безумного изобретателя из фантастической книжки, за исключением того, что не пытается захватить мир". ]];
 
            end;
 
        end};
 
        {tag="on_leroy", false, "Расскажите о Мишеле Леруа. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.leroy_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.leroy_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Мишель Леруа хорошо известен на станции -- он один из первых открыто поднял вопрос о закрытии станции и возвращении на поверхность. К счастью, он пока не успел слишком многих склонить на свою сторону. Вам лучше поговорить с Моро или Райтом по этому поводу". ]];
 
            end;
 
        end};
 
        {tag="on_jones", false, "Что вы думаете о Чарли Джонсе? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.jones_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.jones_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Кажется, это кто-то из подчиненных Майкла Райта. Почему бы вам не поговорить с ним об этом". ]];
 
            end;
 
        end};
 
        {tag="on_goldman", false, "Что вы думаете о Леонарде Голдмане? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.goldman_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.goldman_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Кажется, это кто-то из подчиненных Майкла Райта. Почему бы вам не поговорить с ним об этом". ]];
 
            end;
 
        end};
 
        {tag="on_atlantis", false, "Расскажите об Атлантиде. ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.atlantis_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.atlantis_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Атлантида была построена с единственной целью -- быть ближе к навьярам, получить возможность изучать их. Майкл Райт, конечно, скажет вам другое и будет по-своему прав -- в конце концов, станцию придумал именно он". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.navjiarr_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.navjiarr_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Удивительные создания. Я никогда не поверила бы в их существование, если бы не видела их собственными глазами. Хотя они кажутся крайне примитивными на первый взгляд, у них богатая и интересная культура. К сожалению, сейчас они пребывают в некотором упадке. На многие вопросы, которые мы им задаем -- как они строят свои храмы, откуда достают материалы, кем созданы их реликвии, они отвечают туманными легендами о древних временах и дальних местах. К сожалению, их картографическая система настолько запутана, что многие из них путаются в ней". ]];
 
            end;
 
        end};
 
        {tag="on_learr", false, "Что вы думаете о Леарр? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.learr_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_svetlova.learr_asked = 3;
 
                    return [[Екатерина Светлова отвечает: "Помимо самого факта гибели этой замечательной юной девушки, это событие имеет далеко идущие последствия для Атлантиды". ]];
 
                else
 
                    char_svetlova.learr_asked = 2;
 
                    return [[Екатерина Светлова отвечает: "Леарр -- просто находка для нас всех. Она гораздо меньше скована догмами, чем другие, более старые, представители ее племени. Приятно наблюдать, как она с легкостью впитывает наши знания и с готовностью делится своими". ]];
 
                end;
 
            end;
 
        end};
 
        {tag="on_ryveerr", false, "Что вы думаете о Ривеерре? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.ryveerr_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.ryveerr_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Ривеерр -- достаточно дружелюбный и приятный навьяр. Его интеллект позволяет нам общаться с ним практически на равных, с поправкой на отсутствие некоторых знаний и понимания многих известных нам вещей". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы думаете об Аикерьярре? ", function()
 
            if (atl_rep_svetlova < 0) then
 
                char_svetlova.aikerjarr_asked = 1;
 
                return [[Екатерина Светлова отвечает: "Спросите кого-нибудь другого". ]];
 
            else
 
                char_svetlova.aikerjarr_asked = 2;
 
                return [[Екатерина Светлова отвечает: "Нам всем было бы легче, если бы его не было на Атлантиде. К сожалению, сейчас мы не можем просто взять и прогнать его -- это сделает наше положение еще худшим, чем оно есть". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Светлова кивает: "Говорите".]], code [[ char_svetlova_dlg:reset_more(); pret(); ]]};
 
        {tag = "generic"};
 
		{tag = "sabotage", false, "Даркстар считает, что причиной пожара в Игнисе был саботаж. Что вы об этом думаете?", function(s)
 
			if (atl_iof_learr_dead) then
 
				atl_rep_darkstar = atl_rep_darkstar - 1;
 
				return [[Екатерина Светлова отвечает: "Даркстар просил вас об этом никому не говорить. Разговор окончен". ]];
 
			else
 
			    char_svetlova_dlg.lfc_sabotage = true;
 
				atl_rep_svetlova = atl_rep_svetlova + 1;
 
				return [[Екатерина Светлова отвечает: "Даркстар просил вас об этом никому не говорить, но я понимаю ваш интерес. Саботажником может быть только кто-то из сторонников закрытия станции. Поговорите с Мишелем Леруа, чтобы больше об этом узнать. О саботаже попробуйте поговорить с Уолтером Рэдклиффом, если вам действительно интересно. И, пожалуйста, постарайтесь не разводить панику на станции". ]];
 
			end;
 
		end};
 
		{tag = "ignis_what", false, "Вы знаете, что произошло в Игнисе?", function(s)
 
			if (char_svetlova_dlg.lfc_sabotage) then
 
				return [[Екатерина Светлова отвечает: "Вы же только что сами сказали -- саботаж". ]];
 
			elseif (atl_iof_learr_dead) then
 
				return [[Екатерина Светлова отказывается отвечать: "Мне кажется, это не ваше дело. И не мое. Этим занимается служба безопасности". ]];
 
			else
 
				poff("sabotage");
 
				psub("ignis_sabotage");
 
				return [[Екатерина Светлова отвечает: "Я думаю вы и сами прекрасно знаете. Может расскажете?". ]];
 
			end;
 
		end};
 
        {tag= "iyh1_learr", false, "Я поговорил с навьярами. Леарр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Однако, у нас есть зацепка -- Записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает что считает нужным". ]], code [[ dypatreanotrr_temple_found = true; atl_iyh_state = 2; psub('iyh1_sub'); ]]};
 
        {tag= "iyh1_aikerjarr", false, "Я поговорил с навьярами. Аикерьярр отрицает причастность Ираафаанотра к краже реликвии из Дипатреанотра. Ривеерр же открыто признает, что навьяры Дипатреанотра забрали ценности из Ираафаанотра.", [[Светлова разводит руками: "Теперь вы в курсе ситуации. Аикерьярр, конечно, доверия не заслуживает, но Леарр говорила то же самое. Тем не менее, у нас есть зацепка -- Записи Уильяма. Он мало что оставил нам, но среди найденного есть следующее сообщение", -- Екатерина достает из ящика блокнот и передает вам.^ Вы читаете следующее: "Карты давно утеряны, но отшельник в старом храме обещал помочь. Понятия не имею, что и как он сделает, но если это поможет найти Лсэрианотр -- пусть делает что считает нужным". ]], code [[ dypatreanotrr_temple_found = true; atl_iyh_state = 2; psub('iyh1_sub'); ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Светлова кивает: "Спрашивайте".]], code [[ psub('ask_more'); ]]};
 
		{always = true, "Я пойду.", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]};
 
        {tag= "iyh1_sub"};
 
        {"Старый храм?", [[Светлова пожимает плечами: "К сожалению, у меня нет ничего кроме намеков. Предполагаю, что где-то здесь может быть еще один храм навьяров, возможно стоит расспросить их?" ]]};
 
        {"Я хотел бы посетить храм Дипатреанотра.", [[Светлова отвечает: "Не думаю, что это хорошая идея. Навьяры не пускают никого внутрь". ]], code [[ pon('outside');]]};
 
        {tag = "outside", false, "Возможно, самое интересное находится снаружи храма.", [[Светлова соглашается: "Возможно. В любом случае -- прошло уже достаточно много времени, чтобы хоть какие-то следы сохранились". ]], code [[ pret(); ]]};
 
		{tag = "ignis_sabotage"};
 
		{"Даркстар считает, что причиной пожара был саботаж", function(s)
 
			psub("generic");
 
			atl_rep_svetlova = atl_rep_svetlova + 1;
 
            return [[Екатерина Светлова отвечает: "Даркстар просил вас об этом никому не говорить, но я понимаю ваш интерес. Саботажником может быть только кто-то из сторонников закрытия станции. Поговорите с Мишелем Леруа, чтобы больше об этом узнать. О саботаже попробуйте поговорить с Уолтером Рэдклиффом, если вам действительно интересно. И, пожалуйста, постарайтесь не разводить панику на станции". ]];
 
		end};
 
		{"Понятия не имею", [[Екатерина Светлова разочарованно отвечает: "Очень жаль". ]], code [[ psub("generic"); ]]};
 
		{tag="secret_op"};
 
		{"Хорошо, я ничего не скажу навьярам. ", [[Екатерина Светлова отвечает: "Отлично. Осталось дождаться, когда вам позволят покидать станцию". ]], code [[ back(); ]]};
 
		{"Мне кажется, нам стоит поставить их в известность. Как они отреагируют, если мы просто принесем им реликвию? ", [[Екатерина Светлова отвечает: "Они будут благодарить нас. А теперь представьте, что вы сообщаете им, что отправляетесь в их священное место охотиться на их священную рыбу. Что будет?" ]], code [[ psub("so_answer"); ]]};
 
		{tag="so_answer"};
 
		{"Да, пожалуй вы правы", [[Екатерина Светлова отвечает: "Отлично. Осталось дождаться, когда вам позволят покидать станцию". ]]};
 
		{"А что будет, если мы принесем им реликвию, которая должна по их мнению быть в Ираафаанотре? Разве они не посчитают, что мы украли ее оттуда? ", [[Екатерина Светлова недовольно отвечает: "Поступайте как знаете. Если ваши действия повредят станции, то Левиафана вам не видать". ]], code [[ back(); ]]};
 
        {tag="learr_back"};
 
        {"Конечно, Леарр будет крайне полезна в нашей экспедиции.", [[Леарр, все это время молча стоявшая рядом, отвечает: "Я благодарю тебя-Дрейк. Ты помог нам-Ираафаанотру-и-Дипатреанотру. Я разрушение-храма-понимаю. Другого-пути не-было". ^Светлова кивает: "Этот вопрос решен. Переходим к следующему. Вы говорили, что нашли фрагмент карты. Можете показать его?"]], code [[
 
            table.insert(pl.party, 'learr');
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            psub("iyh_more");
 
        ]]};
 
        {"Нет, мы справимся без ее помощи.", [[Леарр, все это время молча стоявшая рядом, кивает: "Я предпочла-бы-участвовать-в-экспедиции".]], code [[
 
            psub("learr_back2");
 
        ]]};
 
        {tag="learr_back2"};
 
        {"Хорошо, возвращайся на Левиафан.", [[Леарр отвечает: "Я благодарю тебя-Дрейк. Ты помог нам-Ираафаанотру-и-Дипатреанотру. Я разрушение-храма-понимаю. Другого-пути не-было". ^Светлова кивает: "Этот вопрос решен. Переходим к следующему. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]], code [[
 
            table.insert(pl.party, 'learr');
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            psub("iyh_more");
 
        ]]};
 
        {"Нет, оставайся на Атлантиде", [[Леарр разочарованно отвечает: "Я на-Атлантиде-останусь", -- и выходит из комнаты. ^Светлова качает головой: "Вы зря отказались от ее помощи, Дрейк. Навьяр на борту мог бы оказаться очень полезен. Но, к делу. Вы говорили, что нашли фрагмент карты. Можете показать его?" ]], [[
 
            move("char_learr_atlantis", "atl_oculus_library");
 
            psub("iyh_more");
 
        ]]};
 
		{tag="iyh_more"};
 
        {"[Передать фрагмент карты]Да, конечно. Мы нашли это в скрытом помещении в храме.", [[Екатерина Светлова с интересом рассматривает табличку: "Удивительно, это явно очень старое, но это может быть все что угодно. Да, это карта, она сильно отличается от других навьярских карт, виденных нами. Обратите внимание, на количество деталей -- здесь не только отмечены условными символами три-четыре ориентира. Здесь их десятки, если не сотни. Попробуйте разузнать побольше в Ираафаанотре и Дипатреанотре". ]], code [[ psub("generic"); ]]};
 
	};
 
};
 
 
char_michael_wright_dlg = dlg {
 
    var {
 
        state = 0;
 
        lfc_dialog = false;
 
    };
 
    nam = "Майкл Райт";
 
    disp = "Майкл Райт";
 
    
 
    reset_more = function(s)
 
        poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_aikerjarr", "on_ryveerr", "more_questions");
 
        if (atl_rep_wright < 0) then
 
            if (char_michael_wright.drake_asked == 0) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_michael_wright.black_asked == 0) then pon("on_black"); pon("more_questions"); end;
 
            if (char_michael_wright.darkstar_asked == 0) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_michael_wright.svetlova_asked == 0) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_michael_wright.moreau_asked == 0) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_michael_wright.wright_asked == 0) then pon("on_wright"); pon("more_questions"); end;
 
            
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked == 0) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_michael_wright.jones_asked == 0) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_michael_wright.goldman_asked == 0) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked == 0) then pon("on_atlantis"); pon("more_questions"); end;
 
            if (char_michael_wright.navjiarr_asked == 0) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_michael_wright.learr_asked == 0) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_michael_wright.ryveerr_asked == 0) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked == 0) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        else
 
            if (char_michael_wright.drake_asked < 2) then pon("on_drake"); pon("more_questions"); end;
 
            if (char_michael_wright.black_asked < 2) then pon("on_black"); pon("more_questions"); end;
 
            if (char_michael_wright.darkstar_asked < 2) then pon("on_darkstar"); pon("more_questions"); end;
 
            if (char_michael_wright.svetlova_asked < 2) then pon("on_svetlova"); pon("more_questions"); end;
 
            if (char_michael_wright.moreau_asked < 2) then pon("on_moreau"); pon("more_questions"); end;
 
            if (char_michael_wright.wright_asked < 2) then pon("on_wright"); pon("more_questions"); end;
 
            if (atl_iof_completed) then
 
                if (char_michael_wright.leroy_asked < 2) then pon("on_leroy"); pon("more_questions"); end;
 
                if (char_michael_wright.jones_asked < 2) then pon("on_jones"); pon("more_questions"); end;
 
                if (char_michael_wright.goldman_asked < 2) then pon("on_goldman"); pon("more_questions"); end;
 
            end;
 
            
 
            if (char_michael_wright.atlantis_asked < 2) then pon("on_atlantis"); pon("more_questions"); end;
 
            if (char_michael_wright.navjiarr_asked < 2) then pon("on_navjiarr"); pon("more_questions"); end;
 
            if (char_michael_wright.learr_asked < 2) then pon("on_learr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.learr_asked < 3) then pon("on_learr"); pon("more_questions"); end;
 
            if (char_michael_wright.ryveerr_asked < 2) then pon("on_ryveerr"); pon("more_questions"); end;
 
            if (atl_iof_learr_dead and char_michael_wright.aikerjarr_asked < 2) then pon("on_aikerjarr"); pon("more_questions"); end;
 
        end;
 
    end;
 
    
 
    enter = function(s)
 
        if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then
 
            psub("lfc_warning");
 
            return [[Майкл Райт сообщает вам: "Добрый день. Винсент Даркстар просил вас срочно поговорить с ним". ]];
 
        end;
 
        poff('nih_fixed');
 
        if atl_nih_state == 2 or atl_nih_state == 1 then
 
            pon('nih_fixed');
 
        end;
 
        
 
        if (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;
 
        
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
        end;
 
        
 
        s:reset_more();
 
        
 
        if (atl_iof_completed and char_michael_wright.iof_reaction == 0) then
 
            char_michael_wright.iof_reaction = 1;
 
            if (atl_iof_learr_dead) then
 
                psub("iof_learr_dead");
 
                return [[Майкл Райт обращается к вам: "Господин Дрейк, рад видеть вас живым и здоровым. Трагедия на Игнисе стала для нас неожиданностью. Быть может, если бы мы были готовы к такому, Леарр была бы здесь, с нами". ]];
 
            elseif (atl_iof_learr_suit) then
 
                psub("iof_learr_suit");
 
                return [[Майкл Райт обращается к вам: "Господин Дрейк, рад видеть вас живым и здоровым. Авария на Игнисе стала для нас неожиданностью, однако благодаря вашим действиям никто не пострадал, а мы получили ценный опыт". ]];
 
            else
 
                psub("iof_learr");
 
                return [[Майкл Райт обращается к вам: "Господин Дрейк, рад видеть вас живым и здоровым. Авария на Игнисе стала для нас неожиданностью, однако благодаря вашим действиям никто не пострадал". ]];
 
            end;
 
        elseif (atl_nih_state == 3 and atl_iof_completed and atl_fta_state == 0) then
 
            atl_fta_state = 1;
 
            psub("fta_agree");
 
            return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. У меня есть для вас работа. Сейчас все наши бригады заняты, поэтому я прошу вас помочь с обслуживанием Солиса. Приходите туда и свяжитесь со мной по телефону, я дам вам инструкции". ]];
 
        elseif (atl_fta_state == 2) then
 
            atl_fta_state = 3;
 
            psub("fta_deb");
 
            return [[Майкл Райт протягивает вам руку: "Только благодаря вам, мы все еще здесь. Я с радостью сообщу Моро, что я за возвращение вам Левиафана". ]];
 
        else
 
            psub("generic");
 
            return [[Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Чем могу быть полезен?" ]];
 
        end;        
 
    end;
 
    phr = {
 
        {tag="lfc_warning"};
 
        {always=true, "Мне пора.", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]};
 
        {tag="iof_learr_dead"};
 
        {"Мне очень жаль.", [[Майкл Райт кивает: "Утерянного не вернуть. Мы сделали выводы и постараемся не допустить опасных инцидентов в будущем". ]], code [[psub("generic");]]};
 
        {"Я чуть не погиб там!", [[Майкл Райт отворачивается от вас и произносит: "Приходите позже, я занят". ]], code [[ atl_rep_wright = atl_rep_wright - 1; back(); ]]};
 
        {tag="iof_learr_suit"};
 
        {"Я сделал, что должен был. ", [[Майкл Райт кивает: "И все же, не каждому пришла бы в голову идея облачить навьяра в скафандр".]], code [[psub("generic");]]};
 
        {tag="iof_learr"};
 
        {"Рад, что никто не пострадал. ", [[Майкл Райт кивает. ]], code [[ psub("generic"); ]]};
 
        {tag="fta_agree"};
 
        {"Хорошо, я сделаю, что смогу. ", [[Майкл Райт спрашивает: "Вы что-то еще хотели?" ]], code [[psub("generic"); ]]};
 
        {tag="fta_deb"};
 
        {"[Пожать руку]Только я все еще не знаю, куда мне следует плыть", [[Майкл Райт кивает: "Мы сделаем все возможное, чтобы помочь вам. Светлова сказала мне, что вы помогаете ей в решении каких-то проблем с навьярами. По ее мнению, это может помочь вам в поисках". ]], code [[ psub('generic'); ]]};
 
        {"Просто верните мне Левиафан", [[Майкл Райт с сожалением произносит: "Не все так просто. Нужно, чтобы согласие дали еще Моро, Даркстар и Светлова". ]], code [[ psub('generic'); ]]};
 
        {tag="ask_more"};
 
        {tag="on_drake", false, "Расскажите об Уильяме. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.drake_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.drake_asked = 2;
 
                return [[Майкл Райт отвечает: "Я познакомился с вашим отцом во время нашей учебы в университете. Он никогда не относился серьезно к учебе, но уже тогда он умел собирать вокруг себя людей. Создание Вестхейвен Трансоушен было его идеей. Я помню, как мы с Моро первое время очень сомневались, стоит ли ввязываться в подобную авантюру. Дрейк активно развивал компанию, пока она существовала. Наверное, любой другой на месте Дрейка отправил бы меня лечиться, услышав мое предложение создать подводный корабль. Уильям тогда внимательно выслушал меня, задал пару вопросов и выделил деньги на проект". ]];
 
            end;
 
        end};
 
        {tag="on_jack", false, "Расскажите о своем сыне. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.jack_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.jack_asked = 2;
 
                if (atl_jack_in_party) then
 
                    return [[Майкл Райт отвечает: "Мой сын, Джек, остался на поверхности вместе с моей женой, Элис. Я оставил им дом и немаленькое состояние, в надежде, что они справятся сами. Жаль, что все так получилось. Элис умерла, а Джек потратил лучшие годы на безуспешные попытки найти меня. Спасибо, что взяли моего сына с собой". ]];
 
                else
 
                    psub("son");
 
                    return [[Майкл Райт отвечает: "Мой сын, Джек, остался на поверхности вместе с моей женой, Элис. Я оставил им дом и немаленькое состояние, так что надеюсь, что у них все хорошо". ]];
 
                end;
 
            end;
 
        end};
 
        {tag="on_black", false, "Расскажите об Адриане Блэке. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.black_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.black_asked = 2;
 
                return [[Майкл райт отвечает: "Адриан -- университетский друг вашего отца. Он всегда уравновешивал Дрейка во многих отношениях. Там где Дрейк готов был пойти на риск, Блэк призывал к осторожности. Там где Дрейк соглашался на уступки, Блэк стоял до последнего. К слову, мою идею с субмариной Адриан не одобрил. К счастью, ваш отец все же позволил мне этим заняться". ]];
 
            end;
 
        end};
 
        {tag="on_darkstar", false, "Расскажите о Винсенте Даркстаре ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.darkstar_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.darkstar_asked = 2;
 
                return [[Майкл Райт отвечает: "Я почти ничего о нем не знаю. Впрочем, не думаю, что кто-то на станции может сказать о нем что-то. Параноидальный тип. Я вообще не понимаю, как он согласился сюда пеерехать. Тогда он мне целый допрос устроил -- чуть ли не в каждую линию на чертеже тыкал и спрашивал для чего это нужно. Думаю, мне стоит гордиться, что Атлантида прошла его проверку". ]];
 
            end;
 
        end};
 
        {tag="on_svetlova", false, "Расскажите о Екатерине Светловой. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.svetlova_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.svetlova_asked = 2;
 
                return [[Майкл Райт отвечает: "Екатерина присоединилась к нам достаточно поздно -- уже после испытаний Надежды. Странно, что ей не пришла в голову идея построить Атлантиду. Впрочем, ее мало интересует техническая сторона вопроса -- она здесь чтобы изучать навьяров и не скрывает это". ]];
 
            end;
 
        end};
 
        {tag="on_moreau", false, "Расскажите о Фредерике Моро. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.moreau_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.moreau_asked = 2;
 
                return [[Майкл Райт отвечает: "Фредерик с нами с самого начала. Хотя его влияние может показаться незначительным -- многие на станции даже не слышали о нем, пока он не занял пост управляющего -- он все же делал важное дело. Благодаря ему мы смогли завершить многие проекты вовремя, ведь за все поставки материалов отвечал именно он. С управлением станцией он так же справляется неплохо, хотя здесь все гораздо проще, чем было на поверхности". ]];
 
            end;
 
        end};
 
        {tag="on_wright", false, "Расскажите о себе. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.wright_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.wright_asked = 2;
 
                if (atl_jack_in_party) then
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда встретили навьяров -- ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, и я до сих пор зол на него за это, хотя умом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда, -- Райт вздыхает, -- В своем увлечении я позабыл обо всем. Я оставил свою жену, Элис, и сына, Джека, на поверхности. Если честно, я скорее жалею, что женился, чем что оставил их там. Это не делает мою ошибку меньше". ]];
 
                else
 
                    return [[Майкл Райт отвечает: "Родился я в Лондоне. Окончил один из местных университетов, получив специальность инженера-кораблестроителя. Вместе с вашим отцом, Фредериком Моро и Адрианом Блэком мы основали Вестхейвен Трансоушен. Поначалу моя работа была далеко не идеальной -- мы купили несколько старых кораблей и привели их в порядок. Мы довольно быстро заработали хорошую репутацию. Дела шли на подъем и, наконец, у нас появились собственные верфи. К этому времени я уже имел глупость жениться. Я спроектировал несколько судов для компании. Лучшим была Огненная Стрела -- быстроходный комфортабельный пароход, вмещающий больше двух сотен пассажиров. Ну и наконец мы построили Надежду. Сказать, что мы удивилсь, когда встретили навьяров -- ничего не сказать. К сожалению, встреча не прошла бескровно -- наши люди просто вышли поговорить, показать себя. А эти рыбни закидали несчастных супругов Барнз копьями! Блэк тогда не дал мне пустить торпеду в этих уродов, и я до сих пор зол на него за это, хотя умом понимаю, что он был прав. Да и не было бы никакой Атлантиды, убей я тогда тех навьяров. Несколько месяцев мы обсуждали, что делать дальше. Потом мы с Сильвией придумали Атлантиду и переселились сюда". ]];
 
                end;
 
            end;
 
        end};
 
        {tag="on_leroy", false, "Что вы думаете о Мишеле Леруа? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.leroy_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.leroy_asked = 2;
 
                return [[Майкл Райт отвечает: "Мишель Леруа уже давно создает проблемы на Атлантиде -- он первым начал активно поднимать вопрос возвращения на поверхность. Не думаю, что вам стоит на него обращать внимание". ]];
 
            end;
 
        end};
 
        {tag="on_jones", false, "Что вы думаете о Чарли Джонсе? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.jones_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.jones_asked = 2;
 
                return [[Майкл Райт отвечает: "Джонс, кажется, не в восторге, что наше пребывание на Атлантиде затянулось. К счастью, в отличие от Леруа, он не пытается всех убедить в своей правоте. Если вас интересует, мог ли он саботировать Игнис, то я не считаю это вероятным". ]];
 
            end;
 
        end};
 
        {tag="on_goldman", false, "Что вы думаете о Леонарде Голдмане? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.goldman_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.goldman_asked = 2;
 
                return [[Майкл Райт отвечает: "Леонард -- способный работник. К сожалению, в последнее время он перенял идеи Леруа. Не стоит говорить, как это сказалось на его работе. Надеюсь, он возьмется за ум". ]];
 
            end;
 
        end};
 
        {tag="on_atlantis", false, "Расскажите об Атлантиде. ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.atlantis_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.atlantis_asked = 2;
 
                return [[Майкл Райт отвечает: "Идея построить постоянную подводную станцию пришла мне в голову через некоторое время после завершения Надежды. Думаю, что не встреть мы тогда навьяров, Дрейк не позволил бы мне заниматься этим. Но его явно заинтересовала возможность постоянного пребывания вблизи этих рыбней. Конечно, если бы не Сильвия, я никогда не смог бы сделать станцию автономной -- я долго думал, как обеспечить нас всем необходимым здесь: едой, электричеством, воздухом, инструментами. Еду и воздух мы получаем в секции Аэрис. Электричество получаем сжигая топливо нескольких видов: растения, выращиваемые в Аэрисе и уголь, выменянный у навьяров. С инструментами дела обстоят сложнее всего. Но тут нас снова выручают навьяры, с готовностью предлагая нам металл, который они не умеют обрабатывать". ]];
 
            end;
 
        end};
 
        {tag="on_navjiarr", false, "Что вы думаете о навьярах? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.navjiarr_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.navjiarr_asked = 2;
 
                return [[Майкл Райт отвечает: "Они меня мало волнуют. Хотя станция существует во многом благодаря сотрудничеству с ними, я предпочитаю поменьше общаться с ними. У меня все еще стоят перед глазами проткнутые коралловыми копьями тела Ребекки и Нила". ]];
 
            end;
 
        end};
 
        {tag="on_learr", false, "Что вы думаете о Леарр? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.learr_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_michael_wright.learr_asked = 3;
 
                    return [[Майкл Райт отвечает: "Леарр часто бывала здесь. Рассматривала все. Было приятно с ней общаться. Ее гибель -- большая утрата для всех нас". ]];
 
                else
 
                    char_michael_wright.learr_asked = 2;
 
                    return [[Майкл Райт отвечает: "Она часто бывает здесь. Рассматривает все, изучает. Это не может меня не радовать". ]];
 
                end;
 
            end;
 
        end};
 
        {tag="on_ryveerr", false, "Что вы думаете о Ривеерре? ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.ryveerr_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.ryveerr_asked = 2;
 
                return [[Майкл Райт отвечает: "Не думаю, что смогу много о нем сказать. Большую часть времени он проводит в Окулусе. Если вы хотите узнать о Ривеерре больше, советую поспрашивать там". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы думаете об Аикерьярре ", function()
 
            if (atl_rep_wright < 0) then
 
                char_michael_wright.aikerjarr_asked = 1;
 
                return [[Майкл Райт отвечает: "Я не хочу об этом говорить". ]];
 
            else
 
                char_michael_wright.aikerjarr_asked = 2;
 
                return [[Майкл Райт отвечает: "Не думаю, что могу что-то о нем сказать. Я видел его один раз, при встрече и не могу сказать, что впечатление было благоприятным. Слишком заносчивый он". ]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Майкл Райт кивает: "Хорошо".]], code [[ char_michael_wright_dlg:reset_more(); pret(); ]]};
 
        {tag="generic"};
 
        {tag="nih_fixed", false, "Я нашел утечку.", function(s)
 
            if atl_nih_state == 2 then
 
                atl_nih_state = 3; 
 
                disable_nih();
 
                atl_rep_wright = atl_rep_wright + 1
 
                return [[Майкл Райт кивает: "Спасибо, Дрейк. Приборы показывают, что утечка устранена". ]]
 
            else
 
                return [[Майкл Райт отрицательно качает головой: "Что-то не так. Приборы показывают, что утечка все еще присутствует. Возможно, были повреждены несколько труб. Перепроверьте, пожалуйста". ]]
 
            end;
 
        end};
 
        {tag="sabotage", false, "Даркстар считает, что пожар начался из-за саботажа.", function(s)
 
            atl_rep_wright = atl_rep_wright - 1;
 
            local part1 = [[Майкл Райт недовольно ворчит: "Пожалуйста, не лезьте в это дело. За безопасность станции отвечает Винсент Даркстар и лучше будет, если он будет заниматься этим делом]];
 
            if (not atl_jack_in_party) then
 
                atl_rep_darkstar = atl_rep_darkstar - 1;
 
                return part1 .. [[Я доложу Даркстару о вашем неповиновении". ]];
 
            else 
 
                return part1 .. [[". ]];
 
            end;
 
        end};
 
        {tag="ignis_what", false, "Из-за чего начался пожар в Игнисе?", [[Майкл Райт отвечает: "Короткое замыкание. Рядом, к сожалению, никого не оказалось и потушить возгорание вовремя не удалось. Огонь быстро распространился по всей секции, ну а дальше вы все знаете". ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Майкл Райт отвечает: "Задавайте, посмотрим чем смогу помочь".]], code [[ psub('ask_more'); ]]};
 
        {always=true, "Мне пора.", function(s)
 
            if (atl_nih_state == 0 and atl_jack_in_party) then
 
                atl_nih_state = 3;
 
            end;
 
            if (atl_nih_state == 0 and not atl_jack_in_party) then
 
                atl_nih_init();
 
                pr([["Кстати, у меня есть для вас небольшое задание. У нас где-то утечка воздуха. Ничего критичного, но у нас некому заняться этим. Вы могли бы прогуляться по станции и найти и исправить поломку. Проще всего будет просто заменить трубы на такие же. В случае возникновения проблем -- попросите у Мари в библиотеке документацию по воздуховодам, она даст вам все необходимое. Запасные вы найдете здесь или на складе в Акве. До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
                psub("bq");
 
            else
 
                pr([["До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
                back();
 
            end;
 
        end};
 
        {tag="bq"};
 
        {"Хорошо, я сделаю что смогу.", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]};
 
        {tag="son"};
 
        {"Мать Джека умерла, а сам он прозябает в своем доме ничего не делая. ", [[Майкл Райт вздыхает: "Жаль, что все так вышло. Спасибо, что честно сказали мне. Наверное..."]], code[[pret();]]};
 
        {"Мать Джека умерла, но с ним все в порядке. Он все еще живет в вашем доме. ", [[Майкл Райт вздыхает: "Элис...". ]], code[[pret();]]};
 
        {"У них все хорошо. ", [[Майкл Райт кивает: "Рад это слышать". ]], code[[pret();]]}
 
    };
 
};
 
 
 
char_anna_atlantis_dlg = dlg {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Анна Рэдклифф";
 
	disp = "Анна Рэдклифф";
 
    
 
    reset_more = function(s)
 
        poff("on_anna", "on_walter", "on_atlantis", "on_drake", "more_questions");
 
        if (rel_anna  < 0) then
 
            if (char_anna.anna_asked == 0) then
 
                pon("on_anna");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.walter_asked == 0) then
 
                pon("on_walter");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.atlantis_asked == 0) then
 
                pon("on_atlantis");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.drake_asked == 0) then
 
                pon("on_drake");
 
                pon("more_questions");
 
            end;
 
        else
 
            if (char_anna.anna_asked < 2) then
 
                pon("on_anna");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.walter_asked < 2) then
 
                pon("on_walter");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.atlantis_asked < 2) then
 
                pon("on_atlantis");
 
                pon("more_questions");
 
            end;
 
            if (char_anna.drake_asked < 2) then
 
                pon("on_drake");
 
                pon("more_questions");
 
            end;
 
        end;
 
    end;
 
    
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
		
 
		if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
			s.lfc_dialog = true;
 
			pon('sabotage', 'ignis_what');
 
		end;
 
        
 
        s:reset_more();
 
	
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[Перед вами стоит девушка лет двадцати-пяти--тридцати. Каштановые волосы ниспадают на плечи. Зеленые глаза внимательно следят за движениями навьяра, с которым она разговаривает. Заметив вас, она просит навьяра подождать и обращается к вам: "Приветствую. Вы, должно быть, господин Дрейк? Мое имя Анна Рэдклифф". ]];
 
		else
 
			psub("generic");
 
			return [[Анна Рэдклифф разговаривает с навьяром, стоящим рядом. Заметив вас, она просит его подождать и обращается к вам: "Приветствую, вы что-то хотели?" ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Да, я Дэвид Дрейк. Рад знакомству. ", [[Анна Рэдклифф улыбается и спрашивает: "Вы что-то хотели?" ]], code = [[ psub('generic'); ]]};
 
        {tag="ask_more"};
 
        {tag="on_anna", "Расскажите о себе. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.anna_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.anna_asked = 2;
 
                return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдалеке от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- помимо навьяров, с которыми всегда интересно, я помогаю Екатерине и Сильвии с расшифровкой текстов или Мари в библиотеке". ]];
 
            end;
 
        end};
 
        {tag="on_walter", "Расскажите об Уолтере. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.walter_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.walter_asked = 2;
 
                return [[Анна Рэдклифф отвечает: "Уолтер -- мой старший брат. Он заботится обо мне с тех пор, как мама с папой покинули нас. Хотя моя жизнь сильно изменилась, когда Уолтер забрал меня с собой на Атлантиду, я не жалею об этом". ]];
 
            end;
 
        end};
 
        {tag="on_atlantis", "Что вы думаете об Атлантиде?", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.atlantis_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.atlantis_asked = 2;
 
                return [[Анна Рэдклифф отвечает: "Последние десять лет я живу здесь, на Атлантиде. Я хорошо помню, как расстроена я была, приехав сюда. Конечно, я не думала, что мы все проведем здесь столько времени. Первое время мне казалось, что мы вот-вот закончим и вернемся на поверхность,но намерения вашего отца сильно отличались от этого. Почти сразу после прибытия Екатерина и Сильвия познакомили меня с Телнеарром и Хетеарром -- двумя навьярами, которые первыми жили на станции. Потом Хетеарр вернулся домой, а вместо него на станцию прибыл Ривеерр. А затем покинул станцию и Телнеарр. Его заменила Леарр". ]];
 
            end;
 
        end};
 
        {tag="on_drake", "Расскажите об Уильяме Дрейке. ", function(s)
 
            if (rel_anna < 0) then
 
                char_anna.drake_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.drake_asked = 2;
 
                return [[Анна Рэдклифф отвечает: "Хотя Дрейк -- руководитель Атлантиды, он проводит больше времени здесь, в Окулусе, чем в своем кабинете в Доминусе. Сейчас он в экспедиции -- они с Блэком отправились на поиски отдаленных навьярских поселений". ]];
 
            end;
 
        end};
 
        {tag="on_black", "Расскажите об Адриане Блэке. ", function(s)
 
            if rel_anna < 0 then
 
                char_anna.black_asked = 1;
 
                return [[Анна Рэдклифф отвечает: "Я не хочу об этом с вами говорить". ]];
 
            else
 
                char_anna.black_asked = 2;
 
                return [[Анна Рэдклифф пожимает плечами: "Все вокруг говорят, что он хороший друг вашего отца, но мне почти не доводилось с ним общаться".]];
 
            end;
 
        end};
 
        {always=true, "Вернемся к делу.", [[Анна Рэдклифф кивает: "Хорошо".]], code [[ char_anna_atlantis_dlg:reset_more(); pret(); ]]};
 
		{tag="generic"};
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе -- следствие саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			rel_walter = rel_walter - 1;
 
			rel_anna = rel_anna - 1;
 
			return [[Анна удивленно смотрит на вас: "Зачем вы это говорите? Кому может прийти в голову подобное?" ]];
 
		end};
 
		{tag="ignis_what", "Вы знаете, что произошло в Игнисе?", [[Анна отрицательно качает головой: "Мне почти ничего неизвестно. Поговорите с Даркстаром или Райтом. Или спросите моего брата, Уолтера. Я думаю он в курсе". ]]};
 
        {tag="more_questions", "У меня есть несколько вопросов.", [[Анна отвечает: "Да, я слушаю".]], code [[ psub('ask_more'); ]]};
 
		{always=true, "Я пойду.", [[Анна прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
	};
 
};
 
 
char_learr_atlantis_dlg = dlg {
 
	var {
 
		state = 0;
 
        lfc_dialog = false;    
 
        sabotage_explained = false;
 
	};
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	enter = function(s)
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;    
 
    
 
		if (s.state == 0) then
 
			if (char_learr_atlantis.offended) then
 
				psub("offended");
 
				return [[Леарр поворачивается к вам, плавники ее становятся ярко-фиолетовыми. Она рычит: "Прриветсствую, монсстрр. Мы говоррить-будем?" ]];
 
			else
 
				psub("pre_iof");
 
				return [[Леарр поворачивается к вам, плавники ее принимают едва заметный сине-зеленый оттенок, а она говорит: "Я прриветсствую тебя-he'vji'a'rr". ]];
 
			end;
 
		elseif (s.state == 1) then
 
			s.state = 2;
 
			psub("after_iof");
 
			if (atl_iof_learr_suit) then
 
				return [[При виде вас, плавники Леарр меняют цвет на ярко-зеленый. Она плавно опускает руки вниз и слегка наклоняется вперед. Выпрямившись, она произносит: "Я благодарю тебя. Мне твоя-идея-понравилась". ]];
 
			else
 
				return [[При виде вас, плавники Леарр меняют цвет на ярко-зеленый. Она плавно опускает руки вниз и слегка наклоняется вперед. Выпрямившись, она произносит: "Я благодарю тебя". ]];
 
			end;
 
		else
 
            if (rel_learr < 0) then
 
                if (char_learr.on_books == 0) then pon("on_books") end;
 
            else
 
                if (char_learr.on_books < 2) then pon("on_books") end;
 
            end;
 
            
 
            poff('iyh1', 'iyh4', 'iyh5');
 
            if (atl_iyh_state == 1 and not atl_iyh_learr_spoken) then
 
                pon('iyh1');
 
            elseif (atl_iyh_state == 2 and ArrayUtils.indexOf(pl.party, 'learr') == 0) then
 
                pon('iyh2');
 
			elseif (atl_iyh_state == 4) then
 
				pon("iyh4");
 
			elseif (atl_iyh_state == 5) then
 
				pon("iyh5");
 
			end;
 
			psub("generic");
 
			if (rel_learr > 0) then
 
				return [[Леарр поворачивается к вам, плавники ее принимают сине-зеленый оттенок, а она говорит: "Я рада-видеть тебя". ]];
 
			else
 
				return [[Леарр поворачивается к вам, плавники ее принимают едва заметный сине-зеленый оттенок, а она говорит: "Я приветствую тебя-he'vji'a'rr". ]];
 
			end;
 
		end;
 
	end;
 
	phr = {
 
		{tag='offended'};
 
		{"Монстр?", [[Леарр молча кивает. Оттенок головных плавников на мгновение сменяется на желтый, но затем снова становится фиолетовым: "Ты так-назвал меня. Мы будем-дальше-монстрами-называть друг-друга?" ]], code [[ psub('offended_yes_no') ]]};
 
		{tag='offended_yes_no'};
 
		{"Не думаю", [[Леарр кивает, ее плавники медленно теряют цвет. Она говорит: "Я слушаю тебя. Ты говори". ]], code [[ 
 
            char_learr_atlantis_dlg.state = 1;
 
            walk('atl_iof_intro'); 
 
        ]]};
 
		{"От этого суть не изменится, чудище", [[Леарр скалится, показывая блестящие острые зубки: "Ты убиррайся, пока я тебя не ссъела". ]], code [[ 
 
			char_learr_atlantis_dlg.state = 1;
 
			walk('atl_iof_intro'); 
 
		]]};
 
		{tag='pre_iof'};
 
		{"He'vji'a'rr?", [[Леарр кивает: "Мы так-наззываем пришшедшших-сс-поверхноссти-васс". ]]};
 
		{"Я хотел кое-что спросить.", [["Ты говорри", -- просит Леарр. ]], code [[ 
 
			char_learr_atlantis_dlg.state = 1;
 
			walk('atl_iof_intro'); 
 
		]]};
 
		{tag="after_iof"};
 
		{"Рад, что смог помочь", [[Леарр кивает, все еще находясь в явном возбуждении: "Ты говоррить-пришшел? Ты говорри". ]], code [[ psub("generic"); ]]};
 
		{"У меня не было выбора", [[Леарр непонимающе смотрит на вас, однако говорит: "Я благодаррю тебя. Ты говорри".
 
		]], code [[ rel_learr = rel_learr - 1; psub("generic"); ]]};
 
		{tag="generic"};
 
		{tag="iyh1", "Расскажи о вашем конфликте с Дипатреанотром.", [[Леарр начинает рассказывать, активно жестикулируя: "Рреликвия нессколько-дней-наззад-изз-нашшего-хррама-прропала. Na'vji'a'yhe'dyp'atre'anot'rr вззяли нашшу-рреликвию! Они потом-в-наш-город-пришли и требовали-вернуть их-реликвию! Мы не-брали ее и это-сказали им!" -- Леарр недовольно топает и шипит, -- "Они нам-не-верят! Они украли нашу-вещь и не-верят нам!" ]], code [[ atl_iyh_learr_spoken = true; ]]};
 
        {tag="iyh2", "Я отправляюсь в храм Дипатреанотра. Мне не помешает твоя помощь.", [[Плавники Леарр принимают фиолетовый оттенок: "He'vji'a'rr нельзя туда!"]], code [[ psub("join_me"); ]]};      
 
		{tag="iyh4", "Здесь неподалеку есть старый навьярский храм. Я прошу разрешения посетить его.", [[Леарр задумчиво произносит: "He'vji'a'rr нельзя-туда... Я место-не-знаю".^Немного постояв в задумчивости, Леарр восклицает: "Мы-вместе туда-пойдем! Ривеерр это-не-одобрит, но я с-ним-поговорю". ]], code [[ psub("iyh_agree"); ]]};
 
        {tag="sabotage", false, "Ты знаешь, что пожар начался из-за саботажа?", [[Леарр непонимающе крутит головой: "Я что-ты-говоришь-не-понимаю. Что саботаж?" ]], code [[ poff("ignis_what");psub("sabotage_explain"); ]]};
 
        {tag="ignis_what", false, "Ты знаешь, почему начался пожар в Игнисе?", [[Леарр неуверенно пожимает плечами: "Я ты-лучше-знаешь-думаю. Ты расскажешь?"]], code [[ psub("sabotage_reason"); ]]};
 
        {tag="books", false, "[Показать на книгу]Ты читаешь наши книги?", function(s)
 
            if (rel_learr < 0) then
 
                char_learr.on_books = 1;
 
                return [[Леарр неохотно отвечает: "Я иногда-читаю". Она явно не хочет говорить с вами об этом сейчас. ]];
 
            else
 
                char_learr.on_books = 2;
 
                psub("more_on_books");
 
                return [[Леарр отвечает: "Я иногда-читаю". Она опускает глаза на книгу, потом смотрит на вас. Немного подумав, она отвечает, как-бы нехотя: "Я не-умею-ваш-язык-читать. Я пытаюсь-учусь. Мари помогает". ]];
 
            end;
 
        end};
 
		{"Я пойду.", [[Плавники Леарр медленно теряют цвет и она прощается с вами: "Ты воззврращщайсся". ]], code [[back();]]};
 
        {tag="join_me"};
 
        {"Я не собираюсь входить внутрь, но мне нужно осмотреть его окрестности.", [[Цвет плавников Леарр меняется на оранжевый и затем на желтый. Она соглашается: "Я с-тобой-пойду. Я давно-в-Ираафаанотре-не-была". ]], code [[
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            table.insert(pl.party, 'learr');
 
            pret();
 
        ]]};
 
        {"Для этого ты мне и нужна.", [[Цвет плавников Леарр меняет цвет на синий. Она соглашается: "Я согласна. Я с-тобой-пойду". ]], code [[
 
            lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));
 
            table.insert(pl.party, 'learr');
 
            pret();
 
        ]]};
 
        {tag="sabotage_explain"};
 
        {"Кто-то из работников станции устроил пожар.", [[Леарр непонимающе смотрит на вас: "Я зачем-не-понимаю". ]], code [[char_learr_atlantis_dlg.sabotage_explained = true; pon("explanation2", "avoid");]]};
 
        {tag="explanation2", false, "Он сделал это специально с какой-то собственной целью.", [[Леарр все еще не понимая переспрашивает: "Зачем?"]]};
 
        {"Не думаю, что есть смысл об этом еще говорить.", function(s)
 
            if (char_learr_atlantis_dlg.sabotage_explained) then
 
                return [[Леарр кивает: "Я благодарю-за-объяснение тебя". ]];
 
            else
 
                return [[Леарр кивает. ]];
 
            end;
 
        end};
 
        {tag="sabotage_reason"};
 
        {"Это был саботаж.", [[Леарр непонимающе крутит головой: "Я что-ты-говорришшь-не-понимаю. Что ссаботажж?" ]], code [[ poff("sabotage"); psub("sabotage_explain"); ]]};
 
        {"Я не знаю. Но хотел бы знать", [[Леарр разочарованно вздыхает: "Ты ессли-уззнаешшь-рассскажжи". ]], code [[psub("generic");]]};
 
        {tag="more_on_books"};
 
        {"Я могу помочь?", [[Леарр кивает: "Я думаю-ты-дрругим-делом-ззанят. Я не-хчочу-мешшать". ]], code[[ char_learr.on_books = 3; pret(); ]]};
 
        {"Давно ты этим занимаешься?", [[Леарр кивает: "Я с-ссамого-пррибытия-вашши-книги-учуссь-читать. Я надеюссь-вссе-пойму ссо-врременем". ]]};
 
        {"Как у тебя успехи?", [[Леарр смущенно отвечает: "Я ещще-многое-не-понимаю. Но я ссо-врременем-пойму-надеюссь". ]]};
 
        {"Давай поговорим о другом.", [[Леарр кивает: "Ты говорри". ]], code [[pret();]]};
 
        {tag="legend2", empty=code [[back();]]};
 
        {"Значит, вы не брали реликвию?", [[Леарр недовольно шипит: "Ты тожже-мне-не-верришшь?! Ухходи!"]]};
 
        {"У тебя есть идеи, куда могла пропасть их реликвия?", [[Леарр отрицательно качает головой: "Нет". ]]};
 
		{tag="iyh_agree"};
 
		{"Я согласен. Только так мы докажем Дипатреанотру, что вы ни при чем.", [[Леарр отвечает: "Ты сообщщи, когда готов-будешшь. Мы поззжже-поговоррим". ]], code [[ 
 
			lifeon("char_learr");
 
            remove("char_learr_atlantis", where("char_learr_atlantis"));         
 
			table.insert(pl.party, 'learr');
 
			atl_iyh_state = 6; 
 
			back(); 
 
		]]};
 
		{"Лучше я отправлюсь один.", [[Леарр недовольно шипит: "Не взздумай! Ты ссебе, мне и Ry'vee'rr-у ххужже ссделаешшь". ]]};
 
	};
 
};
 
 
char_aikerjarr_dlg = dlg {
 
	var {
 
		state = 0;
 
        lfc_dialog = false;      
 
	};
 
	nam = "Аикерьярр";
 
	enter = function(s)
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;
 
        if (s.state == 0) then
 
            psub("first_meeting");
 
            return [[Перед вами стоит высокий стройный навьяр. Серебристая чешуя сверкает в свете электрических ламп. Неприязненный взгляд его зеленых глаз направлен на вас. Существо одето в темно-зеленые облегающие штаны и куртку из водорослей. В правой руке навьяр держит острозаточенное коралловое копье. ]];
 
		elseif (s.state == 1) then
 
			psub("generic");
 
		
 
            poff('iyh1', 'iyh2', 'iyh4', 'iyh5');
 
            if (atl_iyh_state == 1 and not atl_iyh_aikerjarr_spoken) then
 
                pon('iyh1');
 
            elseif (atl_iyh_state == 2 and not atl_iyh2_aikerjarr_spoken) then
 
                pon('iyh2');
 
			elseif (atl_iyh_state == 4) then
 
				pon("iyh4");
 
			elseif (atl_iyh_state == 5) then
 
				pon("iyh5");
 
			end;
 
		end;
 
		return [[Аикерьярр презрительно смотрит на вас, не говоря ни слова. ]];
 
	end;
 
	phr = {
 
        {tag = "first_meeting"};
 
        {always = "true", "Ты Аикерьярр?", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2a"); ]]};
 
        {always = "true", "Добрый день.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {always = "true", "Приветствую.", [[Навьяр нехотя отвечает: "I'yhe'Aike'rya'yhe'iraa'pha-anot'rr vta'lyt'nn ty'yhe'he'vji'a'rr". ]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_2b"); ]]};
 
        {tag="first_meeting_2a"};
 
        {always = "true", "Нам нужно поговорить.", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vji'a'za'rr".]], code [[ char_aikerjarr_dlg.state = 1; psub("first_meeting_3a");]]};
 
        {tag="first_meeting_2b"};
 
        {always = "true", "Я тебя не понимаю", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[char_aikerjarr_dlg.state = 1; psub("first_meeting_2a");]]};
 
        {always = "true", "Кончай дурить, я знаю, что ты меня понимаешь", [[Навьяр скалит зубы: "Ты-ххевьярр так-ссо-мной-не-говорри". ]], code [[char_aikerjarr_dlg.state = 1; psub("first_meeting_3b");]]};
 
        {always = "true", "Я приду позже.", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {tag="first_meeting_3a"};
 
        {always = "true", "I'rr vtre'za'nn na'vji'a'za'rr. Нам все еще нужно поговорить. ", [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[ char_aikerjarr_dlg.state = 1; psub("generic"); ]]};
 
        {"Нам все еще нужно поговорить", [[Навьяр надменно бросает: "I'rr vtre'za'nn he'vji'a'za'rr".]], code [[ back(); ]]};
 
        {always = "true", "Я приду позже.", [[Навьяр довольно ухмыляется: "Ty'rr zee'vee'nn". ]], code [[ back(); ]]};
 
        {tag="first_meeting_3b"};
 
        {always= "true", "Значит, ты все-таки меня понимаешь. У меня есть вопросы.",  [[Навьяр вздыхает: "Ty'rr не-отсстанет. I'rr тебя-сслушшает"]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always= "true", "Значит, ты все-таки меня понимаешь. Хватит тратить мое время.", [[Навьяр недовольно рычит: "Ты говорри". ]], code [[char_aikerjarr_dlg.state = 1; psub("generic")]]};
 
        {always= "true", "Значит, ты все-таки меня понимаешь, чертов рыбень. Теперь слушай и отвечай.", [[Навьяр стучит копьем об пол и отворачивается от вас. ]], code [[back();]]};
 
		{tag = "generic"};
 
        {tag = "sabotage", "Ты знаешь, что пожар начался из-за саботажа?", [[Аикерьярр лишь слегка усмехается, но не удостаивает вас ответом. ]]};
 
        {tag = "ignis_what", "Ты знаешь, почему начался пожар в Игнисе?", [[Аикерьярр лишь слегка усмехается, но не удостаивает вас ответом. ]]};
 
		{tag="iyh1", "Расскажи о вашем конфликте с Дипатреанотром.", [[Аикерьярр недовольно смотрит на вас:"He'vji'a'rr не-помочь". ^Немного подумав, он рассказывает: "Na'vji'a'yhe'dyp'atre'anot'rr говоррить yhe мы украссть реликвия-изз-ихх-ххррама, -- Аикерьярр злобно стучит зубами и в ярости сжимает кулаки, -- Мы не-делали-этого-ссказзали им! Но они в-ответ-на-нашш-ххррам-напали и нашши-рреликвии-вззяли!" ]], code [[ atl_iyh_aikerjarr_spoken = true; ]]};
 
        {tag="iyh2", "Я собираюсь в храм Дипатреанотра/", [[Аикерьярр пожимает плечами: "Ты туда-не-идешь. Ты спроси Ривеерра".]], code [[ atl_iyh2_aikerjarr_spoken = true; psub("on_iyh2"); ]]};      
 
        {tag="iyh4", "Неподалеку отсюда есть старый храм навьяров. Я прошу разрешения посетить его.", [[Аикерьярр кивает: "Я не-понимаю, hyd это связано с-текущей-ситуацией. Ты узнай e тогда-приходи". ]], code [[ back(); ]]};      
 
		{always=true,"Я вернусь позже.", [[Аикерьярр отворачивается от вас, даже не удостоив ответом. ]], code [[back(); ]]};
 
	};
 
};
 
 
char_ryveerr_dlg = dlg {
 
	var {
 
		state = 0;
 
        lfc_dialog = false;
 
	};
 
	nam = "Ривеерр";
 
	disp = "Ривеерр";
 
    
 
    reset_more = function(s)
 
        poff("on_atlantis", "on_learr", "on_ryveerr", "on_aikerjarr", "more_questions");   
 
        if (atl_rep_dyp < 0) then
 
            if (char_ryveerr.atlantis_asked == 0) then pon("on_atlantis", "more_questions"); end;
 
            if (char_ryveerr.learr_asked == 0) then pon("on_learr", "more_questions"); end;
 
            if (char_ryveerr.ryveerr_asked == 0) then pon("on_ryveerr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked == 0) then pon("on_aikerjarr", "more_questions"); end;
 
        else
 
            if (char_ryveerr.atlantis_asked < 2) then pon("on_atlantis", "more_questions"); end;
 
            if (char_ryveerr.learr_asked < 2) then pon("on_learr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.learr_asked < 3) then pon("on_learr", "more_questions"); end;
 
            if (char_ryveerr.ryveerr_asked < 2) then pon("on_ryveerr", "more_questions"); end;
 
            if (atl_iof_learr_dead and char_ryveerr.aikerjarr_asked < 2) then pon("on_aikerjarr", "more_questions"); end;
 
        end;
 
        if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
            s.lfc_dialog = true;
 
            pon('sabotage', 'ignis_what');
 
        elseif (atl_lfc_state ~= 1) then
 
            poff('sabotage', 'ignis_what');
 
        end;
 
    end;
 
    
 
	enter = function(s)
 
        s:reset_more();
 
        
 
        poff('iyh1', 'iyh2');
 
        if (atl_iyh_state == 1 and not atl_iyh_ryveerr_spoken) then
 
            pon('iyh1');
 
        elseif (atl_iyh_state == 2 and not atl_iyh2_ryveerr_spoken) then
 
            pon('iyh2');
 
        elseif (atl_iyh_state == 6) then
 
            if (atl_iof_learr_dead) then
 
                pon("take_aikerjarr");
 
            else
 
                pon("take_learr");
 
            end;
 
        end;
 
        
 
        if (s.state == 0) then
 
            s.state = 1;
 
            psub("first_meeting");
 
            return [[Перед вами стоит навьяр. Серо-зеленая чешуя, несколько более темная, чем у Леарр блестит в свете электрических ламп. Красно-оранжевые глаза внимательно смотрят на вас. Он одет в темно-зеленые облегающие шорты и куртку из водорослей. Навьяр приветствует вас: "Ривеерр-из-Дипатреанотра рад-видеть тебя". ]];
 
        elseif (atl_iof_completed and char_ryveerr.iof_reaction == 0) then
 
            char_ryveerr.iof_reaction = 1;
 
            if (atl_iof_learr_dead) then
 
                psub("iof_learr_dead");
 
                return [[Плавники Ривеерра окрашиваются синим. Он произносит: "Хевьяр-ты не-помог Леарр". ]];
 
            elseif (atl_iof_learr_suit) then
 
                psub("iof_learr_suit");
 
                return [[Ривеерр благодарит вас: "Дрейк-ты хорошо-придумал. Я рад, что Леарр-из-Ираафаанотра жива". ]];
 
            else
 
                psub("iof_learr");
 
                return [[Ривеерр сообщает: "Я рад, что никто-в-Игнисе-не-умер". ]];
 
            end;
 
        else
 
            psub("generic");
 
            if (s.state == 1) then
 
                if (atl_iyh_state == 4) then
 
                    psub("situation");
 
                end;
 
            elseif (s.state == 2) then
 
                psub("legend2");
 
            end;
 
            return [[Ривеерр оборачивается к вам: "Ты говори". ]];
 
        end;      
 
	end;
 
	phr = {
 
        {tag="first_meeting"};
 
        {"Мое имя Дэвид Дрейк. Рад знакомству.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын". ]], code[[psub("first_meeting_2");]]};
 
        {"Мое имя Дэвид Дрейк.", [[Плавники Ривеерра окрашиваются в зеленый: "Ты-Уильяма-сын". ]], code[[psub("first_meeting_2");]]};
 
        {tag="first_meeting_2"};
 
        {"Да, все верно.", [[Ривеерр: "Я рад-помочь тебе. Ты говори". ]], code [[psub("generic");]]};
 
        {"Я хотел кое-что спросить. ", [[Ривеерр: "Ты говори". ]], code [[psub("generic");]]};
 
        {tag="iof_learr_dead"};
 
        {"Я сделал все, что мог.", [[Ривеерр кивает: "Мне жаль, что ты-помочь-Леарр-не-смог". Через некоторое время он приглашает: "Ты говори". ]], code [[ psub("generic"); ]]};
 
        {"Я пришел говорить о другом. ", [[Ривеерр отворачивается от вас. ]], code [[
 
            back();
 
        ]]};
 
        {tag="iof_learr_suit"};
 
        {"Я сделал то, что был должен.", [[Ривеерр кивает и приглашает вас: "Ты говори". ]], code [[psub("generic");]]};
 
        {tag="iof_learr"};
 
        {"Я тоже. ", [[Ривеерр кивает и приглашает вас: "Ты говори". ]], code [[psub("generic");]]};
 
		{tag="generic"};
 
		{tag="iyh1", false, "Расскажи о конфликте Ираафаанотра с Дипатреанотром.", [[Ривеерр рассказывает вам: "Na'vji'a'yhe'iraa'pha’anot’rr нашу-реликвию-украли. Мы тем-же-ответили им". ]], code [[ atl_iyh_ryveerr_spoken = true; psub("more_on_relic"); ]]};
 
        {tag="iyh2", false, "Я собираюсь в храм Дипатреанотра.", [[Плавники на голове Ривеерра меняют цвет на сине-фиолетовый: "Ты туда-не-идешь". ]], code [[ atl_iyh2_ryveerr_spoken = true; psub("on_iyh2"); ]]};      
 
        {tag="sabotage", [[Ты знаешь, что пожар начался из-за саботажа?]], function(s)
 
            if (atl_iof_learr_dead) then
 
                return [[Ривеерр недовольно отвечает: "Это-не-значимо. Значимо, что Леарр мертва". ]];
 
            else
 
                return [[Ривеерр спокойно отвечает: "Ты со-мной-про-это-не-говори. Это-ваши-дела. Я не-хочу-ими-заниматься". ]];
 
            end;
 
        end};
 
        {tag="ignis_what", "Ты знаешь, почему начался пожар в Игнисе?", function(s)
 
            if (atl_iof_learr_dead) then
 
                return [[Ривеерр недовольно отвечает: "Это-не-значимо. Значимо, что Леарр мертва". ]];
 
            else
 
                return [[Ривеерр спокойно отвечает: "Ты со-мной-про-это-не-говори. Это-ваши-дела. Я не-хочу-ими-заниматься". ]];
 
            end;
 
        end};
 
        {tag="more_questions", always=true, "Я хочу кое-что спросить.", [[Ривеерр кивает: "Ты спрашивай". ]], code [[ psub("ask_more"); ]]};
 
        {always=true, "Я пойду.", [[Ривеерр прощается с вами: "Мы позже-поговорим". ]], code [[ back(); ]]};
 
        {tag="ask_more"};
 
        {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s)
 
            if (atl_rep_dyp < 0) then
 
                char_ryveerr.atlantis_asked = 1;
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества". ]];
 
            else
 
                char_ryveerr.atlantis_asked = 2;
 
                return [[Ривеерр отвечает: "Хевьяры-с-Атлантиды уже-помогли-нам-немало. Я надеюсь-на-продолжение-плодотворного-сотрудничества. Я продолжаю-доказывать-пользу-нашего-с-вами-хевьярами-общения и многие-в-Дипатреанотре уже-согласны-со-мной. Если план-Дрейка успешен-будет, то наша-благодарность будет-неизмерима. Хевьяры наследие-древних-ищут, как легенды гласят". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", "Что ты думаешь об Аикерьярре?", function(s)
 
            if (atl_rep_dyp < 0) then
 
                char_ryveerr.aikerjarr_asked = 1;
 
                return [[Ривеерр отказывается отвечать:"Я не-говорю-с-тобой-об-этом". ]];
 
            else
 
                char_ryveerr.aikerjarr_asked = 2;
 
                return [[Плавники Ривеерра окрашиваются фиолетовым и он отвечает: "Этот все-сделает-нас-из-себя-вывести. Я считаю-он-войны-хочет-с-Атлантидой. Я не-хочу-этого, но в-Дипатреанотре-некоторые хотят. Я не-знаю-что-получится". ]];
 
            end;
 
        end};
 
        {tag="on_ryveerr", "Расскажи о себе.", function(s)
 
            if (atl_rep_dyp < 0) then
 
                char_ryveerr.ryveerr_asked = 1;
 
                return [[Ривеерр отказывается отвечать:"Я не-говорю-с-тобой-об-этом". ]];
 
            else
 
                char_ryveerr.ryveerr_asked = 2;
 
                return [[Плавники Ривеерра окрашиваются синим и он отвечает: "Я-Дипатреанотра-посол. Я желаю-с-хевьярами-долгого-и-плодотворного-сотрудничества. Мое-мнение большинство-в-Дипатреанотре-разделяют, поэтому я здесь". ]];
 
            end;
 
        end};
 
        {tag="on_learr", "Что ты думаешь о Леарр?", function(s)
 
            if (atl_rep_dyp < 0) then
 
                char_ryveerr.learr_asked = 1;
 
                return [[Ривеерр отказывается отвечать:"Я не-говорю-с-тобой-об-этом". ]];
 
            else
 
                if (atl_iof_learr_dead) then
 
                    char_ryveerr.learr_asked = 3;
 
                    return [[Плавники Ривеерра окрашиваются голубым и он отвечает: "Я понимаю ее-гибель-насчастный-случай, но ситуацию-легче-не-делает. Дипатреанотр-мы одну-из-немногих-друзей-в-Ираафаанотре-потеряли". ]];
 
                else
 
                    char_ryveerr.learr_asked = 2;
 
                    return [[Плавники Ривеерра окрашиваются зеленым и он отвечает: "Леарр из Ираафаанотра. Мы часто-разногласия с-ними, но с-Леарр всегда-понимание-находим. Это с-Ираафаанотр-отношениям-помогает и хорошо-есть. Я что-она-на-Атлантиде-рад и друг-с-другом-и-с-вами-что-мы-можем общаться-постоянно. Это с-вами-нашим-отношениям-помогает и тоже-хорошо-есть". ]];
 
                end;
 
            end;
 
        end};
 
        {always=true, "Давай поговорим о другом.", [[Ривеерр кивает: "Ты говори". ]], code [[ char_ryveerr_dlg:reset_more(); pret(); ]]};
 
		{tag="more_on_relic"};
 
		{"Тем же?", [[Ривеерр щелкает зубами: "Мы светодиск-из-их-храма-забрали. Мы вернем его, ysl они вернут нашу-реликвию". ]]};
 
		{"Вы уверены, что кража -- их рук дело?", [[Ривеерр уверенно кивает: "Только-они могли сделать. Я расскажу", -- Ривеерр на небольшое время замолкает, собираясь с мыслями, после чего продолжает: "Na'vji'a'yhe'iraa'pha’anot’rr ночью-в-наш-храм-пришли и охранников-убили. Они реликвию-украли и в-свой-город-унесли". ]], code [[ psub("why"); ]]};
 
		{tag="why", empty=code [[ atl_iyh_ryveerr_spoken = true; psub("generic"); ]]};
 
		{"Вы уверены, что это они?", [[Ривеерр отвечает: "Другой-никто не-мог-сделать". ]]};
 
        {"Как убили охранников?", [[Ривеерр отвечает: "Их копьями-проткнули. Мы раны-видели". ]]};
 
		{tag="situation"};
 
		{"Мы знаем об одном древнем храме неподалеку отсюда.", [[Ривеерр пожимает плечами: "Я не-понимаю, hyd это поможет нам". ]], code [[ psub("cancel");]]};
 
		{always=true, "Я пойду.", [[Ривеерр прощается с вами: "Мы позже-поговорим". ]], code [[ back(); ]]};
 
		{tag="legend"};
 
		{"Мы знаем где ваша реликвия. Мы знаем об одном древнем храме, где живет затмевающий свет. [Кратко пересказать легенду]", [[
 
			"Я знаю эту-легенду. Вы возможно-правы. В-храм вам-нельзя-идти. Это наше-священное-место. he'vji'a'rr не-место-там. Затмевающий-свет не-враг-нам. Его нельзя-тревожить".
 
		]], code [[ psub("legend_more")]]};
 
		{always=true, "Я пойду.", [[Ривеерр прощается с вами: "Мы позже-поговорим". ]], code [[ back(); ]]};
 
		{tag="legend_more"};
 
		{"Вы могли бы сопровождать нас. ", [[Ривеерр отвечает: "В-храм нельзя-вам". ]], code [[ 
 
			char_ryveerr_dlg.state = 2;
 
		]]};
 
		{always=true, "Я вернусь позже", [[Ривеерр прощается с вами: "Мы поззжже-поговоррим". ]], code [[ back(); ]]};
 
		{tag="legend2"};
 
		{tag="take_learr", false, "Леарр согласилась сопровождать нас в храм. ", [["Леарр'yhe'iraa’pha’anot’rr. Не-уверен-я что-могу-доверять-ей. Я подумать-должен", -- Некоторое время Ривеерр стоит неподвижно, задумавшись. Наконец, скрестив руки на груди, Ривеерр продолжает: "Я согласен". ]], code [[ atl_iyh_state = 6; back(); ]]};
 
		{tag="take_aikerjarr", false, "Аикерьярр согласился сопровождать нас в храм", [["Аикерьярр'yhe'iraa’pha’anot’rr. Не-уверен-я что-могу-доверять-ему. Я подумать-должен", -- Некоторое время Ривеерр стоит неподвижно, задумавшись. Наконец, скрестив руки на груди, Ривеерр продолжает: "Я согласен". ]], code [[ atl_iyh_state = 6; back(); ]]};
 
		{always=true, "Я вернусь позже", [[Ривеерр прощается с вами: "Мы поззжже-поговоррим". ]], code [[ back(); ]]};
 
        {tag="on_iyh2"};
 
        {"Я не собираюсь внутрь храма, мне нужно лишь осмотреть окрестности.", [[Ривеерр кивает: "Я это-разрешу. Ты иди". ]], code [[ pret(); ]]};
 
        {tag="learr_comes", "Со мной отправится Леарр.", [[Ривеерр отвечает: "Ты туда-не-идешь. He'vji'a'rr нельзя-в-храм". ]]};
 
	};
 
};
 
 
char_evans_dlg = dlg {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Кристиан Эванс";
 
	disp = "Кристиан Эванс";
 
	enter = function(s)
 
		if (atl_lfc_state ~= 1) then
 
			poff('sabotage', 'ignis_what');
 
		end;
 
		
 
		if (atl_lfc_state == 1 and not s.lfc_dialog) then
 
			s.lfc_dialog = true;
 
			pon('sabotage', 'ignis_what');
 
		end;
 
		
 
		if (s.state == 0) then
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[Немолодой мужчина внимательно смотрит на вас через стекла старых очков. Он приветствует вас: "Добро пожаловать на нашу станцию. Я Кристиан Эванс, занимаюсь языком навьяров". ]];
 
		else
 
			psub("generic");
 
			return [[Кристиан Эванс приветствует вас: "Добрый день". ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Я Дэвид Дрейк, очень приятно.", [[Кристиан улыбается и отвечает: "Очень рад вас видеть. У вас есть вопросы? Я слушаю". ]], code [[ psub("generic"); ]]};
 
		{tag="generic"};
 
        {"Что вы можете рассказать о Леарр?", function(s)
 
            if (iof_learr_dead) then
 
                return [[Кристиан отвечает: "Пусть покоится с миром. не думаю, что ее кто-то сможет заменить -- она одна такая была, наверное, среди всех навьяров". ]];
 
            else
 
                return [[Кристиан отвечает: "С ней приятно иметь дело. Мы многое узнали о навьярах только благодаря ее открытости и желанию общаться с нами. Хотя Ривеерр тоже довольно дружелюбен, он чрезмерно осторожен при общении с нами. Леарр и сама интересуется нами и нашими достижениями -- большую часть времени она проводит в библиотеке и в Игнисе, читая наши книги и газеты и просматривая наши фото- и видеоархивы". ]];
 
            end;
 
        end};
 
        {tag="on_aikerjarr", false, "Что вы можете сказать об Аикерьярре?", [[Кристиан чешет подбородок: "Не знаю, почему Ираафаанотр отправил на Атлантиду этого... Наверное, было бы проще, не будь на Атлантиде вообще никого из Ираафаанотра. И безопаснее для наших отношений тоже. Этот... Да он словно намеренно пытается вывести тут всех из себя".]]};
 
        {"Что вы можете сказать об Ривеерре?", [[Кристиан задумчиво: "Из жителей Дипатреанотра, Ривеерр, наверное, лучше всех относится к нам. При том, что он достаточно отстранен, чувствуется, что он готов вкладывать силы в улучшение отношений между нами всеми -- Дипатреанотром, Атлантидой и Ираафаанотром". ]]};
 
        {"Что вы можете сказать о навьярах?", [[Кристиан отвечает: "Поразительные существа. Конечно, мы первый раз сталкиваемся с подобным и толком не знаем как себя вести и как стоит их изучать, но, как мне кажется, мы многого достигли -- мы знаем их язык, имеет доступ к их текстам и общаемся с их представителями практически на равных. Вообще, мы поразительно легко наладили с ними контакт -- они не стали воспринимать нас ни как богов, ни как дьяволов, как это случается с племенами людей в далеких от цивилизации местах. Они однозначно не так просты, как кажется, но мы пока не знаем в чем причина этого".]]};
 
		{tag="sabotage", "Вы знаете, что пожар в Игнисе -- результат саботажа?", function(s)
 
			atl_lfc_panic = atl_lfc_panic + 1;
 
			atl_rep_darkstar = atl_rep_darkstar - 1;
 
			return [[Кристиан недовольно ворчит: "Если это так, то надо не на каждом углу кричать, а предоставить сведения Даркстару или Моро. Они найдут, как решить проблему". ]];
 
		end};
 
		{tag="ignis_what", "Вы знаете, что произошло в Игнисе?", [[Кристиан пожимает плечами: "Об этом вам лучше узнать у Райта или Даркстара. Я мало что знаю". ]]};
 
		{always=true, "Я пойду.", [[Кристиан прощается с вами: "До встречи". ]], code [[ back(); ]]};
 
	};
 
};
 
 
char_winterlight_dlg = dlg {
 
	var {
 
		state = 0;
 
	};
atlantis_from_the_ashes.lua
Show inline comments
 
atl_fta_is_terra_solis = room {
 
    var {
 
        state = 0;
 
    };
 
	nam = "Атлантида, межсекционный кодидор";
 
	dsc = [[
 
		Небольшой коридор, соединяющий секции Терра и Солис. Яркий свет электрических ламп освещает помещение. 
 
	]];
 
	dsc = [[Небольшой коридор, соединяющий секции Терра и Солис. Яркий свет электрических ламп освещает помещение.  ]];
 
	entered = function(s)
 
		if (s.state == 0) then
 
			return [[
 
				Вы входите в межсекционный коридор Солиса и в этот момент станцию сотрясает взрыв. Свет на мгновение моргает. Раздается звонок телефона. 
 
			]];
 
		end;
 
	end;
 
	way = {
 
		kh_vroom("В секцию Терра", "atl_fta_game_over_left");
 
		kh_vroom("В секцию Солис", function(s)
 
			if (atl_fta_phone.state == 1 and have(item_atl_fta_suit)) then
 
				return "atl_fta_solis_entry";
 
			else
 
				pr [[Вы вот так просто войдете в секцию где только что произошел взрыв?]];
 
				return false;
 
			end;
 
		end);
 
	};
 
	obj = {
 
		"atl_fta_phone",
 
		"item_atl_fta_suit"
 
	};
 
};
 
 
item_atl_fta_suit = suit {
 
	var {
 
		dlg = nil;
 
	};
 
	nam = "Скафандр";
 
	dsc = [[В углу, так же как и в других межсекционных коридорах стоит {скафандр}, который используется в случае чрезвычайной ситуации. ]];
 
	tak = function(e)
 
		if (atl_fta_phone.state == 1) then
 
			return "Вы одеваете скафандр", true;
 
		else
 
			return "Вам незачем это делать", false;
 
		end;
 
	end;
 
};
 
 
atl_fta_phone = obj {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Телефон";
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return [[
 
				На стене висит звонящий {телефонный аппарат}.
 
			]];
 
		else
 
			return [[
 
				На стене висит {телефонный аппарат}.
 
			]];
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.state == 0) then
 
			s.state = 1;
 
			walk("atl_fta_dlg_phone");
 
		else
 
			return false;
 
		end;
 
	end;
 
};
 
 
atl_fta_dlg_radio = dlg {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Радио";
 
	entered = function(s)
 
		if (s.state == 0) then
 
			psub("tuning");
 
			return [[
 
				Радио не настроено
 
			]];
 
			return [[Радио не настроено. ]];
 
		elseif (s.state == 1) then
 
			psub("ok");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		elseif (s.state == 2) then
 
			psub("next");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		elseif (s.state == 3) then
 
			psub("more");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
			return [[Радио настроено, вы можете говорить. ]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="tuning"};
 
		{"[Настроить приемник]Прием, как слышите?", [[
 
			Через несколько минут настройки, вы слышите в динамике голос Райта: "Да, Дрейк".
 
			Через несколько минут настройки, вы слышите в динамике голос Райта: "Слушаю вас, Дрейк".
 
		]], code [[ atl_fta_dlg_radio.state = 1; psub("ok"); ]]};
 
		{tag="ok"};
 
		{"Что мне делать?", [[
 
			"Что вы видите?"
 
		]], code [[ atl_fta_dlg_radio.state = 2; psub("what_i_see"); ]]};
 
		{tag="what_i_see"};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. В остальном все вроде пока в порядке", [["Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь". ]], code [[ back(); ]]};
 
		{"К юго-востоку от меня вижу огонь, скорее всего взрыв был там. Здесь жарко. ", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь". ]], code [[ psub("clear"); ]]};
 
		{tag="next"};
 
		{"Что мне делать?", [["Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь". ]]};
 
		{always=true, "Что мне делать?", [["Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь". ]]};
 
        {"Конец связи. ", "", code [[ back(); ]]};
 
		{tag="more"};
 
		{"Тут еще что-то взорвалось", [[
 
			"Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[
 
			"На юге есть шлюз, выйдете через него".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Тут еще что-то взорвалось", [[Райт подтверждает: "Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[Райт отвечает: "На юге есть шлюз, выйдете через него". ]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
        {tag="clear"};
 
        {"Вас понял. Конец связи. ", "", code [[ back(); ]]}
 
	};
 
};
 
 
atl_fta_dlg_phone = dlg {
 
	nam = "Телефон";
 
	entered = [[
 
		Вы снимаете трубку и слышите раздраженный голос Винсента Даркстара: "Дрейк?! Какого черта?! Немедленно возвращайтесь в свою комнату!"^ 
 
		Вы не успеваете и слова сказать, как в разговор вмешивается Майкл Райт: "Стойте! Дрейк, кроме вас там никого нет, поэтому одевайте скафандр и слушайте мои инструкции".
 
	]];
 
	phr = {
 
		{"Вас понял.", code = [[ psub("back"); ]]};
 
	};
 
};
 
 
atl_fta_solis_entry = room {
 
	nam = "Атлантида, Солис, рядом со шлюзом";
 
	dsc = [[
 
		В помещении темно и жарко. Слева и справа от вас проложены трубы. Сквозь просветы в них вы видите огонь где-то вдалеке на юго-востоке.
 
	]];
 
	entered = function(s)
 
		item_atl_fta_suit.dlg = "atl_fta_dlg_radio";
 
  
 
        if (atl_fta_solis_c2.broken_valve == 0) then
 
            atl_fta_solis_c2.broken_valve = rnd(5);
 
            atl_fta_valves[atl_fta_solis_c2.broken_valve].broken = true;
 
            atl_fta_solis_c2.broken_offset = rnd(9) + 10;
 
        end;
 
	end;
 
	way = {
 
		vroom("На восток", "atl_fta_solis_ne");
 
		vroom("На запад", "atl_fta_solis_nw");
 
	};
 
};
 
 
atl_fta_solis_ne_1 = room {
 
atl_fta_solis_ne = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. Сквозь просветы в них вы видите огонь где-то вдалеке на юге.
 
	]];
 
	way = {
 
		vroom("На запад", "atl_fta_solis_entry");
 
		vroom("На юг", "atl_fta_solis_e");
 
	};
 
};
 
 
atl_fta_solis_e = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		Здесь очень жарко. Путь на юг прегражден обломками труб, а за ними вы видите огонь. 
 
	]];
 
	way = {
 
		vroom("На север", "atl_fta_solis_ne");
 
	};
 
};
 
 
atl_fta_solis_nw = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. 
 
	]];
 
	way = {
 
		vroom("На восток", "atl_fta_solis_entry");
 
		vroom("На юг", "atl_fta_solis_w");
 
	};
 
};
 
 
atl_fta_solis_w = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. 
 
	]];
 
	way = {
 
		vroom("На север", "atl_fta_solis_nw");
 
		vroom("На восток", "atl_fta_solis_c1");
 
		vroom("На юг", "atl_fta_solis_sw");
 
	};
 
};
 
 
atl_fta_solis_c1 = room {
 
	nam = "Атлантида, Солис, центр";
 
	dsc = [[
 
		В помещении темно и жарко. Перед собой вы видите сложную конструкцию из труб и клапанов. Через металлическую решетку на севере вы видите вентили, о которых говорил Райт. К сожалению, вы не сможете дотянуться до них отсюда.
 
	]];
 
	way = {
 
		vroom("На запад", "atl_fta_solis_w");
 
	};
 
};
 
 
atl_fta_solis_sw = room {
 
	var {
 
		state = 0;
 
	};
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. 
 
	]];
 
	entered = function(s)
 
		if (s.state == 0) then
 
			s.state = 1;
 
			item_atl_fta_suit.dlg = nil;
 
			pr([[
 
				Позади вас раздается еще один взрыв. Вы с трудом удерживаетесь на ногах, видите, что часть секции на севере завалена и сквозь дым, пар и пыль видите начавшийся пожар.
 
			]]);
 
		end;
 
	end;
 
	way = {
 
		vroom("На восток", "atl_fta_solis_exit");
 
	};
 
};
 
 
atl_fta_solis_exit = room {
 
	nam = "Атлантида, Солис";
 
	dsc = [[
 
		В помещении темно и жарко. Cо всех сторон от вас проложено множество труб. 
 
	]];
 
	way = {
 
		vroom("На север", "atl_fta_solis_c2");
 
		vroom("На запад", "atl_fta_solis_sw");
 
		vroom("На восток", "atl_fta_solis_se");
 
		kh_vroom("В шлюз", function(s)
 
			if atl_fta_solis_c2:solved() then
 
				return "atl_fta_ending";
 
			else
 
				return "atl_fta_game_over_left_2";
 
			end;
 
		end);
 
	};
 
};
 
 
atl_fta_solis_c2 = room {
 
	var {
 
		valve_a = 2;
 
		valve_b = 90;
 
		broken_valve = 0;
 
		broken_offset = 0;
 
		valves = {1,1,1,1,1};
 
	};
 
	solved = function(s)
 
		for i =1, #s.valves do
 
			if (s.valves[i] == 0 and i ~= s.broken_valve or 
 
				s.valves[i] == 1 and i == s.broken_valve) then
 
				return false;
 
			end;
 
		end;
 
		
 
		return true;
 
	end;
 
	nam = "Атлантида, Солис, Центр";
 
	dsc = function(s)
 
		if (not s:solved()) then
 
			return [[
 
				В помещении темно и жарко. Где-то рядом вы слышите шипение пара, вырывающегося из труб, но не видите, где. Перед собой вы видите сложную конструкцию из труб и клапанов. Вы видите несколько пронумерованных вентилей, рядом с которыми расположены манометры:
 
			]];
 
		else
 
			return [[
 
				В помещении темно и жарко. Перед собой вы видите сложную конструкцию из труб и клапанов. Вы видите несколько пронумерованных вентилей, рядом с которыми расположены манометры:
 
			]];
 
		end;
 
	end;
 
	entered = function(s)
 
		if (s.broken_valve == 0) then
 
			s.broken_valve = rnd(5);
 
			s.broken_offset = rnd(9) + 10;
 
		end;
 
	end;
 
	way = {
 
		vroom("На юг", atl_fta_solis_exit);
 
	};
 
	obj = {
 
		"atl_fta_solis_valve1",
 
		"atl_fta_solis_valve2",
 
		"atl_fta_solis_valve3",
 
		"atl_fta_solis_valve4",
 
		"atl_fta_solis_valve5",
 
		"atl_fta_solis_valvea",
 
		"atl_fta_solis_valveb",
 
		"item_goldmans_clock"
 
	};
 
};
 
 
atl_fta_solis_valvea = obj {
 
	nam = "Вентиль";
 
	dsc = "Под ними расположены еще два вентиля. Тот, что {слева} отмечен буквой A,";
 
	act = function(s)
 
		if (atl_fta_solis_c2.valve_a == 2) then
 
			atl_fta_solis_c2.valve_a = 3;
 
		elseif (atl_fta_solis_c2.valve_a == 3) then
 
			atl_fta_solis_c2.valve_a = 4;
 
		elseif (atl_fta_solis_c2.valve_a == 4) then
 
			atl_fta_solis_c2.valve_a = 6;
 
		elseif (atl_fta_solis_c2.valve_a == 6) then
 
			atl_fta_solis_c2.valve_a = 2;
 
		end;
 
	end;
 
};
 
 
atl_fta_solis_valveb = obj {
 
	nam = "Вентиль";
 
	dsc = " а тот, что {справа} -- буквой B.";
 
	act = function(s)
 
		if (atl_fta_solis_c2.valve_b == 90) then
 
			atl_fta_solis_c2.valve_b = 60;
 
		elseif (atl_fta_solis_c2.valve_b == 60) then
 
			atl_fta_solis_c2.valve_b = 45;
 
		elseif (atl_fta_solis_c2.valve_b == 45) then
 
			atl_fta_solis_c2.valve_b = 30;
 
		elseif (atl_fta_solis_c2.valve_b == 30) then
 
			atl_fta_solis_c2.valve_b = 90;
 
		end;
 
	end;
 
};
 
 
atl_fta_solis_valve = function(index)
 
	return obj {
 
		nam = "Вентиль";
 
		dsc = function(s)
 
			local value = atl_fta_solis_c2.valve_a * index + math.floor(atl_fta_solis_c2.valve_b / index);
 
			if (atl_fta_solis_c2.broken_valve == index) then
 
				value = value + atl_fta_solis_c2.broken_offset;
 
			end;
 
			if (atl_fta_solis_c2.valves[index] == 0) then
 
				value = 0;
 
			end;
 
			return "{Вентиль №"..tostring(index).."}. Манометр показывает " .. tostring(value) .. "^";
 
		end;
 
		act = function(s)
 
			if (atl_fta_solis_c2.valves[index] == 0) then
 
				atl_fta_solis_c2.valves[index] = 1;
 
			else
 
				atl_fta_solis_c2.valves[index] = 0;
 
			end;
 
			
 
			if (atl_fta_solis_c2:solved()) then
 
				return "Шипение пара прекращается. Вы сделали все, что нужно. ";
 
			else
 
				return false;
 
			end;
 
		end;
 
	};
 
end;
 
 
atl_fta_solis_valve1 = atl_fta_solis_valve(1);
 
atl_fta_solis_valve2 = atl_fta_solis_valve(2);
 
atl_fta_solis_valve3 = atl_fta_solis_valve(3);
 
atl_fta_solis_valve4 = atl_fta_solis_valve(4);
 
atl_fta_solis_valve5 = atl_fta_solis_valve(5);
 
 
atl_fta_valves = {
 
    atl_fta_solis_valve1;
 
    atl_fta_solis_valve2;
 
    atl_fta_solis_valve3;
 
    atl_fta_solis_valve4;
 
    atl_fta_solis_valve5;
 
};
 
 
atl_fta_game_over_left = room {
 
	nam = "Игра окончена";
 
	dsc = [[
 
		Как только вы выходите из межсекционного коридора, раздается еще один взрыв и свет на станции гаснет. Взрыв повреждает межсекционный коридор и его начинает заполнять вода. Вы начинаете задраивать люк, но третий взрыв сбивает вас с ног. Вы падаете и теряете сознание. Через несколько мгновений вы утонете, но вас это уже не заботит. 
 
	]];
 
};
 
 
atl_fta_game_over_left_2 = room {
 
	nam = "Игра окончена";
 
	dsc = [[
 
		Как только вы входите в шлюз, взрыв сокрушительной силы сотрясает станцию. Шлюзовую дверь выбивает и вас отбрасывает в противоположный угол комнаты. Вы видите, как секцию начинает заполнять вода. По радио не слышно ничего кроме помех и скорее всего никто не придет к вам на помощь...
 
	]];
 
};
 
 
atl_fta_ending = room {
 
	nam = "Атлантида";
 
	dsc = [[
 
		Через шлюз вы выбираетесь из Солиса и оказываетесь снаружи. Через некоторое время вас подбирает Наутилус, чтобы вернуть на станцию. От экипажа вы узнаете, что потребление энергии на станции сокращено до восстановления Солиса. ^
 
		Вернувшись на станцию, вы сразу же отправляетесь в свою каюту, чтобы отдохнуть. 
 
	]];
 
	entered = function(s)
 
		atl_fta_state = 2;
 
		remove(item_atl_fta_suit);
 
	end;
 
	obj = {
 
		vway('continue', '{Продолжить}', 'atl_luna_drake_room');
 
	};
 
};
 
\ No newline at end of file
utils.lua
Show inline comments
 
@@ -6,939 +6,939 @@
 
]]
 
ArrayUtils = {
 
	indexOf = function(array, item)
 
		for i = 1, #array do
 
			if (array[i] == item) then
 
				return i;
 
			end;
 
		end;
 
		return 0;
 
	end;
 
};
 
 
--[[
 
	
 
]]
 
PartyUtils = {
 
	addToParty = function(object)
 
		if (object.home) then 
 
			if (ArrayUtils.indexOf(pl.party, object.nam) == 0) then
 
				move(object, object.home);
 
				table.insert(pl.party, object.nam);
 
			end;
 
		end;
 
	end;
 
};
 
 
--[[
 
    functions, design to simplify some typical actions while developing Instead game
 
]]
 
EngineUtils = {
 
    getStringValue = function(source, param)
 
        local value = "";
 
        if (type(source) == "function") then
 
            value = source(param);
 
        else
 
            value = source;
 
        end;
 
 
        return value;
 
    end;
 
 
    getValue = function(source, param)
 
        local value = nil;
 
        if (type(source) == "function") then
 
            value = source(param);
 
        else
 
            value = source;
 
        end;
 
 
        return value;
 
    end;
 
};
 
 
--[[
 
	internal space
 
]]
 
_kh = {
 
	vroom_enter = function(s)  
 
		local v = EngineUtils.getValue(s.where);
 
		if (v) then
 
			walk(v);
 
		else
 
			return false;
 
		end;
 
	end;
 
	vroom_save = function(s)
 
		if need then
 
			local t = stead.string.format("%s = kh_vroom(%s, %q, %s);\n",
 
				name, stead.tostring(self.disp), 
 
					stead.deref(self.where), stead.deref(self.nam));
 
			h:write(t);
 
		end
 
		stead.savemembers(h, self, name,false);
 
	end;
 
};
 
 
function kh_vobj(nam, dsc, act, used) 
 
    return obj {
 
        nam = nam;
 
        dsc = dsc;
 
        act = act;
 
        used = used;
 
    };
 
end;
 
 
function kh_vway(disp, dsc, target, seen_level)
 
	local temp = vway(disp, dsc, target);
 
	temp.seen_level = seen_level;
 
	return temp;
 
end;
 
 
--[[
 
	vroom with additional functionality
 
]]
 
function kh_vroom(disp, target, nam, seen_level)
 
    if (type(nam) == "number") then
 
        seen_level = nam;
 
        nam = disp;
 
    end;
 
    if (not nam) then
 
        nam = disp;
 
    end;
 
	return room {
 
		nam = nam;
 
		disp = disp;
 
		where = target;
 
		enter = _kh.vroom_enter;
 
		seen_level = seen_level;
 
		--enter = _kh.vroom_enter;
 
		--save = _kh.vroom_save;
 
	};
 
end;
 
 
--[[room = inherit(room, function(v)
 
    v.forcedsc = true;
 
    return v;
 
end);]]
 
 
dlg = inherit(dlg, function(v)
 
    v.hideinv = true;
 
    return v;
 
end);
 
 
obj = inherit(obj, function(v)
 
	v.disable_implicit = hook(v.disable, function(f, s, ...)
 
		s._disabled_implicit = true;
 
		return f(s, unpack({...}));
 
	end);
 
 
	v.disable = hook(v.disable, function(f, s, ...)
 
		s._disabled_explicit = true;
 
		return f(s, unpack({...}));
 
	end);
 
	
 
	v.enable_implicit = hook(v.enable, function(f, s, ...)
 
		s._disabled_implicit = false;
 
		if (s._disabled_explicit) then
 
			return s; --mimic original enable() behavior
 
		else
 
			return f(s, unpack({...}));
 
		end;
 
	end);
 
	
 
	v.enable = hook(v.enable, function(f, s, ...)
 
		s._disabled_explicit = false;
 
		if (s._disabled_implicit) then
 
			return s; --mimic original enable() behavior
 
		else
 
			return f(s, unpack({...}));
 
		end;
 
	end);
 
	
 
	return v;
 
end);
 
 
--[[
 
	character object
 
	represents character, with whom you can interact
 
]]
 
function npc(tab)
 
	if (not tab.act) then
 
		tab.act = function(s)
 
			if (s.dlg) then
 
                local dlg = EngineUtils.getValue(s.dlg, s);
 
				walkin(dlg);
 
			else
 
                local phrases = EngineUtils.getValue(s.phrases, s);
 
				return phrases[rnd(#phrases)];
 
			end;
 
		end;
 
	end;
 
	
 
	return obj(tab);
 
end;
 
 
function darkroom(tab)
 
	local life;
 
	local entered;
 
	local left;
 
	if (not tab.has_light) then
 
		tab.has_light = false;
 
	end;
 
	if (tab.life) then
 
		life = tab.life;
 
	end;
 
	if (tab.entered) then
 
		entered = tab.entered;
 
	end;
 
	if (tab.left) then
 
		left = tab.left;
 
	end;
 
	tab.entered = function(s)
 
		lifeon(s);
 
		if (entered) then
 
			entered(s);
 
		end;
 
	end;
 
	tab.left = function(s)
 
		lifeoff(s);
 
		if (left) then
 
			left(s);
 
		end;
 
	end;
 
	tab.life = function(s)
 
        local hasLight = EngineUtils.getValue(s.has_light, s);
 
        local plLight = EngineUtils.getValue(pl.has_light, pl);
 
		if (hasLight) then
 
			-- show all objects that were not explicitly disabled(any seen_level)
 
			for i = 1, #objs(s) do
 
				objs(s)[i]:enable_implicit();
 
			end;
 
			for i = 1, #ways(s) do
 
				ways(s)[i]:enable_implicit();
 
			end;
 
		elseif (plLight) then
 
			-- show all objects that were not explicitly disabled and marked as seen in halflight (seen_level = 1 or higher)
 
			for i = 1, #objs(s) do
 
				if (type(objs(s)[i].seen_level) == "number" and objs(s)[i].seen_level >= 1) then
 
					objs(s)[i]:enable_implicit();
 
				else
 
					objs(s)[i]:disable_implicit();
 
				end;
 
			end;
 
			for i = 1, #ways(s) do
 
				if (type(ways(s)[i].seen_level) == "number" and ways(s)[i].seen_level >= 1) then
 
					ways(s)[i]:enable_implicit();
 
				else
 
					ways(s)[i]:disable_implicit();
 
				end;
 
			end;
 
		else
 
			-- show all objects that were not explicitly disabled and marked as seen in darkness (seen_level = 2 or higher)
 
			for i = 1, #objs(s) do
 
				if (type(objs(s)[i].seen_level) == "number" and objs(s)[i].seen_level >= 2) then
 
					objs(s)[i]:enable_implicit();
 
				else
 
					objs(s)[i]:disable_implicit();
 
				end;
 
			end;
 
			for i = 1, #ways(s) do
 
				if (type(ways(s)[i].seen_level) == "number" and ways(s)[i].seen_level >= 2) then
 
					ways(s)[i]:enable_implicit();
 
				else
 
					ways(s)[i]:disable_implicit();
 
				end;
 
			end;
 
		end;
 
		
 
		if (life) then
 
			life(s);
 
		end;
 
	end;
 
	if (not tab.dsc) then
 
		tab.dsc = function(s)
 
			local lt;
 
            local hasLight = EngineUtils.getValue(s.has_light, s);
 
            local plLight = EngineUtils.getValue(pl.has_light, pl);
 
			if (hasLight) then
 
				lt = EngineUtils.getValue(s.dsc_lit);
 
			elseif (plLight) then
 
				lt = EngineUtils.getValue(s.dsc_halflit);
 
			else
 
				lt = EngineUtils.getValue(s.dsc_dark);
 
			end;
 
			return lt;
 
		end;
 
	end;
 
	
 
	return room(tab);
 
end;
 
 
function game_over(nam, dsc)
 
    return room {
 
        nam = nam;
 
        disp = "Игра окончена";
 
        hideinv = true;
 
        dsc = dsc;
 
    };
 
end;
 
 
function cutscene(nam, disp, dsc, nxt, entered, pic)
 
    return room {
 
        nam = nam;
 
        not_follow = true;
 
        disp = disp;
 
        entered = entered;
 
        hideinv = true;
 
        cutscene = true;
 
        dsc = dsc;
 
        pic = pic;
 
        obj = {
 
            vway("continue", "{Продолжить}", nxt);
 
        };
 
    };
 
end;
 
 
function lcutscene(nam, disp, dsc, msg, nxt)
 
    return room {
 
        var {
 
            state = 0;
 
        };
 
        not_follow = true;
 
        nam = nam;
 
        disp = disp;
 
        enter = function(s)
 
            if (s.state == 1) then
 
                walk(nxt);
 
                pn(msg);
 
            end;
 
            s.state = 1;
 
        end;
 
        dsc = dsc;
 
        obj = {
 
            kh_vobj("continue", "{Продолжить}", function(s)
 
                walk(nxt);
 
            end);
 
        };
 
    };
 
end;
 
 
--[[
 
	Создает комнату с полем для ввода числа длиной не более tab.maxlen
 
	По нажатии enter вызывает метод tab.сheck
 
	Приглашение для ввода: tab.label
 
	Вводимый текст: tab.input
 
]]
 
function input_number(tab)
 
	if (not tab.maxlen) then
 
		tab.maxlen = 2;
 
	end;
 
	tab.forcedsc = true;
 
	tab.noinv = true;
 
	tab.input = "";
 
	tab.dsc = function(s)
 
		pr(tab.label .. tab.input .. "_");
 
		return false;
 
		--return tab.label .. tab.input .. "_";
 
	end;
 
	tab.entered = function(s)
 
		s.input = "";
 
		hook_keys('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'backspace', 'return', 'escape');
 
	end;
 
	tab.left = function(s)
 
		unhook_keys('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'backspace', 'return', 'escape');
 
	end;
 
	tab.kbd = function(s, down, key)
 
		if (not down) then
 
            if (key == "escape") then
 
                back();
 
            elseif (key == "return") then
 
				if (s.input) then
 
					s:check(s.input);
 
				end;
 
			elseif (key == "backspace") then
 
				if (s.input:len() > 0) then
 
					s.input = s.input:sub(1, s.input:len() - 1);
 
				end;
 
			else
 
				if (string.len(s.input) < s.maxlen) then
 
					s.input = s.input .. key;
 
					-- hide buttons :)
 
				end;
 
			end;
 
		end;
 
		pr("");
 
	end;
 
	tab.obj = {
 
		"_kh_input1",
 
        "_kh_input2",
 
        "_kh_input3",
 
        "_kh_input4",
 
        "_kh_input5",
 
        "_kh_input6",
 
        "_kh_input7",
 
        "_kh_input8",
 
        "_kh_input9",
 
        "_kh_input0",
 
        "_kh_backspace",
 
        "_kh_cancel",
 
        "_kh_enter"
 
	};
 
 
	return room(tab);
 
end;
 
 
function input_number_nav(tab)
 
    if (not tab.maxlen) then
 
        tab.maxlen = 2;
 
    end;
 
    tab.forcedsc = true;
 
    tab.noinv = true;
 
    tab.input = "";
 
    tab.dsc = function(s)
 
        pr(tab.label .. tab.input .. "_");
 
        return false;
 
        --return tab.label .. tab.input .. "_";
 
    end;
 
    tab.entered = function(s)
 
        s.input = "";
 
        hook_keys('0', '1', '2', '3', '4', '5', 'backspace', 'return', 'escape');
 
    end;
 
    tab.left = function(s)
 
        unhook_keys('0', '1', '2', '3', '4', '5', 'backspace', 'return', 'escape');
 
    end;
 
    tab.kbd = function(s, down, key)
 
        if (not down) then
 
            if (key == "escape") then
 
                back();
 
            elseif (key == "return") then
 
                if (s.input) then
 
                    s:check(s.input);
 
                end;
 
            elseif (key == "backspace") then
 
                if (s.input:len() > 0) then
 
                    s.input = s.input:sub(1, s.input:len() - 1);
 
                end;
 
            else
 
                if (string.len(s.input) < s.maxlen) then
 
                    s.input = s.input .. key;
 
                    -- hide buttons :)
 
                end;
 
            end;
 
        end;
 
        pr("");
 
    end;
 
    tab.obj = {
 
        "_kh_input1",
 
        "_kh_input2",
 
        "_kh_input3",
 
        "_kh_input4",
 
        "_kh_input5",
 
        "_kh_input0",
 
        "_kh_backspace",
 
        "_kh_cancel",
 
        "_kh_enter"
 
    };
 
 
    return room(tab);
 
end;
 
 
function input_alphabet_nav(tab)
 
    if (not tab.maxlen) then
 
        tab.maxlen = "16";
 
    end;
 
    tab.forcedsc = true;
 
    tab.noinv = true;
 
    tab.input = "";
 
    tab.dsc = function(s)
 
        pr(tab.label .. tab.input .. "_");
 
        return false;
 
    end;
 
    tab.entered = function(s)
 
        s.input = "";
 
        hook_keys('0', '1', '2', '3', '4', '5', 
 
            'a', 'd', 'e', 'f', 'h', 'i', 'j', 'k', 'l', 'n', 'p', 'r', 's', 't', 'v', 'y', 'z',"'",'space',
 
            'backspace', 'return', 'escape');
 
    end;
 
    tab.left = function(s)
 
        unhook_keys('0', '1', '2', '3', '4', '5', 
 
            'a', 'd', 'e', 'f', 'h', 'i', 'j', 'k', 'l', 'n', 'p', 'r', 's', 't', 'v', 'y', 'z',"'",'space',
 
            'backspace', 'return', 'escape');
 
    end;
 
    tab.kbd = function(s, down, key)
 
        if (not down) then
 
            if (key == "escape") then
 
                back();
 
            elseif (key == "return") then
 
                if (s.input) then
 
                    s:check(s.input);
 
                end;
 
            elseif (key == "backspace") then
 
                if (s.input:len() > 0) then
 
                    s.input = s.input:sub(1, s.input:len() - 1);
 
                end;
 
            else
 
                if (string.len(s.input) < s.maxlen) then
 
                    s.input = s.input .. key;
 
                    -- hide buttons :)
 
                end;
 
            end;
 
        end;
 
        pr("");
 
    end;
 
    tab.obj = {
 
        "_kh_input1",
 
        "_kh_input2",
 
        "_kh_input3",
 
        "_kh_input4",
 
        "_kh_input5",
 
        "_kh_inputa",
 
        "_kh_inputd",
 
        "_kh_inpute",
 
        "_kh_inputf",
 
        "_kh_inputh",
 
        "_kh_inputi",
 
        "_kh_inputj",
 
        "_kh_inputk",
 
        "_kh_inputl",
 
        "_kh_inputn",
 
        "_kh_inputp",
 
        "_kh_inputr",
 
        "_kh_inputs",
 
        "_kh_inputt",
 
        "_kh_inputv",
 
        "_kh_inputy",
 
        "_kh_inputz",
 
        "_kh_inputhp",
 
        "_kh_inputsp",
 
        "_kh_backspace",
 
        "_kh_cancel",
 
        "_kh_enter"
 
    };
 
    return room(tab);
 
end;
 
 
_kh_input_key = function(key, key_text)
 
    if not key_text then
 
        key_text = key;
 
    end;
 
    return obj {
 
        nam = "_kh_input" .. key;
 
        dsc = "{" .. key_text .. "}";
 
        act = function(s)
 
            if (here().input:len() < here().maxlen) then
 
                here().input = here().input .. key;
 
            end;
 
            return "";
 
        end;
 
    };
 
end;
 
 
_kh_inputa = _kh_input_key("a");
 
_kh_inputb = _kh_input_key("b");
 
_kh_inputc = _kh_input_key("c");
 
_kh_inputd = _kh_input_key("d");
 
_kh_inpute = _kh_input_key("e");
 
_kh_inputf = _kh_input_key("f");
 
_kh_inputg = _kh_input_key("g");
 
_kh_inputh = _kh_input_key("h");
 
_kh_inputi = _kh_input_key("i");
 
_kh_inputj = _kh_input_key("j");
 
_kh_inputk = _kh_input_key("k");
 
_kh_inputl = _kh_input_key("l");
 
_kh_inputm = _kh_input_key("m");
 
_kh_inputn = _kh_input_key("n");
 
_kh_inputo = _kh_input_key("o");
 
_kh_inputp = _kh_input_key("p");
 
_kh_inputq = _kh_input_key("q");
 
_kh_inputr = _kh_input_key("r");
 
_kh_inputs = _kh_input_key("s");
 
_kh_inputt = _kh_input_key("t");
 
_kh_inputu = _kh_input_key("u");
 
_kh_inputv = _kh_input_key("v");
 
_kh_inputw = _kh_input_key("w");
 
_kh_inputx = _kh_input_key("x");
 
_kh_inputy = _kh_input_key("y");
 
_kh_inputz = _kh_input_key("z");
 
_kh_inputsp = _kh_input_key(" ", "Пробел");
 
_kh_inputhp = _kh_input_key("'", "'");
 
 
_kh_input1 = obj {
 
    nam = "_kh_input1";
 
    dsc = "{1}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "1";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input2 = obj {
 
    nam = "_kh_input2";
 
    dsc = "{2}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "2";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input3 = obj {
 
    nam = "_kh_input3";
 
    dsc = "{3}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "3";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input4 = obj {
 
    nam = "_kh_input4";
 
    dsc = "{4}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "4";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input5 = obj {
 
    nam = "_kh_input5";
 
    dsc = "{5}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "5";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input6 = obj {
 
    nam = "_kh_input6";
 
    dsc = "{6}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "6";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input7 = obj {
 
    nam = "_kh_input7";
 
    dsc = "{7}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "7";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input8 = obj {
 
    nam = "_kh_input8";
 
    dsc = "{8}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "8";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input9 = obj {
 
    nam = "_kh_input9";
 
    dsc = "{9}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "9";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_input0 = obj {
 
    nam = "_kh_input0";
 
    dsc = "{0}";
 
    act = function(s)
 
        if (here().input:len() < here().maxlen) then
 
            here().input = here().input .. "0";
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_backspace = obj {
 
    nam = "_kh_back";
 
    dsc = "{Стереть}";
 
    act = function(s)
 
        if (here().input:len() > 0) then
 
            here().input = here().input:sub(1, here().input:len() - 1);
 
        end;
 
        return "";
 
    end;
 
};
 
 
_kh_cancel = obj {
 
    nam = "_kh_cancel";
 
    dsc = "{Отмена}";
 
    act = function(s)
 
        back();
 
        return "";
 
    end;
 
};
 
 
_kh_enter = obj {
 
    nam = "_kh_enter";
 
    dsc = "{Ввод}";
 
    act = function(s)
 
        if (here().input) then
 
            here():check(here().input);
 
        end;
 
        return "";
 
    end;
 
};
 
 
 
--[[
 
	Создает obj, который добавляет другой obj на сцену при активации и становится неинтерактивным
 
	nam - имя объекта
 
	dsc_a - описание до активации
 
	dsc_b - описание после активации
 
	act_a - описание взаимодействия до активации
 
	act_b - описание взаимодействия после активации
 
	o2 - obj, добавляемый на сцену
 
	r - удаляет объект после активации
 
]]
 
function obscured_obj(nam, dsc_a, act_a, o2, r, dsc_b, act_b)
 
	return obj {
 
		var {
 
			activated = false;
 
		};
 
		nam = nam;
 
		dsc = function(s)
 
			if (s.activated) then
 
				return dsc_b;
 
			else 
 
				return dsc_a;
 
			end;
 
		end;
 
		act = function(s)
 
			if (s.activated) then
 
				return act_b;
 
			else
 
				s.activated = true;
 
				put(o2, here());
 
				if (r) then
 
					remove(r, here());
 
				end;
 
				return act_a;
 
			end;
 
		end;
 
	};
 
end;
 
 
_atlantis_coder = input_alphabet_nav {
 
    nam = "Кодировщик";
 
    maxlen = 32;
 
    label = "Сообщение:";
 
    check = function(s, input)
 
        if type(_atlantis_suit_menu._here.checkCoder) == "function" then
 
            pn(_atlantis_suit_menu._here:checkCoder(input));
 
        else
 
            pn [[Лампочки кодировщика зажигаются в заданной последовательности, но ничего не происходит. ]];
 
        end;
 
        back();
 
    end;
 
};
 
 
_atlantis_suit_menu = dlg {
 
	nam = "Скафандр";
 
	_item = nil;
 
	dsc = [[
 
		Что вы хотите сделать?
 
	]];
 
    entered = function(s)
 
        if (s._item.has_coder) then
 
            pon(3);
 
        else
 
            poff(3);
 
        end;
 
    end;   
 
	phr = {
 
		{1, always = "true", "Использовать рацию", function(s)
 
			local val = EngineUtils.getValue(_atlantis.suit_menu._item.dlg, _atlantis.suit_menu._item);
 
		{1, always = "true", "[Использовать рацию]", function(s)
 
			local val = EngineUtils.getValue(_atlantis_suit_menu._item.dlg, _atlantis_suit_menu._item);
 
			if (val) then
 
				walkin(val);
 
				stead.ref(val).__from__ = _atlantis.suit_menu.__from__;
 
				stead.ref(val).__from__ = _atlantis_suit_menu.__from__;
 
			else
 
				back();
 
				return "Никто не отвечает";
 
			end;
 
		end};
 
        {2, always = "true", function(s)
 
            if (pl.has_light) then
 
                return "Выключить фонарь";
 
                return "[Выключить фонарь]";
 
            else
 
                return "Включить фонарь";
 
                return "[Включить фонарь]";
 
            end;
 
        end, function(s)
 
            if (pl.has_light) then
 
                pl.has_light = false;
 
                return "Вы выключаете фонарь. ";
 
            else
 
                pl.has_light = true;
 
                return "Вы включаете фонарь. ";
 
            end;
 
        end};
 
        {3, always = "true", "Использовать кодировщик", code [[ walkin("_atlantis_coder"); ]]};
 
		{4, always = "true", "Снять скафандр", function(s)
 
        {3, always = "true", "[Использовать кодировщик]", code [[ walkin("_atlantis_coder"); ]]};
 
		{4, always = "true", "[Снять скафандр]", function(s)
 
			if (EngineUtils.getValue(_atlantis_suit_menu._item.cantakeoff, _atlantis_suit_menu._item)) then
 
				drop(_atlantis._uit_menu._item);
 
				back();
 
				return "Вы снимаете скафандр";
 
			else
 
				back();
 
				return "Вы не можете снять скафандр сейчас";
 
			end;
 
		end};
 
		{5, always = "true", "Отмена", function(s)
 
			back();
 
			return "";
 
		end};
 
	};
 
};
 
 
_atlantis = {
 
	suit_inv = function(s)
 
		_atlantis_suit_menu._item = s;
 
        _atlantis_suit_menu._here = here();
 
		walkin(_atlantis_suit_menu);
 
	end;
 
};
 
 
suit = function(tab)
 
	if (not tab.inv) then
 
		tab.inv = _atlantis.suit_inv;
 
	end;
 
	
 
	return obj(tab);
 
end;
 
 
labyrinth = function(tab)
 
    local enter = tab.enter;
 
    local exit = tab.exit;
 
    local dsc = tab.dsc;
 
    local lab;
 
    tab.enter = function(s)
 
        path('e1'):disable();
 
        path('e2'):disable();
 
        path('e3'):disable();
 
        path('e4'):disable();
 
        path('ex'):disable();
 
        
 
        local e1open = s.map[s.position].e1 and not EngineUtils.getValue(s.map[s.position].e1lock, s);
 
        local e2open = s.map[s.position].e2 and not EngineUtils.getValue(s.map[s.position].e2lock, s);
 
        local e3open = s.map[s.position].e3 and not EngineUtils.getValue(s.map[s.position].e3lock, s);
 
        local e4open = s.map[s.position].e4 and not EngineUtils.getValue(s.map[s.position].e4lock, s);
 
        local exopen = s.map[s.position].ex and not EngineUtils.getValue(s.map[s.position].exlock, s);
 
        
 
        if (e1open) then
 
            path('e1'):enable();
 
        end;
 
        if (e2open) then
 
            path('e2'):enable();
 
        end;
 
        if (e3open) then
 
            path('e3'):enable();
 
        end;
 
        if (e4open) then
 
            path('e4'):enable();
 
        end;
 
        if (exopen) then
 
            path('ex'):enable();
 
        end;
 
        if (type(enter) == 'function') then
 
            enter(s);
 
        end;
 
        if (type(s.map[s.position].enter) == 'function') then
 
            s.map[s.position].enter(s);
 
        end;
 
    end;
 
    tab.exit = function(s)
 
        if (type(exit) == 'function') then
 
            exit(s);
 
        end;
 
        if (type(s.map[s.position].exit) == 'function') then
 
            s.map[s.position].exit(s);
 
        end;
 
    end;
 
    tab.dsc = function(s)
 
        if (type(dsc) == "function") then
 
            return dsc(s);
 
        elseif dsc == nil then
 
            return s.map[s.position].name;
 
        else
 
            return dsc .. s.map[s.position].name;
 
        end;
 
    end;
 
    tab.way = {
 
        kh_vroom(tab.dir1, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e1;
 
            return lab;
 
        end, "e1");
 
        kh_vroom(tab.dir2, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e2;
 
            return lab;
 
        end, "e2");
 
        kh_vroom(tab.dir3, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e3;
 
            return lab;
 
        end, "e3");
 
        kh_vroom(tab.dir4, function()
 
            lab.oldposition = lab.position;
 
            lab.position = lab.map[lab.position].e4;
 
            return lab;
 
        end, "e4");
 
        kh_vroom(tab.ex, function()
 
            return lab.map[lab.position].ex;
 
        end, "ex");
 
        kh_vroom("Ждать", function()
 
            lab.oldposition = lab.position;
 
            return lab;
 
        end, "wt");
 
    };
 
    
 
    lab = room(tab);
 
    print(tab);
 
    print(lab);
 
    if (not tab.position) then
 
        stead.add_var(tab, { position = "00"; });
 
    end;
 
    
 
    stead.add_var(tab, { oldposition = tab.position; });
 
    return lab;
 
end;
 
 
function deepcopy(orig)
 
    local orig_type = type(orig)
 
    local copy
 
    if orig_type == 'table' then
 
        copy = {}
 
        for orig_key, orig_value in next, orig, nil do
 
            copy[deepcopy(orig_key)] = deepcopy(orig_value)
 
        end
 
        setmetatable(copy, deepcopy(getmetatable(orig)))
 
    else -- number, string, boolean, etc
 
        copy = orig
 
    end
 
    return copy
 
end;
 
\ No newline at end of file
0 comments (0 inline, 0 general)