Changeset - f02901977ca4
[Not reviewed]
default
0 7 0
Silverwing - 8 years ago 2016-01-17 12:28:51

Worker behaviour fixed
7 files changed with 219 insertions and 124 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -184,14 +184,16 @@ item_money = obj {
 
item_note_1 = obj {
 
	nam = "note1";
 
	disp = "Записка";
 
	inv = [[Клочок бумаги с адресом: [Адрес Майкла Райта], Майкл Райт]];
 
	inv = [[
 
		Клочок бумаги с адресом: [Адрес Майкла Райта], Майкл Райт
 
	]];
 
};
 
 
item_charts = obj {
 
	nam = "charts";
 
	disp = "Документы отца";
 
	dsc = [[
 
		На столе лежат {схемы складов и верфей} Вестхэйвен Трансоушен
 
		На столе лежат {схемы складов и верфей} Вестхейвен Трансоушен
 
	]];
 
	inv = [[
 
		Схемы нескольких строений, принадлежавших компании отца. На некоторых схемах есть места отмечены жирными крестиками.
 
@@ -213,11 +215,32 @@ item_charts = obj {
 
	end;
 
};
 
 
item_bottle = obj {
 
	nam = "item_bottle";
 
	disp = "Бутылка с пойлом";
 
	inv = [[
 
		Бутылка дешевого пойла. Вас воротит от одного запаха этой дряни. 
 
	]];
 
	use = function(s, o)
 
		if (o == char_worker) then
 
			remove(s, pl);
 
			char_worker.bought = true;
 
			pr([[
 
				Вы подходите к рабочему и, аккуратно доставая бутылку, спрашиваете: 
 
				- Выпить хочешь?
 
				- Ага, - удивленно и обрадованно восклицает рабочий, протягивая руки.
 
				- Меняю на твой ящик с инструментами.
 
				- Идет, - отвечает рабочий, выхватывая из ваших рук заветную бутылку.
 
			]]);
 
		end;
 
	end;
 
};
 
 
item_pump_details = obj {
 
	nam = "item_pump_details";
 
	disp = "Детали насоса";
 
	inv = [[
 
		Ебаный насос, Жора где ты был?
 
		Запчасти для насоса. Сделаны по заказу Вестхейвен Трансоушен. 
 
	]];
 
};
 
leviathan.lua
Show inline comments
 
@@ -452,21 +452,6 @@ leviathan_airregen = obj {
 
leviathan_wheelhouse = darkroom {
 
	nam = "leviathan_wheelhouse";
 
	disp = "Левиафан, Рубка";
 
	--[[dsc_lit = function (s)
 
		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;
 
	dsc_halflit = function (s)
 
		
 
	end;]]
 
	dsc_lit = [[
 
		Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. 
 
	]];
 
@@ -474,7 +459,7 @@ leviathan_wheelhouse = darkroom {
 
		Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. 
 
	]];
 
	dsc_dark = [[
 
		Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. В темноте вы ничего не можете разглядеть. 
 
		Вы находитесь в рулевой рубке Левиафана. В темноте вы ничего не можете разглядеть, кроме трех огромных иллюминаторов. 
 
	]];
 
	way = {
 
		kh_vroom("В коридор", "leviathan_corridor", 2);
london.lua
Show inline comments
 
@@ -2,7 +2,7 @@
 
	Порт
 
]]
 
 
char_captain = character {
 
char_captain = npc {
 
	nam = "char_captain";
 
	disp = "Капитан";
 
	dsc = [[
 
@@ -18,7 +18,7 @@ char_captain = character {
 
	};
 
};
 
 
char_first_mate = character {
 
char_first_mate = npc {
 
	nam = "char_first_mate";
 
	disp = "Первый помощник";
 
	dsc = [[
 
@@ -63,129 +63,190 @@ london_mooring = room {
 
port = room {
 
	nam = "port";
 
	disp = "Порт";
 
	dsc = [[
 
		Вы находитесь в порту. Тяжелые тучи над головой, кажется, вот-вот разразятся дождем. Вокруг снует множество людей - пассажиры, матросы, рабочие. Все эти пестрые толпы хаотично движутся вокруг, сталкиваясь и расходясь.
 
		Гудки прибывающих и отбывающих пароходов, голоса людей бурно обсуждающих предстоящее(или окончившееся) плавание, окрики рабочих - все сливается в единый неразборчивый шум. 
 
	]];
 
	way = {
 
		vroom("На улицу", "port_street");
 
	};
 
	obj = {'item_toolbox', 'char_worker'};
 
};
 
 
port_street = room {
 
	nam = "port_street";
 
	disp = "Улица";
 
	entered = function(s)
 
		move(char_coachman, here());
 
	end;
 
	way = {
 
		vroom("В порт", "port");
 
		vroom("В пивную лавку", "ginshop");
 
	};
 
	dsc = [[
 
		Вы находитесь в порту. Тяжелые тучи над головой, кажется, вот-вот разразятся дождем. Вокруг снует множество людей - пассажиры, матросы, рабочие. Все эти пестрые толпы хаотично движутся вокруг, сталкиваясь и расходясь.
 
		Гудки прибывающих и отбывающих пароходов, ржание лошадей, запряженных в многочисленные экипажи, голоса людей бурно обсуждающих предстоящее(или окончившееся) плавание, все это сливается в единый неразборчивый шум. 
 
		Вы находитесь на оживленной улице у входа в порт. Вы с трудом пробираетесь сквозь толпы людей. Из порта доносятся гудки пароходов. Со всех сторон слышны голоса людей и ржание лошадей, запряженных в многочисленные экипажи. 
 
	]];
 
	obj = {'item_toolbox', 'char_worker'};
 
};
 
 
char_worker = character {
 
char_worker = npc {
 
	nam = "char_worker";
 
	disp = "Портовый рабочий";
 
	dsc = [[ Рядом с ящиком стоит {портовый рабочий} и курит трубку.^ ]];
 
	dsc = [[ Рядом с ящиком, опершись на столб, стоит {портовый рабочий} и курит трубку.^ ]];
 
	dlg = "char_worker_dlg";
 
	act = function(s)
 
		if (s.bought) then
 
			return "Мне от него больше ничего не надо. ";
 
		else
 
			walkin(s.dlg);
 
		end;
 
	end;
 
};
 
 
char_worker_dlg = dlg {
 
	nam = "char_worker_dlg";
 
	disp = "Портовый рабочий";
 
	dsc = [[
 
		Чего надо?
 
	]];
 
	entered = function(s)
 
		pjump('new');
 
		return [[
 
			Недовольно посмотрев в вашу сторону, рабочий спрашивает: "Чего надо?"
 
		]];
 
	end;
 
	phr = {
 
		{always=true, "Могу я воспользоваться вашими инструментами?", "Нет. ", [[ psub 'bribe_try' ]]};
 
		{always=true, "Нет, ничего", "Вали отсюда. ", [[ back(); ]]};
 
		{tag='new'},
 
		{always=true, "Могу я воспользоваться вашими инструментами?", [[
 
			Рабочий отрывисто отвечает: "Нет", - после чего отворачивается в другую сторону. 
 
		]], [[ pjump 'bribe_try' ]]};
 
		{always=true, "Нет, ничего", [[
 
			Рабочий недовольно рычит: "Тогда отвали", - после чего отворачивается в другую сторону. 
 
		]], [[ back(); ]]};
 
		{tag='bribe_try'};
 
		{always=true, "Поменяю на бутылку"};
 
		{always=true, "Могу я купить их у вас?", "Сколько?", [[ psub 'bribing_20' ]]};
 
		{always=true, "Нет, ничего", "Вали отсюда. ", [[ back(); ]]};
 
		{always=true, "Могу я купить их у вас?", [[
 
			Рабочий снова повернулся к вам. Он с плохо скрываемым интересом спрашивает: "Сколько?"
 
		]], [[ pjump 'bribing_20' ]]};
 
		{always=true, "Нет, ничего", [[
 
			Рабочий недовольно рычит: "Тогда отвали", - после чего отворачивается в другую сторону. 
 
		]], [[ back(); ]]};
 
		{tag='bribing_20'};
 
		{"5 шиллингов?", "Смеешься?"};
 
		{always=true, "10 шиллингов?", "15", [[psub 'bribing_15']]};
 
		{always=true, "20 шиллингов?", "Идет", [[ char_worker.bought = true; back();]]};
 
		{always=true, "30 шиллингов?", "Идет", [[ char_worker.bought = true; back();]]};
 
		{"5 шиллингов?", [[ 
 
			Рабочий усмехнулся: "Издеваешься?"
 
		]]};
 
		{always=true, "10 шиллингов?", [[
 
			"15"
 
		]], [[pjump 'bribing_15']]};
 
		{always=true, "20 шиллингов?", function(s)
 
			if (pl:pay(20)) then
 
				char_worker.bought = true;
 
				return [[
 
					Рабочий довольно потирает руки: "Идет".
 
				]];
 
			else
 
				return [[
 
					Рабочий недовольно рычит: "Ты дурак?"
 
				]];
 
			end;
 
		end, [[ char_worker.bought = true; back();]]};
 
		{always=true, "30 шиллингов?", function(s)
 
			if (pl:pay(30)) then
 
				char_worker.bought = true;
 
				return [[
 
					Рабочий довольно потирает руки: "Идет".
 
				]];
 
			else
 
				return [[
 
					Рабочий недовольно рычит: "Ты дурак?"
 
				]];
 
			end;
 
		end, [[ char_worker.bought = true; back();]]};
 
		{tag='bribing_15'};
 
		{always=true, "10", "14", [[psub 'bribing_14']]};
 
		{always=true, "11", "14", [[psub 'bribing_14']]};
 
		{always=true, "12", "14", [[psub 'bribing_14']]};
 
		{always=true, "13", "14", [[psub 'bribing_14']]};
 
		{always=true, "14", "14", [[ char_worker.bought = true; back(); ]]};
 
		{always=true, "10", [[
 
			"14"
 
		]], [[pjump 'bribing_14']]};
 
		{always=true, "11", [[
 
			"14"
 
		]], [[pjump 'bribing_14']]};
 
		{always=true, "12", [[
 
			"14"
 
		]], [[pjump 'bribing_14']]};
 
		{always=true, "13", [[
 
			"14"
 
		]], [[pjump 'bribing_14']]};
 
		{always=true, "14", function(s)
 
			if (pl:pay(14)) then
 
				char_worker.bought = true;
 
				return [[
 
					Рабочий довольно потирает руки: "Идет".
 
				]];
 
			else
 
				return [[
 
					Рабочий недовольно рычит: "Ты дурак?"
 
				]];
 
			end;
 
		end, [[ char_worker.bought = true; back(); ]]};
 
		{tag='bribing_14'};
 
		{always=true, "10", "13", [[psub 'bribing_13']]};
 
		{always=true, "11", "13", [[psub 'bribing_13']]};
 
		{always=true, "12", "13", [[psub 'bribing_13']]};
 
		{always=true, "13", "13", [[ char_worker.bought = true; back(); ]]};
 
		{always=true, "10", [[
 
			"13"
 
		]], [[pjump 'bribing_13']]};
 
		{always=true, "11", [[
 
			"13"
 
		]], [[pjump 'bribing_13']]};
 
		{always=true, "12", [[
 
			"13"
 
		]], [[pjump 'bribing_13']]};
 
		{always=true, "13", function(s)
 
			if (pl:pay(13)) then
 
				char_worker.bought = true;
 
				return [[
 
					Рабочий довольно потирает руки: "Идет".
 
				]];
 
			else
 
				return [[
 
					Рабочий недовольно рычит: "Ты дурак?"
 
				]];
 
			end;
 
		end, [[ char_worker.bought = true; back(); ]]};
 
		{tag='bribing_13'};
 
		{always=true, "10", "Вали отсюда, надоел. ", [[ back(); ]]};
 
		{always=true, "11", "Вали отсюда, надоел. ", [[ back(); ]]};
 
		{always=true, "12", "Идет", [[ char_worker.bought = true; back(); ]]};
 
		{always=true, "10", [[
 
			Рабочий недовольно рычит: "Не хочешь - не надо", - после чего отворачивается в другую сторону. 
 
		]], [[ back(); ]]};
 
		{always=true, "11", [[
 
			Рабочий недовольно рычит: "Не хочешь - не надо", - после чего отворачивается в другую сторону. 
 
		]], [[ back(); ]]};
 
		{always=true, "12", function(s)
 
			if (pl:pay(12)) then
 
				char_worker.bought = true;
 
				return [[
 
					Рабочий довольно потирает руки: "Идет".
 
				]];
 
			else
 
				return [[
 
					Рабочий недовольно рычит: "Ты дурак?"
 
				]];
 
			end;
 
		end, [[  back(); ]]};
 
	};
 
};
 
 
--[[
 
	Банк
 
]
 
bank_street = room {
 
	nam = "bank_street";
 
	disp = "У входа в банк";
 
	entered = function(s)
 
		move(char_coachman, here());
 
	--	lifeon(s);
 
	end;
 
	dsc = [
 
		Вы находитесь на улице у входа в банк - двухэтажное здание с большой украшенной вывеской "Банк Джонсона" над входом. 
 
	];
 
	way = {
 
		vroom("В банк", "bank_inside");
 
	};
 
	--left = function(s)
 
	--	lifeoff(s);
 
	--end;
 
};
 
 
bank_inside = room {
 
	nam = "bank_inside";
 
	disp = "В банке";
 
	dsc = [
 
		Вы находитесь в банке. Высокие окна закрыты плотными занавесками, однако в зале светло благодаря многочисленным газовым лампам, укрепленным на стенах и колоннах по всему залу. Мраморный пол идеально чист, несмотря на снующих посетителей. 
 
	];
 
	way = {
 
		vroom("На улицу", "bank_street");
 
	};
 
	obj = {
 
		'clerk'
 
	};
 
};
 
 
clerk = obj {
 
	nam = "clerk";
 
	dsc = [
 
		За  мраморной стойкой вы видите скучающего {клерка}.
 
	];
 
	act = [ Без банковской книжки вам здесь денег не выдадут. ];
 
	used = function(s, o)
 
		if (o == item_bankbook) then
 
			global.has_money = true;
 
			remove(item_bankbook, pl);
 
			take(item_money);
 
			return "Вы протягиваете клерку вашу банковскую книжку и снимаете некоторое количество денег со счета";
 
		end;
 
	end;
 
};]]
 
 
--[[
 
	Гостиница
 
]]
 
 
--TODO пивную лавку разместить рядом с портом
 
ginshop = room {
 
	nam = "ginshop";
 
	disp = "Пивная лавка";
 
	dsc = [[
 
		Вы находитесь в небольшой комнатушке, где явно давно не убирались. Многолетний слой грязи на полу давно засох, несмотря на регулярно разливаемое содержимое бутылок, расставленных всюду, где только можно. Будучи излюбленным заведением самых опустившихся алкоголиков, этот магазинчик представлял огромный выбор дешевого и крепкого пойла. 
 
		Вы находитесь в небольшой комнатушке, где явно давно не убирались. Многолетний слой грязи на полу давно засох, несмотря на регулярно разливаемое содержимое бутылок, расставленных всюду, где только можно. Будучи излюбленным заведением самых опустившихся алкоголиков, этот магазинчик представляет огромный выбор дешевого и крепкого пойла. 
 
	]];
 
	obj = {'ginshop_trader'};
 
	way = {
 
		vroom("На улицу", "port_street");
 
	};
 
};
 
 
ginshop_trader = character {
 
ginshop_trader = npc {
 
	nam = "ginshop_trader";
 
	disp = "Торговец";
 
	disp = "Продавец";
 
	dsc = [[
 
		За грязным прилавком, не раз залитым местными "напитками", стоит {торговец}. Сквозь потрескавшееся мутное стекло в старых очках(второе отсутствовало судя по всему уже давно) он пытается рассмотреть вас.
 
		За грязным прилавком, не раз залитым местными "напитками", стоит {продавец}. Сквозь потрескавшееся мутное стекло в старых очках(второе отсутствовало судя по всему уже давно) он пытается рассмотреть вас.
 
	]];
 
	dlg = "ginshop_trader_dlg";
 
};
 
@@ -193,16 +254,44 @@ ginshop_trader = character {
 
ginshop_trader_dlg = dlg {
 
	nam = "ginshop_trader_dlg";
 
	disp = "Торговец";
 
	dsc = [[
 
		Добро пожаловать, чем могу вам помочь?
 
	enter = function(s)
 
		if (ginshop_trader.bought or char_worker.bought) then
 
			pr("Мне здесь больше ничего не нужно. ");
 
			return false;
 
		else
 
			return true;
 
		end;
 
	end;
 
	entered = [[
 
		Сняв очки, продавец смотрит на вас и спрашивает: "Добро пожаловать, чем могу вам помочь?"
 
	]];
 
	phr = {
 
		{1, "Бутылочку чего-нибудь покрепче, пожалуйста", "Ага, щас"};
 
		{2, always = true, "Это все, спасибо", "До свидания", 
 
			function() 
 
		{always = true, "Бутылочку чего-нибудь покрепче, пожалуйста", [[
 
			Продавец кивает: "Ага, щас". Почесав седую голову, он уходит в подвал, откуда возвращается через некоторое время с бутылкой. С громким стуком поставив бутылку на стол, он сообщает вам цену: "10 шиллингов". 
 
		]], code = [[ psub("buy"); ]]};
 
		{always = true, "Это все, спасибо", [[
 
			Продавец одевает очки обратно и прощается с вами: "До свидания". 
 
		]], function() 
 
				back();
 
			end;
 
		};
 
		{tag = "buy"};
 
		{always = true, "Беру", function(s)
 
			if (pl:pay(10)) then
 
				ginshop_trader.bought = true;
 
				take(item_bottle);
 
				return [[
 
					Расплывшись в широкой улыбке продавец подмигивает вам и говорит: "Приходите еще!"
 
				]];
 
			else
 
				return [[
 
					Одевая очки обратно, продавец прячет бутылку под прилавок. 
 
				]];
 
			end;
 
		end, code = [[ back(); ]]};
 
		{always = true, "Я передумал", [[
 
			Одевая очки обратно, продавец прячет бутылку под прилавок. 
 
		]], code = [[ pret(); ]]};
 
	};
 
};
 
main.lua
Show inline comments
 
@@ -139,15 +139,15 @@ intro = room {
 
	hideinv = true;
 
	disp = "Вступление";
 
	dsc = [[
 
		ВНИМАНИЕ: Это специальная предварительная версия игры. Ни один фрагмент игры не является финальным и может быть изменен, если это будет сочтено необходимым. ^^
 
		ВНИМАНИЕ: Это специальная предварительная версия игры. Ни один фрагмент игры не является финальным. ^^
 
		ВНИМАНИЕ: Данная версия игры не предназначена для какого-либо распространения, исключая прямую передачу файлов автором. Вышеуказанное ограничение на распространение данной версии игры аннулируется в момент выхода полной версии. ^^
 
		Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка - единственного сына богатого и уважаемого владельца транспортной компании "Вестхейвен Трансоушен". ^
 
		несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
 
		Несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
 
		После исчезновения отца Дэвид жил в Вашингтоне с бабушкой. Он пошел по стопам отца и выучился на инженера-кораблестроителя. Несколько дней назад в доме, где он жил, был обнаружен тайник, хранящий секретные документы отца - карты, указывающие по-видимому на какие-то тайники Уильяма и записка с адресом и именем.^
 
		Одержимый идеей узнать больше, Дэвид отправляется в Лондон...
 
	]];
 
	obj = {
 
		vway("Начать игру", "{Начать игру}", 'port');
 
		vway("Начать игру", "{Начать игру}", 'aurora_borealis');
 
	}
 
};
 
 
@@ -198,7 +198,6 @@ function init()
 
	warehouse18_init();
 
	warehouse32_init();
 
	---game init
 
	put(char_coachman, port);
 
	pl.where = intro;
 
	put(submarine_leviathan:disable(), dock_mooring);
 
	---debug
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;
 
@@ -41,7 +41,7 @@ coachman_dlg = dlg {
 
	hideinv = true;
 
	entered = function(s)
 
		poff(1, 2, 3, 4, 5, 6, 7);
 
		if (where(char_coachman) ~= port) then
 
		if (where(char_coachman) ~= port_street) then
 
			pon(6);
 
		end;
 
		if (where(char_coachman) ~= hotel_street) then
 
@@ -84,7 +84,6 @@ coachman_dlg = dlg {
 
				walk 'warehouse_32_entry';
 
				return "Садитесь!";
 
			end
 
			
 
		},
 
		{5, always = true, "К доку 2", 
 
			function (s)
 
@@ -94,7 +93,7 @@ coachman_dlg = dlg {
 
		},
 
		{6, always = true, "В порт",
 
			function (s)
 
				walk 'port';
 
				walk 'port_street';
 
				return "Садитесь!";
 
			end
 
		},
utils.lua
Show inline comments
 
@@ -120,7 +120,7 @@ end);
 
	character object
 
	represents character, with whom you can interact
 
]]
 
function character(tab)
 
function npc(tab)
 
	if (not tab.act) then
 
		tab.act = function(s)
 
			if (s.dlg) then
warehouse18.lua
Show inline comments
 
@@ -27,7 +27,7 @@ to_warehouse_18 = room {
 
	end;
 
};
 
 
char_w18_sec = character {
 
char_w18_sec = npc {
 
	nam = 'char_w18_sec';
 
	disp = "Охранник";
 
	dsc = function(s)
 
@@ -103,7 +103,7 @@ warehouse_18_manager = room {
 
	};
 
};
 
 
char_w18_sec_mgr = character {
 
char_w18_sec_mgr = npc {
 
	nam = 'char_w18_sec';
 
	disp = "Охранник";
 
	dsc = [[
 
@@ -114,7 +114,7 @@ char_w18_sec_mgr = character {
 
	};
 
};
 
 
char_w18_mgr = character {
 
char_w18_mgr = npc {
 
	nam = "char_w18_mgr";
 
	disp = "Управляющий складом";
 
	dsc = [[
 
@@ -174,7 +174,7 @@ warehouse_18_inside = room {
 
	};
 
};
 
 
char_w18_sec_in = character {
 
char_w18_sec_in = npc {
 
	nam = "char_w18_sec_in";
 
	disp = "Охранник";
 
	dsc = [[
0 comments (0 inline, 0 general)