Files @ 38255c2dc001
Branch filter:

Location: games/Awakening/main.lua

Silverwing
Warehouse 18: Done
WIP: Warehouse 32
-- $Name: Пробуждение$
-- $Version: 1.0$
-- $Author: Khaelenmore Thaal$

instead_version "1.9.1"
require "para"
require "dash"
require "quotes"
require "hideinv"
require "kbd"

-- Код и ядро
dofile "utils.lua"
-- Общее
dofile "items.lua"
dofile "party.lua"
dofile "game_over.lua";
-- Часть 1
dofile "london.lua"
dofile "wright.lua"
dofile "travel.lua"
dofile "dock2.lua"
dofile "warehouse18.lua"
dofile "warehouse32.lua"
-- Часть 2
dofile "leviathan.lua"
dofile "atlantis.lua"
dofile "navjiarr_settlement.lua"
dofile "navjiarr_hostile_settlement.lua"
-- Часть 3
dofile "final_scene.lua";
dofile "final_battle.lua";
dofile "first_city_inner_rim.lua"
dofile "first_city_middle_rim.lua"
dofile "first_city_outer_rim.lua"

--TODO представить все дисплеи картинками
--TODO описания локаций должны изменяться в зависимости от посещения их днем или ночью
--TODO больше Flavour-textа

--DAYTIME_MORNING = "morning";	--6-10
--DAYTIME_DAY = "day";			--10-18
--DAYTIME_EVENING = "evening";	--18-22
--DAYTIME_NIGHT = "night";		--22-6

global {
	warehouse18_found = false,
	warehouse32_found = false,
	dock_found = false,
	--daytime = "morning",
	--hours = 7,
	--minutes = 0,
	--seconds = 0,
	atlantis_found = false
};

--item_clock = obj {
--	nam = "item_clock";
--	disp = "Часы";
--	inv = function(s)
--		return "Время " .. s.formatTime();
--	end;
--	formatTime = function()
--		local rval = tostring(hours);
--		if (hours == 1) then
--			rval = rval .. [[ час]];
--		elseif (hours == 2 or hours == 3 or hours == 4) then
--			rval = rval .. [[ часа]];
--		else
--			rval = rval .. [[ часов]];
--		end;
--		if (minutes > 0) then
--			if (minutes ~= 11 and minutes % 10 == 1) then
--				rval = rval .. " " .. tostring(minutes) .. " минута";
--			elseif (minutes / 10 ~= 1 and (minutes % 10 == 2 or minutes % 10 == 3 or minutes % 10 == 4)) then
--				rval = rval .. " " .. tostring(minutes) .. " минуты";
--			else 
--				rval = rval .. " " .. tostring(minutes) .. " минут";
--			end;
--		else
--			rval = rval .. " ровно";
--		end;
--		return rval;
--	end;
--	life = function()
--		seconds = seconds + 10;
--		if (seconds > 59) then
--			minutes = minutes + 1;
--			seconds = 0;
--		end;
--		if (minutes > 59) then
--			hours = hours + 1;
--			minutes = 0;
--		end;
--		if (hours > 12) then
--			hours = 1;
--		end;
--		if (hours > 5 and hours < 10) then
--			if (daytime == DAYTIME_NIGHT) then
--				daytime = DAYTIME_MORNING;
--			elseif (daytime == DAYTIME_DAY) then
--				daytime = DAYTIME_EVENING;
--			end;
--		end;
--		if (hours > 10) then
--			if (daytime == DAYTIME_MORNING) then
--				daytime = DAYTIME_DAY;
--			elseif (daytime == DAYTIME_EVENING) then
--				daytime = DAYTIME_NIGHT;
--			end;
--		end;
--	end;
--};

pl = player {
	nam = "player";
	disp = "Дэвид Дрейк";
	where = 'port';
	hitpoints = 10;
	obj = {'item_umbrella', 'item_charts', 'item_note_1', 'item_money', 
	};
	-- party array. Should be empty on start
	party = {--[["learr", "radcliffe", "phaetlarr", "wright"]]};
	companion = nil;
	money = 200;
	pay = function(s, c)
		if (s.money >= c) then
			s.money = s.money - c;
			return true;
		else
			return false;
		end;
	end;
};

intro = room {
	nam = "intro";
	hideinv = true;
	disp = "Вступление";
	dsc = [[
		ВНИМАНИЕ: Это специальная предварительная версия игры. Ни один фрагмент игры не является финальным. ^^
		ВНИМАНИЕ: Данная версия игры не предназначена для какого-либо распространения, исключая прямую передачу файлов автором. Вышеуказанное ограничение на распространение данной версии игры аннулируется в момент выхода полной версии. ^^
		Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка - единственного сына богатого и уважаемого владельца транспортной компании "Вестхейвен Трансоушен". ^
		Несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
		После исчезновения отца Дэвид жил в Вашингтоне с бабушкой. Он пошел по стопам отца и выучился на инженера-кораблестроителя. Несколько дней назад в доме, где он жил, был обнаружен тайник, хранящий секретные документы отца - карты, указывающие по-видимому на какие-то тайники Уильяма и записка с адресом и именем.^
		Одержимый идеей узнать больше, Дэвид отправляется в Лондон...
	]];
	obj = {
		vway("Начать игру", "{Начать игру}", 'aurora_borealis');
	}
};

demo_end = room {
	nam = "demo_end";
	hideinv = true;
 	dsc = [[
		Вы встаете за штурвал "Левиафана". Уверенным движением руки вы включаете насосы. Резервуары заполняются водой и субмарина опускается вниз. Еще одним движением вы включаете двигатели. "Левиафан" плавно сдвигается с места. Через несколько часов вы выходите в открытое море. Еще раз сверившись с картой вы направляетесь к месту, отмеченному на ней. 
		
		*** Конец предварительной демонстрации ***
	]];
};

game.nam = "Пробуждение";
game.dsc = [[
	Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка, сына владельца крупной транспортной компании "Вестхейвен Трансоушен". Несколько лет назад Уильям Дрейк, отец главного героя бесследно пропадает. Компания вскоре разваливается. Поиски ни к чему не приводят. Когда казалось бы уже все потеряно, в доме Дрейков находят тайник с документами Уильяма. Несколько схем строений, принадлежащих компании и клочок бумаги с адресом некоего Майкла Райта в Лондоне. Естественно, Дэвид как можно скорее отправляется в Великобританию...
	Вам предстоит отыскать подводную лодку, посетить подводную станцию, построенную Уильямом, встретить древнюю расу подводных жителей, поучаствовать в событиях, описанных древними легендами этой расы и узнать, что стало с Уильямом Дрейком.
]];

game_act_phrases = {
	"Я не знаю, что с этим делать. ";
	"Я не буду это трогать... Пока. ";
	"Мне это ничем не поможет. ";
	"Это бессмыссленно. ";
	"Незачем это трогать. ";
};

game_use_phrases = {
	"Мне это ничем не поможет. ";
	"Это бессмыссленно. ";
	"Каким образом? "
};

game.act = function(s)
	return game_act_phrases[rnd(#game_act_phrases)];
end;

game.use = function(s)
	return game_use_phrases[rnd(#game_use_phrases)];
end;
game.inv = "INV: Если вы видите это сообщение - это баг. ";

require "dbg"

function init()
	---modules init
	leviathan_init();
	warehouse18_init();
	warehouse32_init();
	---game init
	pl.where = intro;
	put(submarine_leviathan:disable(), dock_mooring);
	---debug
	--pl.where = warehouse_32_entry;
	pl.where = w32_mgr;
	-- 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);
	--put("char_learr", "leviathan_wardroom");
	--put("char_phaetlarr", "leviathan_engines");
	--put("char_radcliffe", "leviathan_engines");
	--put("char_wright", "leviathan_wardroom");
	--pl.where = leviathan_airlock;
	--pl.where = hotel_street;
	--pl.where = warehouse_32_entry;
	--dock_found = true;
end