Files @ 6e7519136e47
Branch filter:

Location: games/Awakening/dock2.lua

Silverwing
Project state at 03.10.15
--[[
Игрок может попасть сюда только после диалога с Майклом.
Верфь заброшена, многие механизмы придется ремонтировать.
Здесь игрок найдет подводную лодку, которую нужно будет восстановить.
]]
dock_2 = room {
	nam = "dock_2";
	disp = "Док 2, вход";
	dsc = [[
		Вы стоите перед старым железный забором. 
	]];
	enter = function(s)
		move(char_coachman, here());
	end;
	way = {
		vroom("Войти", "dock_inside"):disable();
	};
	obj = {
		"dock_gate"
	};
};

dock_gate = obj {
	nam = "dock_gate";
	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;
	used = function(s,o)
		if (s.open) then
			return "Я больше ничего не могу здесь сделать. ";
		end;
		if (o == item_toolbox) then
			s.open = true;
			path("Войти"):enable();
			return "Пользуясь ломиком, найденным в ящике, вы снимаете замок с ворот. С жутким скрипом вам удается приоткрыть их. Теперь вы можете войти внутрь. ";
		else
			return "Врядли это поможет. ";
		end;
	end;
	
};

dock_inside = room {
	nam = "dock_inside";
	disp = "Док";
	dsc = [[
		Вы находитесь на территории дока, принадлежавшего компании Вестхейвен Транс Оушен, о чем свидетельствует обшарпанная табличка над входом. 
	]];
	view = [[
		Левиафан находится в доке
	]];
	way = {
		vroom("Выйти", "dock_2");
		vroom("К причалу", "dock_mooring");
	};
	obj = {
		"dock_boxes"
	};
};

dock_boxes = obj {
	nam = "dock_boxes";
	disp = "Ящики";
	dsc = "Ровными рядами вокруг расположены грузовые {контейнеры}. ";
	act = "Старые контейнеры. Скорее всего, большинство из них пусты. ";
};

dock_mooring = room {
	nam = "dock_inside";
	disp = "Причал";
	dsc = [[
		Вы находитесь у причала дока 2. Повсюду вокруг стоят грузовые контейнеры с логотипом Вестхейвен Транс Оушен. 
	]];
	way = {
		vroom("К пульту управления краном", "dock_crane_control");
		vroom("В люк", "leviathan_disabled_airlock"):disable();
	};
	obj = {
		"dock_leviathan",
		"dock_crane"
	};
};

dock_leviathan = obj {
	nam = "dock_leviathan";
	disp = "Левиафан";
	submerged = true;
	dsc = function(s)
		if (s.submerged) then
			return "Под поверхностью воды виден какой-то большой металлический {предмет}. ";
		else
			return "На тросах подвешена странная машина. Торпедообразный корпус, в верхней части которого виден наглухо задраенный {люк}, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности покрыты грязью, не позволяя заглянуть внутрь. В передней части на борту прикреплена слегка поржавевшая табличка \"А04 - Левиафан\". "
		end;
	end;
	act = function(s)
		if (s.submerged) then
			return "В мутной воде вы не можете понять, что это. ";
		elseif (s.open) then
			--TODO
			s.open = false;
			path("В люк"):disable();
			return "Вы задраиваете люк";
		else
			--TODO
			s.open = true;
			path("В люк"):enable();
			return "Вы отдраиваете люк";
		end;	
	end;
};

dock_crane = obj {
	nam = "dock_crane";
	disp = "Подъемник";
	state = 0;
	dsc = function(s)
		if (s.state == 0) then
			return "Огромный металлический кран нависает над водой. {Тросы} сейчас подняты. ";
		elseif (s.state == 1) then
			return "Огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно - они почти полностью погружены в грязную воду. ";
		elseif (s.state == 2) then
			return "Огромный металлический кран нависает над водой. {Тросы} подцеплены к предмету, скрывающемуся под водой. ";
		else
			return "Огромный металлический кран нависает над водой. " -- На крюках подвешена странная машина. Торпедообразный корпус, в верхней части которого виден наглухо задраенный люк, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности покрыты грязью, не позволяя заглянуть внутрь. В передней части на борту прикреплена слегка поржавевшая табличка "А04 - Левиафан". 
		end;
	end;
	act = function(s)
		if (s.state == 0) then
			return "Нужно опустить тросы";
		elseif (s.state == 1) then
			s.state = 2;
			return "Вы подцепляете тросы к скрывающемуся под водой предмету. ";
		elseif (s.state == 2) then
			s.state = 1;
			return "Вы отцепляете тросы от скрывающегося под водой предмета. ";
		elseif (s.state == 3) then
			return "Вы больше ничего не можете сделать здесь";
		end;
	end;
};

dock_crane_control = room {
	nam = "dock_crane_control";
	disp = "Панель управления краном";
	dsc = [[
		Вы стоите на небольшой огороженной площадке перед панелью управления подъемником. На ней расположено два рычага.
	]];
	obj = {
		"crane_lever_vertical",
		"crane_lever_rail",
		"crane_service_access_panel"
	};
	way = {
		vroom("Назад", "dock_mooring");
	};
};

crane_lever_vertical = obj {
	nam = "crane_lever_vertical";
	dsc = "{Один из них} установлен вертикально и имеет несколько промежуточных положений. Сбоку от него нарисованы стрелки вверх и вниз. ";
	act = function(s)
		print "fuck";
		if (dock_crane.broken) then
			return "Как ни дергаете вы рычаг, ничего не происходит";
		else
			-- TODO refactor
			-- TODO texts!
			if (dock_crane.state == 0) then
				dock_crane.state = 1;
				return [[Вы сдвигаете рычаг в крайнее нижнее положение. С громким скрежетом тросы опускаются. ]];
			elseif (dock_crane.state == 3) then
				dock_crane.state = 2;
				dock_leviathan.submerged = true;
				return [[Вы сдвигаете рычаг в крайнее нижнее положение. С громким скрежетом тросы опускаются и поднятый предмет скрывается под водой. ]];
			elseif (dock_crane.state == 2) then
				dock_crane.state = 3
				dock_leviathan.submerged = false;
				return [[Вы сдвигаете рычаг в крайнее верхнее положение. С громким скрежетом тросы поднимаются вместе с подцепленным к ним предметом. ]];
			elseif (dock_crane.state == 1) then
				dock_crane.state = 0;
				return [[Вы сдвигаете рычаг в крайнее верхнее положение. С громким скрежетом тросы поднимаются. ]];
			end;
		end;
	end;
};

crane_lever_rail = obj {
	nam = "crane_level_rail";
	dsc = "{Второй рычаг} установлен горизотельно и имеет три положения. Над ним нарисованы стрелки влево и вправо.";
	act = "Рычаг не поддается. ";
};

crane_service_access_panel = obj {
	nam = "crane_service_access_panel";
};