Files @ 88fdd49344af
Branch filter:

Location: games/Awakening/atlantis_from_the_ashes.lua - annotation

Silverwing
If goldman is exposed, darkstar behaves less stupid
eaf92b073787
99af403fcdf0
99af403fcdf0
99af403fcdf0
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
3c95f6f8fb21
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
718ea9976bc3
eaf92b073787
718ea9976bc3
99af403fcdf0
eaf92b073787
99af403fcdf0
99af403fcdf0
99af403fcdf0
e86bb9d337ad
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
18eb0639dd8e
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
7bc3b3ecc9f1
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
9122330d184d
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
7bc3b3ecc9f1
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
7bc3b3ecc9f1
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
99af403fcdf0
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
0946ca600d70
eaf92b073787
8f8d01aa7b3b
8f8d01aa7b3b
8f8d01aa7b3b
eaf92b073787
5ee21e1d5fdd
e064dca483b7
eaf92b073787
eaf92b073787
eaf92b073787
eaf92b073787
0946ca600d70
atl_fta_is_terra_solis = room {
    var {
        state = 0;
    };
	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 [[ psub("clear"); ]]};
		{tag="next"};
		{always=true, "Что мне делать?", [[Райт инструктирует вас: "Идите по западной стороне. Ваша задача -- попасть в центр секции с северной стороны. Вы увидите несколько вентилей. Просто перекройте тот, в котором давление слишком большое". ]], code [[ psub("clear"); ]]};
        {"Конец связи. ", "", code [[ back(); ]]};
		{tag="more"};
		{"Тут еще что-то взорвалось", [[Райт подтверждает: "Я знаю. Поторопитесь. Если взорвется еще один котел, то станция обречена". ]], 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 = 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;
	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;
        return "Вы поворачиваете вентиль. Значения на манометрах изменились. ";
	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;
        return "Вы поворачиваете вентиль. Значения на манометрах изменились. ";
	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 "Вы поворачиваете вентиль. ";
			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)
        if char_darkstar_dlg.state == 0 then
            char_darkstar_dlg.state = 1;
        end;
		atl_fta_state = 2;
		remove(item_atl_fta_suit, pl);
        pl.has_light = false;
	end;
	obj = {
		vway('continue', '{Продолжить}', 'atl_luna_drake_room');
	};
};