Files @ c4b207ce4252
Branch filter:

Location: games/Awakening/leviathan.lua - annotation

Silverwing
Initial Commit
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
c4b207ce4252
--[[
Ваша подводная лодка - Левиафан
Для начала вам придется починить ее
Имеет два двигателя - электрический и паровой
Для запуска машины потребуется починить и обеспечить энергией хотя бы один из них(уголь или батареи)
Левиафан - достаточно большая подводная лодка. Хотя она может управляться одним человеком, рассчитана она на много большее.

Имеется три доступных уровня освещения: 
Не освещено - ничего не видно, передвигаться по кораблю невозможно
Плохо освещено - Описания минимальны, большинство действий недостпны
Хорошо освещено - полные описания, все действия доступны

На складе имеется три скафандра в хорошем состоянии. Без них невозможно покинуть корабль в подводных локациях. Скафандр может быть испорчен и потребует ремонта. Если оба скафандра выведены из строя их потребуется отремонтировать.
]]
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}
	};
};