lse_powerplant_door = obj { nam = "lse_powerplant_door"; disp = "Двери энергостанции"; dsc = function(s) if (s.open) then return [[ Двери энергостанции открыты ]]; else return [[ Двери здания заперты ]]; end; end; act = function(s) if (s.open) then return [[Вы можете войти]]; else return [[Судя по всему, вход заблокирован изнутри. Вы не сможете открыть его отсюда. ]]; end; end; }; lse_powerplant_door_inside = obj { nam = "lse_powerplant_door"; dsc = function(s) if(lse_powerplant_door.open) then return "{Входные двери} открыты. "; else return "{Входные двери} закрыты. "; end; end; act = function(s) if(lse_powerplant_door.open) then return "Двери уже открыты"; else return "У вас не получается открыть двери. Возможно, это делается в другом месте"; end; end; }; lse_powerplant = room { nam = "lse_powerplant"; disp = "Лсэрианотр, энергостанция"; dsc = [[ Вы находитесь в комнате управления энергоснабжением Лсэрианотра. Сквозь скафандр вы ощущаете слабую вибрацию, исходяющую от работающих неподалеку генераторов. ]]; entered = function(s) service_tunnels_2.position = "45"; end; obj = { "powerplant_control", "lse_powerplant_door_inside" }; way = { kh_vroom("Выйти из здания", "lse_middle_east", "powerplant_out"):disable(); kh_vroom("В сервиcный тоннель", "service_tunnels_2"); }; }; powerplant_control = obj { nam = "powerplant_control"; disp = "Терминал управления энергоснабжением"; dsc = "У одной из стен расположен {огромный экран}, на котором, судя по всему, отмечены линии энергоснабжения и ключевые источники потребления энергии. ^"; act = function(s) walkin(powerplant_control_dlg); end; }; powerplant_control_dlg = dlg { nam = "powerplant_control_dlg"; disp = "Терминал управления энергоснабжением"; dsc = "На экране вы видите подробную схему энергосетей города. Несколько иконок внизу экрана показывают вам, что нужно нажимать, чтобы перейти в различные режимы управления. "; entered = function() if (lse_powerplant_door.open) then poff(3); pon(4); else poff(4); pon(3); end; end; phr = { {1, always = true, "Перейти в режим управления питанием", function(s) walkin(powerplant_defence_control_dlg); return false; end; }; {3, "Разблокировать вход в здание", function(s) pon(4); lse_powerplant_door.open = true; path("powerplant_out", "lse_powerplant"):enable(); return "Входные двери открываются"; end; }; {4, "Заблокировать вход в здание", function(s) pon(3); lse_powerplant_door.open = false; path("powerplant_out", "lse_powerplant"):disable(); return "Входные двери закрываются"; end; }; {5, always = true, "Внимательно осмотреть схему города", "На схеме изображены все три кольца города, эта энергостанция и еще две других, расположенные во внешнем и внутреннем кольце. Ворота, соединяющие внешнее и среднее кольцо отмечены открытыми, ворота, соединяющие среднее и внутреннее кольцо закрыты. "}; {255, always = true, "Отойти от терминала",function(s) back(); end; }; }; }; powerplant_defence_control_dlg = dlg { nam = "powerplant_defence_control_dlg"; disp = "Терминал управления энергоснабжением"; states = {0, 1, 0, 1}; locked = 1; pic = function(s) local image = 'images/power_bcg.png'; if (s.locked == 1) then image = image .. ";images/power_lock.png@62,31"; elseif (s.locked == 2) then image = image .. ";images/power_lock.png@62,93"; elseif (s.locked == 3) then image = image .. ";images/power_lock.png@31,62"; elseif (s.locked == 4) then image = image .. ";images/power_lock.png@93,62"; end; image = image .. ";images/power_" .. tostring(s.states[1]) .. ".png@62,31"; image = image .. ";images/power_" .. tostring(s.states[2]) .. ".png@62,93"; image = image .. ";images/power_" .. tostring(s.states[3]) .. ".png@31,62"; image = image .. ";images/power_" .. tostring(s.states[4]) .. ".png@93,62"; return image; end; detect = function(s) return (s.states[1] == 1 and s.states[2] == 3 and s.states[3] == 0 and s.states[4] == 2) or (s.states[1] == 3 and s.states[2] == 1 and s.states[3] == 2 and s.states[4] == 0) end; dsc = "На экране видна схема питания систем защиты. Иконки внизу экрана подсказывают, что нажимать при отключении"; phr = { {1, always = true, "блокировать верхний переключатель", "Изображение на экране изменилось.", function(s) powerplant_defence_control_dlg.locked = 1; end;}, {2, always = true, "блокировать нижний переключатель", "Изображение на экране изменилось.", function(s) powerplant_defence_control_dlg.locked = 2; end;}, {3, always = true, "блокировать левый переключатель", "Изображение на экране изменилось.", function(s) powerplant_defence_control_dlg.locked = 3; end;}, {4, always = true, "блокировать правый переключатель", "Изображение на экране изменилось.", function(s) powerplant_defence_control_dlg.locked = 4; end;}, {5, always = true, "поворот по часовой", "Изображение на экране изменилось.", function(s) for i = 1, 4 do if (i ~= powerplant_defence_control_dlg.locked) then powerplant_defence_control_dlg.states[i] = powerplant_defence_control_dlg.states[i] + 1; if (powerplant_defence_control_dlg.states[i] > 3) then powerplant_defence_control_dlg.states[i] = 0; end; end; end; if (powerplant_defence_control_dlg.detect(powerplant_defence_control_dlg)) then p("Защитные системы отключены"); --TODO сделать нормальный фидбэк end; end;}, {6, always = true, "поворот против часовой", "Изображение на экране изменилось.", function(s) for i = 1, 4 do if (i ~= powerplant_defence_control_dlg.locked) then powerplant_defence_control_dlg.states[i] = powerplant_defence_control_dlg.states[i] - 1; if (powerplant_defence_control_dlg.states[i] < 0) then powerplant_defence_control_dlg.states[i] = 3; end; end; end; if (powerplant_defence_control_dlg.detect(powerplant_defence_control_dlg)) then p("Защитные системы отключены"); --TODO сделать нормальный фидбэк end; end;}, {255, always = true, "выход", function(s) back(); end}, }; };