Changeset - 7b031c50917a
[Not reviewed]
default
0 3 0
Silverwing - 6 years ago 2019-01-04 12:56:46

chapter 2: deep temple code now retrievable
3 files changed with 22 insertions and 16 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -638,205 +638,215 @@ item_venaedanotrr_map = obj {
 
 
item_navjiarr_chart_iraa = obj {
 
	nam = "item_navjiarr_chart_iraa";
 
	disp = "Карта из Ираафаанотра";
 
	dsc = [[На полу в углу валяется какой-то {предмет}. ]];
 
	tak = [[Вы поднимаете предмет. Это небольшая металлическая табличка. ]];
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_navjiarr_chart_dyp = obj {
 
	nam = "item_navjiarr_chart_dyp";
 
	disp = "Карта из Дипатреанотра";
 
	dsc = [[На пьедестале лежит металлическая табличка. ]];
 
	tak = function(s)
 
		path("Выйти из храма"):enable();
 
		return [[Как только вы подбираете табличку, дверь открывается. ]];
 
	end;
 
	inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_navjiarr_chart_ven = obj {
 
    nam = "item_navjiarr_chart_ven";
 
    disp = "Карта из Венаэданотра";
 
    inv = [[Металлическая табличка с нанесенными обозначениями. ]];
 
}
 
 
item_navjiarr_cube = obj {
 
	nam = "item_navjiarr_cube";
 
	disp = "Навьярский артефакт";
 
	inv = [[Небольшой прозрачный куб, очень холодный на ощупь. Холод ощущается даже в скафандре. От него исходит слабое свечение. ]];
 
};
 
 
item_talk_device = obj {
 
	nam = "item_talk_device";
 
	disp = "Устройство для общения с навьярами";
 
	inv = [[Небольшое устройство с клавиатурой и большим количеством цветных лампочек. Оно полностью герметично и может быть использовано под водой. ]];
 
};
 
 
item_suit = suit {
 
	dlg = "call_leviathan";
 
	nam = "Скафандр";
 
    has_coder = true;
 
};
 
 
item_deep_key = obj {
 
    nam = "item_deep_key";
 
    disp = "Пирамидка";
 
    dsc = [[На пьедестале вы видите небольшой блестящий {предмет}. ]];
 
    inv = [[Небольшая полупрозрачная пирамидка из неизвестного материала. Гладкая и холодная на ощупь. На гранях пирамидки нанесены непонятные символы. ]];
 
    tak = [[Небольшая полупрозрачная пирамидка. Вы забираете ее себе. ]];
 
};
 
 
item_navjiarr_chart_z = obj {
 
    nam = "item_navjiarr_chart_z";
 
    disp = "Навьярская табличка";
 
    dsc = [[На пьедестале лежит небольшая металлическая {табличка}. ]];
 
    tak = function(s)
 
        return [[Вы поднимаете предмет. Это небольшая металлическая табличка. Вдалеке вы слышите скрежет камней -- дверь храма снова открыта. ]];
 
    end;
 
    inv = [[Металлическая табличка, на которую нанесены странные обозначения. ]];
 
};
 
 
item_naethvjirr_key = obj {
 
    nam = "item_naethvjirr_key";
 
    disp = "Ключ из древнего храма";
 
    dsc = [[На пьедестале лежит небольшая прозрачная {коробочка}, внутрь которой заключена прямоугольная пластинка из неизвестного материала. ]];
 
    inv = [[Небольшая прозрачная {коробочка}, внутрь которой заключена прямоугольная пластинка из неизвестного материала. Пластинка с обеих сторон покрыта тонкими металлическими нитями. ]];
 
};
 
 
item_dynamo = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "item_dynamo";
 
    disp = function(s)
 
        if s.state == 0 then
 
            return "Ручная динамо-машина";
 
        else
 
            return "Детали динамо-машины";
 
        end;
 
    end;
 
    dsc = [[На одном из столов лежит небольшая {коробочка} с вращающейся рукояткой. ]];
 
    inv = function(s)
 
        if s.state == 0 then
 
            return [[Небольшая динамо-машина с рукояткой и клеммами для подключения к электрической цепи. При вращении рукоятки вырабатывается электрический ток. ]];
 
        else
 
            return [[Разобранная динамо-машина. ]];
 
        end;
 
    end;
 
    tak = [[Вы забираете динамо-машину. ]];
 
    used = function(s, o)
 
        if s.state == 0 then
 
            if o == item_toolbox then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 1;
 
                    return [[Вы разбираете динамо-машину. ]];
 
                end;
 
            end;
 
        elseif s.state == 1 then
 
            if o == item_electric_lamp and item_electric_lamp.state == 1 then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    item_electric_lamp.state = 2;
 
                    remove(s, pl);
 
                    return [[Вы собираете лампу с динамо-машиной в одном корпусе. Теперь батарею можно заряжать не разбирая лампу. Вождь навьяров будет рад такому подарку. ]]
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 
 
item_electric_lamp = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = "item_electric_lamp";
 
    disp = function(s)
 
        if s.state == 0 then
 
            return "Лампа";
 
        elseif s.state == 1 then
 
            return "Разобранная лампа";
 
        elseif s.state == 2 then
 
            return "Лампа с динамо-машиной";
 
        end;
 
    end;
 
    dsc = [[В шкафу лежат на полках {лампы}, предназначенные для монтирования на скафандры. ]];
 
    inv = function(s)
 
        if s.state == 0 then
 
            return "Электрическая лампа в герметичном корпусе, содержащем саму лампу и батарею для ее питания. Батареи хватит примерно на полчаса-час работы. ";
 
        elseif s.state == 1 then
 
            return "Детали электрической лампы: Корпус, лампа, батарея. ";
 
        elseif s.state == 2 then
 
            return "Электрическая лампа в герметичном корпусе, содержащем саму лампу, батарею для ее питания и динамо-машину. Батареи хватит примерно на полчаса-час работы. Покрутите рукоятку чтобы зарядить батарею. ";
 
        end;
 
    end;
 
    tak = "Вы забираете одну из ламп. ";
 
    used = function(s, o)
 
        if s.state == 0 then
 
            if o == item_toolbox then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 1;
 
                    return [[Вы разбираете лампу. ]];
 
                end;
 
            end;
 
        elseif s.state == 1 then
 
            if o == item_dynamo and item_dynamo.state == 1 then
 
                if here().underwater then
 
                    return [[Вы не можете сделать это здесь. ]];
 
                else
 
                    s.state = 2;
 
                    remove(item_dynamo, pl);
 
                    return [[Вы собираете лампу с динамо-машиной в одном корпусе. Теперь батарею можно заряжать не разбирая лампу. Вождь навьяров будет рад такому подарку. ]]
 
                end;
 
            end;
 
        end;
 
    end;
 
};
 
 
item_shark_tooth = obj {
 
    nam = "item_shark_tooth";
 
    disp = "Зуб акулы";
 
    dsc = [[{Мертвая акула} лежит здесь, пронзенная вашим гарпуном. ]];
 
    inv = [[Острый зуб кровожадной акулы, жившей у храма Ираафаанотра. ]];
 
    tak = [[Вы вырываете у акулы из пасти зуб и забираете его себе. ]];
 
};
 
 
item_raybox = obj {
 
	nam = 'item_raybox';
 
	disp = 'Коробочка лучей';
 
	dsc = function(s)
 
		if stead.deref(here()) == 'ven_ravine_crypt' then
 
			return [[Среди множества приборов, расположенных вдоль стен комнаты, ваше внимание привлекает небольшая прозрачная {коробочка} с несколькими прорезями. Внутри ее непрерывно движутся тонкие лучики света. ]];
 
		else
 
			return [[В центре стола, опутанная паутиной проводов, установлена {коробочка лучей}. Внутри нее, в точности как там, в навьярском хранилище, движутся тонкие лучики света. ]];
 
		end;
 
	end;
 
	inv = [[Навьярский прибор, известный вам как "коробочка лучей". Осталось научиться пользоваться им. ]];
 
	act = function(s)
 
		if stead.deref(here()) == 'ven_ravine_crypt' then
 
			remove(item_raybox, where(item_raybox));
 
			take(item_raybox, pl);
 
			return [[Вы аккуратно извлекаете "коробочку лучей" из механизма, в который она установлена. Светящиеся линии в ее недрах мгновенно гаснут. ]];
 
		end;
 
	end;
 
	used = function(s, o)
 
		if o == item_map_disc then
 
			deep_temple_found = true;
 
			remove(item_map_disc, pl);
 
			return [[Вы помещаете диск внутрь коробочки и он тут же опутывается лучами, которые начинают отражаться от него. Над поверхностью коробочки возникает полупрозрачное изображение -- это очень детальная навьярская карта, описывающая какое-то место, находящееся очень далеко отсюда. Цветные полосы, возникшие над изображением гласят "храм". ]];
 
		end;
 
	end
 
}
 
 
item_map_disc = obj {
 
	nam = "item_temple_disk";
 
	disp = "Светодиск из катакомб";
 
	dsc = [[У стены лежит небольшой блестящий {диск}. ]];
 
	tak = [[Вы поднимаете диск. ]];
 
	inv = [[Найденный в катакомбах Нлейисланотра блестящий гладкий диск из неизвестного материала. Диаметр около 10 сантиметров. В центре небольшое треугольное отверстие. Вдоль внешней кромки тянутся цветные полосы. ]];
 
	inv = function(s)
 
		local dt ='';
 
 
		for i = 1, #dt_code do
 
			dt = dt .. dt_wire_colors[dt_code[i]];
 
			if i < #dt_code then
 
				dt = dt .. ', ';
 
			end;
 
		end;
 
 
		return([[Найденный в катакомбах Нлейисланотра блестящий гладкий диск из неизвестного материала. Диаметр около 10 сантиметров. В центре небольшое треугольное отверстие. Вдоль внешней кромки тянутся цветные полосы: ]] .. dt .. [[. ]]);
 
	end;
 
}
 
\ No newline at end of file
journey_temple.lua
Show inline comments
 
@@ -436,495 +436,490 @@ dt_temple_ravine = room {
 

	
 
dt_temple_bridge1 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple_bridge1";
 
    disp = "Мост над пропастью";
 
    dsc = [[Вы ступаете на хлипкий мостик. Камни ходят ходуном под вашими ногами, и кажется, что слабая конструкция вот вот рухнет, увлекая вас за собой в бездну. ]];
 
    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;
 
    end;
 
    way = {
 
        kh_vroom("В ущелье", "dt_temple_ravine");
 
        kh_vroom("Дальше по мосту", "dt_temple_bridge2");
 
    };
 
};
 

	
 
dt_temple_bridge2 = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = "dt_temple_bridge2";
 
    disp = "Мост над пропастью";
 
    dsc = [[
 
        Вы почти дошли до проема в скале. Вам кажется, что внизу, в бездне движется что-то огромное. 
 
    ]];
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[
 
                    По головным плавникам Леарр бегут цветные полосы: "Что это? Там, внизу".
 
                ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[
 
                    По головным плавникам Фаэтларра бегут цветные полосы: "Ты видишь это, хевьяр?".
 
                ]];
 
            end;
 
        end;
 
    end;
 
    way = {
 
        kh_vroom("К ущелью", "dt_temple_bridge1");
 
        kh_vroom("В проем", "dt_temple_entrance");
 
    };
 
};
 

	
 
dt_temple_entrance = room {
 
    var {
 
        state = 0;
 
        open = false;
 
    };
 
    nam = "dt_temple_entrance";
 
    disp = "У входа в храм";
 
    dsc = function(s)
 
        if (dt_temple_entrance.open) then
 
            return [[
 
                Вы находитесь в небольшом помещении, ярко освещенном лампами в виде длинных трубок. Стены вокруг покрыты навьярскими письменами. Дверь во внутреннее помещение храма открыта. 
 
            ]];
 
        else
 
            return [[
 
                Вы находитесь в небольшом помещении, ярко освещенном лампами в виде длинных трубок. Стены вокруг покрыты навьярскими письменами. Тяжелая дверь во внутреннее помещение храма заблокирована.
 
            ]];
 
        end;
 
    end;
 
    entered = function(s)
 
        if (s.state == 0) then
 
            s.state = 1;
 
            if (char_learr.follow) then
 
                pr [[
 
                    Леарр с интересом рассматривает древние письмена. По ее головным плавникам бегут цветные полосы: "Потрясающе! Это слова наших предков. Тех, кто видел Лсэрианотр собственными глазами, а может даже и самих создателей Спящего в Глубинах!".
 
                ]];
 
            end;
 
            if (char_phaetlarr.follow) then
 
                pr [[
 
                    Фаэтларр бегло осматривает письмена: "Кажется, Дрейк кое-что упустил. Хорошо, что мы здесь хевьяр".
 
                ]];
 
            end;
 
        end;
 
    end;
 
    obj = {
 
        "dt_terminal",
 
        "dt_wires"
 
        
 
    };
 
    way = {
 
        kh_vroom("К ущелью", "dt_temple_bridge2");
 
        kh_vroom("В храм", function(s)
 
            if (dt_temple_entrance.open) then
 
                return "dt_temple";
 
            else
 
                pr [[Дверь заперта. ]];
 
                return false;
 
            end;
 
        end);
 
    };
 
};
 

	
 
dt_terminal = obj {
 
    nam = "dt_terminal";
 
    dsc = [[Рядом с дверью расположен небольшой {пульт} с шестью кнопками и светящимся экраном. ]];
 
    act = function(s)
 
        walkin("dt_terminal_room");
 
    end;
 
};
 

	
 
dt_wires = obj {
 
    nam = "dt_wires";
 
    dsc = [[Под пультом вы видите открытую {панель} с какими-то проводами. ]];
 
    act = function(s)
 
        walkin("dt_wires_room");
 
    end;
 
};
 

	
 
dt_terminal_room = room {
 
    var {
 
        code = {};
 
    };
 
    not_follow = true;
 
    nam = "dt_terminal_room";
 
    disp = "У входа в храм, пульт";
 
    forcedsc = true;
 
    dsc = function(s)
 
        local r = "";
 
        if (#s.code == 0) then
 
            r = "Вы стоите перед небольшим пультом. На экране пусто. ";
 
        else
 
            r = "Вы стоите перед небольшим пультом. На экране вы видите следующую последовательность цветов: ";
 
            for i = 1, #s.code - 1 do
 
                r = r .. dt_wire_colors[s.code[i]] .. ", ";
 
            end;
 
            r = r .. dt_wire_colors[s.code[#s.code]] .. ". ";
 
        end;
 
        r = r .. "Под экраном расположены шесть кнопок. "
 
        return r;
 
    end;
 
    way = {
 
        kh_vroom("Отойти от терминала", "dt_temple_entrance");
 
    };
 
    obj = {
 
        "dt_term1",
 
        "dt_term2",
 
        "dt_term3",
 
        "dt_term4",
 
        "dt_term5",
 
        "dt_term6"
 
    };
 
    check = function(s)
 
        if (#s.code == 4) then
 
            local test = true;
 
            for i = 1, #s.code do
 
                test = test and (s.code[i] == dt_code[i]);
 
            end;
 
            s.code = {};
 
            if (test) then
 
                dt_temple_entrance.open = true;
 
                pr [[ Через несколько мгновений дисплей гаснет. Дверь открывается почти бесшумно, открывая вам доступ к внутреннему залу древнего святилища. ]];
 
            else
 
                pr [[ Через несколько мгновений дисплей гаснет. ]];
 
            end;
 
        end;
 
    end;
 
};
 

	
 
dt_term1 = obj {
 
    nam = "dt_term1";
 
    dsc = "{Нажать фиолетовую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 1) ~= 0 or not dt_wires_room.connections[1]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[1]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_term2 = obj {
 
    nam = "dt_term2";
 
    dsc = "{Нажать синюю кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 2) ~= 0 or not dt_wires_room.connections[2]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[2]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_term3 = obj {
 
    nam = "dt_term3";
 
    dsc = "{Нажать зеленую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 3) ~= 0 or not dt_wires_room.connections[3]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[3]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_term4 = obj {
 
    nam = "dt_term4";
 
    dsc = "{Нажать желтую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 4) ~= 0 or not dt_wires_room.connections[4]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[4]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_term5 = obj {
 
    nam = "dt_term5";
 
    dsc = "{Нажать оранжевую кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 5) ~= 0 or not dt_wires_room.connections[5]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[5]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_term6 = obj {
 
    nam = "dt_term6";
 
    dsc = "{Нажать красную кнопку}^";
 
    act = function(s)
 
        if (ArrayUtils.indexOf(dt_buttons, 6) ~= 0 or not dt_wires_room.connections[6]) then
 
            return "Вы нажимаете на кнопку, но ничего не происходит. ";
 
        else
 
            table.insert(dt_terminal_room.code, dt_wires_room.connections[6]);
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
            dt_terminal_room:check();
 
            pr "Вы нажимаете на кнопку, и на экране зажигается соответствующая ей цветная полоса. ";
 
        end;
 
    end;
 
};
 

	
 
dt_wire_colors = {
 
    "фиолетовый",
 
    "синий",
 
    "зеленый",
 
    "желтый",
 
    "оранжевый",
 
    "красный"
 
};
 

	
 
dt_wires_room = dlg {
 
    var {
 
        connections = {
 
            1,
 
            2,
 
            3,
 
            4,
 
            5,
 
            6
 
        };
 
        selected = nil;
 
    };
 
    not_follow = true;
 
    nam = "dt_wires_room";
 
    disp = "У входа в храм, панель";
 
    dsc = [[
 
        Перед вами открытая панель, за которой находятся шесть проводов, подключенные к своим разъемам. Провода отличаются цветами. 
 
    ]]; 
 
    choose_socket = function(s)
 
        pon("s0");
 
        pon("s1");
 
        pon("s2");
 
        pon("s3");
 
        pon("s4");
 
        pon("s5");
 
        for conn = 1, #dt_wires_room.connections do
 
        pon("s0", "s1", "s2", "s3", "s4", "s5");
 
        for conn = 1, 6 do
 
            if (dt_wires_room.connections[conn] == 1) then
 
                poff("s0");
 
            elseif (dt_wires_room.connections[conn] == 2) then
 
                poff("s1");
 
            elseif (dt_wires_room.connections[conn] == 3) then
 
                poff("s2");
 
            elseif (dt_wires_room.connections[conn] == 4) then
 
                poff("s3");
 
            elseif (dt_wires_room.connections[conn] == 5) then
 
                poff("s4");
 
            elseif (dt_wires_room.connections[conn] == 6) then
 
                poff("s5");
 
            end;
 
        end;
 
        psub("socket");
 
    end;
 
    phr = { 
 
        {tag="wire"};
 
        {
 
            tag = "w0", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[1]] .. " разъем";
 
                    return "Отсоединить фиолетовый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать фиолетовый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[1] ~= nil) then
 
                    dt_wires_room.connections[1] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 1;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w1", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[2]] .. " разъем";
 
                    return "Отсоединить синий провод (".. connect .. ")";
 
                else
 
                    return "Выбрать синий провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[2] ~= nil) then
 
                    dt_wires_room.connections[2] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 2;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w2", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[3]] .. " разъем";
 
                    return "Отсоединить зеленый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать зеленый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[3] ~= nil) then
 
                    dt_wires_room.connections[3] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 3;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w3", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[4]] .. " разъем";
 
                    return "Отсоединить желтый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать желтый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[4] ~= nil) then
 
                    dt_wires_room.connections[4] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 4;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w4", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[5]] .. " разъем";
 
                    return "Отсоединить оранжевый провод (".. connect .. ")";
 
                else
 
                    return "Выбрать оранжевый провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[5] ~= nil) then
 
                    dt_wires_room.connections[5] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 5;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "w5", always = true, 
 
            function(s)
 
                local connect = "не подключен";
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                    connect = dt_wire_colors[dt_wires_room.connections[6]] .. " разъем";
 
                    return "Отсоединить красный провод (".. connect .. ")";
 
                else
 
                    return "Выбрать красный провод (".. connect .. ")";
 
                end;
 
                
 
            end, function(s)
 
                if (dt_wires_room.connections[6] ~= nil) then
 
                    dt_wires_room.connections[6] = nil;
 
                    return "Вы отсоединяете провод";
 
                else
 
                    dt_wires_room.selected = 6;
 
                    dt_wires_room:choose_socket();
 
                    return "Куда подключить?";
 
                end;
 
            end
 
        };
 
        {
 
            tag = "leave", always = true, "Отойти от панели", code = [[ walk("dt_temple_entrance"); ]]
 
        };
 
        {tag="socket"};
 
        {
 
            tag = "s0", always = true,
 
            "В фиолетовый разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 1;
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
        {
 
            tag = "s1", always = true,
 
            "В синий разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 2;
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
        {
 
            tag = "s2", always = true,
 
            "В зеленый разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 3;
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
        {
 
            tag = "s3", always = true,
 
            "В желтый разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 4;
 
                psub("wire");
 
                return "Провод подключен";
 
            end
 
        };
 
        {
 
            tag = "s4", always = true,
 
            "В оранжевый разъем", function(s)
 
                dt_wires_room.connections[dt_wires_room.selected] = 5;
 
                psub("wire");
 
                return "Провод подключен";
startup.lua
Show inline comments
 
global {
 
    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;
 

	
 
    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;
 

	
 
    --Глобальные состояния(для концовок)
 
    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_scepter = 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 here().noautosave then
 
        return false;
 
    end;
 
    return true;
 
end;
 

	
 

	
 
player_drake = player {
 
    var {
 
        hp = 10;
 
        has_light = false;
 
        party = {};
 
        companion = nil;
 
        money = 200;
 
    };
 
    nam = "player";
 
    disp = "Дэвид Дрейк";
 
    disp2 = "Дрейка";
 
    disp3 = "Дрейку";
 
    where = 'port';
 
    
 
    obj = {'hp_indicator', 'item_umbrella', '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;
 
    disp = "Вступление";
 
    dsc = [[
 
        Действие игры происходит в конце 19-го века. Вы играете за Дэвида Дрейка -- единственного сына богатого и уважаемого владельца транспортной компании "Вестхейвен Трансоушен". ^
 
        Несколько лет назад, когда Дэвиду было 10 лет, Уильям таинственным образом бесследно пропал. Полицейское расследование вскоре зашло в тупик и было прекращено. Через несколько месяцев компания, оставшаяся без своего владельца, обанкротилась, ее имущество распродается. ^
 
        После исчезновения отца Дэвид жил в Вашингтоне с бабушкой. Он пошел по стопам отца и выучился на инженера-кораблестроителя. Несколько дней назад в доме, где он жил, был обнаружен тайник, хранящий секретные документы отца -- карты, указывающие, по-видимому, на какие-то тайники Уильяма и записка с адресом и именем.^
 
        Одержимый идеей узнать больше, Дэвид отправляется в Лондон...
 
    ]];
 
    obj = {
 
        vway("Начать игру", "{Начать игру}", '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: Если вы видите это сообщение -- это баг. ";
 

	
 
preview_unavailable_learr = game_over("preview_unavailable_learr", [[Спасти Леарр у обитателей Атлантиды не получилось. Гибель навьярессы поставила под угрозу многое, чего удалось добиться персоналу станции за долгие годы под водой. ^^Узнать, что произошло дальше, вы сможете в полной версии игры.^^Вы можете загрузить игру и попробовать спасти Леарр самостоятельно. ^^Мы ждем ваших отзывов на почту: inbox@silverwing.one^Следите за выходом новых версий на нашем сайте: awakening.silverwing.one]]);
 

	
 
preview_unavailable_rayfish = game_over("preview_unavailable_rayfish", [[Убив ската, вы восстанавливаете против себя всех навьяров из Дипатреанотра и Ираафаанотра. В ваших дальнейших поисках вам придется рассчитывать только на себя.^^Узнать, что произошло дальше, вы сможете в полной версии игры.^^Вы можете загрузить игру и попробовать обойтись без убийства ската. ^^Мы ждем ваших отзывов на почту: inbox@silverwing.one^Следите за выходом новых версий на нашем сайте: awakening.silverwing.one]]);
 

	
 
preview_unavailable_venaedanotrr = cutscene("preview_unavailable_venaedanotrr", "Предварительная версия", [[Левиафан полным ходом несется вдаль, к невиданным доселе навьярским поселениям. Кто знает, какие приключения ждут вас и остальных членов экипажа субмарины?^^Узнать, что произошло дальше, вы сможете в полной версии игры. Если вы не собрали оба фрагмента карты, то вы можете продолжить игру. ^^Мы ждем ваших отзывов на почту: inbox@silverwing.one^Следите за выходом новых версий на нашем сайте: awakening.silverwing.one]], "leviathan_wheelhouse");
 

	
 
preview_unavailable_dypatreanotrr = cutscene("preview_unavailable_dypatreanotrr", "Предварительная версия", [[Вы входите в пещеру в поисках очередного фрагмента карты. Какие испытания предстоит вам преодолеть, прежде, чем вы найдете его? Вы узнаете это в полной версии игры. Если вы не собрали оба фрагмента карты, то вы можете продолжить игру. ^^Мы ждем ваших отзывов на почту: inbox@silverwing.one^Следите за выходом новых версий на нашем сайте: awakening.silverwing.one]], "dyp_temple_cave_entrance");
 

	
 
function init()
 
    ---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]);
 
        table.remove(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
 
    --[[nley_cave_entrance.state = 1;
 
    pl.where = "nley_phaetlarr_dlg_join";
 
    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;]]
 
end; 
0 comments (0 inline, 0 general)