Changeset - 125f292fcb86
[Not reviewed]
default
0 6 0
Silverwing - 5 years ago 2019-01-10 13:13:01

epilogue: final battle and ending fixes
6 files changed with 118 insertions and 91 deletions:
0 comments (0 inline, 0 general)
battlefield.lua
Show inline comments
 
@@ -411,7 +411,7 @@ bf_wait = obj {
 
    nam = "wait",
 
    dsc = "{Ждать}",
 
    act = function(s)
 
        p("Вы ждете");
 
        p("Вы ждете. ");
 
        here():make_turn();
 
    end;
 
};
lse_alliance.lua
Show inline comments
 
@@ -274,7 +274,7 @@ lse_naethvjirr_ask = dlg {
 
    };
 
}
 

	
 
lse_a_pre_final_battle = cutscene('Лсэрианотр, зал Наэтвьирра', 'Лсэрианотр, зал Наэтвьирра', [[Наэтвьирр произносит: "Тогда, мне придется вас уничтожить". Вы достаете револьвер, а в зал врывается Фаэтларр. Не раздумывая, Фаэтларр бросается к ближайшему пилону и разрушает его. Мощный электрический разряд вырывается из руки Наэтвьирра и попадает в него. Фаэтларр падает на пол и остается неподвижно лежать. ]], function(s)
 
lse_a_pre_final_battle = cutscene('Лсэрианотр, зал Наэтвьирра', 'Лсэрианотр, зал Наэтвьирра', [[Наэтвьирр произносит: "Тогда, мне придется вас уничтожить". Вы достаете револьвер, а в зал врывается Фаэтларр. Не раздумывая, Фаэтларр бросается к ближайшему пилону и разрушает его. Мощный электрический разряд вырывается из руки Наэтвьирра и попадает в навьяра. Фаэтларр падает на пол и остается неподвижно лежать. ]], function(s)
 
    lse_pylon1.hp = 0;
 
    if ArrayUtils.indexOf(pl.party, 'learr') ~= 0 then
 
        return 'lse_pre_fb_learr';
 
@@ -303,7 +303,7 @@ lse_naethvjirr_drake_4 = cutscene('Пробуждение', 'Пробуждение', [[Прошли годы. Ваш отец состарился и отошел от дел, передав вам контроль над Наэтвьирром. С самого начала вы не уверены, что навьярская машина подчиняется вам. Что бы вы ни просили его сделать, он оспаривал и в итоге вы вынуждены были согласиться с его вариантом. Нельзя сказать, что это так уж плохо. Навьяры достигли многого -- их научные достижения обеспечили значительное превосходство над людьми -- быстрые корабли позволяли перемещаться от города к городу за считанные часы. Мощные машины памяти позволили хранить все, придуманное или изученное каждым навьяром. А Наэтвьирр все чаще намекал, что пора бы навести порядок и на поверхности Земли. ]], 'lse_naethvjirr_drake_5');
 

	
 
lse_naethvjirr_drake_5 = cutscene('Пробуждение', 'Пробуждение', [[За прошедшие десятилетия вы полностью захватили все человеческие государства. Вначале было тяжело. Несмотря на ваше технологическое преимущество, люди не хотели признавать блага, которые вы им сулили. Наэтвьирр действовал мудро -- вместо демонстрации военной мощи, он предложил использовать хитрость. Среди людей распространялись блага, доступные ранее только навьярам, им рассказывалось, насколько хорошо живет подводная раса. Люди сделали все сами, лишь при небольшой поддержке войск Наэтвьирра. Когда он показывал и рассказывал вам это, вас не покидала мысль, что он считает людей, примитивными животными. Он позволил вам перебраться на поверхность, тем более даже оттуда теперь вы могли иметь доступ к навьярским библиотекам. Вы не оставили своих изысканий, и, вам казалось, что Наэтвьирру нравится это -- он постоянно подыскивал для вас новые задачи для решения и предоставлял вам все необходимое оборудование для экспериментов.]], 'lse_naethvjirr_drake_6');
 

	
 
lse_naethvjirr_drake_6 = game_over('Пробуждение', 'Пробуждение', [[Вы прожили долгую и плодовитую жизнь -- Наэтвьирр обеспечил вас и вашего отца неслыханным долголетием, но возможности его оказались не безграничны. Уже перед самой вашей смертью, Наэтвьирр позволил навьярам и людям увидеть огромный мир, ждущий за пределами нашей маленькой планеты. Вас не покидало ощущение, что древняя машина лишь использует вас всех для своих, неясных целей. Это мнение поддерживали и непрекращающиеся восстания как навьярских, так и людских городов, хотя казалось бы, и у тех и у других есть все, чего можно желать. Вы начинаете думать о том, было ли это влияние благотворным для вас. Вы видели, как Аэдхиарра заменил молодой навьяр. Глупый и неспособный к самостоятельным решениям, полностью покорный воле Наэтвьирра. Лсэрианотр давал ему все, и он даже не задумывался о том, как и откуда это получено. Что будет дельше? Время покажет. ]]);
 
lse_naethvjirr_drake_6 = game_over('Пробуждение', [[Вы прожили долгую и плодовитую жизнь -- Наэтвьирр обеспечил вас и вашего отца неслыханным долголетием, но возможности его оказались не безграничны. Уже перед самой вашей смертью, Наэтвьирр позволил навьярам и людям увидеть огромный мир, ждущий за пределами нашей маленькой планеты. Вас не покидало ощущение, что древняя машина лишь использует вас всех для своих, неясных целей. Это мнение поддерживали и непрекращающиеся восстания как навьярских, так и людских городов, хотя казалось бы, и у тех и у других есть все, чего можно желать. Вы начинаете думать о том, было ли это влияние благотворным для вас. Вы видели, как Аэдхиарра заменил молодой навьяр. Глупый и неспособный к самостоятельным решениям, полностью покорный воле Наэтвьирра. Лсэрианотр давал ему все, и он даже не задумывался о том, как и откуда это получено. Что будет дельше? Время покажет. ]], 'Пробуждение');
 

	
 
--[[
 
    Ending 2: You control naethvjirr
 
@@ -322,7 +322,7 @@ lse_naethvjirr_self_4 = cutscene('Пробуждение', 'Пробуждение', [[Прошли годы. Ваш отец состарился и отошел от дел. Навьярская машина совершенно отбилась от рук -- что бы вы ни просили Наэтвьирра сделать, он оспаривал и в итоге вы вынуждены были согласиться с его вариантом. Нельзя сказать, что это так уж плохо. Навьяры достигли многого -- их научные достижения обеспечили значительное превосходство над людьми -- быстрые корабли позволяли перемещаться от города к городу за считанные часы. Мощные машины памяти позволили хранить все, придуманное или изученное каждым навьяром. А Наэтвьирр все чаще намекал, что пора бы навести порядок и на поверхности Земли. ]], 'lse_naethvjirr_drake_5');
 
 ]]
 

	
 
lse_naethvjirr_wins = cutscene('Пробуждение', 'Пробуждение', function(s)
 
    pr [[Получив подтверждение вашей верности, Наэтвьирр сразу же предлагает вам вернуться на Атлантиду или даже на поверхность. Недолго думая, вы с Уильямом и Уолтером соглашаетесь остаться в Лсэрианотре, чтобы изучить город получше. ]];
 
    pr [[Получив подтверждение вашей верности, Наэтвьирр сразу же предлагает вам вернуться на Атлантиду или даже на поверхность. Недолго думая, вы с Уильямом соглашаетесь остаться в Лсэрианотре, чтобы изучить город получше. ]];
 
    if ArrayUtils.indexOf(pl.party, 'wright') ~= 0 then
 
        pr [[Джек принял решение вернуться на Атлантиду, к своему отцу, однако Наэтвьирр позволил ему взять некоторые записи из библиотеки. ]];
 
    end;
 
@@ -331,16 +331,17 @@ lse_naethvjirr_wins = cutscene('Пробуждение', 'Пробуждение', function(s)
 
    else
 
        pr [[Фаэтларр не раздумывая решил вернуться домой, в Венаэданотр. ]];
 
    end;
 
    if ArrayUtils.indexOf(pl.party, 'anna') then
 
        pr [[Анна приняла решение остаться в Лсэрианотре -- ей было интересно изучить город, а Уолтер всюду следовал за своей сестрой. ]]
 
    elseif ArrayUtils.indexOf(pl.party, 'radcliffe') then
 
        pr [[Уолтер вернулся на Атлантиду вместе с Джеком. ]]
 
    end;
 
end, 'lse_naethvjirr_wins_2');
 

	
 
lse_naethvjirr_wins_2 = cutscene('Пробуждение', 'Пробуждение', [[Спустя несколько месяцев вы открыли лишь малую толику знаний, скрываемых в хранилищах Лсэрианотра. Чертежи древних машин, знания о вселенной, находящейся за пределами солнечной системы, подробные сведения об обитателях океана и подробнейшие карты морского дна казались бесконечными. Наэтвьирр не терял времени даром -- практически без сопротивления он объединил разрозненные навьярские поселения. Как ни странно, ни вам ни навьярам практически не приходилось работать. Наэтвьирр, казалось, не требует ничего от вас, молчаливо строя руками своих механических слуг все больше и больше ферм, шахт, заводов и библиотек. ]], 'lse_naethvjirr_wins_3');
 
lse_naethvjirr_wins_2 = cutscene('Пробуждение', 'Пробуждение', [[Спустя несколько месяцев вы открыли лишь малую толику знаний, скрываемых в хранилищах Лсэрианотра. Чертежи древних машин, знания о вселенной, находящейся за пределами солнечной системы, подробные сведения об обитателях океана и подробнейшие карты морского дна казались бесконечными. Наэтвьирр тоже не терял времени даром -- практически без сопротивления он объединил разрозненные навьярские поселения. Как ни странно, ни вам ни навьярам практически не приходилось работать. Наэтвьирр, казалось, не требует ничего от вас, молчаливо строя руками своих механических слуг все больше и больше ферм, шахт, заводов и библиотек. ]], 'lse_naethvjirr_wins_3');
 

	
 
lse_naethvjirr_wins_3 = cutscene('Пробуждение', 'Пробуждение', [[Прошли годы. Ваш отец состарился и отошел от дел. За это время навьяры достигли многого -- их научные достижения обеспечили значительное превосходство над людьми -- быстрые корабли позволяли перемещаться от города к городу за считанные часы. Мощные машины памяти позволили хранить все, придуманное или изученное каждым навьяром. ]], 'lse_naethvjirr_wins_4');
 

	
 
lse_naethvjirr_wins_4 = cutscene('Пробуждение', 'Пробуждение', [[За прошедшие десятилетия Наэтвьирр подчинил себе человеческие государства. Вначале было тяжело. Несмотря на ваше технологическое преимущество, люди не хотели признавать блага, которые вы им сулили. Наэтвьирр действовал мудро -- вместо демонстрации военной мощи, он предложил использовать хитрость. Среди людей распространялись блага, доступные ранее только навьярам, им рассказывалось, насколько хорошо живет подводная раса. Люди сделали все сами, лишь при небольшой поддержке войск Наэтвьирра. Когда он показывал и рассказывал вам это, вас не покидала мысль, что он считает людей примитивными животными. Однако, он все же позволил вам перебраться на поверхность, тем более даже оттуда теперь вы могли иметь доступ к навьярским библиотекам. Вы не оставили своих изысканий, и, вам казалось, что Наэтвьирру нравится это -- он постоянно подыскивал для вас новые задачи для решения и предоставлял вам все необходимое оборудование для экспериментов. ]], 'lse_naethvjirr_wins_5');
 

	
 
lse_naethvjirr_wins_5 = game_over('Пробуждение', 'Пробуждение', [[Вы прожили долгую и плодовитую жизнь -- Наэтвьирр обеспечил вас и вашего отца неслыханным долголетием, но возможности его оказались не безграничны. Уже перед самой вашей смертью, Наэтвьирр позволил навьярам и людям увидеть огромный мир, ждущий за пределами нашей маленькой планеты. Вас не покидало ощущение, что древняя машина лишь использует вас всех для своих, неясных целей. Это мнение поддерживали и непрекращающиеся восстания как навьярских, так и людских городов, хотя казалось бы, и у тех и у других есть все, чего можно желать. Вы начинаете думать о том, было ли это влияние благотворным для вас. Вы видели, как Аэдхиарра заменил молодой навьяр. Глупый и неспособный к самостоятельным решениям, полностью покорный воле Наэтвьирра. Лсэрианотр давал ему все, и он даже не задумывался о том, как и откуда это получено. Что будет дельше? Время покажет. ]]);
 

	
 
--[[
 
    Ending 4: Naethvjirr dies
 
 ]]
 
\ No newline at end of file
lse_confrontation.lua
Show inline comments
 
@@ -931,7 +931,7 @@ lse_prison_fight_victory = dlg {
 
    nam = "lse_prison_fight_victory";
 
    disp = "Лсэрианотр, тюрьма";
 
    entered = function(s)
 
        take('item_toolbox')
 
        take('item_toolbox');
 
        return [[Вы избавляетесь от стражников. Фаэтларр передает вам ваш ящик с инструментами. Теперь нужно принять решение, что делать дальше, и навьяр сообщает вам: "Уильяма-Дрейка-последователи среднее-кольцо-редко-посещают. Если нам туда-попасть-удастся, то у нас дальнейшие-действия-время-обдумать-будет. Говори, Дрейк". ]];
 
    end;
 
    phr = {
 
@@ -944,7 +944,10 @@ lse_prison_fight_victory = dlg {
 
lse_hideout_intro_dlg = dlg {
 
    nam = "lse_hideout_intro_dlg";
 
    disp = "Лсэрианотр, убежище";
 
    entered = [[В комнате охранников вы находите ваши вещи. Фаэтларр проводит вас по сервисным тоннелям в среднее кольцо Лсэрианотра. Эта часть города мало чем отличается внешне от тех мест, что вы видели ранее. Точно такие же сплошные стены слева и справа. Точно такие же одинаковые металлические двери на равном расстоянии друг от друга. Как вы и ожидали, секция оказывается практически полностью пустой. Фаэтларр проводит вас в одну из дверей. "Попробуем здесь", - говорит он и с помощью нехитрых манипуляций открывает ее, впуская вас внутрь. ^Вы оказываетесь в небольшом узком коридоре. По его сторонам вы видите несколько проходов, ведущих в небольшие помещения неизвестного вам назначения. За одним из проходов скрывается просторная комната с установленным в центре массивным металлическим столом и несколькими стульями вокруг. ]];
 
    entered = function(s)
 
        take('item_harpoon');
 
        return [[В комнате охранников вы находите ваши вещи. Фаэтларр проводит вас по сервисным тоннелям в среднее кольцо Лсэрианотра. Эта часть города мало чем отличается внешне от тех мест, что вы видели ранее. Точно такие же сплошные стены слева и справа. Точно такие же одинаковые металлические двери на равном расстоянии друг от друга. Как вы и ожидали, секция оказывается практически полностью пустой. Фаэтларр проводит вас в одну из дверей. "Попробуем здесь", - говорит он и с помощью нехитрых манипуляций открывает ее, впуская вас внутрь. ^Вы оказываетесь в небольшом узком коридоре. По его сторонам вы видите несколько проходов, ведущих в небольшие помещения неизвестного вам назначения. За одним из проходов скрывается просторная комната с установленным в центре массивным металлическим столом и несколькими стульями вокруг. ]];
 
    end;
 
    phr = {
 
        {"Фаэтларр, что ты можешь рассказать нам о городе?", [[Фаэтларр кивает и сразу предупреждает: "Я не-успел-разузнать почти-ничего", -- сделав небольшую паузу, он продолжает: "Город кругами-выстроен. Они называют-это кольцами. Три-кольца есть. Кроме-обычных-дверей, они проходами-соединены, но часть-их под-водой-находится". ]]};
 
        {"Фаэтларр, как мы можем попасть в центр города?", [[Фаэтларр пожимает плечами: "Тоннель должен-быть. Мы найдем". ]]};
lse_final_battle.lua
Show inline comments
 
@@ -48,15 +48,18 @@ lse_final_battle = battlefield {
 
    plX = 4;
 
    plY = 7;
 
    check_win = function(s)
 
        if lse_ending_state == 2 then
 
            for i = 1, #s.obj do
 
                if (s.obj[i].enemy and s.obj[i].hp > 0) then
 
                    return;
 
                end;
 
        local cnt = 0;
 
        for i = 1, 10 do
 
            if (i < 10) then
 
                a = "lse_gen_0" .. tostring(i);
 
            else
 
                a = "lse_gen_" .. tostring(i);
 
            end;
 

	
 
            walk(s.win);
 
        elseif lse_ending_state == 1 and lse_naethvjirr.hp <= 0 then
 
            if not stead.ref(a).broken then
 
                cnt = cnt + 1;
 
            end;
 
        end;
 
        if cnt == 0 then
 
            walk(s.win);
 
        end;
 
    end;
 
@@ -137,7 +140,7 @@ global {
 
    lse_generators_charge = nil;
 
    lse_generators_pylon = nil;
 
    lse_generators_chPylon = 10;
 
    lse_generators_chThrow = 4;
 
    lse_generators_chThrow = 5;
 
    lse_generators_chCharge = 3;
 
    lse_generators_chShield = 0;
 
    lse_generators_chAwake = 60;
 
@@ -312,8 +315,25 @@ lse_generator = function(nam, x, y, inde
 
                return [[{Генератор ]] .. tostring(index) .. [[} сломан. ]];
 
            end;
 
        end;
 
        canshoot = false;
 
        noshootmsg = "Ваш выстрел не повредит ему. ";
 
        onshoot = function(s)
 
            local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));
 
            if (rnd(4) > dist - 3) then
 
                s.broken = true;
 
                if (s.role == "s") then
 
                    lse_generators_chShield = 2;
 
                elseif (s.role == "c") then
 
                    lse_generators_chCharge = math.min(lse_generators_chCharge + 1, 4);
 
                elseif (s.role == "t") then
 
                    lse_generators_chThrow = math.min(lse_generators_chThrow + 1, 5);
 
                elseif (s.role == "p") then
 
                    lse_generators_chPylon = math.min(lse_generators_chPylon + 4, 10);
 
                end;
 
                p [[Вы попадаете в генератор и он затихает. ]];
 
            else
 
                p [[Вы стреляете в генератор, но промахиваетесь. ]];
 
            end;
 
            here():make_turn();
 
        end;
 
        canthrust = function(s)
 
            return math.abs(s.x - here().plX) + math.abs(s.y - here().plY) <= 2 and not s.ally and not s.broken;
 
        end;
 
@@ -322,9 +342,9 @@ lse_generator = function(nam, x, y, inde
 
            if (s.role == "s") then
 
                lse_generators_chShield = 2;
 
            elseif (s.role == "c") then
 
                lse_generators_chCharge = math.min(lse_generators_chCharge + 1, 3);
 
                lse_generators_chCharge = math.min(lse_generators_chCharge + 1, 4);
 
            elseif (s.role == "t") then
 
                lse_generators_chThrow = math.min(lse_generators_chThrow + 1, 4);
 
                lse_generators_chThrow = math.min(lse_generators_chThrow + 1, 5);
 
            elseif (s.role == "p") then
 
                lse_generators_chPylon = math.min(lse_generators_chPylon + 4, 10);
 
            end;
 
@@ -340,24 +360,26 @@ lse_generator = function(nam, x, y, inde
 
            return [[Так я не нанесу ему никакого вреда. ]];
 
        end;
 
        make_turn = function(s)
 
            if (s.role == "s") then
 
                if (lse_generators_chShield ~= 0) then
 
                    lse_generators_chShield = lse_generators_chShield - 1;
 
                end;
 
            elseif (s.role == "c") then
 
                if (lse_generators_chCharge ~= 0) then
 
                    lse_generators_chCharge = lse_generators_chCharge - 1;
 
            if not s.broken then
 
                if (s.role == "s") then
 
                    if (lse_generators_chShield ~= 0) then
 
                        lse_generators_chShield = lse_generators_chShield - 1;
 
                    end;
 
                elseif (s.role == "c") then
 
                    if (lse_generators_chCharge ~= 0) then
 
                        lse_generators_chCharge = lse_generators_chCharge - 1;
 
                    end;
 
                elseif (s.role == "t") then
 
                    if (lse_generators_chThrow ~= 0) then
 
                        lse_generators_chThrow = lse_generators_chThrow - 1;
 
                    end;
 
                elseif (s.role == "p") then
 
                    if (lse_generators_chPylon ~= 0) then
 
                        lse_generators_chPylon = lse_generators_chPylon - 1;
 
                    end;
 
                else
 
                    lse_generators_chAwake = lse_generators_chAwake - 1;
 
                end;
 
            elseif (s.role == "t") then
 
                if (lse_generators_chThrow ~= 0) then
 
                    lse_generators_chThrow = lse_generators_chThrow - 1;
 
                end;
 
            elseif (s.role == "p") then
 
                if (lse_generators_chPylon ~= 0) then
 
                    lse_generators_chPylon = lse_generators_chPylon - 1;
 
                end;
 
            else
 
                lse_generators_chAwake = lse_generators_chAwake - 1;
 
            end;
 
        end;
 
    };
 
@@ -469,11 +491,10 @@ lse_naethvjirr = combatant {
 
    make_turn = function(s)
 
        if (lse_generators_chCharge <= 0) then
 
            lse_generators_chCharge = 3;
 
            p("Наэтвьирр отправляет в вас электрический разряд. Вы не можете пошевелиться. ");
 
            p("Наэтвьирр отправляет в вас электрический разряд. ");
 
            if (rnd(4) < 2) then
 
                local plX = here().plX;
 
                local plY = here().plY;
 
                p("Разряд отбрасывает вас в сторону");
 
                if math.abs(here().plX - 4) > math.abs(here().plY - 4) then
 
                    if here().plX > 4 then
 
                        plX = here().plX + 1;
 
@@ -513,12 +534,11 @@ lse_naethvjirr = combatant {
 
                p("Вы чувствуете, что атака не прошла для вас бесследно. ");
 
                pl.hp = pl.hp - 1;
 
            end;
 
            lse_final_battle:make_turn();
 
        elseif (lse_generators_chThrow <= 0) then
 
            lse_generators_chThrow = 5;
 
            p("Наэтвьирр отправляет в вас мощную волну воздуха, которая отбрасывает вас в сторону. ");
 
            local plX = here().plX;
 
                local plY = here().plY;
 
                p("Разряд отбрасывает вас в сторону. ");
 
                if math.abs(here().plX - 4) > math.abs(here().plY - 4) then
 
                    if here().plX > 4 then
 
                        plX = here().plX + 1;
 
@@ -548,7 +568,7 @@ lse_naethvjirr = combatant {
 
                end;
 
                
 
                if (here():isPassable(plX, plY)) then
 
                    p("Разряд отбрасывает вас в сторону. ");
 
                    p("Волна отбрасывает вас в сторону. ");
 
                    here().plX = plX;
 
                    here().plY = plY;
 
                    if (rnd(4) > 1) then -- 75%
 
@@ -581,9 +601,15 @@ lse_drake = combatant {
 
    nam = "lse_drake";
 
    disp2 = "Уильяма Дрейка";
 
    disp3 = "Уильяму Дрейку";
 
    shootHit = "Вы стреляете в Уильяма и попадаете в него. ";
 
    shootMiss = "Вы стреляете в Уильяма, но не попадаете в него. ";
 
    shootKill = "Вы стреляете в Уильяма и он падает замертво. ";
 
    handHit = "Вы ударяете Уильяма. ";
 
    handKill = "После вашего удара Уильям падает. ";
 
    handFar = "Слишком далеко. ";
 
    x = 4;
 
    y = 3;
 
    hp = 4;
 
    hp = 1;
 
    pic = "images/fb_drake.png";
 
    gun = 6;
 
    dsc = function(s)
 
@@ -599,7 +625,7 @@ lse_drake = combatant {
 
            if (here():canShoot(s.x, s.y, here().plX, here().plY)) then
 
                -- shoot
 
                if (rnd(4) > dist - 2) then
 
                    pl.hp = pl.hp - 2;
 
                    pl.hp = pl.hp - 1;
 
                    p("Уильям Дрейк стреляет в вас и попадает. ");
 
                else
 
                    p("Уильям Дрейк стреляет в вас, но промахивается. ");
 
@@ -659,10 +685,16 @@ lse_aedhyarr = combatant {
 
    nam = "lse_aedhyarr";
 
    x = 5;
 
    y = 3;
 
    hp = 4;
 
    hp = 1;
 
    disp2 = "Аэдхиарра";
 
    disp3 = "Аэдхиарру";
 
    pic = "images/aedhyarr.png";
 
    shootHit = "Вы стреляете в Аэдхиарра и попадаете в него. ";
 
    shootMiss = "Вы стреляете в Аэдхиарра, но не попадаете в него. ";
 
    shootKill = "Вы стреляете в Аэдхиарра и он падает замертво. ";
 
    handHit = "Вы ударяете Аэдхиарра. ";
 
    handKill = "После вашего удара Аэдхиарр падает. ";
 
    handFar = "Слишком далеко. ";
 
    gun = 6;
 
    dsc = function(s)
 
        if s.hp > 0 then
 
@@ -674,10 +706,10 @@ lse_aedhyarr = combatant {
 
    make_turn = function(s)
 
        -- Аэдхиарр будет пытаться всеми силами париблизиться к игроку на расстояние выстрела и не будет отступать. 
 
        local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));
 
        if (dist < 6 and here():canShoot(s.x, s.y, here().plX, here().plY)) then
 
        if (dist < 4 and here():canShoot(s.x, s.y, here().plX, here().plY)) then
 
            -- shoot
 
            if (rnd(4) > dist - 2) then
 
                pl.hp = pl.hp - 2;
 
            if (rnd(2) > dist - 2) then
 
                pl.hp = pl.hp - 1;
 
                p("Аэдхиарр стреляет в вас и попадает. ");
 
            else
 
                p("Аэдхиарр стреляет в вас, но промахивается. ");
 
@@ -700,23 +732,33 @@ end;
 
final_battle_over = room {
 
    nam = 'final_battle_over';
 
    enter = function(s)
 
        if lse_lse_ending_state == 1 then
 
            walkin('ending_naethvjirr_destroyed_a');
 
        else
 
            walkin('ending_naethvjirr_destroyed_b');
 
        end;
 
        walkin('ending_naethvjirr_destroyed_a');
 
    end
 
}
 

	
 
--[[
 
    Ending 4: Naethvjirr dies
 
 ]]
 

	
 
ending_naethvjirr_destroyed_a = cutscene('Лсэрианотр, зал Наэтвьирра', 'Лсэрианотр, зал Наэтвьирра', function(s)
 
    pr [[Гул машин затихает. Наэтвьирр уничтожен. ]];
 
    if lse_naethvjirr.hp > 0 then
 
        pr [[Как только последний генератор затихает, металлический навьяр застывает. Наэтвьирра больше нет. ]];
 
    else
 
        pr [[Последний генератор затихает и вы облегченно вздыхаете. Наэтвьирра больше нет. ]];
 
    end;
 
    if lse_drake.hp > 0 then
 
        pr [[Ошеломленный Уильям Дрейк произносит: "Не ждал я от тебя такого, сынок". Дрожащей рукой он подносит к виску револьвер и делает выстрел. ]];
 
    end;
 
    if lse_aedhyarr.hp > 0 then
 
        pr [[Аэдхиарр опускается на пол с криком: "Не стреляйте!"]];
 
        pr [[Аэдхиарр опускается на пол с криком: "Не стреляйте!" ]];
 
    end;
 
    if #pl.party == 1 then
 
        pr [[Фаэтларр приходит в себя. ]];
 
    elseif #pl.party > 1 then
 
        pr [[Ваши спутники начинают приходить в себя. ]];
 
    end;
 
    pr [[Некоторое время вы стоите посреди затихшего зала, размышляя о произошедшем. ]];
 

	
 
    if ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0 then
 
        pr [[Решительный голос Уолтера Рэдклиффа прерывает ваши мысли: "Нам нужно уходить". ]];
 
    elseif ArrayUtils.indexOf(pl.party, 'jack') ~= 0 then
 
@@ -728,21 +770,7 @@ ending_naethvjirr_destroyed_a = cutscene('Лсэрианотр, зал Наэтвьирра', 'Лсэрианотр, зал Наэтвьирра', function(s)
 
    end;
 
end, 'ending_naethvjirr_destroyed_2');
 

	
 
ending_naethvjirr_destroyed_b = cutscene('Лсэрианотр, зал Наэтвьирра', 'Лсэрианотр, зал Наэтвьирра', function(s)
 
    pr [[Гул машин затихает. Наэтвьирр уничтожен. Аэдхиарр мертв. Уильям убит вашей рукой. ]];
 
    pr [[Некоторое время вы стоите посреди затихшего зала, размышляя о произошедшем. ]];
 
    if ArrayUtils.indexOf(pl.party, 'radcliffe') ~= 0 then
 
        pr [[Решительный голос Уолтера Рэдклиффа прерывает ваши мысли: "Нам нужно уходить". ]];
 
    elseif ArrayUtils.indexOf(pl.party, 'jack') ~= 0 then
 
        pr [[Мягкий голос Джека Райта прерывает ваши мысли: "Пойдем отсюда". ]];
 
    elseif ArrayUtils.indexOf(pl.party, 'learr') ~= 0 then
 
        pr [[Легкое касание плеча прерывает ваши мысли. Леарр негромко произносит: "Дрейк, нам-возвращаться-пора". ]];
 
    elseif ArrayUtils.indexOf(pl.party, 'phaetlarr') ~= 0 then
 
        pr [[Решительный голос Фаэтларра прерывает ваши мысли: "Дрейк, мы возвращаемся". ]];
 
    end;
 
end, 'ending_naethvjirr_destroyed_2');
 

	
 
ending_naethvjirr_2 = game_over('Пробуждение', 'Пробуждение', function(s)
 
ending_naethvjirr_destroyed_2 = game_over('Пробуждение', function(s)
 
    pr [[Лсэрианотр найден, Наэтвьирр уничтожен, экипаж Надежды мертв. ]];
 
    if atl_iyh_shockfish_dead and not atl_iyh_artifacts_on_atlantis then
 
        pr [[Вы оставляетсе Фаэтларра в Венаэданотре, после чего на всех парах мчитесь на Атлантиду. На месте, вы обнаруживаете, что станция заброшена. Из оставленных документов, вы узнаете, что из-за резкого ухудшения отношений с навьярами дальнейшие исследования стали осложнены. После нескольких нападений, Моро принял решение закрыть станцию. Вам не остается ничего, кроме как вернуться на поверхность вместе со всем экипажем. ^^Конец. ]];
 
@@ -758,4 +786,4 @@ ending_naethvjirr_2 = game_over('Пробуждение', 'Пробуждение', function(s)
 
        end;
 
    end;
 
    return [[^^Конец. ]];
 
end);
 
\ No newline at end of file
 
end, 'Пробуждение');
startup.lua
Show inline comments
 
@@ -176,18 +176,8 @@ function init()
 
    ---game init
 
    pl.where = intro;
 
    ---debug
 
    --[[nley_cave_entrance.state = 1;
 
    pl.where = "lse_final_battle";
 
    move("submarine_leviathan", "ven_temple_entrance");
 

	
 
    take(ven_item_green_key);
 
    take(ven_item_red_key);
 
    take(ven_item_tablet);
 
    ven_temple_labyrinth_l1.position = '17';
 

	
 
    -- leviathan
 
    submarine_leviathan.circuit_breaks = 0;
 
    submarine_leviathan.battery = true;
 
    submarine_leviathan.power_on = true;
 
    submarine_leviathan.air_level = 500000;]]
 
    --[[pl.where = "lse_final_battle";
 
    lse_pylon1.hp = 0;
 
    pl.obj[2] = item_harpoon;
 
    pl.obj[3] = item_colt;]]
 
end; 
utils.lua
Show inline comments
 
@@ -307,11 +307,16 @@ function darkroom(tab)
 
	return room(tab);
 
end;
 
 
function game_over(nam, dsc)
 
function game_over(nam, dsc, disp)
 
    return room {
 
        nam = nam;
 
        not_follow = true;
 
        disp = "Игра окончена";
 
        disp = function(s)
 
            if disp then
 
                return disp;
 
            end;
 
            return "Игра окончена";
 
        end;
 
        hideinv = true;
 
        dsc = dsc;
 
    };
0 comments (0 inline, 0 general)