Files @ 16044f7fdf9f
Branch filter:

Location: games/Awakening/startup.lua - annotation

Silverwing
0.10.5
c58efd4092be
55916cd3c1a0
c58efd4092be
c58efd4092be
9a8e42bc1462
c58efd4092be
c58efd4092be
f33a4965f21b
c58efd4092be
c58efd4092be
f33a4965f21b
c58efd4092be
f33a4965f21b
f33a4965f21b
c58efd4092be
3913724d53f8
f33a4965f21b
f33a4965f21b
c58efd4092be
f33a4965f21b
f33a4965f21b
f33a4965f21b
c58efd4092be
f806c5f507af
f33a4965f21b
c58efd4092be
c58efd4092be
7fdb3a425639
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
f33a4965f21b
f33a4965f21b
f33a4965f21b
f33a4965f21b
785ceeaee89f
785ceeaee89f
abb2992a026e
abb2992a026e
abb2992a026e
c58efd4092be
317da5ef1835
112b38b593c0
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
6dc921af9ad3
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c9e9a36eed2e
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
7fdb3a425639
2b95b962b389
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
e3361876e54e
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
5e029dd6eff1
5e029dd6eff1
5e029dd6eff1
c58efd4092be
d9dd5757a613
34b6d200e1da
e53088f89ff4
737c5cff840f
a238516ea79c
a238516ea79c
a238516ea79c
a238516ea79c
737c5cff840f
737c5cff840f
737c5cff840f
737c5cff840f
737c5cff840f
737c5cff840f
737c5cff840f
f90049c3d932
76064ed68df7
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
f90049c3d932
640416922528
640416922528
f90049c3d932
f90049c3d932
3950088745b6
3950088745b6
f90049c3d932
f90049c3d932
f90049c3d932
a27791d322ac
384be64aacee
737c5cff840f
e53088f89ff4
34b6d200e1da
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
90266e891072
dbda9dd3c285
90266e891072
90266e891072
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
810ca47e0844
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
b54771259671
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
dd362c940ef1
407b456b4b01
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
93e848bb964c
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
bff3a59bf8b4
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
c58efd4092be
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
55916cd3c1a0
c58efd4092be
c58efd4092be
c3933df57a0d
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
112b38b593c0
112b38b593c0
112b38b593c0
112b38b593c0
112b38b593c0
112b38b593c0
5fa679544e59
c58efd4092be
7b031c50917a
7b031c50917a
7b031c50917a
7b031c50917a
7b031c50917a
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
c58efd4092be
b18117337c89
6c96d2c967ff
dea1cc99da1c
dea1cc99da1c
dea1cc99da1c
93c0db668347
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;