Changeset - c2c6511898e9
[Not reviewed]
default
0 3 0
Silverwing - 6 years ago 2018-11-24 19:26:34

venaedanotrr - temple fixed
3 files changed with 71 insertions and 63 deletions:
0 comments (0 inline, 0 general)
journey_venaedanotrr.lua
Show inline comments
 
@@ -1206,25 +1206,26 @@ ven_char_phanearr = npc {
 
    dlg = 'ven_char_phanearr_dlg';
 
}
 

	
 
ven_char_phanearr_dlg = dlg {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_char_phanearr_dlg';
 
    disp = 'Фанеарр';
 
    entered = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            return [[Фанеарр обращается к вам, по его головным плавникам бегут цветные полосы: "Почтенный хевьяр, благодарю тебя за помощь. Чем могу быть полезен?"]];
 
            take(ven_item_tablet);
 
            return [[Фанеарр обращается к вам, по его головным плавникам бегут цветные полосы: "Почтенный хевьяр, благодарю тебя за помощь. В благодарность, я дам тебе кое-что, что было найдено мной некогда в том самом ущелье", -- с этими словами он протягивает вам металлическую табличку. ]];
 
        else
 
            return [[Фанеарр обращается к вам. По его головным плавникам бегут цветные полосы: "Ты говори". ]];
 
        end;
 
    end;
 
    phr = {
 
        {"[Кодировщик]Что вы искали в ущелье?", [[Фанеарр отвечает: "В данной части ущелья мы были впервые. Хиарирр откопал в библиотеке старые записи о некоем артефакте -- ,,коробке лучей''. По словам Хиарирра, с ее помощью мы сможем расшифровать светодиски, хранящиеся в библиотеке в больших количествах. К сожалению, мы не ожидали найти там источник ирфирра. Сам по себе этот яд очень коварный -- не всегда можно понять, что уже нужно срочное лечение. А здесь мы нашли его источник -- место, где вещество вырывается из земли. Мы не успели ничего понять, как большая часть из нас свалилась без сознания". ]], code [[
 
            pon("ray_box");
 
        ]]};
 
        {tag="ray_box", false, "[Кодировщик]Как мне найти коробочку лучей?", [[Фанеарр дает вам маленький металлический кубик. На его гранях высечены глубокие бороздки, предназначения которых вы не понимаете. Навьяр сообщает вам: "Мы были почти у цели. Если бы не ирфирр, мы открыли бы вход". ]], code [[
 
            take(ven_item_key);
 
        ]]};
 
        {always=true, "[Кодировщик]Я пойду.", [[Фанееарр отвечает: "Ты возвращайся". ]], code [[
 
@@ -1265,63 +1266,73 @@ ven_temple_entrance = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_temple_entrance';
 
    disp = 'Храм Венаэданотра, вход';
 
    dsc = [[Массивные двери высеченного в скале храма покрыты резными орнаментами. Широкие металлические ступени сохранились в идеальном состоянии. Скала тянется в обе стороны от храма. Чуть поодаль вы видите небольшой каменный домик, в котором живет хранитель храма. ]];
 
    obj = {
 
        'ven_temple_doors';
 
    };
 
    way = {
 
        kh_vroom('В Левиафан', "leviathan_airlock");
 
        kh_vroom('В храм', function(s)
 
            return 'ven_temple_hall_1';
 
            if ven_temple_entrance.state == 3 then
 
                return 'ven_temple_hall_1';
 
            else
 
                p [[Двери храма не откроются для вас. ]];
 
                return false;
 
            end;
 
        end);
 
        kh_vroom('К дому хранителя', "ven_temple_keeper_house");
 
    };
 
};
 

	
 
ven_temple_doors = obj {
 
    nam = 'ven_temple_doors';
 
    dsc = function(s)
 
        if ven_temple_entrance.state == 0 then
 
            return [[В нижней части дверей храма есть два небольших многогранных {углубления}. ]];
 
        elseif ven_temple_entrance.state == 1 then
 
            return [[В нижней части дверей храма есть два небольших многогранных {углубления}. В одно из них помещен небольшой зеленый додекаэдр. ]];
 
        elseif ven_temple_entrance.state == 2 then
 
            return [[В нижней части дверей храма есть два небольших многогранных {углубления}. В одно из них помещен небольшой красный додекаэдр. ]];
 
        else
 
            return [[В нижней части дверей храма есть два небольших многогранных {углубления}, в которых сейчас расположены небольшие камни -- красный и зеленый. ]];
 
        end;
 
    end;
 
    used = function(s, o)
 
        if o == ven_item_green_key then
 
            ven_temple_entrance.state = ven_temple_entrance.state + 1;
 
            remove(ven_item_green_key, pl);
 
            return [[Додекаэдр легко входит в отверстие и накрепко закрепляется там. Где-то изнутри двери вы слышите тяжелый скрежет. ]];
 
            p [[Додекаэдр легко входит в отверстие и накрепко закрепляется там. Где-то изнутри двери вы слышите тяжелый скрежет. ]];
 
        elseif o == ven_item_red_key then
 
            ven_temple_entrance.state = ven_temple_entrance.state + 2;
 
            remove(ven_item_red_key, pl);
 
            return [[Додекаэдр легко входит в отверстие и накрепко закрепляется там. Где-то изнутри двери вы слышите тяжелый скрежет. ]];
 
            p [[Додекаэдр легко входит в отверстие и накрепко закрепляется там. Где-то изнутри двери вы слышите тяжелый скрежет. ]];
 
        end;
 
        if ven_temple_entrance.state == 3 then
 
            p [[Двери храма теперь открыты. ]];
 
        else
 
            p [[]];
 
        end;
 
    end;
 
}
 

	
 
ven_temple_keeper_house = room {
 
    nam = 'ven_temple_keeper_house';
 
    disp = 'Храм Венаэданотра, у дома хранителя';
 
    dsc = [[Небольшое каменное строение, напоминающее дома жителей города расположено неподалеку от входа в храм высеченного в скале. ]];
 
    way = {
 
        kh_vroom('В дом', "ven_temple_keeper_house_inside");
 
        kh_vroom('К храму', "ven_temple_keeper_house_inside");
 
        kh_vroom('К храму', "ven_temple_entrance");
 
    }
 
};
 

	
 
ven_temple_keeper_house_inside = room {
 
    nam = 'ven_temple_keeper_house_inside';
 
    disp = 'Храм Венаэданотра, дом хранителя';
 
    dsc = [[Небольшая комната практически пуста, не считая стола, стоящего в центре и кровати стоящей в углу. Светящиеся водоросли покрывают потолок комнаты. В другом углу комнаты расположен люк, ведущий в подвал. ]];
 
    obj = {
 
        'ven_char_temple_keeper',
 
        'ven_keeper_shelf'
 
    };
 
    way = {
 
@@ -1513,26 +1524,28 @@ ven_temple_hall_1 = room {
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_pedestal = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_temple_pedestal';
 
    dsc = [[С одной из сторон пьедестала вашему взору открывается потайная ниша, внутри которой спрятан {рычаг}. ]];
 
    act = function(s)
 
        if s.state == 0 then
 
            ven_temple_ahall.state = 1;
 
            path("Наверх", ven_temple_ahall):enable();
 
            ven_temple_pedestal.state = 1;
 
            ven_temple_qhall.state = 1;
 
            path("Наверх", ven_temple_qhall):enable();
 
            return [[Рычаг легко поддается. Из зала вопроса доносится гул, который вскоре оканчивается глухим ударом. ]];
 
        else
 
            return [[Вам здесь больше нечего делать. ]];
 
        end;
 
    end;
 
}
 

	
 
ven_temple_hall_2 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    dsc = [[В центре храма расположен пьедестал. На нем лежат несколько металлических табличек с древними письменами. ]];
 
    way = {
 
        kh_vroom('Ко входу', 'ven_temple_hall_1');
 
        kh_vroom('В конец зала', 'ven_temple_hall_3');
 
@@ -1544,73 +1557,84 @@ ven_temple_hall_2 = room {
 
    }
 
}
 

	
 
ven_temple_hall_3 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    dsc = [[В этой части главного зала расположена небольшая неприметная дверца, ведущая в служебные помещения храма. ]];
 
    way = {
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_qhall = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'Храм Венаэданотра, зал вопроса';
 
    dsc = [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. ]];
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. ]];
 
        else
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. Одна из боковых стен зала отсутствует, открывая проход на широкую лестницу, ведущую наверх. ]];
 
        end;
 
    end;
 
    obj = {
 
        'ven_qhall_altar'
 
    };
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
        kh_vroom('Наверх', 'ven_temple_labyrinth_l1'):disable();
 
    };
 
};
 

	
 
ven_temple_ahall = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'Храм Венаэданотра, зал ответа';
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стене выгравировано изображение навьяра, плывущего наверх. ]];
 
        else
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стене выгравировано изображение навьяра, плывущего наверх. Одна из боковых стен зала отсутствует, открывая проход на широкую лестницу, ведущую наверх. ]];
 
        end;
 
    dsc = [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стене выгравировано изображение навьяра, плывущего наверх. ]];
 
    entered = function(s)
 
        ven_temple_labyrinth_l1.position = '03';
 
    end;
 
    obj = {
 
        'ven_ahall_altar'
 
    };
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
        kh_vroom('Наверх', 'ven_temple_labyrinth_l1'):disable();
 
    };
 
};
 

	
 
ven_qhall_altar = obj {
 
    nam = 'ven_qhall_altar';
 
    dsc = [[В центре помещения установлен массивный каменный {алтарь}. ]];
 
    act = [[Серый каменный алтарь. Навьяры тщательно очищают его от светящихся водорослей, покрывающих остальные поверхности храма. Ничего примечательного если не считать того, что это почти идеально ровный параллелепипед. ]];
 
}
 

	
 
ven_ahall_altar = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_qhall_altar';
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[В центре помещения установлен массивный каменный {алтарь}. ]];
 
        else
 
            return [[В центре помещения установлен массивный каменный алтарь. В нижней его части расположено едва заметное {углубление}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            return [[Серый каменный алтарь. Навьяры тщательно очищают его от светящихся водорослей, покрывающих остальные поверхности храма. Ничего примечательного если не считать того, что это почти идеально ровный параллелепипед. В нижней части алтаря расположено едва заметное углубление. ]];
 
        elseif s.state == 1 then
 
            s.state = 2;
 
            ven_temple_pedestal:enable();
 
            return [[Вы протискиваете в углубление руку и сдвигаете там что-то. Слышите скрежет, доносящийся из главного зала. ]];
 
        else
 
            return [[Вам здесь больше нечего делать. ]];
 
        end;
 
    end;
 
}
 

	
 
ven_item_tablet = obj {
 
    nam = "ven_item_tablet";
 
    disp = "Табличка";
 
    inv = [[Металлическая табличка с рисунком, изображающим навьяра и человека, пожимающих друг другу руки. Человек изображен без скафандра. Навьяр изображен одетым в черный облегающий костюм, человек же одет как простой средневековый рыбак. Вдоль верхнего и нижнего края таблички расположены ровными рядами небольшие круглые отверстия. ]];
 
    tak = [[Вы забираете табличку. ]];
 
};
journey_venaedanotrr_labyrinth.lua
Show inline comments
 
@@ -199,31 +199,28 @@ ven_temple_labyrinth_l1 = labyrinth {
 
        position = "03";
 
        lock1 = true;
 
        lock2 = true;
 
        lock3 = true;
 
    };
 
    dir1 = "На север";
 
    dir2 = "На восток";
 
    dir3 = "На юг";
 
    dir4 = "На запад";
 
    ex = "Выйти";
 
    nam = "Венаэданотр, храм, лабиринт";
 
    dsc = function(s)
 
        --if true then
 
        --    return tostring(s.position);
 
        --end;
 
        if (s.map[s.position].name) then
 
            return s.map[s.position].name;
 
        else
 
            return [[Вы стоите посреди запутанного лабиринта. Металлические стены по сторонам здесь ничем не отличаются от стен в других коридорах этого лабиринта. ]];
 
            return [[Вы стоите посреди запутанного лабиринта. Металлические стены по сторонам здесь ничем не отличаются от стен в других коридорах этого лабиринта. Пол и потолок излучают мягкий белый свет. ]];
 
        end;
 
    end;
 
    enter = function(s)
 
        if (exist(ven_shark, s) and ven_shark.active) then
 
            local no = s.map[ven_shark.position].e1;
 
            local ea = s.map[ven_shark.position].e2;
 
            local so = s.map[ven_shark.position].e3;
 
            local we = s.map[ven_shark.position].e4;
 
            if (no and s.oldposition == no or no and s.position == no) then
 
                walk(game_over_eaten_by_shark);
 
            end;
 
            if (no and s.oldposition == s.map[no].e1) then
 
@@ -289,31 +286,29 @@ ven_temple_labyrinth_l1 = labyrinth {
 
                    move(ven_chest, s);
 
                end;
 
            end;
 
            exit = function(s)
 
                remove(ven_chest, s);
 
            end;
 
        };
 
        ["02"] = {
 
            e1 = "12";
 
            e2 = "03";
 
        };
 
        ["03"] = { 
 
            name = [[
 
                Вы стоите у входа в храм. 
 
            ]];
 
            name = [[Вы стоите у лестницы, ведущей вниз, к главному помещению храма. Со всех сторон вас окружают металлические стены. Пол и потолок сделаны из странного светящегося материала, твердого на ощупь. ]];
 
            e1 = "13";
 
            e2 = "04";
 
            e4 = "02";
 
            ex = "ven_temple_entrance";
 
            ex = "ven_temple_qhall";
 
            e1lock = function(s)
 
                return lock03;
 
            end;
 
        };
 
        ["04"] = {
 
            e1 = "14",
 
            e2 = "05",
 
            e4 = "03"
 
        };
 
        ["05"] = {
 
            e1 = "15",
 
            e2 = "06",
 
@@ -818,133 +813,123 @@ ven_chest_ring4 = kh_vobj("ven_chest_ring4", "{Повернуть четвертое кольцо.}^", function(s)
 
        here().state[4] = 0;
 
    end;
 
    local t = "Вы поворачиваете кольцо на одно деление. ";
 
    if (here():checkLock()) then
 
        t = t .. "Вы слышите легкий щелчок. ";
 
    end;
 
    return t;
 
end);
 
        
 
ven_chest_open = kh_vobj("ven_chest_open", "{Открыть сундук.}^", function(s)
 
    if (not here().taken) then
 
        here().taken = true;
 
        take(item_ven_temple_key_1);
 
        take(ven_item_temple_key_1);
 
        return "В сундуке вы находите металлический ключ. ";
 
    else
 
        return "Сундук пуст";
 
    end;
 
end):disable();
 

	
 
ven_chest_away = kh_vobj("ven_chest_away", "{Отойти от сундука.}^", function(s)
 
    back();
 
end);
 

	
 
ven_first_lock = obj {
 
    nam = "ven_first_lock";
 
    dsc = "В двери вы видите {замочную скважину}. ";
 
    used = function(s, o)
 
        print "fuckersaurus"
 
        if (o == item_ven_temple_key_1) then
 
            remove(item_ven_temple_key_1, pl);
 
        if (o == ven_item_temple_key_1) then
 
            remove(ven_item_temple_key_1, pl);
 
            ven_temple_labyrinth_l1.lock1 = false;
 
            path('e3'):enable();
 
            return "Вы открываете дверь. ";
 
        end;
 
        return "Это сюда не подходит. ";
 
    end;
 
};
 

	
 
ven_lever = obj {
 
    nam = "ven_lever";
 
    dsc = "В южной стене расположен небольшой {рычаг}. ";
 
    act = function(s)
 
        ven_temple_labyrinth_l1.lock2 = not ven_temple_labyrinth_l1.lock2;
 
        return "Вдалеке вы слышите скрежет металла. ";
 
    end;
 
}
 
        
 
ven_second_lock = obj {
 
    nam = "ven_second_lock";
 
    dsc = "В двери вы видите {замочную скважину}. ";
 
    used = function(s, o)
 
        if (o == item_ven_temple_key_2) then
 
            remove(item_ven_temple_key_2, pl);
 
        if (o == ven_item_temple_key_2) then
 
            remove(ven_item_temple_key_2, pl);
 
            ven_temple_labyrinth_l1.lock3 = false;
 
            path('e4'):enable();
 
            return "Вы открываете дверь. ";
 
        end;
 
        return "Это сюда не подходит. ";
 
    end;
 
};
 
        
 
ven_cache = obj {
 
    var {
 
        state = 0
 
    };
 
    nam = "ven_cache";
 
    dsc = function(s)
 
        if (s.state >= 1) then
 
            return [[
 
                В южной стене открыта {выемка}.
 
            ]];
 
            return [[В южной стене открыта {выемка}. ]];
 
        else
 
            return [[
 
                В южной стене имеется небольшую {прорезь}.
 
            ]];
 
            return [[В южной стене имеется небольшую {прорезь}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (s.state == 1) then
 
            s.state = 2;
 
            move(item_ven_temple_key_2, pl);
 
            return [[
 
                В выемке вы находите ключ. 
 
            ]];
 
            move(ven_item_temple_key_2, pl);
 
            return [[В выемке вы находите ключ. ]];
 
        end;
 
    end;
 
    used = function(s, o)
 
        if (s.state == 0) then
 
            if (o == item_ven_tablet) then
 
            if (o == ven_item_tablet) then
 
                s.state = 1;
 
                remove(item_ven_tablet, pl);
 
                remove(ven_item_tablet, pl);
 
                return "Пластинка легко уходит вглубь прорези. Вы слышите щелчок и в стене открывается выемка, в которой лежит ключ. ";
 
            end;
 
        end;
 
    end;
 
};
 

	
 
ven_skeleton = obj {
 
    nam = "ven_skeleton";
 
    dsc = [[
 
        У одной из стен вы видите {скелет навьяра}. 
 
    ]];
 
    act = [[
 
        Этот скелет очень старый. 
 
    ]];
 
};
 

	
 
item_ven_temple_key_1 = obj {
 
    nam = "item_ven_temple_key_1";
 
ven_item_temple_key_1 = obj {
 
    nam = "ven_item_temple_key_1";
 
    disp = "Ключ из храма";
 
    dsc = [[
 
        Металлический ключик, найденный вами в храме Венаэданотра.
 
    ]];
 
    dsc = [[Металлический ключик, найденный вами в храме Венаэданотра. ]];
 
};
 
        
 
item_ven_temple_key_2 = obj {
 
    nam = "item_ven_temple_key_2";
 
ven_item_temple_key_2 = obj {
 
    nam = "ven_item_temple_key_2";
 
    disp = "Ключ из тайника";
 
    dsc = [[
 
        Металлический ключик, найденный вами в тайнике в храме Венаэданотра.
 
    ]];
 
    dsc = [[Металлический ключик, найденный вами в тайнике в храме Венаэданотра. ]];
 
}
 

	
 
item_ven_spear = obj {
 
    var {
 
        taken = false;
 
    };
 
    nam = "item_ven_spear";
 
    disp = "Копье";
 
    dsc = [[
 
        В правой руке скелета вы видите {коралловое копье}.
 
    ]];
 
    inv = [[
 
@@ -998,13 +983,13 @@ ven_pedestal = obj {
 
            return [[Пьедестал в центре зала пуст. ]];
 
        else
 
            return [[На пьедестале в центре зала вы видите небольшую металлическую пластину - судя по обозначениям это {фрагмент карты}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if (not s.taken) then
 
            s.taken = true;
 
            item_lse_map.state = item_lse_map.state + 1;
 
            return [[Вы забираете фрагмент карты себе. ]];
 
        end;
 
    end;
 
};
 
\ No newline at end of file
 
};
startup.lua
Show inline comments
 
@@ -158,29 +158,28 @@ function init()
 
        table.insert(dt_code, nums[index]);
 
        table.remove(nums, index);
 
    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
 
    table.insert(pl.party, 'learr');
 
    table.insert(pl.party, 'radcliffe');
 
    pl.where = "ven_out_hut";
 
    move("submarine_leviathan", "ven_ravine_entrance");
 
    ven_center.state = 1;
 
    ven_quest_status = 4;
 
    pl.where = "ven_temple_entrance";
 
    move("submarine_leviathan", "ven_temple_entrance");
 

	
 
    char_radcliffe:accompany(true);
 
    char_radcliffe:accompany(false);
 
    char_learr:accompany(true);
 
    take(ven_item_green_key);
 
    take(ven_item_red_key);
 
    take(ven_item_tablet);
 

	
 
    pl.where = "ven_temple_labyrinth_l1";
 
    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;
 
end; 
0 comments (0 inline, 0 general)