Changeset - a42792d011d8
[Not reviewed]
default
0 1 0
Silverwing - 6 years ago 2019-01-04 13:46:36

chapter 2: kraken fight
1 file changed with 9 insertions and 1 deletions:
0 comments (0 inline, 0 general)
journey_temple.lua
Show inline comments
 
@@ -390,97 +390,103 @@ dt_south_west = obj {
 
    dsc = "{На юго-запад}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на юго-запад.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].sw;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_west = obj {
 
    nam = "dt_west";
 
    dsc = "{На запад}^";
 
    act = function(s)
 
        pr [[
 
            Вы движетесь на запад.
 
        ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].w;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_north_west = obj {
 
    nam = "dt_north_west";
 
    dsc = "{На северо-запад}^";
 
    act = function(s)
 
        pr [[Вы движетесь на северо-запад. ]];
 
        dt_labyrinth.location = dt_labyrinth_map[dt_labyrinth.location].nw;
 
        dt_labyrinth:update();
 
        pr(dt_labyrinth_map[dt_labyrinth.location].dsc);
 
    end;
 
};
 

	
 
dt_temple_ravine = room {
 
    nam = "dt_temple_ravine";
 
    handwheel_room = "dt_labyrinth";
 
    disp = "Ущелье";
 
    dsc = function(s)
 
        if dt_temple_bridge1.state == 2 then
 
            return [[Вы стоите на дне расщелины. К северо-востоку от вас находится глубокое ущелье, из которого прямо сейчас поднимается громадное морское чудовище. ]];
 
        else
 
            return [[Вы стоите на дне расщелины. К северо-востоку от вас находится глубокое ущелье. Через ущелье переброшен узкий каменный мостик, на другом конце которого вы видите в скале прямоугольное отверстие явно искусственного происхождения. Из отверстия исходит яркий свет. ]];
 
        end;
 
    end;
 
    view = [[Вы находитесь в лабиринте ущелий и впадин. на северо-востоке вы видите глубокую расщелину, простирающуюся с северо-запада на юго-восток. над расщелиной висит узкий каменный мостик. Из отверстия в скале напротив него исходит яркий свет. ]];
 
    way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");
 
        kh_vroom("В Левиафан", function(s)
 
            if dt_temple_bridge1.state == 2 then
 
                return 'dt_fight_intro';
 
            else
 
                return "leviathan_airlock";
 
            end;
 
        end);
 
        kh_vroom("На мост", "dt_temple_bridge1");
 
    };
 
};
 

	
 
dt_temple_bridge1 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple_bridge1";
 
    disp = "Мост над пропастью";
 
    dsc = function(s)
 
        if s.state == 2 then
 
            return [[Часть моста, ведущая к храму разрушена, а из бездны поднимается громадное чудище из древних легенд -- кракен. ]];
 
        else
 
            return [[Вы ступаете на хлипкий мостик. Камни ходят ходуном под вашими ногами, и кажется, что слабая конструкция вот вот рухнет, увлекая вас за собой в бездну. ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        char_radcliffe:accompany(false);
 
        char_wright:accompany(false);
 
        char_anna:accompany(false);
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[Леарр с сомнением смотрит на шаткую постройку и по ее головным плавникам бегут цветные полосы: "Не думаю, что мост выдержит нас обоих, я поплыву сверху". ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[Фаэтларр осматривает мост и по его головным плавникам бегут цветные полосы: "Я бы не рискнул пойти по нему, но у тебя, хевьяр, кажется нет выбора", - навьяр смотрит на вас со странной ухмылкой. ]];
 
            end;
 
            if (char_radcliffe.follow) then
 
                pr [[В динамиках раздается голос Уолтера Рэдклиффа: "Я не думаю, что мост выдержит нас обоих. Если тебе нужен помощник, то навьяр здесь будет полезнее. К тому же, это их святилище". ]];
 
            end;
 
            if (char_wright.follow) then
 
                pr [[В динамиках раздается голос Джека Райта: "Нам точно стоит идти здесь? Мост не выглядит надежным. Думаю, тебе стоит взять навьяра, если тебе нужен спутник". ]];
 
            end;
 
            if (char_anna.follow) then
 
                pr [[В динамиках раздается голос Анны Рэдклифф: "Думаю, мост без проблем выдержит одного из нас. Удачи. Мне кажется, тебе лучше было бы идти с навьяром". ]];
 
            end;
 
        end;
 
        if have(item_naethvjirr_key) then
 
            s.state = 2;
 
            path('Дальше по мосту'):disable();
 
            path('На мост', dt_temple_ravine): disable();
 
            pr [[Мост позади вас рушится, а из глубины на поверхность поднимается громадная туша кракена. ]];
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("В ущелье", "dt_temple_ravine");
 
@@ -940,96 +946,98 @@ dt_wires_room = dlg {
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
        {
 
            tag = "s5", always = true,
 
            "В красный разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 6;
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
    };   
 
};
 

	
 
dt_temple = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple";
 
    disp = "Древний храм";
 
    dsc = [[Вы находитесь в огромном зале, высеченном в скале древними навьярами. ]];
 
    obj = {
 
        "dt_walls",
 
        "dt_pedestal",
 
        "dt_screens",
 
        "item_naethvjirr_key"
 
    };
 
    way = {
 
        kh_vroom("Выйти", "dt_temple_entrance");
 
    };
 
};
 

	
 
dt_walls = obj {
 
    nam = "dt_walls";
 
    dsc = [[Стены зала, освещенные такими же лампами, как и внешнее помещение, украшены множеством предостерегающих рисунков и символов. ]];
 
};
 

	
 
dt_pedestal = obj {
 
    nam = "dt_pedestal";
 
    dsc = [[В центре зала установлен массивный металлический пьедестал. ]];
 
};
 

	
 
dt_screens = obj {
 
    nam = "dt_screens";
 
    dsc = [[Вокруг пьедестала расположено множество экранов, на которых цветными полосами навьярского языка горят предупреждения об опасности использования предмета, хранящегося в этом зале. ]];
 
}
 

	
 
dt_fight_intro = cutscene('Левиафан', 'Левиафан', [[оказавшись внутри Левиафана, вы со всех ног бросаетесь в рубку, чтобы увести корабль подальше от опасности, но не тут то было. громадная туша нависла над Левиафаном, преграждая своими щупальцами пути отхода. ]], 'dt_fight');
 

	
 
dt_fight = room {
 
    var {
 
        state = 0;
 
        has_shot = false;
 
        rotation = 90;
 
        dir = 0;
 
        tentacles = {
 
            {hp=200, dir=0, away = 0 };
 
            {hp=200, dir=1, away = 0 };
 
            {hp=200, dir=2, away = 0 };
 
            {hp=200, dir=3, away = 0 };
 
            {hp=200, dir=4, away = 0 };
 
        };
 
    };
 
    nam = "dt_fight";
 
    disp = "Левиафан, рубка";
 
    forcedsc = true;
 
    entered = function(s)
 
        s:maketurn();
 
        if (s.state == 0) then
 
            s.state = 1;
 
            local dirs = {0,1,2,3,4,5,6,7};
 
            for i = 1, #s.tentacles do
 
                local cd = rnd(#dirs);
 
                s.tentacles[i].dir = dirs[cd];
 
                table.remove(dirs, cd);
 
            end;
 
        end;
 
    end;
 
    eval_tentacle = function(s, tentacle)
 
        if (tentacle.hp <= 70) then
 
            return [[Серьезно раненое щупальце ]];
 
        elseif (tentacle.hp <= 140) then
 
            return [[Раненое щупальце ]];
 
        elseif (tentacle.hp < 200) then
 
            return [[Легко раненое щупальце ]];
 
        else
 
            return [[Щупальце ]];
 
        end;
 
    end;
 
    dsc = function(s)
 
        local fr = s.dir + 1;
 
        local r = s.dir + 2;
 
        local br = s.dir + 3;
 
        local b = s.dir + 4;
 
        local fl = s.dir - 1;
 
        local l = s.dir - 2;
 
        local bl = s.dir - 3;
0 comments (0 inline, 0 general)