Changeset - da5a654805e0
[Not reviewed]
default
0 1 0
Silverwing - 5 years ago 2019-07-06 06:27:52

typo
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
dock2.lua
Show inline comments
 
--[[
 
Игрок может попасть сюда только после диалога с Майклом.
 
Верфь заброшена, многие механизмы придется ремонтировать.
 
Здесь игрок найдет подводную лодку, которую нужно будет восстановить.
 
]]
 
dock_2 = room {
 
	nam = "dock_2";
 
	disp = "Док 2, вход";   
 
	dsc = [[Док огражден высоким металлическим забором, изрядно проржавевшим из-за отсутствия должного ухода. Ржавая табличка с надписью "Док 2, собственность Вестхейвен Трансоушен" висит над воротами, слегка поскрипывая под сильными порывами ветра. Пространство за забором заставлено старыми металлическими грузовыми контейнерами. Вдали виднеется кран, предназначенный для погрузки и разгрузки приходящих судов. ]];
 
	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 false;
 
		end;
 
		if (o == item_toolbox) then
 
			s.open = true;
 
			path("В док"):enable();
 
			return [[Пользуясь ломиком, найденным в ящике, вы снимаете замок с ворот. С жутким скрипом вам удается приоткрыть их. Теперь вы можете войти внутрь. ]];
 
		else
 
			return false;
 
		end;
 
	end;
 
};
 
 
dock_inside = room {
 
	nam = "dock_inside";
 
	disp = "Док";
 
    dsc = [[На территории дока повсюду раскиданы обломки дерева, железа, какие-то мешки. Ржавые ворота в заборе застыли в приоткрытом состоянии. Вдалеке, у причала, стоит старый грузовой кран. До вас доносятся завывания ветра и скрип ржавого металла. ]];
 
	way = {
 
		vroom("На улицу", "dock_2");
 
		vroom("К причалу", "dock_mooring");
 
	};
 
	obj = {
 
		"dock_boxes"
 
	};
 
};
 
 
dock_boxes = obj {
 
    var {
 
        searched = 0;
 
    };
 
	nam = "dock_boxes";
 
	disp = "Ящики";
 
	dsc = [[Ровными рядами вокруг расположены старые грузовые {контейнеры}. Краска на большинстве из них повреждена настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ]];
 
	act = function(s)
 
		if s.searched == 0 then
 
			s.searched = 1;
 
			put(item_pump_broken, pl);
 
			return [[В одном из ящиков вы находите неисправный ручной насос. ]];
 
        elseif s.searched == 1 then
 
            s.searched = 2;
 
            pl.money = pl.money + 5;
 
            return [[В одном из ящиков кто-то оставил монету в пять шиллингов. ]];
 
		end;
 
	end;
 
};
 
 
leviathan_entry = room {
 
	nam = "leviathan_entry";
 
	disp = "В люк";
 
	enter = function(s)
 
		if (dock_leviathan.pump_state == 1) then
 
			if leviathan_airlock:has_light() then
 
				set_music('music/atlantis.ogg');
 
			end;
 
			walk('leviathan_airlock');
 
		else
 
			return "Отсек заполнен водой. Вы не можете туда спуститься. ", false;
 
		end;
 
	end;
 
};
 
 
dock_mooring = room {
 
	nam = "dock_inside";
 
	disp = "Причал";
 
	dsc = [[У причала пусто, не считая нескольких кучек мусора: старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. ]];
 
	view = function(s)
 
		if where(char_starlight_dock) == dock_mooring then
 
			return [[Левиафан находится в заброшенном доке. Ваше внимание привлекает фигура человека в костюме, стоящая на берегу. ]];
 
		else
 
			return [[Левиафан находится в заброшенном доке. Вокруг пусто, не считая мусора: старых деревяшк, металлических трубок, каких-то мешков. ]];
 
			return [[Левиафан находится в заброшенном доке. Вокруг пусто, не считая мусора: старых деревяшек, металлических трубок, каких-то мешков. ]];
 
		end;
 
	end;
 
	entered = function(s)
 
		set_music('music/london.ogg');
 
	end;
 
	way = {
 
		vroom("К воротам", "dock_inside");
 
		vroom("К пульту управления краном", "dock_crane_control");
 
		leviathan_entry:disable();
 
	};
 
	obj = {
 
		"dock_leviathan",
 
		"dock_crane",
 
        "money_dock"
 
	};
 
};
 
 
char_starlight_dock = npc {
 
	nam = 'char_starlight_dock';
 
	dsc = [[{Джозеф Старлайт} стоит у причала и рассматривает Левиафан. Он, кажется, не обращает внимания на вас. ]];
 
	dlg = "starlight_dock_dlg";
 
};
 
 
starlight_dock_dlg = dlg {
 
	nam = 'starlight_dock_dlg';
 
	disp = 'Джозеф Старлайт';
 
	entered = function(s)
 
		starlight_dock_status = true;
 
		return [[Вы подходите к Джозефу Старлайту и он обрачивается к вам: "Добрый день, господин Дрейк. Сегодня отличный день, не правда ли?"]];
 
	end;
 
	phr = {
 
		{tag="intro"};
 
		{"Как вы сюда попали?", [[Джозеф отвечает: "Так же как и вы -- взял кэб. Вас это удивляет?"]]};
 
		{"Что вы здесь делаете?", [[Джозеф отвечает: "Пришел проверить, что Левиафан попал в нужные руки". ]], code [[ psub("leviathan"); ]]};
 
		{tag="leviathan"};
 
		{"Так вы все это время все знали?", [[Джозеф кивает: "Безусловно. Вы проделали отличную работу по восстановлению субмарины. Могу я поинтересоваться, что вы намерены делать дальше?"]], code [[ psub("next"); ]]};
 
		{"Что вы можете сказать про Левиафан?", [[Джозеф пожимает плечами: "Немного. Майкл Райт сможет рассказать намного больше". ]]};
 
		{tag="next"};
 
		{"Продолжу поиски отца. ", [[Джозеф кивает: "Отлично. Тогда я пойду. У вас есть ко мне вопросы?"]], code [[ psub("questions"); ]]};
 
		{"Сам не знаю. ", [[Джозеф кивает: "Я рекомендую вам найти место, именуемое Атлантидой. У вас же есть карта?"]], code [[ psub("atlantis"); ]]};
 
		{tag="atlantis"};
 
		{"Да, есть. ", [[Джозеф кивает: "Отлично. Тогда я пойду. У вас есть ко мне вопросы?"]], code [[ psub("questions"); ]]};
 
		{"Нет. ", [[Джозеф отвечает: "Думаю, вы справитесь с этим. А я, пожалуй, пойду. У вас есть вопросы?"]], code [[ psub("questions"); ]] };
 
		{tag="questions"};
 
		{"Вы не желаете отправиться со мной?", [[Джозеф отрицательно качает головой: "У меня слишком много дел здесь. Не могу все бросить. Передайте привет Винсенту Даркстару". ]], code [[ starlight_darkstar_status = 1; ]]};
 
		{"Что еще вы можете мне посоветовать?", [[Джозеф отвечает: "Джек Райт, кажется, помогал вам в восстановлении Левиафана. Если вам нужны лишние руки на борту -- почему бы не попросить его". ]] };
 
		{"Почему вы сразу ничего не сказали?", [[Джозеф улыбнулся: "А вы бы поверили? Всякому слову свое время и место". ]]};
 
		{"Откуда вы узнали про Левиафан и Атлантиду?", [[Джозеф улыбнулся: "У меня был доступ к гораздо большему числу документов, чем у вас. Сложить два и два было не так уж и сложно". ]]};
 
		{"Если вы все знали, почему не подняли во время расследования?", [[Джозеф отвечает: "Нам с Даркстаром было нужно, чтобы все получилось так, как получилось. Передавайте ему привет, кстати". ]], code [[ starlight_darkstar_status = 1; ]]};
 
		{"Это все, что я хотел спросить. ", [[Джозеф разворачивается и делает шаг к воротам. Внезапно, он снова оборачивается к вам и спрашивает: "Вы не видели мои очки?"^Он торопливо ощупывает карманы, потом снимает очки, хлопает себя по лбу, разворачивается к воротам и быстрым шагом уходит. ]], code [[ remove(char_starlight_dock, dock_mooring); back(); ]]}
 
	};
 
}
 
 
dock_leviathan = obj {
 
    var {
 
        submerged = true;
 
        pump_state = 0; -- 0 в отсеке вода; 1 в отсеке нет воды
 
        open = false;
 
    };
 
	nam = "dock_leviathan";
 
	disp = "Левиафан";
 
	dsc = function(s)
 
		if (s.submerged) then
 
			return "Под поверхностью воды виден какой-то большой {объект}. ";
 
		else
 
			if (s.open) then
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен открытый {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 -- Левиафан". ]];
 
			else
 
				return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен наглухо задраенный {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 -- Левиафан". ]];
 
			end;
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.submerged) then
 
			return "Какой-то большой объект. В мутной воде вы не можете понять, что это, но похоже на перевернутое судно. ";
 
		elseif (s.open) then
 
			--TODO
 
			s.open = false;
 
			leviathan_entry:disable();
 
			return "Вы задраиваете люк.";
 
		else
 
			--TODO
 
			s.open = true;
 
			leviathan_entry:enable();
 
			if (s.pump_state == 0) then
 
				return "Вы отдраиваете люк. Отсек внутри заполнен водой. ";
 
			else
 
				return "Вы отдраиваете люк. ";
 
			end;
 
		end;	
 
	end;
 
	used = function(s, o)
 
		if (o == item_pump) then
 
			dock_leviathan.pump_state = 1;
 
			remove(item_pump, pl);
 
			return [[Вы откачиваете воду из отсека и теперь можете спуститься в него. ]];
 
		end;
 
	end;
 
};
 
 
dock_crane = obj {
 
    var {
 
        state = 0;
 
        broken = true;
 
    };
 
	nam = "dock_crane";
 
	disp = "Подъемник";
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} сейчас подняты. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 1) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно -- они почти полностью погружены в грязную воду. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 2) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} подцеплены к объекту, скрывающемуся под водой. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		else
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. ";
 
		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)
 
		if (dock_crane.broken) then
 
			return "Вы двигаете рычаг, но ничего не происходит";
 
		else
 
			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;
 
				leviathan_discovered = true;
 
				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";
 
	state = 0;
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return [[Под панелью управления прикреплена на винтах металлическая {пластина}, закрывающая механизм. ]];
 
		else
 
			return [[Под панелью управления расположен {механизм} управления. Металлическая пластина, закрывавшая его, лежит рядом. ]];
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.state == 0) then
0 comments (0 inline, 0 general)