--[[ Игрок может попасть сюда только после диалога с Майклом. Верфь заброшена, многие механизмы придется ремонтировать. Здесь игрок найдет подводную лодку, которую нужно будет восстановить. ]] dock_2 = room { nam = "dock_2"; disp = "Док 2, вход"; dsc = [[Док огражден высоким металлическим забором, изрядно проржавевшим из-за отсутствия должного ухода. Ржавая табличка с надписью "Док 2, собственность Вестхейвен Трансоушен" висит над воротами, слегка поскрипывая под сильными порывами ветра. Пространство за забором заставлено старыми металлическими грузовыми контейнерами. Вдали виднеется кран, предназначенный для погрузки и разгрузки приходящих судов. ]]; enter = function(s) move(char_coachman, here()); end; way = { vroom("В док", "dock_inside"):disable(); }; obj = { "dock_gate" }; }; dock_gate = obj { nam = "dock_gate"; 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; used = function(s,o) if (s.open) then return false; end; if (o == item_toolbox) then s.open = true; path("В док"):enable(); return [[Пользуясь ломиком, найденным в ящике, вы снимаете замок с ворот. С жутким скрипом вам удается приоткрыть их. Теперь вы можете войти внутрь. ]]; else return false; end; end; }; dock_inside = room { nam = "dock_inside"; disp = "Док"; dsc = [[На территории дока повсюду раскиданы обломки дерева, железа, какие-то мешки. Ржавые ворота в заборе застыли в приоткрытом состоянии. Вдалеке, у причала, стоит старый грузовой кран. До вас доносятся завывания ветра и скрип ржавого металла. ]]; --dsc = [[Вы находитесь на территории дока, принадлежавшего компании "Вестхейвен Трансоушен", о чем свидетельствует оставшаяся позади табличка. Вдалеке, у причала стоит старый грузовой кран. Вы не слышите ничего, кроме завываний ветра и скрипа ржавого металла. ]]; way = { vroom("На улицу", "dock_2"); vroom("К причалу", "dock_mooring"); }; obj = { "dock_boxes" }; }; dock_boxes = obj { var { searched = 0; }; nam = "dock_boxes"; disp = "Ящики"; dsc = [[Ровными рядами вокруг расположены старые грузовые {контейнеры}. Краска на большинстве из них повреждена настолько, что не осталось никаких опознавательных знаков об их происхождении и содержимом. ]]; act = function(s) if s.searched == 0 then s.searched = 1; put(item_pump_broken, pl); return [[В одном из ящиков вы находите неисправный ручной насос. ]]; elseif s.searched == 1 then s.searched = 2; pl.money = pl.money + 5; return [[В одном из ящиков кто-то оставил монету в пять шиллингов. ]]; end; end; }; leviathan_entry = room { nam = "leviathan_entry"; disp = "В люк"; enter = function(s) if (dock_leviathan.pump_state == 1) then walk('leviathan_airlock'); else return "Отсек заполнен водой. Вы не можете туда спуститься. ", false; end; end; }; dock_mooring = room { nam = "dock_inside"; disp = "Причал"; dsc = [[У причала пусто, не считая нескольких кучек мусора - старых гнилых деревяшек, каких-то ржавых металлических трубок, мешков с неизвестным содержимым. Вы не слышите ничего, кроме шума мутной воды, завываний ветра и скрипа ржавого металла. ]]; view = [[Левиафан находится в доке. ]]; way = { vroom("К воротам", "dock_inside"); vroom("К пульту управления краном", "dock_crane_control"); leviathan_entry:disable(); }; obj = { "dock_leviathan", "dock_crane" }; }; dock_leviathan = obj { var { submerged = true; pump_state = 0; -- 0 в отсеке вода; 1 - в отсеке нет воды open = false; }; nam = "dock_leviathan"; disp = "Левиафан"; dsc = function(s) if (s.submerged) then return "Под поверхностью воды виден какой-то большой металлический {объект}. "; else if (s.open) then return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен открытый {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]]; else return [[На тросах подвешена странная машина. В верхней части торпедообразного корпуса расположен наглухо задраенный {люк}. В задней видно два гребных винта. Иллюминаторы, частично показавшиеся на поверхности, покрыты грязью. В передней части на борту прикреплена слегка поржавевшая табличка с надписью "А04 - Левиафан". ]]; end; end; end; act = function(s) if (s.submerged) then return "Какой-то большой объект. В мутной воде вы не можете понять, что это, но похоже на перевернутое судно. "; elseif (s.open) then --TODO s.open = false; leviathan_entry:disable(); return "Вы задраиваете люк."; else --TODO s.open = true; leviathan_entry:enable(); if (s.pump_state == 0) then return "Вы отдраиваете люк. Отсек внутри заполнен водой. "; else return "Вы отдраиваете люк. "; end; end; end; used = function(s, o) if (o == item_pump) then dock_leviathan.pump_state = 1; remove(item_pump, pl); return [[Вы откачиваете воду из отсека и теперь можете спуститься в него. ]]; end; end; }; dock_crane = obj { var { state = 0; broken = true; }; nam = "dock_crane"; disp = "Подъемник"; dsc = function(s) if (s.state == 0) then return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} сейчас подняты. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. "; elseif (s.state == 1) then return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} опущены насколько это возможно - они почти полностью погружены в грязную воду. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. "; elseif (s.state == 2) then return "Чуть в стороне от вас огромный металлический кран нависает над водой. {Тросы} подцеплены к предмету, скрывающемуся под водой. Возле одной из опор крана установлена небольшая кабинка, в которой по-видимому расположены механизмы для управления краном. "; else return "Чуть в стороне от вас огромный металлический кран нависает над водой. "; end; end; act = function(s) if (s.state == 0) then return "Тросы слишком высоко"; elseif (s.state == 1) then s.state = 2; return "Вы подцепляете тросы к скрывающемуся под водой предмету. "; elseif (s.state == 2) then s.state = 1; return "Вы отцепляете тросы от скрывающегося под водой предмета. "; elseif (s.state == 3) then return "Вы больше ничего не можете сделать здесь"; end; end; }; dock_crane_control = room { nam = "dock_crane_control"; disp = "Панель управления краном"; dsc = [[Вы стоите на небольшой огороженной площадке перед панелью управления подъемником. На ней расположено два рычага. ]]; obj = { "crane_lever_vertical", "crane_lever_rail", "crane_service_access_panel" }; way = { vroom("Назад", "dock_mooring"); }; }; crane_lever_vertical = obj { nam = "crane_lever_vertical"; dsc = "{Один из них} установлен вертикально и имеет несколько промежуточных положений. Сбоку от него нарисованы стрелки вверх и вниз. "; act = function(s) if (dock_crane.broken) then return "Вы двигаете рычаг, но ничего не происходит"; else if (dock_crane.state == 0) then dock_crane.state = 1; return [[Вы сдвигаете рычаг в крайнее нижнее положение. С громким скрежетом тросы опускаются. ]]; elseif (dock_crane.state == 3) then dock_crane.state = 2; dock_leviathan.submerged = true; return [[Вы сдвигаете рычаг в крайнее нижнее положение. С громким скрежетом тросы опускаются и поднятый предмет скрывается под водой. ]]; elseif (dock_crane.state == 2) then dock_crane.state = 3 dock_leviathan.submerged = false; leviathan_discovered = true; return [[Вы сдвигаете рычаг в крайнее верхнее положение. С громким скрежетом тросы поднимаются вместе с подцепленным к ним предметом. ]]; elseif (dock_crane.state == 1) then dock_crane.state = 0; return [[Вы сдвигаете рычаг в крайнее верхнее положение. С громким скрежетом тросы поднимаются. ]]; end; end; end; }; crane_lever_rail = obj { nam = "crane_level_rail"; dsc = "{Второй рычаг} установлен горизотельно и имеет три положения. Над ним нарисованы стрелки влево и вправо."; act = "Рычаг не поддается. "; }; crane_service_access_panel = obj { nam = "crane_service_access_panel"; state = 0; dsc = function(s) if (s.state == 0) then return [[Под панелью управления прикреплена на винтах металлическая {пластина}, закрывающая механизм. ]]; else return [[Под панелью управления расположен {механизм} управления. Металлическая пластина, закрывавшая его, лежит рядом. ]]; end; end; act = function(s) if (s.state == 0) then return [[ Вы не сможете открыть это руками. ]]; else if (dock_crane.broken) then return [[Вы заглядываете внутрь механизма. Часть шестерней сильно изношена. ]]; else return [[Вы заглядываете внутрь механизма. Все шестерни исправны и находятся на своих местах. ]]; end; end; end; used = function(s,o) if (o == item_toolbox) then if (s.state == 0) then s.state = 1; return [[При помощи отвертки из ящика вы снимаете защитную панель, открывая доступ к внутренностям механизма. ]]; else s.state = 0; return [[Вы возвращаете панель на место и закрепляете ее винтами. ]]; end; else return false; end; end; };