File diff 000000000000 → c4b207ce4252
leviathan.lua
Show inline comments
 
new file 100644
 
--[[
 
Ваша подводная лодка - Левиафан
 
Для начала вам придется починить ее
 
Имеет два двигателя - электрический и паровой
 
Для запуска машины потребуется починить и обеспечить энергией хотя бы один из них(уголь или батареи)
 
Левиафан - достаточно большая подводная лодка. Хотя она может управляться одним человеком, рассчитана она на много большее.
 
 
Имеется три доступных уровня освещения: 
 
Не освещено - ничего не видно, передвигаться по кораблю невозможно
 
Плохо освещено - Описания минимальны, большинство действий недостпны
 
Хорошо освещено - полные описания, все действия доступны
 
 
На складе имеется три скафандра в хорошем состоянии. Без них невозможно покинуть корабль в подводных локациях. Скафандр может быть испорчен и потребует ремонта. Если оба скафандра выведены из строя их потребуется отремонтировать.
 
]]
 
submarine_leviathan = obj {
 
	nam = "submarine_leviathan";
 
	disp = "Левиафан";
 
	-- dsc = [[
 
	--	Вы видите огромную металлическую конструкцию, напоминающую рыбу. Большие стеклянные иллюминаторы по бортам еще больше усиливают впечатление. На бортах крупными буквами выведено "А12 Левиафан". В верхней части машины вы видите {люк}.^ 
 
	--]];
 
	dsc = [[
 
		Вы видите "{Левиафан}" - вашу субмарину
 
	]];
 
	act = [[ Несмотря на проведенные в бездействии годы, субмарина сейчас в отличном состоянии. Из иллюминаторов льется яркий свет. На борту виднреется слегка пошарпанная, но читаемая надпись "А04 - Левиафан" ]];
 
	-- function()
 
		-- walk "leviathan_airlock";
 
		-- return "Оказавшись внутри, вы закрываете за собой люк";
 
	--end;
 
};
 
 
--leviathan_exit = obj {
 
--	nam = "leviathan_exit";
 
--	dsc  = [[
 
--		{Люк} в потолке закрыт.
 
--	]];
 
--	act = function(s)
 
--		walk(where(submarine_leviathan));
 
--		return "Оказавшись снаружи, вы закрываете за собой люк";
 
--	end;
 
--};
 
 
leviathan_airlock = room {
 
	nam = "leviathan_airlock";
 
	disp = "Левиафан, шлюз";
 
	dsc = [[
 
		Вы находитесь в шлюзовом отсеке Левиафана. Яркий свет электрических ламп освещает помещение. 
 
	]];
 
	way = {
 
		vroom("Кают-компания", "leviathan_wardroom");
 
		vroom("Наружу", function()
 
			return where(submarine_leviathan);
 
		end);
 
	};
 
};
 
 
leviathan_captains_cabin = room {
 
	nam = "leviathan_captains_cabin";
 
	disp = "Левиафан, каюта капитана";
 
	dsc = [[
 
		Вы находитесь в каюте, очевидно, предназначенной для капитана. Эта каюта немного больше остальных, в ней размещен стол и стул. 
 
		В столе несколько ящичков, хитроумно закрытых, чтобы при качке они не открывались.
 
	]];
 
	way = {
 
		vroom("Каюты", "leviathan_cabins");
 
	};
 
};
 
 
leviathan_cabins = room {
 
	nam = "leviathan_cabins";
 
	disp = "Левиафан, каюты";
 
	dsc  =[[
 
		Вы находитесь в длинном коридоре с множеством дверей, ведущих в каюты, расположенные по левому борту.
 
	]];
 
	way = {
 
		vroom("Каюта капитана", "leviathan_captains_cabin");
 
		vroom("Кают-компания", "leviathan_wardroom");
 
	};
 
	
 
};
 
 
leviathan_cargo_hold = room {
 
	nam = "leviathan_cargo_hold";
 
	disp = "Левиафан, грузовой отсек";
 
	dsc = [[
 
		Вы находитесь в грузовом отсеке Левиафана
 
	]];
 
	way = {
 
		vroom("Кают-компания", "leviathan_wardroom");
 
	};
 
};
 
 
leviathan_wardroom = room {
 
	nam = "leviathan_wardroom";
 
	disp = "Левиафан, кают-компания";
 
	dsc = [[
 
		Вы находитесь в кают-компании Левиафана. Просторная комната, в центре которой укреплен массивный металлический стол. 
 
		Из машинного отсека доносится гул двигателей. Яркий свет электрических ламп освещает помещение. 
 
	]];
 
	way = {
 
		vroom("Машинный отсек", "leviathan_engines");
 
		vroom("Рубка", "leviathan_dlg");
 
		vroom("Шлюз", "leviathan_airlock");
 
		vroom("Каюты", "leviathan_cabins");
 
		vroom("Грузовой отсек", "leviathan_cargo_hold");
 
	};
 
	obj = {
 
		--vway("Машинный отсек", "Из {машинного отсека} доносится легкий гул.^", "leviathan_engines");
 
		--vway("Рубка", "{В рубку}^", "leviathan_dlg");
 
		--vway("Шлюз", "{В шлюз}^", "leviathan_airlock");
 
		--vway("Каюты", "{В каюты экипажа}^", "leviathan_cabins");
 
		--vway("Грузовой отсек", "{В грузовой отсек}^", "leviathan_cargo_hold");
 
		"char_learr";
 
		"char_phaetlarr";
 
		"char_radcliffe";
 
		"char_wright";
 
	};
 
};
 
 
leviathan_engines = room {
 
	nam = "leviathan_engines";
 
	disp = "Левиафан, машинное отделение";
 
	dsc = [[
 
		Вы находитесь в машинном отделении Левиафана. Равномерный гул электрических двигателей сообщает о полной готовности субмарины. 
 
	]];
 
	way = {
 
		vroom("Кают-компания", "leviathan_wardroom");
 
	};
 
};
 
 
leviathan_dlg = dlg {
 
	nam = "leviathan_dlg";
 
	disp = "Штурвал Левиафана";
 
	dsc = function()
 
		local view = "";
 
		if (type(where(submarine_leviathan).view) == "function") then
 
			view = where(submarine_leviathan).view(where(submarine_leviathan));
 
		else
 
			view = where(submarine_leviathan).view;
 
		end;
 
		
 
		return [[
 
			Вы находитесь в рубке Левиафана перед штурвалом. 
 
			Отсюда вы можете направиться куда-нибудь. 
 
			Яркий свет электрических ламп освещает помещение. ^
 
		]] .. (view);
 
	end;
 
	update_options = function()
 
		leviathan_dlg:poff(10,11,12,13,14);
 
		if (where(submarine_leviathan).navigatable) then 
 
			leviathan_dlg:poff(1,2,3,4,5);
 
			if (where(submarine_leviathan).south) then 
 
				pon(10);
 
			end;
 
			if (where(submarine_leviathan).north) then 
 
				pon(11);
 
			end;
 
			if (where(submarine_leviathan).east) then 
 
				pon(12);
 
			end;
 
			if (where(submarine_leviathan).west) then 
 
				pon(13);
 
			end;
 
			if (where(submarine_leviathan).gate) then 
 
				pon(14);
 
			end;
 
		else
 
			leviathan_dlg:pon(1, 2, 3, 4);
 
			leviathan_dlg:poff(5);
 
			if (where(submarine_leviathan) == atlantis_dock) then	
 
				leviathan_dlg:poff(1);
 
			end;
 
			if (where(submarine_leviathan) == navjiarr_settlement) then
 
				leviathan_dlg:poff(2);
 
			end;
 
			if (where(submarine_leviathan) == navjiarr_hostile_settlement) then
 
				leviathan_dlg:poff(3);
 
			end;
 
			if (where(submarine_leviathan) == first_city_entrance) then
 
				leviathan_dlg:poff(4);
 
				leviathan_dlg:pon(5);
 
			end;
 
		end;
 
	end;
 
	enter = function(s)
 
		leviathan_dlg.update_options();
 
	end;
 
	phr = {
 
		{1, always = "true", "Атлантида", function()
 
			return "Вы прибыли в Атлантиду";
 
		end, function()
 
			move(submarine_leviathan, "atlantis_dock");
 
			leviathan_dlg:update_options();
 
		end},
 
		{2, always = "true", "Поселение Навьяр", function()
 
			return "Вы прибыли в Атлантиду";
 
		end, function()
 
			move(submarine_leviathan, "navjiarr_settlement");
 
			leviathan_dlg:update_options();
 
		end},
 
		{3, always = "true", "Враждебное поселение Навьяр", function()
 
			return "Вы прибыли в Атлантиду";
 
		end, function()
 
			move(submarine_leviathan, "navjiarr_hostile_settlement");
 
			leviathan_dlg:update_options();
 
		end},
 
		{4, always = "true", "Лсэрианотр, древний город Навьяр", function()
 
			return "Вы прибыли в Лсэрианотр";
 
		end, function()
 
			move(submarine_leviathan, "first_city_entrance");
 
			leviathan_dlg:update_options();
 
		end},
 
		{5, always = "true", "Вперед, в город", function()
 
			if (first_city_entrance.open) then
 
				return [[
 
					Движимый вашей умелой рукой, Левиафан вплывает в ворота. Оказавшись среди светящихся стен древнего города, вы отключаете прожектор.
 
				]];
 
			else
 
				return [[
 
					Вы не рискуете протаранить ворота, простоявшие не одно тысячелетие.
 
				]];
 
			end;
 
		end,
 
		function()
 
			if (first_city_entrance.open) then
 
				move(submarine_leviathan, "first_city_outer_south");
 
				leviathan_dlg:update_options();
 
			end;
 
		end;
 
		},
 
		{10, always = "true", "На юг", "", function()
 
			move(submarine_leviathan, where(submarine_leviathan).south);
 
			leviathan_dlg:update_options();
 
		end;};
 
		{11, always = "true", "На север", "", function()
 
			move(submarine_leviathan, where(submarine_leviathan).north);
 
			leviathan_dlg:update_options();
 
		end;};
 
		{12, always = "true", "На восток", "", function()
 
			move(submarine_leviathan, where(submarine_leviathan).east);
 
			leviathan_dlg:update_options();
 
		end;};
 
		{13, always = "true", "На запад", "", function()
 
			move(submarine_leviathan, where(submarine_leviathan).west);
 
			leviathan_dlg:update_options();
 
		end;};
 
		{14, always = "true", "В ворота", "", function()
 
			move(submarine_leviathan, where(submarine_leviathan).gate);
 
			leviathan_dlg:update_options();
 
		end;};
 
		{255, always = "true", "Назад, в кают-компанию", "", function()
 
			back();
 
		end}
 
	};
 
};
 
\ No newline at end of file