Changeset - eaf92b073787
[Not reviewed]
default
0 5 2
Silverwing - 8 years ago 2016-06-05 13:48:42

From the ashes
7 files changed with 517 insertions and 24 deletions:
0 comments (0 inline, 0 general)
atlantis.lua
Show inline comments
 
@@ -19,6 +19,8 @@ global {
 
	atl_lfc_leroy_spoken = 0;
 
	atl_lfc_goldman_spoken = 0;
 
	
 
	atl_fta_state = 0;
 
	
 
	atl_rep_moreau = 0;
 
	atl_rep_darkstar = 0;
 
	atl_rep_svetlova = 0;
 
@@ -73,13 +75,26 @@ atl_aqua_leviathan_dock = room {
 
		end;
 
	end;
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен _"Левиафан"_. Под потолком, на высоте примерно в 5 метров укреплены специальные балки, по которым могут свободно перемещаться крюки подъемных кранов. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. 
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Левиафан. Под потолком, на высоте примерно в 5 метров укреплены специальные балки, по которым могут свободно перемещаться крюки подъемных кранов. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. 
 
	]];
 
	way = {
 
		kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
	};
 
};
 
 
atl_aqua_nautilus_dock = room {
 
	nam = "Атлантида, Аква, док Наутилуса";
 
	dsc = [[
 
		Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Под потолком, на высоте примерно в 5 метров укреплены специальные балки, по которым могут свободно перемещаться крюки подъемных кранов. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. 
 
	]];
 
	way = {
 
		kh_vroom("В коридор A", "atl_aqua_corridor_a");
 
	};
 
	obj = {
 
		"char_xiao"
 
	};
 
};
 
 
atl_aqua_corridor_a = room {
 
	nam = "Атлантида, Аква, коридор A";
 
	dsc = [[
 
@@ -94,10 +109,7 @@ atl_aqua_corridor_a = room {
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В док \"Наутилуса\"", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
		end);
 
		kh_vroom("В док \"Наутилуса\"", "atl_aqua_nautilus_dock");
 
		kh_vroom("В главный коридор", "atl_aqua_main_corridor");
 
	};
 
	obj = {
 
@@ -607,8 +619,12 @@ atl_terra_main_corridor = room {
 
		kh_vroom("В мастерскую C", "atl_terra_workshop_c");
 
		kh_vroom("В мастерскую D", "atl_terra_workshop_d");
 
		kh_vroom("В секцию Солис", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
			if (atl_fta_state == 1) then
 
				return "atl_fta_is_terra_solis";
 
			else
 
				pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
				return false;
 
			end;
 
		end);
 
		kh_vroom("В секцию Доминус", "atl_intersection_terra_dom");
 
	};
 
@@ -639,8 +655,7 @@ atl_terra_workshop_b = room {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
		"char_radcliffe_atlantis",
 
		"char_xiao"
 
		"char_radcliffe_atlantis"
 
	};
 
};
 
 
@@ -983,7 +998,7 @@ char_radcliffe_atlantis = npc {
 
char_xiao = npc {
 
	nam = "Вейюан Сяо";
 
	dsc = [[
 
		{Вейюан Сяо} работает за станком.  
 
		{Вейюан Сяо} осматривает Наутилус.  
 
	]];
 
	dlg = "char_xiao_dlg";
 
};
atlantis_dlg.lua
Show inline comments
 
@@ -806,22 +806,45 @@ char_michael_wright_dlg = dlg {
 
	nam = "Майкл Райт";
 
	disp = "Майкл Райт";
 
	entered = function(s)
 
		psub("generic");
 
		if (atl_nih_state == 2) 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;
 
		return [[
 
			Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Чем могу быть полезен?"
 
		]];
 
		
 
		if (atl_nih_state == 3 and atl_iof_completed and atl_fta_state == 0) then
 
			atl_fta_state = 1;
 
			return [[
 
				Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. У меня есть для вас работа. Сейчас все наши бригады заняты, поэтому я прошу вас помочь с обслуживанием Солиса. Приходите туда и свяжитесь со мной по телефону, я дам вам инструкции".
 
			]];
 
		if (atl_fta_state == 2) then
 
			atl_fta_state = 3;
 
			psub("fta_deb");
 
			return [[
 
				Майкл Райт протягивает вам руку: "Только благодаря вам, мы все еще здесь. Я с радостью сообщу Моро, что я за возвращение вам Левиафана".
 
			]];
 
		else
 
			psub("generic");
 
			return [[
 
				Майкл Райт просматривает какие-то чертежи. Как только вы подходите, он отвлекается и приветствует вас: "Добрый день. Чем могу быть полезен?"
 
			]];
 
		end;		
 
	end;
 
	phr = {
 
		{tag="fta_deb"};
 
		{"[Пожать руку]Только я все еще не знаю, куда мне следует плыть", [[
 
			"Мы сделаем все возможное, чтобы помочь вам. Кроме того, то что вы делаете для Светловой и навьяров, может пролить свет на произошедшее с вашим отцом".
 
		]], code [[ psub('generic'); ]]};
 
		{"Просто верните мне Левиафан", [[
 
			"Не все так просто. Нужно, чтобы согласие дали еще Фредерик, Винсент и Екатерина".
 
		]], code [[ psub('generic'); ]]};
 
		{tag="generic"};
 
		{tag="nih_fixed", "Я нашел утечку", [[
 
			"Спасибо, я отправлю туда человека, чтобы он все поправил. Пока у меня больше нет для вас заданий". 
 
@@ -847,6 +870,9 @@ char_michael_wright_dlg = dlg {
 
			"Короткое замыкание. Странно, что предохранители не сработали. Рядом, к сожалению, никого не оказалось и потушить возгорание вовремя не удалось. Огонь быстро распространился по всей секции, ну а дальше вы все знаете. Мы временно заблокировали лифт туда. Если вы хотите помочь с восстановлением секции - нам не помешают лишние руки".
 
		]]};
 
		{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([[ "Кстати, у меня есть для вас небольшое задание. У нас где-то утечка воздуха. Ничего критичного. Просто прогуляйтесь по станции и если обнаружите, где это - сообщите мне. До встречи", -- Майкл Райт возвращается к своим делам. ]]);
 
@@ -1036,19 +1062,19 @@ char_xiao_dlg = dlg {
 
			s.state = 1;
 
			psub("first_meeting");
 
			return [[
 
				Перед вами стоит китаец лет пятидесяти. Продолжая заниматься сборкой какого-то механизма, он говорит: "Добро пожаловать на Атлантиду. Я Вейюан Сяо. Инженер".
 
				Перед вами стоит китаец лет пятидесяти. Продолжая заниматься осмотром Наутилуса, он говорит: "Добро пожаловать на Атлантиду. Я Вейюан Сяо. Инженер".
 
			]];
 
		else
 
			psub("generic");
 
			return [[
 
				Перед вами стоит Вейюан Сяо. Продолжая заниматься сборкой какого-то механизма, он говорит: "Вы вернулись".
 
				Перед вами стоит Вейюан Сяо. Продолжая заниматься осмотром Наутилуса, он говорит: "Вы вернулись".
 
			]];
 
		end;
 
	end;
 
	phr = {
 
		{tag="first_meeting"};
 
		{"Дэвид Дрейк, рад знакомству", [[
 
			Вейюан на секунду отвлекается от своего занятия и внимательно смотрит на вас: "Да, вы похожи на своего отца. Он великий человек. Вся станция - его рук дело".
 
			Вейюан на секунду отвлекается и внимательно смотрит на вас: "Да, вы похожи на своего отца. Он великий человек. Вся станция - его рук дело".
 
		]], code [[ psub("first_meeting_2"); ]]};
 
		{"Вы из Китая?", [[
 
			"Да. Я с молодости работал на Вестхейвен Трансоушен. Уильям Дрейк - достойнейший человек, жаль мы ничем не можем ему сейчас помочь".
 
@@ -1072,7 +1098,7 @@ char_xiao_dlg = dlg {
 
			"Меня там не было. Не берусь говорить".
 
		]]};
 
		{always=true, "Я пойду", [[
 
			Вейюан Сяо так же не отвлекаясь от своего занятия прощается с вами: "Увидимся позже".
 
			Вейюан Сяо прощается с вами: "Увидимся позже".
 
		]], code [[ back(); ]]};
 
	};
 
};
atlantis_from_the_ashes.lua
Show inline comments
 
new file 100644
 
atl_fta_is_terra_solis = room {
 
	nam = "Атлантида, межсекционный кодидор";
 
	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 [[
 
				Радио не настроено
 
			]];
 
		elseif (s.state == 1) then
 
			psub("ok");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
		elseif (s.state == 2) then
 
			psub("next");
 
			return [[
 
				Радио настроено, вы можете говорить
 
			]];
 
		elseif (s.state == 3) then
 
			psub("more");
 
			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(); ]]};
 
		{tag="next"};
 
		{"Что мне делать?", [[
 
			"Идите по западной стороне. Ваша задача - попасть в центр секции, с северной стороны. Вы увидите несколько вентилей. Вам надо будет перекрыть их все. Там хитрая защита от случайного закрытия, но я думаю, вы справитесь".
 
		]]};
 
		{tag="more"};
 
		{"Тут еще что-то взорвалось", [[
 
			"Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
		{"Как я выберусь отсюда?", [[
 
			"На юге есть шлюз, выйдете через него".
 
		]], code [[ atl_fta_dlg_radio.state = 2; ]]};
 
	};
 
};
 
 
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";
 
	end;
 
	way = {
 
		vroom("На восток", "atl_fta_solis_ne");
 
		vroom("На запад", "atl_fta_solis_nw");
 
	};
 
};
 
 
atl_fta_solis_ne_1 = 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_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
images/solis_valves_bg.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
items.lua
Show inline comments
 
@@ -373,4 +373,18 @@ item_navjiarr_disk = obj {
 
	dsc = [[
 
		Блестящий гладкий диск из неизвестного материала. Диаметр около 10 сантиметров. В центре небольшое треугольное отверстие. Вдоль внешней кромки - цветные полосы. 
 
	]];
 
};
 
 
item_goldmans_clock = obj {
 
	nam = "item_goldmans_clock";
 
	disp = "Часы";
 
	dsc = [[
 
		На полу валяются дорогие {карманные часы}.
 
	]];
 
	tak = [[
 
		Вы забираете часы себе.
 
	]];
 
	inv = [[
 
		Дорогие карманные часы на цепочке. Под крышкой гравировка "Франсуа Голдман, 1864". 
 
	]];
 
};
 
\ No newline at end of file
main.lua
Show inline comments
 
@@ -30,8 +30,7 @@ dofile "atlantis_dlg.lua"
 
dofile "atlantis_intro.lua"
 
dofile "atlantis_ignis_on_fire.lua"
 
dofile "atlantis_looking_for_clues.lua"
 
dofile "navjiarr_settlement.lua"
 
dofile "navjiarr_hostile_settlement.lua"
 
dofile "atlantis_from_the_ashes.lua"
 
-- Часть 3
 
-- Часть 4
 
dofile "final_scene.lua";
 
@@ -56,7 +55,6 @@ global {
 
	rel_learr = 0;
 
	rel_anna = 0;
 
	rel_jack = 0;
 
	
 
};
 
 
pl = player {
 
@@ -147,9 +145,9 @@ function init()
 
	pl.where = intro;
 
	---debug
 
	atl_nih_init();
 
	atl_lfc_state = 1;
 
	char_svetlova_dlg.state = 2;
 
	pl.where = atl_oculus_lab_a;
 
	-- atl_lfc_state = 1;
 
	-- char_svetlova_dlg.state = 2;
 
	pl.where = atl_fta_is_terra_solis;
 
	-- pl.where = warehouse_32;
 
	-- pl.where = w32_mgr;
 
	-- put(item_toolbox, pl);
utils.lua
Show inline comments
 
@@ -316,4 +316,53 @@ function obscured_obj(nam, dsc_a, act_a,
 
			end;
 
		end;
 
	};
 
end;
 
 
_atlantis = {
 
	suit_menu = dlg {
 
		nam = "Скафандр";
 
		_item = nil;
 
		dsc = [[
 
			Что вы хотите сделать?
 
		]];
 
		phr = {
 
			{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__;
 
				else
 
					back();
 
					return "Никто не отвечает";
 
				end;
 
			end};
 
			{2, always = "true", "Снять скафандр", function(s)
 
				if (EngineUtils.getValue(_atlantis.suit_menu._item.cantakeoff, _atlantis.suit_menu._item)) then
 
					drop(_atlantis.suit_menu._item);
 
					back();
 
					return "Вы снимаете скафандр";
 
				else
 
					back();
 
					return "Вы не можете снять скафандр сейчас";
 
				end;
 
			end};
 
			{3, always = "true", "Отмена", function(s)
 
				back();
 
				return "";
 
			end};
 
		};
 
	};
 
	
 
	suit_inv = function(s)
 
		_atlantis.suit_menu._item = s;
 
		walkin(_atlantis.suit_menu);
 
	end;
 
};
 
 
suit = function(tab)
 
	if (not tab.inv) then
 
		tab.inv = _atlantis.suit_inv;
 
	end;
 
	
 
	return obj(tab);
 
end;
 
\ No newline at end of file
0 comments (0 inline, 0 general)