Changeset - 92669747be8a
[Not reviewed]
default
0 6 17
Silverwing - 6 years ago 2017-12-10 16:15:21

Dypatreanotrr 15 game
23 files changed with 144 insertions and 21 deletions:
0 comments (0 inline, 0 general)
atlantis_dlg.lua
Show inline comments
 
@@ -1797,7 +1797,8 @@ char_learr_atlantis_dlg = dlg {
 
        {"Я могу помочь?", [[Леарр кивает: "Я думаю-ты-дрругим-делом-ззанят. Я не-хчочу-мешшать". ]], code[[ char_learr.on_books = 3; pret(); ]]};
 
        {"Давно ты этим занимаешься?", [[Леарр кивает: "Я с-ссамого-пррибытия-вашши-книги-учуссь-читать. Я надеюссь-вссе-пойму ссо-врременем". ]]};
 
        {"Как у тебя успехи?", [[Леарр смущенно отвечает: "Я ещще-многое-не-понимаю. Но я ссо-врременем-пойму-надеюссь". ]]};
 
        {"Давай поговорим о другом.", [[Леарр кивает: "Ты говорри". ]], code [[pret();]]};;
 
        {"Давай поговорим о другом.", [[Леарр кивает: "Ты говорри". ]], code [[pret();]]};
 
    }
 
};
 
 
char_aikerjarr_dlg = dlg {
 
@@ -1861,7 +1862,7 @@ char_aikerjarr_dlg = dlg {
 
        {tag="iyh2_ryveerr", false, "Ривеерр дал мне разрешение на осмотр окрестностей храма. ", [[Аикерьярр недовольно рычит: "Никчемный-глупец-Ривеерр. Я ссс-тобой-иду". ]], code [[ atl_iyh2_aikerjarr_spoken = true; table.insert(pl.party, 'aikerjarr'); move(char_aikerjarr_lev, char_aikerjarr_lev.home); psub("on_iyh22"); ]]};
 
        {always=true,"Я вернусь позже.", [[Аикерьярр отворачивается от вас, даже не удостоив ответом. ]], code [[back(); ]]};
 
        {tag="on_iyh22"};
 
        {"Хорошо.", [[Аикерьярр отворачивается от вас, не удостоив ответом. ]], code [[back(); ]]}
 
        {"Хорошо.", [[Аикерьярр отворачивается от вас, не удостоив ответом. ]], code [[back(); ]]};
 
        {"Ты мне там не нужен.", [[Аиверьярр отвечает: "Я ссс-тобой-иду или ты не-идешшь-туда". ]]};
 
	};
 
};
atlantis_dyp.lua
Show inline comments
 
@@ -5,11 +5,13 @@
 
global {
 
    dyp_quest_state = 0;
 
        -- 0 - не начат
 
        -- 1 - получено задание от вождя
 
        -- 2 - узнали, что карту унес Аэдиенрр в Дипатреанотр
 
        -- 3 - узнали, куда унес карту Аэдиенрр из Дипатреанотра
 
        -- 4 - Отдали оригинал КНО в Ираафаанотр
 
        -- 5 - Отдали жезл в Ираафаанотр
 
        -- 1 - вождь попросил светящуюся капсулу с Атлантиды
 
        -- 2 - вождь попросил зуб акулы
 
        -- 3(1) - вождь попросил карту
 
        -- 4(2) - узнали, что карту унес Аэдиенрр в Дипатреанотр
 
        -- 5(3) - узнали, куда унес карту Аэдиенрр из Дипатреанотра
 
        -- 6(4) - Отдали оригинал КНО в Ираафаанотр
 
        -- 7(5) - Отдали жезл в Ираафаанотр
 
    dyp_stones_known = false;
 
    dyp_lib_stone_state = 0;
 
};
 
@@ -65,7 +67,7 @@ dyp_guardian = npc {
 
        end;
 
    end;
 
    dlg = function(s)
 
        if dyp_quest_state == 2 then
 
        if dyp_quest_state == 4 then
 
            return "dyp_guardian_dlg";
 
        end;
 
    end;
 
@@ -86,7 +88,7 @@ dyp_guardian_dlg = dlg {
 
        {tag="no_speak"};
 
        {always = true; "[Уйти]", code [[ back(); ]]};
 
        {tag="speak"};
 
        {"[Кодировщик] Я ищу навьяра по имени Аэдиенрр. Он проходил здесь недавно.", [[Стражник кивает: "Аэдиенрр из Ираафаанотра ушел на восток несколько дней назад. Кажется, он направлялся к обелискам". ]], code [[ dyp_quest_state = 3; ]]};
 
        {"[Кодировщик] Я ищу навьяра по имени Аэдиенрр. Он проходил здесь недавно.", [[Стражник кивает: "Аэдиенрр из Ираафаанотра ушел на восток несколько дней назад. Кажется, он направлялся к обелискам". ]], code [[ dyp_quest_state = 5; ]]};
 
        {always = true; "[Уйти]", code [[ back(); ]]};
 
    };
 
};
 
@@ -99,6 +101,106 @@ dyp_obelisk = obj {
 
    end;
 
};
 

	
 
dyp_obelisk_puzzle = room {
 
    var {
 
        state = {
 
             0, 1, 2, 3,
 
             4, 5, 6, 7,
 
             8, 9,10,11,
 
            12,13,14,15
 
        };
 
        set = false;
 
    };
 
    win = "";
 
    nam = "Дипатреанотр, центр";
 
    entered = function(s)
 
        if not s.set then
 
            s.set = true;
 
            local details = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 
            local matches = 3;
 
            for i = 1, 16 do
 
                local item;
 
                local index;
 
                repeat
 
                    index = rnd(#details);
 
                    item = details[index];
 
                until matches > 0 or item ~= s.state[i] or i == 16;
 
                table.remove(details, index);
 
                s.state[i] = item;
 
            end;
 
            local k = 1;
 
            for i = 1, 16 do
 
                if s.state[i] == 1 then
 
                    for j = i + 1, 16 do
 
                        if s.state[i] > s.state[j] and s.state[j] ~= 12 then
 
                            k = k + 1;
 
                        end;
 
                    end;
 
                else
 
                    k = k + math.floor(i / 4);
 
                end;
 
            end;
 
            if k % 2 == 0 then
 
                for i = 1, 16 do
 
                    if s.state[i] == 14 then
 
                        s.state[i] = 15;
 
                    elseif s.state[i] == 15 then
 
                        s.state[i] = 14;
 
                    end;
 
                end;
 
            end;
 
        end;
 
    end;
 
    pic = function(s)
 
        local p = 'images/dyp15.png';
 
        for i = 1, #s.state do
 
            local f = s.state[i];
 
            p = p .. ';images/dyp15_' .. tostring(f) .. '.png@' .. tostring(((i - 1) % 4) * 40) .. ',' .. tostring(math.floor((i - 1) / 4) * 40);
 
        end;
 
        print(p);
 
        return p;
 
    end;
 
    click = function(s, x, y)
 
        local tx = math.floor(x / 40);
 
        local ty = math.floor(y / 40);
 
        local tile = tx + ty * 4 + 1;
 
        if (s.state[tile] ~= 12) then
 
            if (tile - 4 > 0) and s.state[tile - 4] == 12 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile - 4];
 
                s.state[tile - 4] = tx;
 
            elseif tx > 0 and s.state[tile - 1] == 12 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile - 1];
 
                s.state[tile - 1] = tx;
 
            elseif tx < 3 and s.state[tile + 1] == 12 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile + 1];
 
                s.state[tile + 1] = tx;
 
            elseif (tile + 4) <= 16 and s.state[tile + 4] == 12 then
 
                tx = s.state[tile];
 
                s.state[tile] = s.state[tile + 4];
 
                s.state[tile + 4] = tx;
 
            end;
 
        end;
 
        if not s:check_win() then
 
            walkin(here());
 
        else
 
            p = [[Одна из каменных плит рядом с обелиском отодвигается. В образовавшейся выемке вы видите небольшой светящийся красным светом камень. Вы забираете камень себе. ]];
 
            put(dyp_item_stone_red, pl);
 
            walk(dyp_center);
 
        end;
 
    end;
 
    check_win = function(s)
 
        for i = 1, #s.state do
 
            if s.state[i] ~= i - 1 then
 
                return false;
 
            end;
 
        end;
 
        return true;
 
    end;
 
};
 

	
 
dyp_navjiarr = npc{
 
    nam = "dyp_navjiarr";
 
    dsc = [[Немногие {навьяры}, находящиеся сейчас на площади с интересом оглядываютс на Левиафан и вас. ]];
 
@@ -268,10 +370,11 @@ dyp_chief_dlg = dlg {
 
                s.lse = true;
 
                pon("lseryanotrr");
 
            end;
 
            if dyp_stones_known then
 
            if dyp_stones_known and dup_quest_state == 0 then
 
                pon("quest");
 
                pon("star_map");
 
            end;
 
            if dyp_quest_state == 2 and not s.aed then
 
            if dyp_quest_state == 4 and not s.aed then
 
                s.aed = true;
 
                pon("aedienrr");
 
            end;
 
@@ -283,9 +386,29 @@ dyp_chief_dlg = dlg {
 
        {always=true, "[Уйти]", code [[ back(); ]]};
 
        {tag="speak"};
 
        {tag="lseryanotrr", false, "[Кодировщик] Я ищу карту пути в Лсэрианотр.", [[Вождь отвечает: "Ты спроси в храме или в библиотеке. Я ничего такого не знаю". ]]};
 
        {tag="star_map", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [[Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении, бегут цветные полосы: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ]], code [[ dyp_quest_state = 1; ]]};
 
        --[[{tag="star_map", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [ [Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении, бегут цветные полосы: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ] ], code [ [ dyp_quest_state = 1; ] ]};]]
 
        {tag="quest", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [[Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении бегут цветные полосы: "Принеси мне три вещи, что я попрошу и получишь жезл вместе с камнем". ]], code [[psub("agree_quest");]]};
 
        {tag="quest1", false, "[Отдать светильник] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", [[Вождь с интересом рассматривает принесенный вами прибор, после чего ставит его на стол перед собой и говорит: "Еще мне нужен акулий зуб". ]], code [[ remove("item_dyp_lamp", pl); dyp_quest_state = 2; ]]};
 
        {tag="quest2", false, "[Отдать зуб акулы] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", [[Вождь кладет зуб на стол рядом со светильником и говорит: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ]], code [[ remove("item_dyp_shark_tooth", pl); dyp_quest_state = 3; psub("agree_quest2"); ]]};
 
        {tag="quest3", false, "[Отдать карту небесных огней] Вот то, что ты просил. Я могу забрать камень?", function(s)
 
            if have(item_dyp_star_map_copy) then
 
                -- отдаем копию
 
                return "";
 
            elseif have(item_dyp_star_map) then
 
                --[[Вождь отдает вам жезл, как и обещал. ]]
 
                -- отдаем оригинал, но жезл из тайника отдали в Ираафаанотр
 
                -- отдаем оригинал, жезл из тайника не отдали в Ираафаанотр
 
                return "";
 
            end;
 
        end};
 
        {tag="aedienrr", "[Кодировщик] Ваш город посещал Аэдиенрр из Ираафаанотра недавно?", [[Вождь отвечает: "Не мое дело следить за этим. Спроси у стражников". ]]};
 
        {always=true, "[Кодировщик] Я пойду.", [[Вождь прощается с вами: "Ты возвращайся". Он садится обратно на трон и закрывает глаза. ]], code [[ back(); ]]};
 
        {tag="agree_quest"};
 
        {always=true,"[Кодировщик] Что ты хочешь, чтобы я принес?", [[Вождь отвечает: "Первая вещь, что мне нужна -- это светящаяся капсула из вашего города". ]], code [[ dyp_quest_state = 1; pret(); ]]};
 
        {always=true,"[Кодировщик] Я передумал. ", [[Вождь пожимает плечами. ]], code [[ pon("quest"); pret(); ]]};
 
        {tag="agree_quest2"};
 
        {always=true,"[Кодировщик] Как к этому отнесутся в Ираафаанотре?", [[Вождь отвечает: "Они могут быть против. Уговори их". ]], code [[ pret(); ]]};
 
        {always=true,"[Кодировщик] Я не буду этого делать.", [[Вождь отвечает: "Я отдам посох только за карту небесных огней". ]], code [[ pret(); ]]};
 
    };
 
};
 

	
 
@@ -369,7 +492,7 @@ dyp_temple_south_far = room {
 
dyp_temple_north_west = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 3 then
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
@@ -443,7 +566,7 @@ dyp_temple_crevice_far_west = room {
 
dyp_temple_warning = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 3 then
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
 
@@ -498,7 +621,7 @@ dyp_temple_cliff_1_footprints = obj {
 
dyp_temple_cliff_2 = room {
 
    nam = "Океан";
 
    no_exit = function(s)
 
        if dyp_quest_state ~= 3 then
 
        if dyp_quest_state ~= 5 then
 
            return [[Нет смысла покидать Левиафан здесь. ]];
 
        end;
 
    end;
atlantis_iraa.lua
Show inline comments
 
@@ -233,7 +233,7 @@ iraa_rytlarr_dlg = dlg {
 
    nam = "iraa_rytlarr_dlg";
 
    disp = [[Ритларр]];
 
    entered = function(s)
 
        if dyp_quest_state == 1 then
 
        if dyp_quest_state == 3 then
 
            pon("star_map");
 
        end;
 
        if (language_known) then
 
@@ -249,7 +249,7 @@ iraa_rytlarr_dlg = dlg {
 
        {"[Уйти]", code [[ back(); ]]};
 
        {tag="generic"};
 
        {"[Кодировщик] Я ищу часть карты, ведущей в Лсэрианотр.", [[Навьяр некоторое время стоит, задумавшись. Потом он начинает ходить от полки к полке. Наконец, он сообщает: "Я не уверен, что она у нас есть. Но если вы уверены -- она должна быть в храме. Спросите у вождя. Быть может он позволит вам войти внутрь по такому случаю". ]], code [[ iraa_chief_dlg.ask_temple = true; ]]};
 
        {tag="star_map", false, "[Кодировщик] Ты знаешь что-нибудь о карте небесных огней?", [[Навьяр кивает: "Наше сокровище. Аэдиенрр взял ее не так давно. Он сказал, что знает как найти место, указанное в ней. Но прошло много дней, а он не вернулся. Если ты сможешь найти его и вернуть карту, мы будем очень благодарны. Я не знаю точно конечную цель, но я знаю, что он вышел по направлению к Дипатреанотру". ]], code [[ dyp_quest_state = 2; ]]};
 
        {tag="star_map", false, "[Кодировщик] Ты знаешь что-нибудь о карте небесных огней?", [[Навьяр кивает: "Наше сокровище. Аэдиенрр взял ее не так давно. Он сказал, что знает как найти место, указанное в ней. Но прошло много дней, а он не вернулся. Если ты сможешь найти его и вернуть карту, мы будем очень благодарны. Я не знаю точно конечную цель, но я знаю, что он вышел по направлению к Дипатреанотру". ]], code [[ dyp_quest_state = 4; ]]};
 
        {"[Кодировщик] Ты знаешь, где находится Венаэданотр?", [[Навьяр кивает: "Мы знаем путь туда". Он ведет вас к одной из полок в дальнем конце зала. Ритларр достает одну из металлических пластин и протягивает вам со словами: "Вернете, когда сделаете копию у себя". ]], code [[ ]]};
 
        {"[Кодировщик] Ты знаешь, где находится Нлейисланотр?", [[Навьяр отрицательно качает головой: "У нас нет карты пути к этому месту. Быть может, путь знают в Дипатреанотре. "]]};
 
        {"[Уйти]", code [[ back(); ]]};
images/dyp15.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_0.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_1.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_10.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_11.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_12.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_13.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_14.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_15.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_2.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_3.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_4.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_5.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_6.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_7.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_8.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
images/dyp15_9.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
items.lua
Show inline comments
 
@@ -558,7 +558,7 @@ item_lse_map = obj {
 
    end;
 
    tak = function(s)
 
        atl_iyh_state = 8;
 
        [[Вы забираете табличку себе. ]];
 
        return [[Вы забираете табличку себе. ]];
 
    end;
 
    dsc = [[На пьедестале посреди комнаты лежит металлическая {табличка}. ]];
 
    inv = function(s)
journey_venaedanotrr.lua
Show inline comments
 
@@ -53,9 +53,7 @@ item_ven_tablet = obj {
 
    inv = [[
 
        Металлическая табличка с рисунком, изображающим навьяра и человека, пожимающих друг другу руки.
 
    ]];
 
    tak = [[
 
        Вы забираете табличку.
 
    ]];
 
    tak = [[Вы забираете табличку. ]];
 
};
 

	
 
ven_obelisk = obj {
main.lua
Show inline comments
 
@@ -198,6 +198,7 @@ function init()
 
    ---game init
 
    pl.where = intro;
 
    ---debug
 
    pl.where = "dyp_obelisk_puzzle";
 
    --put("item_lamp", pl);
 
    --put("item_pump", pl);
 
    --put("item_toolbox", pl);
0 comments (0 inline, 0 general)