Files @ 16044f7fdf9f
Branch filter:

Location: games/Awakening/startup.lua

Silverwing
0.10.5
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/)^^
    Благодарности:^
        Антону "bergentroll" Карманову^
        Спасибо за материальную поддержку и ценную обратную связь!^^
        Петру Косых^
        Спасибо за отличный движок, позволивший создать эту игру в том виде, в каком она есть и за большое количество ценной обратной связи!^^
        Сергею "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);
        
        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;