Files @ 6ea4b3875448
Branch filter:

Location: games/Awakening/lse_powerplant.lua - annotation

Silverwing
Progress on dlg rewrite; Michael Wright new dlg added
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
6942b6162aff
lse_powerplant_door = obj {
	nam = "lse_powerplant_door";
	disp = "Двери энергостанции";
	dsc = function(s)
		if (s.open) then
			return [[
				Двери энергостанции открыты
			]];
		else 
			return [[
				Двери здания заперты
			]];
		end;
	end;
	act = function(s)
		if (s.open) then
			return [[Вы можете войти]];
		else
			return [[Судя по всему, вход заблокирован изнутри. Вы не сможете открыть его отсюда. ]];
		end;
	end;
};

lse_powerplant_door_inside = obj {
	nam = "lse_powerplant_door";
	dsc = function(s)
		if(lse_powerplant_door.open) then 
			return "{Входные двери} открыты. ";
		else
			return "{Входные двери} закрыты. ";
		end;
	end;
	act = function(s)
		if(lse_powerplant_door.open) then 
			return "Двери уже открыты";
		else
			return "У вас не получается открыть двери. Возможно, это делается в другом месте";
		end;
	end;
};

lse_powerplant = room {
	nam = "lse_powerplant";
	disp = "Лсэрианотр, энергостанция";
	dsc = [[
		Вы находитесь в комнате управления энергоснабжением Лсэрианотра. Сквозь скафандр вы ощущаете слабую вибрацию, исходяющую от работающих неподалеку генераторов.
	]];
	entered = function(s)
		
	end;
	obj = {
		"powerplant_control",
		"lse_powerplant_door_inside"
	};
	way = {
		kh_vroom("Выйти из здания", "lse_middle_east", "powerplant_out"):disable();
		kh_vroom("В сервиcный тоннель", "service_tunnels_2");
	};
};

powerplant_control = obj {
	nam = "powerplant_control";
	disp = "Терминал управления энергоснабжением";
	dsc = "У одной из стен расположен {огромный экран}, на котором, судя по всему, отмечены линии энергоснабжения и ключевые источники потребления энергии. ^";
	act = function(s)
		walkin(powerplant_control_dlg);
	end;
};

powerplant_control_dlg = dlg {
	nam = "powerplant_control_dlg";
	disp = "Терминал управления энергоснабжением";
	dsc = "На экране вы видите подробную схему энергосетей города. Несколько иконок внизу экрана показывают вам, что нужно нажимать, чтобы перейти в различные режимы управления. ";
	entered = function()
		if (lse_powerplant_door.open) then
			poff(3);
			pon(4);
		else
			poff(4);
			pon(3);
		end;
	end;
	phr = {
		{1, always = true, "Перейти в режим управления питанием", function(s)
			walkin(powerplant_defence_control_dlg);
			return false;
		end; };
		{3, "Разблокировать вход в здание", function(s)
			pon(4);
			lse_powerplant_door.open = true;
			path("powerplant_out", "lse_powerplant"):enable();
			return "Входные двери открываются";
		end; };
		{4, "Заблокировать вход в здание", function(s)
			pon(3);
			lse_powerplant_door.open = false;
			path("powerplant_out", "lse_powerplant"):disable();
			return "Входные двери закрываются";
		end; };
		{5, always = true, "Внимательно осмотреть схему города", "На схеме изображены все три кольца города, эта энергостанция и еще две других, расположенные во внешнем и внутреннем кольце. Ворота, соединяющие внешнее и среднее кольцо отмечены открытыми, ворота, соединяющие среднее и внутреннее кольцо закрыты. "};
		{255, always = true, "Отойти от терминала",function(s)
			back();
		end; };
	};
};

powerplant_defence_control_dlg = dlg {
	nam = "powerplant_defence_control_dlg";
	disp = "Терминал управления энергоснабжением";
	states = {0, 1, 0, 1};
	locked = 1;
	pic = function(s)
		local image = 'images/power_bcg.png';
		if (s.locked == 1) then
			image = image .. ";images/power_lock.png@62,31";
		elseif (s.locked == 2) then
			image = image .. ";images/power_lock.png@62,93";
		elseif (s.locked == 3) then
			image = image .. ";images/power_lock.png@31,62";
		elseif (s.locked == 4) then
			image = image .. ";images/power_lock.png@93,62";
		end;
		
		image = image .. ";images/power_" .. tostring(s.states[1]) .. ".png@62,31";
		image = image .. ";images/power_" .. tostring(s.states[2]) .. ".png@62,93";
		image = image .. ";images/power_" .. tostring(s.states[3]) .. ".png@31,62";
		image = image .. ";images/power_" .. tostring(s.states[4]) .. ".png@93,62";
		return image;
	end;
	detect = function(s)
		return (s.states[1] == 1 and s.states[2] == 3 
			and s.states[3] == 0 and s.states[4] == 2) or 
			(s.states[1] == 3 and s.states[2] == 1 
			and s.states[3] == 2 and s.states[4] == 0)
	end;
	dsc = "На экране видна схема питания систем защиты. Иконки внизу экрана подсказывают, что нажимать при отключении";
	phr = {
		{1, always = true, "блокировать верхний переключатель", "Изображение на экране изменилось.", function(s)
			powerplant_defence_control_dlg.locked = 1;
		end;},
		{2, always = true, "блокировать нижний переключатель", "Изображение на экране изменилось.", function(s)
			powerplant_defence_control_dlg.locked = 2;
		end;},
		{3, always = true, "блокировать левый переключатель", "Изображение на экране изменилось.", function(s)
			powerplant_defence_control_dlg.locked = 3;
		end;}, 
		{4, always = true, "блокировать правый переключатель", "Изображение на экране изменилось.", function(s)
			powerplant_defence_control_dlg.locked = 4;
		end;}, 
		{5, always = true, "поворот по часовой", "Изображение на экране изменилось.", function(s)
			for i = 1, 4 do
				if (i ~= powerplant_defence_control_dlg.locked) then
					powerplant_defence_control_dlg.states[i] = powerplant_defence_control_dlg.states[i] + 1;
					if (powerplant_defence_control_dlg.states[i] > 3) then
						powerplant_defence_control_dlg.states[i] = 0;
					end;
				end;
			end;
			if (powerplant_defence_control_dlg.detect(powerplant_defence_control_dlg)) then
				p("Защитные системы отключены"); --TODO сделать нормальный фидбэк
			end;
		end;},
		{6, always = true, "поворот против часовой", "Изображение на экране изменилось.", function(s)
			for i = 1, 4 do
				if (i ~= powerplant_defence_control_dlg.locked) then
					powerplant_defence_control_dlg.states[i] = powerplant_defence_control_dlg.states[i] - 1;
					if (powerplant_defence_control_dlg.states[i] < 0) then
						powerplant_defence_control_dlg.states[i] = 3;
					end;
				end;
			end;
			if (powerplant_defence_control_dlg.detect(powerplant_defence_control_dlg)) then
				p("Защитные системы отключены"); --TODO сделать нормальный фидбэк
			end;
		end;}, 
		{255, always = true, "выход", function(s)
			back();
		end},
	};
};