-- 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 = "Лсэрианотр, внутреннее кольцо, юг"; gate = "first_city_middle_south"; east = "first_city_inner_east"; west = "first_city_inner_west"; navigatable = true; dsc = [[ Вы находитесь в южной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в южной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; }; first_city_inner_east = room { nam = "first_city_inner_east"; disp = "Лсэрианотр, внутреннее кольцо, восток"; south = "first_city_inner_south"; north = "first_city_inner_north"; navigatable = true; dsc = [[ Вы находитесь в восточной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в восточной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; }; first_city_inner_west = room { nam = "first_city_inner_west"; disp = "Лсэрианотр, внутреннее кольцо, запад"; south = "first_city_inner_south"; north = "first_city_inner_north"; navigatable = true; dsc = [[ Вы находитесь в западной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в западной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; }; first_city_inner_north = room { nam = "first_city_inner_north"; disp = "Лсэрианотр, внутреннее кольцо, север"; 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 = [[ Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в северной части внутреннего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; way = { kh_vroom("Центр города", "first_city_central_room_entrance", "first_city_to_center"):disable(); kh_vroom("Левиафан", "leviathan_airlock"); }; }; first_city_central_room_entrance = room { nam = "first_city_central_room_entrance"; disp = "Лсэрианотр, Вход в центральный зал"; dsc = [[ Вы находитесь у входа в центральный зал Лсэрианотра. Входная дверь закрывается и вода быстро откачивается из помещения. Вы снимаете скафандр и готовитесь к встрече с Уильямом. Отсюда пути назад уже нет. ]]; obj = { vway("Центральный зал", "{Вперед}", "final_scene_before_battle"); }; };