Changeset - dc34aaff843a
[Not reviewed]
default
0 4 0
Silverwing - 9 years ago 2016-01-21 17:20:52

Dock 2 fixes
4 files changed with 158 insertions and 35 deletions:
0 comments (0 inline, 0 general)
dock2.lua
Show inline comments
 
@@ -23,28 +23,28 @@ dock_2 = room {
 
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;
 
@@ -78,81 +78,124 @@ dock_inside = room {
 
	};
 
};
 
 
dock_boxes = obj {
 
	nam = "dock_boxes";
 
	disp = "Ящики";
 
	dsc = "Ровными рядами вокруг расположены старые грузовые {контейнеры}. Большинство из них проржавели настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ";
 
	act = "Скорее всего, большинство из этих контейнеров пусты - врядли кто-то позволил бы пропадать такому количеству добра. ";
 
	dsc = "Ровными рядами вокруг расположены старые грузовые {контейнеры}. Краска на большинстве из них повреждена настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ";
 
	act = function(s)
 
		if (not s.searched) then
 
			s.searched = true;
 
			put(item_pump_broken, pl);
 
			return [[
 
				В одном из ящиков вы находите неисправный ручной насос. 
 
			]];
 
		end;
 
	end;
 
};
 
 
leviathan_entry = room {
 
	nam = "leviathan_entry";
 
	disp = "В люк";
 
	enter = function(s)
 
		if (dock_leviathan.pump_state == 1) then
 
			walk('leviathan_airlock');
 
		else
 
			return "Отсек заполнен водой. Вы не можете туда спуститься. ", false;
 
		end;
 
	end;
 
};
 
 
dock_mooring = room {
 
	nam = "dock_inside";
 
	disp = "Причал";
 
	dsc = [[
 
		Вы находитесь у причала. Здесь нет ящиков и почти пусто, не считая нескольих кучек мусора - старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. 
 
		Вы находитесь у причала. Здесь почти пусто, не считая нескольких кучек мусора - старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. 
 
	]];
 
	view = [[
 
		Левиафан находится в доке
 
	]];
 
	way = {
 
		vroom("К пульту управления краном", "dock_crane_control");
 
		vroom("В люк", "leviathan_disabled_airlock"):disable();
 
		leviathan_entry:disable();
 
	};
 
	obj = {
 
		"dock_leviathan",
 
		"dock_crane"
 
	};
 
};
 
 
dock_leviathan = obj {
 
	nam = "dock_leviathan";
 
	disp = "Левиафан";
 
	submerged = true;
 
	pump_state = 0; -- 0 в отсеке вода; 1 - в отсеке нет воды
 
	dsc = function(s)
 
		if (s.submerged) then
 
			return "Под поверхностью воды виден какой-то большой металлический {предмет}. ";
 
		else
 
			return "На тросах подвешена странная машина. Торпедообразный корпус, в верхней части которого виден наглухо задраенный {люк}, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности покрыты грязью, не позволяя заглянуть внутрь. В передней части на борту прикреплена слегка поржавевшая табличка \"А04 - Левиафан\". "
 
			if (s.open) then
 
				return [[
 
					На тросах подвешена странная машина. Торпедообразный корпус, в верхней части которого находится {люк}, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка "А04 - Левиафан". 
 
				]]
 
			else
 
				return [[
 
					На тросах подвешена странная машина. Торпедообразный корпус, в верхней части которого виден наглухо задраенный {люк}, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка "А04 - Левиафан". 
 
				]]
 
			end;
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.submerged) then
 
			return "В мутной воде вы не можете понять, что это. ";
 
			return "Какой-то большой предмет. В мутной воде вы не можете понять, что это. ";
 
		elseif (s.open) then
 
			--TODO
 
			s.open = false;
 
			path("В люк"):disable();
 
			return "Вы задраиваете люк";
 
			leviathan_entry:disable();
 
			return "Вы задраиваете люк.";
 
		else
 
			--TODO
 
			s.open = true;
 
			path("В люк"):enable();
 
			return "Вы отдраиваете люк";
 
			leviathan_entry:enable();
 
			if (s.pump_state < 2) 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 {
 
	nam = "dock_crane";
 
	disp = "Подъемник";
 
	state = 0;
 
	broken = true;
 
	dsc = function(s)
 
		if (s.state == 0) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} сейчас подняты. Возле одной из ног основания установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} сейчас подняты. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 1) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно - они почти полностью погружены в грязную воду. Возле одной из ног основания установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно - они почти полностью погружены в грязную воду. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		elseif (s.state == 2) then
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} подцеплены к предмету, скрывающемуся под водой. Возле одной из ног основания установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} подцеплены к предмету, скрывающемуся под водой. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. ";
 
		else
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. " -- На крюках подвешена странная машина. Торпедообразный корпус, в верхней части которого виден наглухо задраенный люк, а в задней видно несколько гребных винтов. Иллюминаторы, частично показавшиеся на поверхности покрыты грязью, не позволяя заглянуть внутрь. В передней части на борту прикреплена слегка поржавевшая табличка "А04 - Левиафан". 
 
			return "Чуть в стороне от вас огромный металлический кран нависает над водой. ";
 
		end;
 
	end;
 
	act = function(s)
 
		if (s.state == 0) then
 
			return "Нужно опустить тросы";
 
			return "Тросы слишком высоко";
 
		elseif (s.state == 1) then
 
			s.state = 2;
 
			return "Вы подцепляете тросы к скрывающемуся под водой предмету. ";
 
		elseif (s.state == 2) then
 
			s.state = 1;
 
			return "Вы отцепляете тросы от скрывающегося под водой предмета. ";
 
@@ -179,15 +222,14 @@ dock_crane_control = room {
 
};
 
 
crane_lever_vertical = obj {
 
	nam = "crane_lever_vertical";
 
	dsc = "{Один из них} установлен вертикально и имеет несколько промежуточных положений. Сбоку от него нарисованы стрелки вверх и вниз. ";
 
	act = function(s)
 
		print "fuck";
 
		if (dock_crane.broken) then
 
			return "Как ни дергаете вы рычаг, ничего не происходит";
 
			return "Вы двигаете рычаг, но ничего не происходит";
 
		else
 
			-- TODO refactor
 
			-- TODO texts!
 
			if (dock_crane.state == 0) then
 
				dock_crane.state = 1;
 
				return [[Вы сдвигаете рычаг в крайнее нижнее положение. С громким скрежетом тросы опускаются. ]];
 
@@ -212,8 +254,54 @@ crane_lever_rail = obj {
 
	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
 
			return [[
 
				Вы не сможете открыть это руками. 
 
			]];
 
		else
 
			if (dock_crane.broken) then
 
				return [[
 
					Вы заглядываете внутрь механизма. Часть шестерней сильно изношена. 
 
				]];
 
			else
 
				return [[
 
					Вы заглядываете внутрь механизма. Все шестерни исправлены и находятся на своих местах. 
 
				]];
 
			end;
 
		end;
 
	end;
 
	used = function(s,o)
 
		if (o == item_toolbox) then
 
			if (s.state == 0) then
 
				s.state = 1;
 
				return [[
 
					При помощи отвертки из ящика вы снимаете защитную панель, открывая доступ к внутренностям механизма.
 
				]];
 
			else
 
				s.state = 0;
 
				return [[
 
					Вы возвращаете панель на место и закрепляете ее винтами. 
 
				]];
 
			end;
 
		else
 
			return false;
 
		end;
 
	end;
 
};
 
items.lua
Show inline comments
 
@@ -125,16 +125,16 @@ item_lamp = obj {
 
	disp = "Лампа";
 
	dsc = "На столе стоит {керосиновая лампа}. ";
 
	tak = "Вы забираете лампу с собой. ";
 
	inv = function(s)
 
		if (pl.has_light) then
 
			pl.has_light = false;
 
			return "Вы гасите свет";
 
			return "Вы гасите свет. ";
 
		else
 
			pl.has_light = true;
 
			return "Вы зажигаете лампу";
 
			return "Вы зажигаете лампу. ";
 
		end;
 
	end;
 
};
 
 
item_toolbox = obj {
 
	nam = "toolbox";
 
@@ -233,25 +233,51 @@ item_bottle = obj {
 
				- Идет, - отвечает рабочий, выхватывая из ваших рук заветную бутылку.
 
			]]);
 
		end;
 
	end;
 
};
 
 
item_pump_broken = obj {
 
	nam = "item_pump_broken";
 
	disp = "Насос";
 
	inv = [[
 
		Старый ручной насос. Рычаг сломан, делая его использование невозможным. 
 
	]];
 
};
 
 
item_pump = obj {
 
	nam = "item_pump";
 
	disp = "Насос";
 
	inv = [[
 
		Старый ручной насос. 
 
	]];
 
};
 
 
item_pump_details = obj {
 
	nam = "item_pump_details";
 
	disp = "Детали насоса";
 
	inv = [[
 
		Запчасти для насоса. Сделаны по заказу Вестхейвен Трансоушен. 
 
		Запчасти для насоса. 
 
	]];
 
	use = function(s, o)
 
		if (o == item_pump_broken) then
 
			remove(s, pl);
 
			remove(item_pump_broken, pl);
 
			put(item_pump, pl);
 
			return [[
 
				Вы починили насос. 
 
			]];
 
		end;
 
	end;
 
};
 
 
item_electrodes = obj {
 
	nam = "item_electrodes";
 
	disp = "Электроды";
 
	inv = [[
 
		Несколько электродов - плоских свинцовых решеток. 
 
		Несколько металлических пластин, предназначенных для использования в качестве электродов. 
 
	]];
 
};
 
 
item_ducttape = obj {
 
	nam = "item_ducttape";
 
	disp = "Изолента";
 
@@ -273,18 +299,22 @@ item_leviathan_schematics = obj {
 
	disp = "Чертежи \"Левиафана\"";
 
	inv = [[
 
		Чертежи "Левиафана" - последней и самой совершенной субмарины Вестхейвен Трансоушен. 
 
	]];
 
};
 
 
item_missing_list = obj {
 
	nam = 'item_missing_list';
 
	disp = 'Список пропавших';
 
item_cogs = obj {
 
	nam = "item_cogs";
 
	disp = "Шестеренки";
 
	inv = [[
 
		Это список пропавших сотрудников Вестхейвен Трансоушен, составленный Джозефом Старлайтом. Небрежный почерк Джозефа непросто разобрать, однако документ содержит исчерпывающую информацию о пропавших. Содержание документа следующее:
 
		1. Уильям Дрейк - директор, владелец, основатель, по образованию - инженер-кораблестроитель. ^
 
		2. Адриан Блэк - член совета директоров, по образованию - биолог, содержал лабораторию на средства компании(???). ^
 
		3. Майкл Райт - начальник инженерного отдела. Хороший друг Уильяма(и его однокурсник(!)). ^
 
		4. 
 
		Несколько шестерней разного размера. 
 
	]];
 
	
 
	use = function(s, o)
 
		if (o == crane_service_access_panel and crane_service_access_panel.state == 1) then
 
			remove(s, pl);
 
			dock_crane.broken = false;
 
			return [[
 
				Вы заменяете поврежденные шестерни новыми. 
 
			]];
 
		end;
 
	end;
 
};
 
\ No newline at end of file
main.lua
Show inline comments
 
@@ -199,13 +199,18 @@ function init()
 
	warehouse18_init();
 
	warehouse32_init();
 
	---game init
 
	pl.where = intro;
 
	put(submarine_leviathan:disable(), dock_mooring);
 
	---debug
 
	pl.where = wright_house;
 
	pl.where = dock_2;
 
	put(item_toolbox, pl);
 
	put(item_cogs, pl);
 
	put(item_pump_details, pl);
 
	put(item_electrodes, pl);
 
	put(item_lamp, pl);
 
	--pl.where = aurora_borealis;
 
	--move(submarine_leviathan, first_city_entrance);
 
	--move(submarine_leviathan, first_city_outer_east);
 
	--walk(final_scene);
 
	--walk(leviathan_wardroom);
 
	--walk(leviathan_wardroom);
travel.lua
Show inline comments
 
@@ -22,13 +22,13 @@ london = dlg {
 
Кучер, который будет за деньги возить вас по локациям первой части
 
]]
 
--TODO случайный ответ кучера из нескольких вариантов
 
char_coachman = obj {
 
	nam = "coachman";
 
	disp = "экипаж";
 
	dsc = [[Вы видите небольшую двухколесную повозку, с впряженной в нее лошадью. Его {владелец} стоит рядом и, судя по всему, ждет пассажиров^ ]];
 
	dsc = [[Вы видите небольшую двухколесную повозку, с впряженной в нее лошадью. Его {владелец} стоит рядом и, судя по всему, ждет пассажиров. ^ ]];
 
	act = function(s)
 
		walkin "coachman_dlg";
 
	end;
 
	used = function(s, o)
 
		walkin "coachman_dlg";
 
	end;
0 comments (0 inline, 0 general)