--dependencies dofile "service_tunnels.lua"; dofile "hope.lua"; dofile "hope_cutscene.lua"; -- TODO (приватная бета-версия) добавить описания ворот открытых и закрытых char_first_city_guardian = obj { nam = "first_city_guardian"; disp = "Страж"; dsc = [[ Вы видите фигуру {Навьяра}, стоящего около ворот. Приглядевшись внимательнее, вы понимаете, что это автоматон.^ ]]; act = function() return [[ Автоматон выглядит намного совершеннее тех, что вам доводилось видеть на Атлантиде. Его тело покрыто чешуей, как и тело живых Навьяр. Его выдают лишь стеклянные немигающие глаза и полная неподвижность. Головные плавники автоматона плавно меняют цвета, но даже если бы вы понимали, что это значит, вы не смогли бы ему ответить. ]]; end }; first_city_entrance = room { nam = "first_city_entrance"; disp = "Лсэрианотр, врата"; dsc = function(s) if (not s.open) then return [[ Вы находитесь на глубине нескольких километров под водой. Прожектор вашего скафандра с трудом пробивает непроглядную толщу воды. Почти вплотную перед вами расположены огромные ворота из неизвестного материала. ]]; else return [[ Вы находитесь на глубине нескольких километров под водой. Прожектор вашего скафандра с трудом пробивает непроглядную толщу воды. Огромные ворота открыты и Левиафан легко пройдет в них. ]]; end; end; view = function(s) if (not s.open) then return [[ "Левиафан" находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. Огромные ворота из неизвестного материала преграждают вам путь внутрь. ]]; else return [[ "Левиафан" находится на глубине нескольких километров под водой. Мощный прожектор субмарины с трудом пробивает непроглядную толщу воды. Огромные ворота открыты и Левиафан легко пройдет в них. ]]; end; end; obj = { "char_first_city_guardian"; }; way = { vroom("Левиафан", "leviathan_airlock"); }; }; first_city_outer_south = room { nam = "first_city_outer_south"; disp = "Лсэрианотр, внешнее кольцо, юг"; gate = "first_city_entrance"; east = "first_city_outer_east"; west = "first_city_outer_west"; navigatable = true; entered = function(s) s.entered = nil; -- Должно выполняться только один раз: -- 1. Генерируем сервисные тоннели -- 2. Генерируем табличку сервисных тоннелей для библиотеки -- 3. Генерируем ссылки на документы на Надежде end; dsc = [[ Вы находитесь в южной части внешнего кольца Лсэрианотра. Это огромный коридор, опоясывающий город по периметру. Высоко над головой виден прозрачный купол, не дающий проникнуть в город минуя ворота. ]]; view = [[ Вы находитесь в южной части внешнего кольца Лсэрианотра. Это огромный коридор, опоясывающий город по периметру. Высоко над головой виден прозрачный купол, не дающий проникнуть в город минуя ворота. ]]; way = { vroom("Левиафан", "leviathan_airlock"); }; }; first_city_outer_east = room { nam = "first_city_outer_east"; disp = "Лсэрианотр, внешнее кольцо, восток"; south = "first_city_outer_south"; north = "first_city_outer_north"; navigatable = true; dsc = [[ Вы находитесь в восточной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. На востоке вы видите огромное здание с большим количеством труб, идущих до самого купола. Скорее всего, это какая-то древняя фабрика. ]]; view = [[ Вы находитесь в восточной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; way = { vroom("Левиафан", "leviathan_airlock"); vroom("В здание", "first_city_factory"); }; }; first_city_outer_west = room { nam = "first_city_outer_west"; disp = "Лсэрианотр, внешнее кольцо, запад"; south = "first_city_outer_south"; north = "first_city_outer_north"; navigatable = true; dsc = [[ Вы находитесь в западной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в западной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; way = { vroom("Левиафан", "leviathan_airlock"); vroom("В здание", "first_city_library"); }; }; first_city_outer_north = room { nam = "first_city_outer_north"; disp = "Лсэрианотр, внешнее кольцо, север"; gate = "first_city_middle_north"; east = "first_city_outer_east"; west = "first_city_outer_west"; navigatable = true; dsc = [[ Вы находитесь в северной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; view = [[ Вы находитесь в северной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; obj = { "submarine_hope" }; way = { vroom("Левиафан", "leviathan_airlock"); vroom("Надежда", "hope_airlock"); }; }; path_first_city_tunnel = vroom("В сервисный тоннель", "service_tunnels"); first_city_factory = room { nam = "first_city_factory"; disp = "Лсэрианотр, внешнее кольцо, завод"; entered = function(s) service_tunnels.position = "3"; end; dsc = [[ Помещение, в котором вы находитесь, очевидно, некогда было заводом. Конвейеры, странные механизмы, разбросанные инструменты, долгие тысячелетия лежавшие без движения. ]]; obj = { "item_pickaxe", "first_city_crack" }; way = { disable(path_first_city_tunnel); }; }; first_city_crack = obj { nam = "first_city_crack"; dsc = "В дальней стене вы видите {трещину}. Сквозь нее пробивается слабый свет, очевидно там какое-то помещение."; act = function(s) if (s.wide) then return [[ Вы видите за щелью какие-то тоннели. Вы сможете пролезть туда. ]]; else return [[ Нужно чем-то расширить эту щель, если вы хотите туда попасть ]]; end; end; canhit = true; onhit = function(s) if (s.wide) then return "Трещина уже достаточно большая для вас, нет смысла еще что-то с ней делать." else s.wide = true; enable(path_first_city_tunnel); return "Несколькими осторожными ударами кирки вы расширяете трещину достаточно, чтобы пролезть внутрь." end; end; }; first_city_library = room { nam = "first_city_library"; disp = "Лсэрианотр, внешнее кольцо, библиотека"; dsc = [[ В здании вы видите огромные стеллажи, заполненные табличками из неизвестного материала. Таблички исписаны письменами Навьяров и потускнели от времени. ]]; obj = { 'first_city_index', 'first_city_maintenance_info' }; }; first_city_index = obj { nam = "first_city_index"; dsc = "На стене возле входа висит большая {табличка}. "; act = function(s) end; }; first_city_maintenance_info = obj { nam = "first_city_index"; dsc = "Один из {стеллажей} рядом со входом содержит информацию об обслуживании Лсэрианотра. Вероятно, там вы найдете то, что поможет вам отключить охранную систему города. "; act = function(s) if (s.taken) then return "Врядли вы найдете здесь что-то еще полезное. "; else take("item_service_info") return "Вы просматриваете тысячи записей и уже почти теряете всякую надежду когда натыкаетесь на табличку, описывающую сервисные тоннели города. "; end; end; };