global { version = '0.10.0'; warehouse18_found = false; warehouse32_found = false; warehouse32_visited = false; dock_found = false; leviathan_discovered = false; atlantis_found = false; temple_found = false; iraaphaanotrr_found = false; iraaphaanotrr_temple_found = false; dypatreanotrr_found = false; dypatreanotrr_night_found = false; dypatreanotrr_temple_found = false; venaedanotrr_found = false; venaedanotrr_ravine_found = false; venaedanotrr_temple_found = false; nleyyslanotrr_found = false; nleyyslanotrr_visited = false; deep_temple_found = false; lseryanotrr_found = false; rel_phaetlarr = 0; rel_walter = 0; rel_learr = 0; rel_anna = 0; rel_jack = 0; language_known = false; cart_known = false; dt_code = {}; dt_buttons = {}; raybox_task = false; raybox_task_finished = false; starlight_dock_appearance = 2; starlight_dock_status = false; starlight_darkstar_status = 0; --Глобальные состояния(для концовок) mtr_outcome = 0; -- 1 - leroy accused, 2 - jones accused, 3 - failed to prove conflict_resolved = false; -- Решен ли конфликт между навьярами artifacts_returned = false; -- Вернили ли артефакты из храма навьярам? wright_state = 0; -- был взят Райт на борт или нет goldman_state = 0; -- 0 - Голдман не раскрыт, 1 - Голдман казнен, 2 - Голдман задержан, 3 - Голдман изгнан leroy_state = 0; -- 0 - Леруа не раскрыт, 1 - Леруа казнен, 2 - Леруа задержан, 3 - Леруа изгнан iraa_wand = false; -- был ли возвращен скипетр в Ираафаанотр iraa_map = false; -- был ли возвращен оригинал карты в Ираафаанотр dyp_map = false; -- Передана ли карта(оригинал или копия в Дипатреанотр) svetlova_help = 0; -- Дополнительная помощь, оказанная Светловой в исследовании навьяров --увеличивается, если показать ей КНО и скипетр }; game.enable_save = function () if here().nosave then return false; end; return true; end; game.enable_autosave = function () if EngineUtils.getValue(here().noautosave, here()) then return false; end; return true; end; player_drake = player { var { hp = 10; has_light = false; party = {}; companion = false; money = 200; }; nam = "player"; disp = "Дэвид Дрейк"; disp2 = "Дрейка"; disp3 = "Дрейку"; where = 'port'; obj = {'hp_indicator', 'item_charts', 'item_note_1', 'item_money'}; 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; entered = function(s) set_music('music/intro.ogg'); end; disp = "Вступление"; dsc = [[Пароход "Северное сияние" причаливает в порту Лондона. Всего неделю назад вы нашли в доме, где жили вместе со своей матерью, тайник, оставленный бесследно исчезнувшим отцом -- Уильямом Дрейком, владельцем транспортной компании "Вестхейвен Трансоушен". ^Сейчас у вас на руках есть лишь небольшая сумма, заблаговременно снятая со счета, да кипа старых бумаг, которая, быть может, позволит выяснить, что случилось с пропавшим Уильямом. ]]; way = { kh_vroom("Информация", 'intro_info'); kh_vroom("Начать игру", 'aurora_borealis'); kh_vroom("Как играть?", function(s) gamefile('tutorial.lua', true); return false; end); } }; intro_info = room { nam = "intro"; hideinv = true; disp = "Информация"; dsc = txtc [[ Автор игры: Khaelenmore Thaal^ Официальный сайт: https://silverwing.one/^^ В игре использована музыка: ^ Bensound (https://www.bensound.com/royalty-free-music)^ Evolution, Deep Blue, Birth of a Hero, Better Days, Sci Fi^ Лицензия: CC BY ND (https://creativecommons.org/licenses/by-nd/3.0/legalcode)^^ Purple Planet (https://www.purple-planet.com/)^ Midnight Bell^^ Kevin MacLeod (https://incompetech.com)^ River of Io^ Лицензия: CC BY (http://creativecommons.org/licenses/by/4.0/)^^ Alexander Nakarada (https://www.serpentsoundstudios.com/)^ Dogfight^ Лицензия: CC BY (http://creativecommons.org/licenses/by/4.0/)^^ Благодарности:^ Петру Косых^ Спасибо за отличный движок, позволивший создать эту игру в том виде, в каком она есть и за большое количество ценной обратной связи!^^ Сергею "techniX" Можайскому^ Спасибо за ценную обратную связь и интересные идеи по улучшению игры!^^ Zlobot^ Спасибо за первое прохождение игры, за помощь в поиске ошибок и ценную обратную связь!^^ Вам, уважаемый игрок^ Спасибо за то, что запустили игру и зашли в этот раздел. Надеюсь, она вам понравится! ]]; way = { kh_vroom("Вступление", 'intro'); kh_vroom("Начать игру", 'aurora_borealis'); } }; 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: Если вы видите это сообщение -- это баг. "; stead.savename = function() return stead.call(stead.here(), 'disp') or stead.call(stead.here(), 'nam'); end --[[ -- This function gathers all game info and returns room name for proper ending ]] function prepare_ending(nstate) if atl_mtr_finished_jones then atlantis_state = 4; elseif atl_rep_dyp < 0 then atlantis_state = 5; elseif iraa_wand then atlantis_state = 1; elseif iraa_map then atlantis_state = 2; elseif dyp_map then atlantis_state = 3; end; naethvjirr_state = nstate; set_music('music/lseryanotrr.ogg'); if nstate == 1 then return "ending_naethvjirr_prevails_david"; elseif nstate == 2 then return "ending_naethvjirr_prevails_william"; elseif nstate == 3 or nstate == 4 or nstate == 6 then return "ending_atlantis"; elseif nstate == 5 then return "ending_naethvjirr_prevails"; end; end function fix_save(filename) local f=stead.io.open(filename,"rb"); if f~=nil then local content = f:read("*all"); stead.io.close(f); print(string.find(content, '0.10.0')); if string.find(content, '0.10.0') == nil then print("Fixing save file"); content = stead.string.gsub(content, '([^A-Za-z])rm([^A-Za-z])', '%1warehouse_32%2') .. '\nversion="0.10.0"\n'; print(content) local f=stead.io.open(filename,"wb") if f ~= nil then f:write(content); stead.io.close(f); else print("Fixing save file failed"); end; end; end; end; function init() ---save fix fix_save(instead_savepath() .. '/autosave'); fix_save(instead_savepath() .. '/save1'); fix_save(instead_savepath() .. '/save2'); fix_save(instead_savepath() .. '/save3'); fix_save(instead_savepath() .. '/save4'); fix_save(instead_savepath() .. '/save5'); ---modules init pl = player_drake; --putf("debug_tool", stead.me()) atlantis_init(); leviathan_init(); warehouse18_init(); warehouse32_init(); if prefs.language then language = prefs.language; else prefs.language = language; end; local nums = {1,2,3,4,5,6}; if #dt_code == 0 then for i = 1, 4 do local index = rnd(#nums); table.insert(dt_code, nums[index]); end; end; nums = {1,2,3,4,5,6}; for i = 1, 3 do local index = rnd(#nums); table.insert(dt_buttons, nums[index]); table.remove(nums, index); end; ---game init pl.where = intro; ---debug end; function start() leviathan_start(); end;