Files @ 14fd72163e4b
Branch filter:

Location: games/Awakening/wright.lua

Silverwing
Progress on dlg rewrite; Mochael Wright dlg rewrite
--[[
Здесь игрок получает адреса всех ключевых локаций первой части
]]
door_wright = obj {
    var {
        locked = true;
    };
	nam = "door_wright";
	disp = "Дверь";
	act = function(s)
		if (s.locked) then
			walkin "wright_entry_dlg";
		end;
		return true;
	end;
	dsc = function(s)
		if (s.locked) then
			return [[Обшарпанная деревянная {дверь}, ведущая в дом, заперта изнутри. ]];
		else
			return [[Обшарпанная деревянная {дверь}, ведущая в дом, незаперта. ]];
		end;
	end;
};

char_wright_home = obj {
    var {
        known = false;
        documents = false;
        known_leviathan = false;
    };
	nam = "char_wright_home";
	disp = "Джек Райт";
	dsc = function(s)
		if (s.documents) then
			return [[За столом сидит {Джек Райт} и с интересом рассматривает схемы, которые вы ему отдали. ]];
		else
            if (s.known) then
                return [[За столом сидит {Джек Райт}, неспешно просматривая какие-то бумаги. ]];
            else
			    return [[За столом сидит {молодой человек}, неспешно просматривающий какие-то бумаги. ]];
            end;         
		end;
	end;
	act = function(s)
		walkin(wright_dlg);
	end;
};

wright_dlg = dlg {
    var {
        state = 1;
    };
	nam = "wright_dlg";
	disp = "Джек Райт";
	entered = function(s)
        if (submarine_leviathan.power_on and submarine_leviathan.airpump and submarine_leviathan.battery and submarine_leviathan.air_level < 432000) then
            submarine_leviathan.air_level = 432000;
            lifeoff(s);
        end;   
		if (atlantis_found and submarine_leviathan.air_level > 400000 and submarine_leviathan.circuit_breaks == 0 and submarine_leviathan.power_on) then
			psub('leviathan_restored');
			return [[Джек Райт отвлекается от газеты: "Добрый день". ]];
		elseif (s.state == 1) then
			--First meeting
            char_wright_home.known = true;         
			psub('first_visit');
			return [[Перед вами молодой человек, одетый в недорогой, но опрятный костюм. Его бледное лицо украшает короткая темная борода и пышные усы. Темные волосы коротко острижены. Серые глаза с интересом разглядывают вас. Он протягивает вам руку и представляется: "Добрый день. Мое имя -- Джек Райт. Майкл -- мой отец, но он пропал несколько лет назад". ]];
		elseif (s.state == 2) then
			--Documents not given
			psub('ask_documents');
			return [[Джек отвлекается от газеты: "Добрый день. Вы обещали принести какие-то документы". ]];
		elseif (s.state == 3) then
			--Documents given
			if (not leviathan_discovered) then
				psub('checking_documents');
				return [[Джек отвлекается от документов: "Добрый день. Если вы по поводу документов, то я еще ничего не нашел". ]];
			else
				s.state = 5;
				warehouse32_found = true;
				psub('warehouse_discovered');
				return [[Джек отвлекается от документов: "Добрый день. У меня хорошие новости. Я нашел склад 32", - он достает карту города и показывает вам место. ]];
			end;
		elseif (s.state == 4) then
			--Documents taken back
			psub('ask_documents2');
			return [[Джек отвлекается от газеты: "Добрый день. Я хотел бы еще раз вглянуть на эти бумаги". ]];
		elseif (s.state == 5) then
			psub('warehouse_discovered2');
            poff("phr_warehouse_visited");
            poff("phr_leviathan");
            if (warehouse32_visited) then
                pon("phr_warehouse_visited");
            end;
            if (not char_wright_home.known_leviathan) then
                pon("phr_leviathan");
            end;
			return [[Джек отвлекается от газеты: "Добрый день". ]];
		elseif (s.state == 7) then
			psub('warehouse_discovered3');
			return [[Джек отвлекается от газеты: "Добрый день". ]];
		end;
	end;
	phr = {
		{tag='first_visit'};
		{"Мое имя -- Дэвид Дрейк. Мне удалось найти кое-какие документы в одном из тайников отца. Этот адрес был среди них. Вы что-то знаете о судьбе моего отца? ", [[Джек вздыхает: "Это бесполезно. Я изучил практически все, до чего сумел дотянуться - газеты, судебные дела. И ничего - никаких зацепок. Компания обанкротилась, руководители пропали". ]], code [[wright_dlg.state = 2; psub('ask_documents'); ]]};
		{tag='ask_documents'};
		{always = true, "[Отдать документы]Посмотрите это. Не думаю, что вы это видели. ", [[Джек нехотя забирает бумаги из ваших рук и бегло их осматривает. Пожимая плечами, он комментирует: "Ничего интересного, просто планы старых зданий. Док 2? Отец там часто бывал, впрочем не думаю, что после 10 лет там что-то осталось. Если хотите - можете оставить документы, я попробую разузнать побольше". ]], code [[ 
			dock_found = true;
			wright_dlg.state = 3; 
			remove(item_charts, pl); 
			psub("checking_documents");
		]]};
		{always = true, "У меня есть несколько вопросов. ", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
		{always = true, "Я вернусь позже. ", [[ Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
		{tag='checking_documents'};
		{always = true, "Вы можете вернуть мне бумаги? ", [["Конечно. Если принесете их снова -- я возобновлю поиски", - Джек возвращает вам документы. ]], code [[
			wright_dlg.state = 4;
			put(item_charts, pl);
			back();
		]]};
		{always = true, "У меня есть несколько вопросов. ", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
		{always = true, "Я вернусь позже. ", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
		{tag='questions'};
		{"Чем ваш отец занимался в Вестхейвен Трансоушен? ", [["Частично", - Джек показывает на картину на стене: "Он проектировал корабли, был главным инженером. Перед тем, как исчезнуть, он часто запирался в этом кабинете, подолгу что-то чертил. До глубокой ночи книги читал... Никаких материалов он не оставил. Он, вообще, очень ответственно относился к этому - никто никогда не знал, чем конкретно он занимается, кроме его подчиненных и вашего отца". ]]};
		{always = true, "Вернемся к делу. ", [[Джек кивает: "Хорошо". ]], code [[ pret(); ]]};
		{tag='ask_documents2'};
		{always = true, "[Отдать документы]Вот документы. ", [[Джек забирает бумаги и раскладывает их на своем столе: "Спасибо, я посмотрю, что смогу найти". ]], code[[ wright_dlg.state = 3; remove(item_charts, pl); back(); ]]};
		{always = true, "У меня есть несколько вопросов. ", [[Джек кивает: "Чем смогу - помогу". ]], code [[psub('questions')]]};
		{always = true, "Я вернусь позже. ", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
		{tag='warehouse_discovered'};
		{"[Рассказать о Левиафане]Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
            char_wright_home.known_leviathan = true;
            rel_jack = rel_jack + 1;
            walkin('wright_leviathan_cutscene1'); 
        ]]};
		{always = true, "Отлично, я съезжу туда и посмотрю, что удастся найти. ", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
		{tag='warehouse_discovered2'};
        {tag="phr_leviathan", "[Рассказать о Левиафане]Я кое-что нашел в доке...", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть!" ]], code [[
            char_wright_home.known_leviathan = true;
            rel_jack = rel_jack + 1;
            walkin('wright_leviathan_cutscene1'); 
        ]]};      
		{tag="phr_warehouse_visited", always = true, "На склад мне попасть не удалось. ", function(s)
            if (char_wright_home.known_leviathan) then
                psub("warehouse_break_in");
                return [[Джек с досадой стучит по столу: "Черт! "^ Еще пару минут он задумчиво сидит в кресле, после чего предлагает идею: "Мы можем попробовать проникнуть туда тайком. Я довезу вас туда, но внутри все делать придется вам". ]]
            else
                psub('warehouse_break_in_reluctant');
                return [[Джек вздыхает: "Ну вот и все. Боюсь, больше мы ничего не узнаем". ]];
            end;
        end};
		{always = true, "Я вернусь позже. ", [[Джек возвращается к своим делам: "До встречи". ]], code [[ back(); ]]};
		{tag='warehouse_break_in'};
		{always = true, "Надо попробовать. ", [["Хорошо", - отвечает Джек. Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[ walk('warehouse_32_night'); ]]};
		{always = true, "Лучше не стоит. ", [[Джек разочарованно отвечает: "Очень жаль". ]], code [[ pret(); ]]};
        {tag='warehouse_break_in_reluctant'};
        {always = true, "Мы можем попробовать проникнуть туда. Вдруг там что-то сохранилось?", [[Джек удивленно переспрашивает: "Проникнуть? Дэвид, вы в своем уме?"]], code [[ psub("w_bir2");]]};
        {always = true, "Я пойду", [[Джек возвращается к своим делам: "До встречи". ]]};
        {tag="w_bir2"};
        {always = true, "Если мы хотим найти моего и вашего отца - нам нужно действовать вместе", [[Джек отрицательно качает головой: "Я не готов действовать такими методами". ]], code [[ psub("w_bir3");]]};
        {always = true, "Вы правы, это глупо", [[Джек молча кивает. ]], code [[ pret(); ]]};
        {tag="w_bir3"};
        {"Вы готовы остановиться в шаге от цели?", [[Джек отвечает не сразу: "Мы не знаем, насколько мы близко. "]]};
        { "У нас нет другого выбора. Это наша единственная зацепка", [[Джек берет карандаш, вертит его в руках несколько минут, потом смотрит на картину. Наконец, он соглашается: "Будь по вашему". Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[
            rel_jack = rel_jack - 1;
            walk("warehouse_32_night");
        ]]};
        {"У вас есть другие предложения?", [[Джек вздыхает: "Нет. Придется признать, поиски зашли в тупик". ]]};
        {always = true, "Вы правы, это глупо", [[Джек молча кивает. ]], code [[ psub("warehouse_break_in_reluctant"); ]]};
		{tag='warehouse_discovered3'};
		{always = true, "Надо еще раз попасть на склад. ", [["Хорошо", - отвечает Джек. После наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32. ]], code [[ psub('warehouse_break_in'); ]]};
		{always = true, "Я вернусь позже. ", [["До встречи". ]], code [[ back(); ]]};
		{tag='leviathan_restored_known'};
		{always = true, "Мне удалось починить \"Левиафан\". Мне понадобится помощник на борту. ", [[Джек поднимается с кресла и одевает пальто: "Безусловно, я готов", - сообщает вам он. "Здесь меня ничто не держит". ]], code [[ 
			lifeon("char_wright");
			table.insert(pl.party, 'wright');
			walk('leviathan_wardroom'); 
		]]};
		{always = true, "Я вернусь позже. ", [[
			"До встречи".
		]], code [[ back(); ]]};
        {tag='leviathan_restored'};
        {always = true, "Я нашел подводный корабль. Мне понадобится помощь в управлении им. ", [[Джек мгновенно вскакивает со стула, восклицая: "Ничего себе! Я должен это видеть!". ]], code [[ 
            lifeon("char_wright");
            table.insert(pl.party, 'wright');
            walk('wright_leviathan_cutscene2'); 
        ]]};
        {always = true, "Я вернусь позже. ", [[
            "До встречи".
        ]], code [[ back(); ]]};
	};
};

wright_leviathan_cutscene2 = cutscene("wright_leviathan_cutscene2", "Причал", [[Вместе с Джеком вы приезжаете в док. Райт долго и с интересом осматривает корпус _"Левиафана"_. Внутри, Джек долго обходит отсеки, разглядывая все узлы. Наконец, вы оказываетесь в кают-компании и он сообщает: "Я готов". ]], 'leviathan_wardroom');

wright_leviathan_cutscene1 = dlg {
	nam = "wright_leviathan_cutscene1";
	disp = "Причал";
	entered = [[
		Вместе с Джеком вы приехали в док 2. Райт долго и с интересом осматривает металлический корпус субмарины. С задумчивым видом он ходит вокруг, рассматривая его. Наконец он спрашивает: "Она работает?"
	]];
	phr = {
		{"10 лет под водой. Не думаю, что там хоть что-то сохранилось... ", [[
			Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Едешь?"
		]], code [[ psub('choice'); ]]};
		{"Не уверен, но, думаю, да. ", [[
			Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Едешь?"
		]], code [[ psub('choice'); ]]};
		{tag='choice'};
		{"Да, поехали. ", [[	
			Вы садитесь в кэб и возвращаетесь домой к Джеку. 
		]], [[
			walk('wright_house_cabinet');
		]]};
		{"Я останусь тут. ", [[	
			Джек садится в кэб и уезжает домой. 
		]], [[
			walk('dock_mooring');
		]]};
	};
};

wright_entry_dlg = dlg {
	nam = "wright_entry_dlg";
	disp = "Голос за дверью";
	entered = function(s)
		psub("start");
		return [[
			Вы стучите в дверь. Через некоторое время вам отвечает сонный голос: "Кто здесь?"
		]];
	end;
	hideinv = true;
	phr = {
		{tag = "start"};
		{always = true, "Могу я увидеть Майкла Райта?", [[
			"Кто спрашивает?"
		]], code [[ psub('who') ]]};
		{always = true, "Извините, я ошибся адресом", code [[ back(); ]]},
		{tag = 'who'};
		{"Вы знаете Уильяма Дрейка?", [[
			"Понятия не имею. Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство. 
		]], code [[ psub('irritated') ]]};
		{"Майкл Райт здесь живет?", [[
			"Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство. 
		]], code [[ psub('irritated') ]]};
		{always = true, "У меня важное сообщение для него", [[
			"Он тут не живет уже много лет. Уходите" - вам показалось, что голос собеседника слегка дрогнул при этих словах. 
		]], code [[ back(); ]]};
		{tag = 'irritated'};
		{"Мой отец - Уильям Дрейк, работал с Майклом Райтом. Так вы знаете его?", [[
			Вы слышите звук отодвигающегося засова и ответ: "Проходите". 
		]], code [[ 
			door_wright.locked = false;
			path("В дом", wright_house):enable();
			back();
		]]};
	};
};

wright_drawing = obj {
	nam = 'wright_drawing';
	dsc = [[На стене напротив двери висит большая {картина}, изображающая пароход. ]];
	act = [[На картине во всех деталях изображен пароход _"Огненная стрела"_, принадлежавший Вестхейвен Трансоушен, полным ходом идущий по бескрайнему океану. Яркое солнце освещает палубу, на которой находится множество пассажиров, прогуливающихся, общающихся, сидящих на скамейках. Из всех трех труб _"Огненной стрелы"_ идет густой черный дым, а на корме развевается флаг Соединенного Королевства. Под картиной вы видите небольшую табличку с надписью: _"Майклу Райту, создателю ,,Огненной стрелы''. Альберт Мур, 1889"_. ]];
};

wright_table = obj {
	nam = "wright_table";
	disp = "Стол";
	dsc =[[В центре комнаты стоит массивный дубовый стол. На его полированной поверхности разбросаны в кажущемся беспорядке бумаги, письменные принадлежности, старые газеты и другие предметы. ]];
};

wright_house_cabinet = room {
	nam = "wright_house_cabinet";
	disp = "Дом Райта, кабинет";
	dsc = [[Стены комнаты оклеены старыми обоями с полустершимся рисунком. Сквозь большие окна в комнату проникает достаточно света. ]];
	obj = {
        'wright_drawing',   
		'wright_table',
		'char_wright_home'
	};
	way = {
		vroom("В гостиную", "wright_house_front_room");
	};
};

wright_house_front_room = room {
	nam = "wright_house_front_room";
	disp = "Дом Райта, гостиная";
	dsc = [[Окна в гостиной завешены тяжелыми занавесками и в полутьме вы с трудом различаете очертания предметов интерьера - дорогих старых кресел, изящно украшенных шкафов, покрытых многолетним слоем пыли канделябров. ]];
	entered = function(s)
		if (not s.visited) then
			s.visited = true;
			pn([[У двери стоит молодой человек, примерно вашего возраста. Как только вы заходите, он закрывает за вами дверь и просит проследовать за ним в кабинет. ]]);
		end;
	end;
	way = {
		vroom("На улицу", "wright_house");
		vroom("В кабинет", "wright_house_cabinet");
	};
};

wright_house = room {
	nam = "wright_house";
	disp = "Дом Райта";
	enter = function(s)
		put(char_coachman, here());
	end;
    dsc = [[Небольшой кирпичный особняк, принадлежащий Майклу Райту, стоит на одной из тихих улочек, на окраине Лондона. Дом выглядит неухоженным - штукатурка местами осыпалась, лужайка заросла высокой травой, часть окон закрыта ставнями, явно давно не открывавшимися. ]];
	obj = {'door_wright'};
	way = {
		vroom("В дом", "wright_house_front_room"):disable();
	};
};