Changeset - fce8b5c6be31
[Not reviewed]
default
0 4 0
Silverwing - 9 years ago 2015-06-18 17:44:24

Code improvements, new items and locations for Part 1
4 files changed with 203 insertions and 67 deletions:
0 comments (0 inline, 0 general)
coachman.lua
Show inline comments
 
--[[
 
Кучер, который будет за деньги возить вас по локациям первой части
 
]]
 
--TODO случайный ответ кучера из нескольких вариантов
 
char_coachman = obj {
 
	nam = "coachman";
 
	disp = "экипаж";
 
	dsc = [[Вы видите небольшую двухколесную повозку, с впряженными в нее двумя лошадьми. Его {владелец} стоит рядом и, судя по всему, ждет пассажиров^ ]];
 
	act = function()
 
		walkin "coachman_dlg";
 
	act = function(s)
 
		return "Оплатите проезд";
 
	end;
 
	used = function(s, o)
 
		if (o == item_coin) then
 
			coachman_dlg.onecoin = true;
 
			walkin "coachman_dlg";
 
		elseif (o == item_money) then
 
			coachman_dlg.onecoin = false;
 
			walkin "coachman_dlg";
 
		end;
 
	end;
 
};
 
 
coachman_dlg = dlg {
 
	nam = "coachman_dlg";
 
	disp = "Кучер";
 
	disp = "Извозчик";
 
	dsc = "Куда едем?";
 
	hideinv = true;
 
	enter = function(s)
 
		pon(1, 2, 3, 4, 5, 6);
 
		if (where(char_coachman) == hotel) then
 
			poff(1);
 
		end;
 
		if (where(char_coachman) == michael_house) then
 
			poff(2);
 
		end;
 
		if (where(char_coachman) == warehouse_18) then
 
			poff(3);
 
		end;
 
		if (where(char_coachman) == warehouse_32) then
 
			poff(4);
 
		end;
 
		if (where(char_coachman) == shipyard_2) then
 
			poff(5);
 
		end;
 
		if (where(char_coachman) == port) then
 
			poff(6);
 
	entered = function(s)
 
		poff(1, 2, 3, 4, 5, 6, 7);
 
		if (s.onecoin) then
 
			pon(7);
 
		else
 
			if (where(char_coachman) ~= port) then
 
				pon(6);
 
			end;
 
			if (where(char_coachman) ~= hotel) then
 
				pon(1);
 
			end;
 
			if (where(char_coachman) ~= wright_house) then
 
				pon(2);
 
			end;
 
			if (where(char_coachman) ~= dock_2 and global.dock_found) then
 
				pon(5);
 
			end;
 
			if (where(char_coachman) ~= warehouse_18 and global.warehouse_found) then
 
				pon(3);
 
			end;
 
			if (where(char_coachman) ~= warehouse_32 and global.warehouse_found) then
 
				pon(4);
 
			end;
 
		end;
 
	end;
 
	phr = {
 
		{1, always = true, "В гостиницу (0 монет)", "Садитесь! Здесь совсем близко. Гостиница называется \"У старого Фрэнки\"",
 
		{1, always = true, "В гостиницу",
 
			function (s)
 
				walk 'hotel';
 
				return "Садитесь! Здесь совсем близко. Гостиница называется \"У старого Фрэнки\"";
 
			end
 
		},
 
		{2, always = true, "[Майкл Райт] (0 монет)", "Садитесь!",
 
		{2, always = true, "К Райту", 
 
			function (s)
 
				walk 'michael_house';
 
				walk 'wright_house';
 
				return "Садитесь!";
 
			end
 
		},
 
		{3, always = true, "[Склад 18] (0 монет)", "Садитесь!",
 
		{3, always = true, "На склад 18", 
 
			function (s)
 
				walk 'warehouse_18';
 
			end
 
		},
 
		{4,	always = true, "[Склад 32] (0 монет)", "Садитесь!",
 
			function (s)
 
				walk 'warehouse_32';
 
				return "Садитесь!";
 
			end
 
		},
 
		{5, always = true, "[Верфь 2] (0 монет)", "Садитесь!",
 
		{4,	always = true, "На склад 32", 
 
			function (s)
 
				walk 'shipyard_2';
 
				walk 'warehouse_32';
 
				return "Садитесь!";
 
			end
 
			
 
		},
 
		{5, always = true, "К доку 2", 
 
			function (s)
 
				walk 'dock_2';
 
				return "Садитесь!";
 
			end
 
		},
 
		{6, always = true, "В порт (0 монет)", "Садитесь!",
 
		{6, always = true, "В порт",
 
			function (s)
 
				walk 'port';
 
				return "Садитесь!";
 
			end
 
		},
 
		{7, always = true, "В банк", "Садитесь!",
 
			function (s)
 
				remove(item_coin, pl);
 
				walk 'bank_street';
 
			end
 
		},
 
		{255, always = true, "Я передумал", function(s) 
items.lua
Show inline comments
 
item_bankbook = obj {
 
	nam = "Банковская книжка";
 
	inv = [[
 
		Ваша банковская книжка. 
 
	]];
 
};
 
 
item_coin = obj {
 
	nam = "coin";
 
	disp = "1 шиллинг";
 
	inv = [[Монета достоинством в 1 шиллинг]];
 
};
 
 
item_money = obj {
 
	nam = "money";
 
	disp = "Деньги";
 
	inv = [[Кошелек с монетами различного достоинства]];
 
};
 
 
item_note_1 = obj {
 
	nam = "note1";
 
	disp = "Записка";
 
	inv = [[Клочок бумаги с адресом: [Адрес Майкла Райта], Майкл Райт]];
 
};
 
 
item_documents = obj {
 
	nam = "documents";
 
item_charts = obj {
 
	nam = "charts";
 
	disp = "Документы отца";
 
	dsc = [[
 
		На столе лежат {схемы складов и верфей} Вест-Хэйвен Транс-Оушен
 
	]];
 
	inv = [[
 
		Схемы нескольких строений, принадлежавших компании отца. На некоторых схемах есть места отмечены жирными крестиками.
 
		Схемы с крестиками обозначены как склад 18, верфь 2, склад 32
 
		Схемы с крестиками обозначены как склад 18, док 2, склад 32
 
	]];
 
	use = function(s, o)
 
		if (o == char_michael) then
 
@@ -36,6 +55,9 @@ item_toolbox = obj {
 
	dsc = [[
 
		Вы видите {ящик} со всевозможными полезными и не очень инструментами - отвертками, ключами, молотками и т.д.^
 
	]];
 
	tak = [[
 
		Вы оглядываетесь, но не видите никого, кому мог бы принадлежать этот ящик. Пожав плечами, вы забираете его.
 
	]];
 
};
 
 
item_pickaxe = obj {
london.lua
Show inline comments
 
--[[
 
	Порт
 
]]
 
port = room {
 
	nam = "port";
 
	disp = "Порт";
 
	entered = function(s)
 
		move(char_coachman, here());
 
	end;
 
	dsc = [[
 
		Вы находитесь в порту. Небо покрыто тяжелыми тучами - вот-вот начнется дождь. 
 
		Вокруг кипит жизнь: снуют толпы народу, то и дело раздаются гудки пароходов, слышно ржание лошадей, запряженных в многочисленные экипажи, привозящие и увозящие людей.
 
	]];
 
	obj = {'item_toolbox'};
 
};
 
 
--[[
 
	Банк
 
]]
 
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
 
			remove(item_bankbook, pl);
 
			take(item_money);
 
			return "Вы протягиваете клерку вашу банковскую книжку и снимаете некоторое количество денег со счета";
 
		end;
 
	end;
 
};
 
 
--[[
 
	Гостиница
 
]]
 
 
hotel_street = room {
 
	nam = "hotel_street";
 
	disp = "У входа в гостиницу";
 
	entered = function(s)
 
		move(char_coachman, here());
 
	end;
 
	dsc = [[
 
		Вы стоите на улице у входа в гостиницу. Гостиница представляет собой трехэтажное кирпичное здание. 
 
	]];
 
};
 
 
hotel_hall = room {
 
	nam = "hotel_hall";
 
	disp = "Гостиница";
 
	dsc = [[
 
		Вы находитесь в холле гостиницы. Просторный зал, по высоте составляющий два этажа. В задней части вы видите широкую лестницу, застеленную красной дорожкой. Занавески на окнах аккуратно собраны в стороны, позволяя свету проникнуть в помещение. Несмотря на это, под потолком горит огромная люстра, украшенная золотом и серебром. 
 
	]];
 
	way = {
 
		vroom("На улицу", "hotel_street");
 
		vroom("В номер", "hotel_room");
 
	};
 
};
 
 
 
 
hotel_room = room {
 
	nam = "hotel_room";
 
	disp = "Ваш номер";
 
	
 
};
 
\ No newline at end of file
main.lua
Show inline comments
 
@@ -34,41 +34,28 @@ dofile "first_city_inner_rim.lua"
 
dofile "first_city_middle_rim.lua"
 
dofile "first_city_outer_rim.lua"
 
 
--TODO описания локаций должны изменяться в зависимости от посещения их днем или ночью
 
 
DAYTIME_DAY = "day";
 
DAYTIME_NIGHT = "night";
 
 
global = {
 
	warehouse_found = false,
 
	dock_found = false,
 
	daytime = "day"
 
};
 
 
pl = player {
 
	nam = "player";
 
	disp = "Дэвид Дрейк";
 
	where = 'port';
 
	hitpoints = 10;
 
	obj = {'item_umbrella', "item_documents", "item_note_1", "item_first_city_key", "item_colt"};
 
	obj = {'item_bankbook', 'item_umbrella', "item_charts", "item_note_1", "item_first_city_key", "item_colt", "item_coin"};
 
	-- party array. Should be empty on start
 
	party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
 
	companion = nil;
 
};
 
 
hotel = room {
 
	nam = "hotel";
 
	disp = "Гостиница";
 
	enter = function(s)
 
		move(char_coachman, here());
 
	end;
 
	dsc = [[
 
		Вы находитесь в холле гостиницы
 
	]];
 
};
 
 
port = room {
 
	nam = "port";
 
	disp = "Порт";
 
	enter = function(s)
 
		move(char_coachman, here());
 
	end;
 
	dsc = [[
 
		Вы находитесь в порту. Небо покрыто тяжелыми тучами - вот-вот начнется дождь. 
 
		Вокруг кипит жизнь: снуют толпы народу, то и дело раздаются гудки пароходов, слышно ржание лошадей, запряженных в многочисленные экипажи, привозящие и увозящие людей.
 
	]];
 
	obj = {'item_toolbox'};
 
};
 
 
intro = room {
 
	nam = "intro";
 
	hideinv = true;
 
@@ -101,13 +88,13 @@ function init()
 
	put(submarine_leviathan, shipyard_inside);
 
	---debug
 
	--pl.where = submarine_leviathan;
 
	move(submarine_leviathan, first_city_entrance);
 
	--move(submarine_leviathan, first_city_entrance);
 
	--move(submarine_leviathan, first_city_outer_east);
 
	--walk(final_scene);
 
	--walk(leviathan_wardroom);
 
	walk(leviathan_wardroom);
 
	put("char_learr", "leviathan_wardroom");
 
	--walk(leviathan_wardroom);
 
	--put("char_learr", "leviathan_wardroom");
 
	--put("char_phaetlarr", "leviathan_engines");
 
	put("char_radcliffe", "leviathan_engines");
 
	put("char_wright", "leviathan_wardroom");
 
	--put("char_radcliffe", "leviathan_engines");
 
	--put("char_wright", "leviathan_wardroom");
 
end
 
\ No newline at end of file
0 comments (0 inline, 0 general)