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
 
@@ -633,788 +633,791 @@ char_svetlova_dlg = dlg {
 
                        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
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
 
@@ -390,555 +390,555 @@ 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)