|
@@ -58,7 +58,7 @@ iyh_far_from_entrance = dlg {
|
|
|
var {
|
|
|
visited = false;
|
|
|
};
|
|
|
nam = "Заброшенный храм";
|
|
|
nam = "Левиафан, рубка";
|
|
|
hideinv = true;
|
|
|
entered = function(s)
|
|
|
pr [[
|
|
@@ -84,13 +84,12 @@ iyh_far_from_entrance = dlg {
|
|
|
]], code [[ walk('iyh_wardroom_meeting'); ]]};
|
|
|
{tag="advance", always=true, "[Подойти ближе]", [[
|
|
|
Послушные вашей воле, двигатели Левиафана приводят субмарину в движение и вы плавно приближаетесь ко входу в храм.
|
|
|
]], code [[ walk('iyh_near_entrance'); ]]};
|
|
|
]], code [[ walk('iyh_near_temple'); ]]};
|
|
|
{tag="wait", "[Ждать]", [[
|
|
|
Вы решаете подождать до наступления ночи и это правдывает себя. Как только последние лучи солнца перестают пробиваться сквозь толщу воды, скат выбирается из своего логова и отправляется на охоту.
|
|
|
]], code [[
|
|
|
lifeon(iyh_far_from_entrance);
|
|
|
atl_iyh_shockfish_away = 50;
|
|
|
walk('iyh_near_entrance');
|
|
|
]]};
|
|
|
{tag="light_temple", always=true, "[Осветить вход в храм]", [[
|
|
|
Мощный луч света падает на вход в храм. Вы видите внутри какое-то движение и изнутри выплывает огромный скат.
|
|
@@ -121,6 +120,7 @@ iyh_fight = room {
|
|
|
shockfish_health = 100;
|
|
|
timing = 0;
|
|
|
};
|
|
|
nam = "Левиафан, рубка";
|
|
|
entered = function(s)
|
|
|
s.temple_distance = distance;
|
|
|
s.shockfish_health = 100;
|
|
@@ -419,4 +419,197 @@ iyh_retreat_quarter = obj {
|
|
|
end;
|
|
|
iyh_fight.maketurn();
|
|
|
end;
|
|
|
};
|
|
\ No newline at end of file
|
|
|
};
|
|
|
|
|
|
iyh_ravine_entry = room {
|
|
|
nam = "Левиафан, рубка";
|
|
|
dsc = [[
|
|
|
Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм.
|
|
|
]];
|
|
|
hideinv = true;
|
|
|
way = {
|
|
|
kh_vway("Отойти от штурвала", function(s)
|
|
|
return "leviathan_wheelhouse";
|
|
|
end),
|
|
|
kh_vway("Войти в ущелье", function(s)
|
|
|
iyh_labyrinth.position = 1;
|
|
|
iyh_labyrinth.direction = 1;
|
|
|
return "iyh_labyrinth";
|
|
|
end),
|
|
|
kh_vway("Ко входу в храм", "iyh_near_temple"),
|
|
|
kh_vway("Отойти назад", "iyh_far_from_entrance"),
|
|
|
};
|
|
|
};
|
|
|
|
|
|
--[[
|
|
|
Описание структуры лабиринта. Каждый узел описан в двух направлениях
|
|
|
1 - прямое
|
|
|
2 - обратное
|
|
|
направления обозначены как
|
|
|
l - налево
|
|
|
r - направо
|
|
|
f - прямо
|
|
|
выход описывается одной строкой, невыходы описываются парой "узел+направление"
|
|
|
]]
|
|
|
iyh_labyrinth_template = {
|
|
|
1: {1:{"l":{32, 1}, "r":{2, 1}}, 2:{"f":"iyh_ravine_entry"}};
|
|
|
2: {1:{"f":{3, 1}}, 2:{"f":{1,2}}};
|
|
|
3: {1:{"l":{5, 1}, "f":{4,1}}, 2:{"f":{2,2}}};
|
|
|
4: {1:{}, 2:{"f":{3,2}}};
|
|
|
5: {1:{"l":{37, 1}, "f":{6,1} }, 2:{"f":{3,2}}};
|
|
|
6: {1:{"l":{7,1}, "r":{33, 1}}, 2:{"f":{5,2}}};
|
|
|
7: {1:{"l":{12,1}, "f":{11,1}, "r":{8,1}}, 2:{"f":{6,2}}};
|
|
|
8: {1:{"l":{10,1}, "r":{9,1}}, 2:{"f":{7,2}}};
|
|
|
9: {1:{}, 2:{"f":{8,2}}};
|
|
|
10:{1:{}, 2:{"f":{8,2}, "r":{11,2}}};
|
|
|
11:{1:{"f":{10,1}}, 2:{"f":{7,2}}};
|
|
|
12:{1:{"l":{14,1}, "f":{13,1}}, 2:{"f":{7,2}}};
|
|
|
13:{1:{}, 2:{"f":{12,2}}};
|
|
|
14:{1:{"f":{15,1}, "l":{20,1}}, 2:{"f":{12,2}}};
|
|
|
15:{1:{"l":{17,1}, "r":{16,1}}, 2:{"f":{14,2}}};
|
|
|
16:{1:{}, 2:{"f":{15,2}}};
|
|
|
17:{1:{"l":{19,1}, "r":{18,1}}, 2:{"f":{15,2}}};
|
|
|
18:{1:{}, 2:{"f":{17,2}}};
|
|
|
19:{1:{}, 2:{"f":{17,2}}};
|
|
|
20:{1:{"l":{22,1}, "f":{21,1}}, 2:{"f":{14,2}}};
|
|
|
21:{1:{}, 2:{"f":{20,2}}};
|
|
|
22:{1:{"l":{25,1}, "r":{23,1}}, 2:{"f":{20,2}}};
|
|
|
23:{1:{"l":"iyh_rear_entrance", "r":{24,1}},2:{"f":{22,2}}};
|
|
|
24:{1:{}, 2:{"f":{23,2}}};
|
|
|
25:{1:{"l":{27,1},"r":{26:1}}, 2:{"f":{22,2}}};
|
|
|
26:{1:{}, 2:{"f":{25,2}}};
|
|
|
27:{1:{"l":{30,2}, "f":{29,1}, "r":{28,1}}, 2:{"f":{25,2}}};
|
|
|
28:{1:{}, 2:{"f":{27,2}}};
|
|
|
29:{1:{}, 2:{"f":{27,2}}};
|
|
|
30:{1:{"l":{27,2}, "r":{36,1}}, 2:{"f":{31,2}}};
|
|
|
31:{1:{"l":{30,1}, "r":{35,1}}, 2:{"f":{32,2}}};
|
|
|
32:{1:{"l":{31,1}, "r":{34,1}}, 2:{"f":{1,2}}};
|
|
|
33:{1:{}, 2:{"l":{6,2}, "r":{37,2}}};
|
|
|
34:{1:{}, 2:{"f":{32,2}}};
|
|
|
35:{1:{}, 2:{"f":{31,2}}};
|
|
|
36:{1:{}, 2:{"f":{30,2}}};
|
|
|
37:{1:{"f":{33,1}}, 2:{"f":{5,2}}};
|
|
|
};
|
|
|
|
|
|
iyh_labyrinth = room {
|
|
|
var {
|
|
|
location = 1;
|
|
|
direction = 1;
|
|
|
};
|
|
|
no_exit = [[
|
|
|
Нет смысла покидать Левиафан здесь.
|
|
|
]];
|
|
|
nam = "Лабиринт";
|
|
|
dsc = function(s)
|
|
|
pr [[
|
|
|
Вы находитесь у дна глубокого ущелья.
|
|
|
]];
|
|
|
if (iyh_labyrinth_template[s.location]["f"]) then
|
|
|
pr [[
|
|
|
Ущелье продолжается вперед.
|
|
|
]];
|
|
|
end;
|
|
|
if (iyh_labyrinth_template[s.location]["l"] and iyh_labyrinth_template[s.location]["r"]) then
|
|
|
pr [[
|
|
|
Влево и вправо уходят ответвления.
|
|
|
]];
|
|
|
elseif (iyh_labyrinth_template[s.location]["l"]) then
|
|
|
pr [[
|
|
|
Влево уходит ответвление.
|
|
|
]];
|
|
|
elseif (iyh_labyrinth_template[s.location]["r"]) then
|
|
|
pr [[
|
|
|
Вправо уходит ответвление.
|
|
|
]];
|
|
|
elseif (not iyh_labyrinth_template[s.location]["f"]) then
|
|
|
pr [[
|
|
|
Дальше пути нет.
|
|
|
]];
|
|
|
end;
|
|
|
end;
|
|
|
update = function(s)
|
|
|
end;
|
|
|
obj = {
|
|
|
};
|
|
|
};
|
|
|
|
|
|
iyh_lab_forward = obj {
|
|
|
nam = "iyh_lab_forward";
|
|
|
dsc = "{Вперед}^";
|
|
|
act = function(s)
|
|
|
pr [[
|
|
|
Вы продолжаете движение.
|
|
|
]];
|
|
|
local p = iyh_labyrinth.position;
|
|
|
local d = iyh_labyrinth.direction;
|
|
|
|
|
|
if (type(iyh_labyrinth_template[p][d]) == 'string') then
|
|
|
walk(iyh_labyrinth_template[p][d]);
|
|
|
else
|
|
|
iyh_labyrinth.position = iyh_labyrinth_template[p][d]["f"][1];
|
|
|
iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["f"][2];
|
|
|
end;
|
|
|
|
|
|
iyh_labyrinth:update();
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
iyh_lab_left = obj {
|
|
|
nam = "iyh_lab_left";
|
|
|
dsc = "{Налево}^";
|
|
|
act = function(s)
|
|
|
pr [[
|
|
|
Вы сворачиваете налево.
|
|
|
]];
|
|
|
local p = iyh_labyrinth.position;
|
|
|
local d = iyh_labyrinth.direction;
|
|
|
|
|
|
if (type(iyh_labyrinth_template[p][d]) == 'string') then
|
|
|
walk(iyh_labyrinth_template[p][d]);
|
|
|
else
|
|
|
iyh_labyrinth.position = iyh_labyrinth_template[p][d]["l"][1];
|
|
|
iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["l"][2];
|
|
|
end;
|
|
|
|
|
|
iyh_labyrinth:update();
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
iyh_lab_right = obj {
|
|
|
nam = "iyh_lab_right";
|
|
|
dsc = "{Направо}^";
|
|
|
act = function(s)
|
|
|
pr [[
|
|
|
Вы сворачиваете направо.
|
|
|
]];
|
|
|
local p = iyh_labyrinth.position;
|
|
|
local d = iyh_labyrinth.direction;
|
|
|
|
|
|
if (type(iyh_labyrinth_template[p][d]) == 'string') then
|
|
|
walk(iyh_labyrinth_template[p][d]);
|
|
|
else
|
|
|
iyh_labyrinth.position = iyh_labyrinth_template[p][d]["r"][1];
|
|
|
iyh_labyrinth.direction = iyh_labyrinth_template[p][d]["r"][2];
|
|
|
end;
|
|
|
|
|
|
iyh_labyrinth:update();
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
iyh_lab_turn = obj {
|
|
|
nam = "iyh_lab_turn";
|
|
|
dsc = "{Развернуться}^";
|
|
|
act = function(s)
|
|
|
pr [[
|
|
|
Вы разворачиваете субмарину.
|
|
|
]];
|
|
|
if (iyh_labyrinth.direction == 1) then
|
|
|
iyh_labyrinth.direction = 2;
|
|
|
else
|
|
|
iyh_labyrinth.direction = 1;
|
|
|
end;
|
|
|
|
|
|
iyh_labyrinth:update();
|
|
|
end;
|
|
|
};
|
|
|
|