|
|
-- TODO (приват) добавить описание шлюза
|
|
|
-- TODO (приват) картинка с дисплея терминала
|
|
|
-- TODO (приват) вменяемое описание цели данного паззла, тексты на навьярском или реалистичное объяснение их понятности персонажу
|
|
|
first_city_airlock_control = room {
|
|
|
nam = "first_city_airlock";
|
|
|
disp = "Комната управления шлюзом центрального зала";
|
|
|
dsc = function (s)
|
|
|
return "Вы находитесь в небольшой комнате. Перед вами расположен дисплей, на котором расположены три вертикальные полосы разной длины. " .. tostring(s.tanks[1]) .. "/" .. tostring(s.tanks[2]) .. "/" .. tostring(s.tanks[3]);
|
|
|
end;
|
|
|
tanks = {10, 0, 0};
|
|
|
tanks_capacity = {10, 7, 3};
|
|
|
selected_source = nil;
|
|
|
selected_target = nil;
|
|
|
detect = function(s)
|
|
|
if (tanks[2] == 5) then
|
|
|
return true;
|
|
|
else
|
|
|
return false;
|
|
|
end;
|
|
|
end;
|
|
|
obj = {
|
|
|
"first_city_transfer",
|
|
|
"first_city_select_s",
|
|
|
"first_city_select_p",
|
|
|
"first_city_select_a"
|
|
|
};
|
|
|
};
|
|
|
|
|
|
first_city_transfer = obj {
|
|
|
nam = "first_city_transfer";
|
|
|
dsc = "{Выполнить} ^";
|
|
|
act = function(s)
|
|
|
if (first_city_airlock_control.selected_source and first_city_airlock_control.selected_target) then
|
|
|
local tmp = math.min(first_city_airlock_control.tanks[first_city_airlock_control.selected_source], first_city_airlock_control.tanks_capacity[first_city_airlock_control.selected_target] - first_city_airlock_control.tanks[first_city_airlock_control.selected_target]);
|
|
|
first_city_airlock_control.tanks[first_city_airlock_control.selected_source] = first_city_airlock_control.tanks[first_city_airlock_control.selected_source] - tmp;
|
|
|
first_city_airlock_control.tanks[first_city_airlock_control.selected_target] = first_city_airlock_control.tanks[first_city_airlock_control.selected_target] + tmp;
|
|
|
first_city_airlock_control.selected_source = nil;
|
|
|
first_city_airlock_control.selected_target = nil;
|
|
|
return "Выполнено";
|
|
|
else
|
|
|
return "Невозможно выполнить";
|
|
|
end;
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
first_city_select_s = obj {
|
|
|
nam = "first_city_select_s";
|
|
|
dsc = "{Выбрать первый баллон} ^";
|
|
|
act = function(s)
|
|
|
if (not first_city_airlock_control.selected_source) then
|
|
|
first_city_airlock_control.selected_source = 1;
|
|
|
else
|
|
|
first_city_airlock_control.selected_target = 1;
|
|
|
end;
|
|
|
|
|
|
return "";
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
first_city_select_p = obj {
|
|
|
nam = "first_city_select_p";
|
|
|
dsc = "{Выбрать второй баллон} ^";
|
|
|
act = function(s)
|
|
|
if (not first_city_airlock_control.selected_source) then
|
|
|
first_city_airlock_control.selected_source = 2;
|
|
|
else
|
|
|
first_city_airlock_control.selected_target = 2;
|
|
|
end;
|
|
|
|
|
|
return "";
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
first_city_select_a = obj {
|
|
|
nam = "first_city_select_a";
|
|
|
dsc = "{Выбрать третий баллон} ^";
|
|
|
act = function(s)
|
|
|
if (not first_city_airlock_control.selected_source) then
|
|
|
first_city_airlock_control.selected_source = 3;
|
|
|
else
|
|
|
first_city_airlock_control.selected_target = 3;
|
|
|
end;
|
|
|
|
|
|
return "";
|
|
|
end;
|
|
|
};
|
|
|
|
|
|
first_city_inner_south = room {
|
|
|
nam = "first_city_inner_south";
|
|
|
disp = "Лсэрианотр, внутреннее кольцо, юг";
|
|
@@ -47,6 +134,11 @@ first_city_inner_north = room {
|
|
|
east = "first_city_inner_east";
|
|
|
west = "first_city_inner_west";
|
|
|
navigatable = true;
|
|
|
entered = function(s)
|
|
|
if (first_city_airlock_control.detect(first_city_airlock_control)) then
|
|
|
path("first_city_to_center"):enable();
|
|
|
end;
|
|
|
end;
|
|
|
dsc = [[
|
|
|
Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру.
|
|
|
]];
|
|
@@ -54,8 +146,8 @@ first_city_inner_north = room {
|
|
|
Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру.
|
|
|
]];
|
|
|
way = {
|
|
|
vroom("Центр города", "first_city_central_room_entrance");
|
|
|
vroom("Левиафан", "leviathan_airlock");
|
|
|
kh_vroom("Центр города", "first_city_central_room_entrance", "first_city_to_center"):disable();
|
|
|
kh_vroom("Левиафан", "leviathan_airlock");
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -63,8 +155,7 @@ first_city_central_room_entrance = room
|
|
|
nam = "first_city_central_room_entrance";
|
|
|
disp = "Лсэрианотр, Вход в центральный зал";
|
|
|
dsc = [[
|
|
|
Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом.
|
|
|
Отсюда пути назад уже нет.
|
|
|
Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом. Отсюда пути назад уже нет.
|
|
|
]];
|
|
|
obj = {
|
|
|
vway("Центральный зал", "{Вперед}", "final_scene_before_battle");
|