diff --git a/lseryanotrr_locations.lua b/lseryanotrr_locations.lua --- a/lseryanotrr_locations.lua +++ b/lseryanotrr_locations.lua @@ -119,7 +119,7 @@ lse_leviathan_airlock = room { dsc = [[Фаэтларр находится в шлюзовом отсеке Левиафана. Люк не задраен. ]]; way = { kh_vroom("В кают-компанию", "lse_leviathan_wardroom"); - kh_vroom("Наружу", "lse_leviathan_airlock_up"); + kh_vroom("Наверх", "lse_leviathan_airlock_up"); }; }; @@ -133,7 +133,14 @@ lse_leviathan_airlock_up = room { "lse_lev_guard" }; way = { - + kh_vroom("Вниз", "lse_leviathan_airlock"); + kh_vroom("Наружу", function(s) + if (lse_lev_guard.state == 0) then + return "game_over_phaetlarr_caught"; + else + return "lse_dock_pier"; + end; + end); }; }; @@ -149,4 +156,250 @@ lse_lev_guard = obj { return "Стражники отошли в дальний конец дока. Фаэтларр сможет незаметно пробежать мимо. "; end; end; + use = function(s,o) + if (o == lse_item_toolbox) then + s.state = 1; + return [[ + Фаэтларр достает из ящика первый попавшийся предмет и кидает его в воду, подальше от Левиафана. Стражники, услышав всплеск, дружно направились туда. + ]]; + end; + end; +}; + +lse_dock_pier = room { + nam = "lse_dock_pier"; + disp = "Лсэрианотр, док, у Левиафана"; + dsc = [[ + Фаэтларр стоит на пирсе рядом с Левиафаном. Несколько стражников что-то ищут В другом конце дока. + ]]; + way = { + kh_vroom("К выходу", "lse_dock"); + }; +}; + +lse_dock = room { + var { + state = 0; + }; + nam = "lse_dock"; + disp = "Лсэрианотр, док, у входа"; + dsc = function(s) + if (s.state == 0) then + return [[ + Фаэтларр стоит у выхода из дока. Массивные металлические двери плотно закрыты и приоткрыть их не представляется возможным. + ]]; + else + return [[ + Фаэтларр стоит у выхода из дока. Массивные металлические двери слегка приоткрыты и вы можете спокойной проскользнуть внутрь. + ]]; + end; + end; + obj = { + "lse_dock_panel" + }; + way = { + kh_vroom("В дверь", function(s) + if (lse_dock.state == 0) then + pr [[Дверь заперта]]; + return false; + else + return "lse_outer_1"; + end; + end); + }; +}; + +lse_dock_panel = obj { + var { + state = 0; + }; + nam = "lse_dock_panel"; + dsc = function(s) + if (s.state == 0) then + return [[Рядом с дверью расположена небольшая {панель}. ]]; + else + return [[Под открытой {панелью} находятся какие-то провода. Скорее всего, они используются для управления дверью. ]]; + end; + end; + act = function(s) + if (s.state == 0) then + return [[Фаэтларр пытается открыть панель руками, но ничего не получается. ]]; + else + walkin("lse_dock_in_panel"); + end; + end; +}; + +lse_dock_in_panel = room { + var { + state = 0; + index = 0; + cut = nil; + }; + nam = "lse_dock_in_panel"; + disp = "Лсэрианотр, док, панель управления дверью"; + entered = function(s) + if (s.state == 0) then + s.state = 1; + s.index = rnd(7) - 1; + end; + end; + pic = function(s) + local pic = "images/lse_door_bcg.gif;images/lse_door_marker.png@496," .. tostring(3 + 38 * s.index); + + return pic; + end; + dsc = [[За панелью скрывается множество проводов. Фаэтларр легко определяет, какой из них задействован в управлении дверью.]]; + obj = { + 'lse_dock_cut1', + 'lse_dock_cut2', + 'lse_dock_cut3', + 'lse_dock_cut4', + 'lse_dock_cut5', + 'lse_dock_cut6', + 'lse_dock_cut7', + 'lse_dock_back' + }; +}; + +lse_dock_cut1 = obj { + nam = "lse_dock_cut1"; + dsc = "{Обрезать фиолетово-синий провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 3) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 3; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 3) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_cut2 = obj { + nam = "lse_dock_cut2"; + dsc = "{Обрезать фиолетово-зеленый провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 0) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 0; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 0) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_cut3 = obj { + nam = "lse_dock_cut3"; + dsc = "{Обрезать фиолетово-желтый провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 4) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 4; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 4) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_cut4 = obj { + nam = "lse_dock_cut4"; + dsc = "{Обрезать фиолетово-оранжевый провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 1) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 1; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 1) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_cut5 = obj { + nam = "lse_dock_cut5"; + dsc = "{Обрезать фиолетово-красный провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 2) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 2; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 2) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + + +lse_dock_cut6 = obj { + nam = "lse_dock_cut6"; + dsc = "{Обрезать сине-зеленый провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 6) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 6; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 6) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_cut7 = obj { + nam = "lse_dock_cut7"; + dsc = "{Обрезать сине-желтый провод}^"; + act = function(s) + if (lse_dock_in_panel.index == 5) then + lse_dock.state = 1; + pr [[Фаэтларр перерезает провод и дверь открывается. ]]; + walk("lse_dock"); + elseif (lse_dock_in_panel.cut == nil) then + lse_dock_in_panel.cut = 5; + pr [[Фаэтларр перерезает провод. Свет в помещении моргает. Рядом с панелью начинает мигать красная лампочка. ]]; + elseif (lse_dock_in_panel.cut == 5) then + pr [[Этот провод уже перерезан. ]]; + else + walk("game_over_phaetlarr_wrong_wire"); + end; + end; +}; + +lse_dock_back = obj { + nam = "lse_dock_back"; + dsc = "{Отойти от панели}^"; + act = function(s) + walk("lse_dock"); + end; }; \ No newline at end of file