Files @ 18eb0639dd8e
Branch filter:

Location: games/Awakening/atlantis_from_the_ashes.lua - annotation

Silverwing
Ryveerr and Aikerjarr fix
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
9122330d184d
eaf92b073787
9122330d184d
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
18eb0639dd8e
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
9122330d184d
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
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');
	};
};