diff --git a/first_city_outer_rim.lua b/first_city_outer_rim.lua --- a/first_city_outer_rim.lua +++ b/first_city_outer_rim.lua @@ -31,12 +31,12 @@ first_city_entrance = room { view = function(s) if (not s.open) then return [[ - Левиафан находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. + "Левиафан" находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. Огромные ворота из неизвестного материала преграждают вам путь внутрь. ]]; else return [[ - Левиафан находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. + "Левиафан" находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. Огромные ворота открыты и Левиафан легко пройдет в них. ]]; end; @@ -125,6 +125,9 @@ first_city_outer_north = room { view = [[ Вы находитесь в северной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; + obj = { + "submarine_hope" + }; way = { vroom("Левиафан", "leviathan_airlock"); vroom("Надежда", "hope_airlock"); diff --git a/hope.lua b/hope.lua --- a/hope.lua +++ b/hope.lua @@ -1,16 +1,136 @@ --[[ - . , . +Субмарина Уильяма. Она серьезно пострадала, и врядли экипаж цел. ]] submarine_hope = obj { nam = "submarine_hope"; - disp = ""; + disp = "Надежда"; dsc = [[ - "{}" - , . , , . . + Вы видите "{Надежду}" - субмарину Уильяма Дрейка, первую построенную им. Она заметно пострадала в результате выстрелов из расположенной у входа турели, однако, экипаж в последний момент успел увести подлодку на безопасное расстояние. Люк субмарины разбит и вы сможете заплыть внутрь. ]]; - act = [[ , . - , . "00 - " ]]; + act = [[ Субмарина сильно повреждена, герметичность корпуса очевидно нарушена. Врядли в ней остался кто-то живой, однако не помешает это проверить. Надпись на борту гласит "А00 - Надежда" ]]; -- function() -- walk "leviathan_airlock"; - -- return " , "; + -- return "Оказавшись внутри, вы закрываете за собой люк"; --end; +}; + +hope_airlock = room { + nam = "hope_airlock"; + disp = "Надежда, шлюз"; + dsc = [[ + Вы находитесь в шлюзовой камере "Надежды". Она практически идентична шлюзовой камере Левиафана. Сейчас она не функционирует - камера заполнена водой и оба люка открыты. + ]]; + way = { + vroom("Наружу", "first_city_outer_north"); + vroom("В рубку", "hope_wheelhouse"); + }; +}; + +hope_cargo_door = obj { + nam = "hope_cargo_door"; + disp = "Люк в грузовой отсек"; + dsc = function(s) + if (s.state == 2) then + return [[ + {Люк} в грузовой отсек открыт. + ]]; + else + return [[ + {Люк} в грузовой отсек задраен. + ]]; + end; + end; + state = 0; + act = function(s) + if (s.state == 0) then + if (char_learr.follow) then + pn([[Вы пытаетесь открыть люк, однако, похоже, он заблокирован с другой стороны. В смотровом люке вы видите голову навьяра, смотрящего на вас. В темноте вы с трудом различаете цветные полосы на его головных плавниках. Полосы бегут нарочито медленно, чтобы вы успели его понять. Леарр мягко отодвигает вас от смотрового отверстия. тем же способом, она что-то говорит навьяру, находящемуся по ту сторону люка. Через несколько минут подобного общения Леарр кивает вам, показывая на дверь. ]]); + s.state = 1; + else + pn([[Вы пытаетесь открыть люк, однако, похоже, он заблокирован с другой стороны. В смотровом люке вы видите голову навьяра, смотрящего на вас. В темноте вы с трудом различаете цветные полосы на его головных плавниках. Полосы бегут нарочито медленно, чтобы вы успели его понять. Вы с трудом переводите цвета в символы: "Eyle'yhe'he'vji'a'rr vee'nn vtre'e'ran'rr" - он просит вас уйти ]]); + end; + elseif (s.state == 1) then + pn([[Вы начинаете открывать люк и огромное количество пузырей воздуха просачивается через образовавшуюся щель. Леарр жестом показывает вам, чтобы вы продолжали. Вы ждете, когда вода заполнит отсек, после чего открываете люк до конца. ]]); + hope_airlock_pass:enable(); + state = 2; + elseif (s.state == 2) then + pn("Люк уже открыт"); + end; + return true; + end; +}; + +hope_airlock_pass = vroom("В грузовой отсек", "hope_cargo_hold"); + +hope_wheelhouse = room { + nam = "hope_wheelhouse"; + disp = "Надежда, рубка"; + dsc = [[ + Вы находитесь в рубке "Надежды". По размерам она заметно больше, чем рубка на Левиафане. Помещение заполнено водой. Люки в машинное отделение и пассажирский отсек открыты. + ]]; + obj = { + hope_cargo_door + }; + way = { + vroom("В машинное отделение", "hope_engines"); + hope_airlock_pass:disable(); + vroom("В помещение экипажа", "hope_dormitory"); + }; +}; + +hope_engines = room { + nam = "hope_engines"; + disp = "Надежда, машинное отделение"; + dsc = [[ + Вы находитесь в машинном отделении "Надежды". Попадание воды вызвало короткое замыкание в электрической цепи субмарины. Вам нечего здесь делать. + ]]; + way = { + vroom("В рубку", "hope_wheelhouse"); + }; +}; + +hope_cargo_hold = room { + nam = "hope_cargo_hold"; + disp = "Надежда, грузовой отсек"; + dsc = [[ + Вы находитесь в грузовом отсеке "Надежды". Герметичные контейнеры сохранили большую часть груза в целости и сохранности, однако на "Левиафане" достаточно собственных припасов, так что вам придется оставить все это здесь. + ]]; + way = { + vroom("В рубку", "hope_wheelhouse"); + }; +}; + +hope_dormitory = room { + nam = "hope_dormitory"; + disp = "Надежда, помещение для экипажа"; + dsc = [[ + Шесть коек расположены вдоль трех стен помещения в два яруса. Вам нечего здесь делать. + ]]; + way = { + vroom("В рубку", "hope_wheelhouse"); + }; +}; + +char_phaetlarr_hope = obj { + nam = "char_phaetlarr_hope"; + disp = "Фаэтларр"; + dsc = "Рядом с люком, скрестив руки на груди, стоит {навьяр}. Он, кажется, серьезно напуган и удивлен вашим появлением. "; + act = function(s) + walkin(phaetlarr_hope_dlg); + end; +}; + +phaetlarr_hope_dlg = obj { + nam = "phaetlarr_hope_dlg"; + disp = "навьяр"; + entered = [[ + Навьяр выглядит удивленным и напуганным, однако, судя по всему, он готов вас выслушать. К сожалению, здесь с ним получится общаться только жестами. + ]]; + phr = { + {"Указать на навьяра правой рукой, левую опустить вниз", "Цветные полосы складываются в слово \"Pha'e'tla'rr\" - сияющий. "}; + {"Указать на навьяра левой рукой, правой указать на себя, затем на дверь", "Навьяр кивает головой. \"I'rr vee'nn\"", function() + -- Все втроем вы возвращаетесь на Левиафан + end;}; + }; }; \ No newline at end of file diff --git a/leviathan.lua b/leviathan.lua --- a/leviathan.lua +++ b/leviathan.lua @@ -188,6 +188,9 @@ leviathan_wheelhouse = room { Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. Яркий свет электрических ламп освещает помещение. ]] .. (view); end; + way = { + vroom("Кают-компания", "leviathan_wardroom"); + }; obj = { vway("handwheel", "Перед вами расположен {штурвал}. ^", 'leviathan_dlg') }; diff --git a/main.lua b/main.lua --- a/main.lua +++ b/main.lua @@ -28,6 +28,7 @@ dofile "final_battle.lua"; dofile "first_city_inner_rim.lua" dofile "first_city_middle_rim.lua" dofile "first_city_outer_rim.lua" +dofile "hope.lua"; item_note_1 = obj { nam = "note1"; @@ -143,8 +144,9 @@ function init() ---debug --pl.where = submarine_leviathan; --move(submarine_leviathan, first_city_entrance); - move(submarine_leviathan, first_city_outer_south); + move(submarine_leviathan, first_city_outer_north); --walk(final_scene); + --walk(leviathan_wardroom); walk(leviathan_wardroom); put("char_learr", "leviathan_wardroom"); --put("char_phaetlarr", "leviathan_engines");