-- $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