Changeset - dc34aaff843a
[Not reviewed]
default
0 4 0
Silverwing - 8 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
 
@@ -26,11 +26,11 @@ dock_gate = obj {
 
	dsc = function(s)
 
		if (s.open) then 
 
			return [[
 
				Ржавые {ворота} застыли в приоткрытом состоянии, достаточно, чтобы вы смогли проникнуть за них. 
 
				Ржавые {ворота} слегка приоткрыты. 
 
			]];
 
		else
 
			return [[
 
				На проржавевших воротах, ведущих на территорию дока, висит {амбарный замок}. 
 
				Проржавевшие ворота дока заперты на тяжелый навесной {замок}. 
 
			]];
 
		end;
 
	end;
 
@@ -41,7 +41,7 @@ dock_gate = obj {
 
			]];
 
		else
 
			return [[
 
				Массивный старый замок уже изрядно проржавел и пришел в негодность. Даже если бы у вас был ключ, вы врядли смогли бы открыть его. 
 
				Замок давно пришел в негодность. Даже если бы у вас был ключ, вы врядли смогли бы открыть его. 
 
			]];
 
		end;
 
	end;
 
@@ -81,22 +81,42 @@ 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",
 
@@ -108,48 +128,71 @@ 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 "Вы подцепляете тросы к скрывающемуся под водой предмету. ";
 
@@ -182,9 +225,8 @@ 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!
 
@@ -215,5 +257,51 @@ crane_lever_rail = obj {
 
 
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
 
@@ -128,10 +128,10 @@ item_lamp = obj {
 
	inv = function(s)
 
		if (pl.has_light) then
 
			pl.has_light = false;
 
			return "Вы гасите свет";
 
			return "Вы гасите свет. ";
 
		else
 
			pl.has_light = true;
 
			return "Вы зажигаете лампу";
 
			return "Вы зажигаете лампу. ";
 
		end;
 
	end;
 
};
 
@@ -236,19 +236,45 @@ item_bottle = obj {
 
	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 = [[
 
		Несколько электродов - плоских свинцовых решеток. 
 
		Несколько металлических пластин, предназначенных для использования в качестве электродов. 
 
	]];
 
};
 
 
@@ -276,15 +302,19 @@ item_leviathan_schematics = obj {
 
	]];
 
};
 
 
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
 
@@ -202,7 +202,12 @@ function 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);
travel.lua
Show inline comments
 
@@ -25,7 +25,7 @@ london = dlg {
 
char_coachman = obj {
 
	nam = "coachman";
 
	disp = "экипаж";
 
	dsc = [[Вы видите небольшую двухколесную повозку, с впряженной в нее лошадью. Его {владелец} стоит рядом и, судя по всему, ждет пассажиров^ ]];
 
	dsc = [[Вы видите небольшую двухколесную повозку, с впряженной в нее лошадью. Его {владелец} стоит рядом и, судя по всему, ждет пассажиров. ^ ]];
 
	act = function(s)
 
		walkin "coachman_dlg";
 
	end;
0 comments (0 inline, 0 general)