--[[ Ваша подводная лодка - Левиафан Для начала вам придется починить ее Имеет электрический двигатель Для запуска машины потребуется его починить и обеспечить энергией Левиафан - достаточно большая подводная лодка. Хотя она может управляться одним человеком, рассчитана она на много большее. Имеется три доступных уровня освещения: Не освещено - ничего не видно, передвигаться по кораблю невозможно Плохо освещено - Описания минимальны, большинство действий недостпны Хорошо освещено - полные описания, все действия доступны Можно включить или выключить внешнее освещение Скафандры придется зарабатывать на Атлантиде ]] -- TODO персонажи не должны обсуждать личные темы по телефону, только при встрече submarine_leviathan = obj { nam = "submarine_leviathan"; disp = "Левиафан"; -- dsc = [[ -- Вы видите огромную металлическую конструкцию, напоминающую рыбу. Большие стеклянные иллюминаторы по бортам еще больше усиливают впечатление. На бортах крупными буквами выведено "А04 Левиафан". В верхней части машины вы видите {люк}.^ --]]; dsc = [[ Вы видите "{Левиафан}" - вашу субмарину. ^ ]]; -- TODO описание составлять из реального состояния подводной лодки. act = [[ Несмотря на проведенные в бездействии годы, субмарина сейчас в отличном состоянии. Из иллюминаторов льется яркий свет. На борту виднеется слегка пошарпанная, но читаемая надпись "А04 - Левиафан" ]]; -- function() -- walk "leviathan_airlock"; -- return "Оказавшись внутри, вы закрываете за собой люк"; --end; -- user data suits = 0; -- Количество водолазных костюмов. К демо-версии неприменимо battery = false; -- Состояние батареи battery_charge = 100; -- Уровень заряда батареи circuit_breaks = 2; -- Разрывы цепи valves_to_replace = 2; -- Количество клапанов, которые нужно заменить для полноценной работы power_on = false; -- включена ли энергия air_level = 0; -- запас воздуха. Максимум - 5 дней(5 * 24 * 60 * 60 = 432000) airpump = false; }; --leviathan_exit = obj { -- nam = "leviathan_exit"; -- dsc = [[ -- {Люк} в потолке закрыт. -- ]]; -- act = function(s) -- walk(where(submarine_leviathan)); -- return "Оказавшись снаружи, вы закрываете за собой люк"; -- end; --}; --leviathan_airlock = room { -- nam = "leviathan_airlock"; -- disp = "Левиафан, шлюз"; -- leviathan = true; -- dsc = [[ -- Вы находитесь в шлюзовом отсеке Левиафана. Яркий свет электрических ламп освещает помещение. -- ]]; -- way = { -- vroom("Кают-компания", "leviathan_wardroom"); -- vroom("Наружу", function() -- return where(submarine_leviathan); -- end); -- }; --}; leviathan_airlock = darkroom { nam = "leviathan_airlock"; disp = "Левиафан, шлюз"; leviathan = true; dsc_lit = "Вы находитесь в шлюзовом отсеке Левиафана. Яркий свет электрических ламп освещает помещение. "; dsc_halflit = "Вы находитесь в шлюзовом отсеке Левиафана. В слабом свете лампы вы с трудом различаете очертания дверей и предметов. "; dsc_dark = "Вы находитесь в шлюзовом отсеке Левиафана. В темноте вы не можете ничего различить. "; way = { kh_vroom("Кают-компания", "leviathan_wardroom", 1); kh_vroom("Наружу", function() return where(submarine_leviathan); end, 2); }; }; leviathan_captains_cabin = darkroom { nam = "leviathan_captains_cabin"; disp = "Левиафан, каюта капитана"; leviathan = true; dsc_lit = [[ Вы находитесь в каюте, очевидно, предназначенной для капитана. Эта каюта немного больше остальных, в ней размещен стол и стул. В столе несколько ящичков, хитроумно закрытых, чтобы при качке они не открывались. ]]; dsc_halflit = [[ Вы находитесь в каюте, очевидно, предназначенной для капитана. Эта каюта немного больше остальных. В слабом свете лампы вы с трудом различаете очертания дверей и предметов. ]]; dsc_dark = [[Вы находитесь в одной из кают. В темноте вы не можете ничего различить. ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; obj = { "phone_cabin"; }; }; leviathan_cabin_1 = darkroom { nam = "leviathan_cabin_1"; disp = "Левиафан, каюта №1"; dsc = [[ Вы находитесь в одной из кают Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; }; leviathan_cabin_2 = darkroom { nam = "leviathan_cabin_2"; disp = "Левиафан, каюта №2"; dsc = [[ Вы находитесь в одной из кают Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; }; leviathan_cabin_3 = darkroom { nam = "leviathan_cabin_3"; disp = "Левиафан, каюта №3"; dsc = [[ Вы находитесь в одной из кают Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; }; leviathan_cabin_4 = darkroom { nam = "leviathan_cabin_4"; disp = "Левиафан, каюта №4"; dsc = [[ Вы находитесь в одной из кают Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; }; leviathan_cabin_5 = darkroom { nam = "leviathan_cabin_5"; disp = "Левиафан, каюта №5"; dsc = [[ Вы находитесь в одной из кают Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; }; leviathan_corridor = darkroom { nam = "leviathan_corridor"; disp = "Левиафан, коридор"; leviathan = true; dsc_lit = [[ Вы находитесь в длинном коридоре с множеством дверей, ведущих в каюты, расположенные по левому борту. ]]; dsc_halflit = [[ Вы находитесь в длинном коридоре с множеством дверей, ведущих в каюты, расположенные по левому борту. ]]; dsc_dark = [[ Вы находитесь в темном коридоре. В темноте ничего не видно. ]]; way = { kh_vroom("В каюту капитана", "leviathan_captains_cabin", 1); kh_vroom("В каюту №1", "leviathan_cabin_1", 1); kh_vroom("В каюту №2", "leviathan_cabin_2", 1); kh_vroom("В каюту №3", "leviathan_cabin_3", 1); kh_vroom("В каюту №4", "leviathan_cabin_4", 1); kh_vroom("В каюту №5", "leviathan_cabin_5", 1); kh_vroom("Кают-компания", "leviathan_wardroom", 1); kh_vroom("В грузовой отсек", "leviathan_cargo_hold", 1); kh_vroom("В машинный отсек", "leviathan_engines", 1); kh_vroom("На нижнюю палубу", "leviathan_lower_deck", 1); }; obj = { 'leviathan_corridor_wiring'; }; }; leviathan_cargo_hold = darkroom { nam = "leviathan_cargo_hold"; disp = "Левиафан, грузовой отсек"; leviathan = true; dsc_lit = [[ Вы находитесь в грузовом отсеке Левиафана ]]; dsc_halflit = [[ Вы находитесь в грузовом отсеке Левиафана ]]; dsc_dark = [[ Вы находитесь в грузовом отсеке Левиафана ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; obj = { "leviathan_cargo_wiring"; }; }; leviathan_wardroom = darkroom { nam = "leviathan_wardroom"; disp = "Левиафан, кают-компания"; leviathan = true; dsc_lit = [[ Вы находитесь в кают-компании Левиафана. Просторная комната, в центре которой укреплен массивный металлический стол. Из машинного отсека доносится гул двигателей. Яркий свет электрических ламп освещает помещение. ]]; dsc_halflit = [[ Вы находитесь в кают-компании Левиафана. Просторная комната, в центре которой укреплен массивный металлический стол. ]]; dsc_dark = [[ Вы находитесь в кают-компании Левиафана. В темноте вы ничего не моежет разглядеть ]]; way = { kh_vroom("В рубку", "leviathan_wheelhouse", 1); kh_vroom("В шлюз", "leviathan_airlock", 1); kh_vroom("В коридор", "leviathan_corridor", 1); kh_vroom("В грузовой отсек", "leviathan_cargo_hold", 1):disable(); kh_vroom("В машинный отсек", "leviathan_engines", 1):disable(); }; obj = { "phone_wardroom"; "leviathan_wardroom_wiring"; }; }; leviathan_engines = darkroom { nam = "leviathan_engines"; disp = "Левиафан, машинное отделение"; leviathan = true; dsc_lit = [[ Вы находитесь в машинном отделении Левиафана. ]]; dsc_halflit = [[ Вы находитесь в машинном отделении Левиафана. ]]; dsc_dark = [[ Вы находитесь в машинном отделении Левиафана. В темноте вы ничего не можете разглядеть ]]; -- Равномерный гул электрических двигателей сообщает о полной готовности субмарины. way = { kh_vroom("В коридор", "leviathan_corridor", 1); }; obj = { 'leviathan_battery'; 'leviathan_breaker'; 'leviathan_engineering_sensors'; 'leviathan_engineering_wiring'; }; }; leviathan_engineering_sensors = obj { nam = "leviathan_engineering_sensors"; dsc = [[ На стене над батареей расположена {панель} со множеством лампочек. ]]; act = function(s) if (submarine_leviathan.battery) then pr("На панели горят следующие лампочки: "); pr("батарея работает"); if (submarine_leviathan.power_on) then pr(", питание включено"); end; if (submarine_leviathan.airpump) then pr(", воздушные насосы включены"); end; if (submarine_leviathan.circuit_breaks > 0) then pr(", разорвана цепь освещения"); end; pr(". "); else p("На панели не горит ни одна лампочка. "); end; end; seen_level = 1; }; leviathan_battery = obj { nam = "leviathan_battery"; dsc = function(s) if (s.opened) then return [[ Значительную часть помещения занимает {блок аккумуляторных батарей}. Крышка блока открыта и вы видите, что электроды подверглись сильной коррозии за долгое время неиспользования. ]]; else return [[ Значительную часть помещения занимает {блок аккумуляторных батарей}. Крышка блока закрыта. ]]; end; end; act = function(s) if (s.opened) then s.opened = false; return [[ Вы возвращаете металлический лист, закрывающий батарею, на место. ]]; else if (not submarine_leviathan.battery) then s.opened = true; return [[ Вы сдвигаете металлический лист, закрывающий батарею в сторону, получая доступ к ней. ]]; else return [[ Незачем это трогать. ]]; end; end; end; used = function(s, o) if (o == item_electrodes) then remove(item_electrodes, pl); submarine_leviathan.battery = true; s.opened = false; return [[ Вы заменяете электроды. Теперь аккумулятор готов к работе. Вы возвращаете металлический лист, закрывающий батарею, на место. ]]; else return false; end; end; seen_level = 1; opened = false; }; leviathan_breaker = obj { nam = "leviathan_breaker"; dsc = function(s) if (submarine_leviathan.power_on) then return [[ Рядом с батареей укреплен {рубильник}. Сейчас он включен. ]]; else return [[ Рядом с батареей укреплен {рубильник}. Сейчас он выключен. ]]; end; end; act = function(s) if (submarine_leviathan.power_on) then submarine_leviathan.power_on = false; -- TODO включать свет по всему Левиафану, если восстановлены разрывы цепи и установлена батарея -- TODO включать двигатель если установлена батарея pr([[Вы выключаете рубильник]]); else submarine_leviathan.power_on = true; -- TODO включать двигатель если установлена батарея pr([[Вы включаете рубильник]]); if (submarine_leviathan.battery and submarine_leviathan.circuit_breaks == 0) then leviathan_airlock.has_light = true; leviathan_wardroom.has_light = true; leviathan_wheelhouse.has_light = true; leviathan_corridor.has_light = true; leviathan_cabin_1.has_light = true; leviathan_cabin_2.has_light = true; leviathan_cabin_3.has_light = true; leviathan_cabin_4.has_light = true; leviathan_cabin_5.has_light = true; leviathan_captains_cabin.has_light = true; leviathan_cargo_hold.has_light = true; leviathan_engines.has_light = true; leviathan_lower_deck.has_light = true; leviathan_life_support.has_light = true; pr([[Повсюда зажигается яркий свет, на мгновение ослепляя вас. ]]); end; end; end; seen_level = 1; }; leviathan_lower_deck = darkroom { nam = "leviathan_lower_deck"; disp = "Левиафан, нижняя палуба"; dsc_lit = [[ Вы находитесь на нижней палубе Левиафана. Здесь нет иллюминаторов. Повсюду раскиданы обломки металла, неизвестно откуда взявшиеся. В передней части помещения вы видите несколько отверстий для зарядки торпедных аппаратов. ]]; dsc_halflit = [[ Вы находитесь на нижней палубе Левиафана. Здесь нет иллюминаторов. Повсюду раскиданы обломки металла, неизвестно откуда взявшиеся. В передней части помещения вы видите несколько отверстий для зарядки торпедных аппаратов. ]]; dsc_dark = [[ Вы находитесь на нижней палубе Левиафана. Здесь нет иллюминаторов. В темноте вы ничего не можете разглядеть. ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 1); kh_vroom("К системе жизнеобеспечения", "leviathan_life_support", 1); }; obj = { "leviathan_lower_wiring"; }; }; leviathan_life_support = darkroom { nam = "leviathan_life_support"; disp = "Левиафан, система жизнеобеспечения"; --TODO прочитать, разобраться как подобный отсек мог бы выглядеть и описать его как подобает dsc_lit = [[ Вы находитесь в отсеке систем жизнеобеспечения "Левиафана". Это важнейший отсек корабля, в котором расположено все необходимое для обеспечения команды воздухом для дыхания в течение нескольких месяцев. ]]; dsc_halflit = [[ Вы находитесь в отсеке систем жизнеобеспечения "Левиафана". Это важнейший отсек корабля, в котором расположено все необходимое для обеспечения команды воздухом для дыхания в течение нескольких месяцев. ]]; dsc_dark = [[ Вы находитесь в отсеке систем жизнеобеспечения "Левиафана". В темноте вы ничего не можете разглядеть. ]]; way = { kh_vroom("Назад", "leviathan_lower_deck", 1); }; obj = { 'leviathan_airtanks'; 'leviathan_airregen'; "leviathan_life_wiring"; }; }; leviathan_airtanks = obj { nam = "leviathan_airtanks"; dsc = function(s) local percent = submarine_leviathan.air_level / 432000 * 100; if (percent < 1) then return [[ Большую часть помещения занимают огромные {кислородные баллоны}. Толстые стенки из прочного сплава способны выдержать огромное давление. Судя по показаниям приборов, баллоны пусты. ]] else return [[ Большую часть помещения занимают огромные {кислородные баллоны}. Толстые стенки из прочного сплава способны выдержать огромное давление. Судя по показаниям приборов, баллоны заполнены на ]] .. tostring(math.floor(percent + 0.5)) .. "%. "; end; end; seen_level = 1; }; leviathan_airregen = obj { nam = "leviathan_airregen"; dsc = [[ {Установка регенерации воздуха} сейчас находится в плачевном состоянии - часть деталей отсутствуют, еще некоторые поломаны. ]]; seen_level = 1; }; leviathan_wheelhouse = darkroom { nam = "leviathan_wheelhouse"; disp = "Левиафан, Рубка"; --[[dsc_lit = function (s) local view = ""; if (type(where(submarine_leviathan).view) == "function") then view = where(submarine_leviathan).view(where(submarine_leviathan)); else view = where(submarine_leviathan).view; end; return [ Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. ] .. (view); end; dsc_halflit = function (s) end;]] dsc_lit = [[ Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. ]]; dsc_halflit = [[ Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. ]]; dsc_dark = [[ Вы находитесь в рулевой рубке Левиафана. Три огромных иллюминатора дают превосходный обзор. В темноте вы ничего не можете разглядеть. ]]; way = { kh_vroom("В коридор", "leviathan_corridor", 2); }; obj = { 'leviathan_handwheel'; --kh_vway("handwheel", "Перед вами расположен {штурвал}. Рядом с ним расположено несколько рычагов. ", 'leviathan_dlg', 1); 'leviathan_airpump_control'; 'leviathan_controls'; 'leviathan_wheelhouse_sensors'; "leviathan_wheelhouse_wiring"; }; }; leviathan_handwheel = obj { nam = "leviathan_handwheel"; dsc = [[ Перед вами расположен {штурвал}. Рядом с ним расположено несколько рычагов. ]]; act = function(s) if (atlantis_found and submarine_control_learned) then walkin("demo_end"); --walkin('leviathan_dlg'); elseif (atlantis_found) then return [[ Вы не знаете, как управлять субмариной. ]]; else return [[ Вы не знаете, куда плыть. ]]; end; end; }; leviathan_airpump_control = obj { nam = "leviathan_airpump_control"; dsc = function(s) if (submarine_leviathan.airpump) then return [[ Один из них отвечает за управление {воздушными насосами} и находится сейчас во включенном состоянии. ]]; else return [[ Один из них отвечает за управление {воздушными насосами} и находится сейчас в выключенном состоянии. ]]; end; end; act = function(s) if (submarine_leviathan.airpump) then submarine_leviathan.airpump = false; return [[ Вы выключаете воздушные насосы. ]]; else lifeon(submarine_leviathan); submarine_leviathan.airpump = true; return [[ Вы включаете воздушные насосы. ]]; end; end; life = function(s) if (submarine_leviathan.power_on) then if (submarine_leviathan.airpump and submarine_leviathan.battery) then submarine_leviathan.air_level = submarine_leviathan.air_level + 250; if (submarine_leviathan.air_level > 432000) then submarine_leviathan.air_level = 432000; pr([[ Вы слышите гул работающих насосов. ]]); end; end; end; end; seen_level = 1; }; leviathan_controls = obj { nam = "leviathan_controls"; dsc = [[ Остальные {рычаги} используются для управления движением субмарины. ]]; seen_level = 1; }; leviathan_wheelhouse_sensors = obj { nam = "leviathan_wheelhouse_sensors"; dsc = [[ Чуть ниже рычагов находится небольшая {панель} с лампочками и стрелками каких-то приборов. ]]; act = function(s) if (submarine_leviathan.battery) then pr("На панели горят следующие лампочки: "); pr("батарея работает"); if (submarine_leviathan.power_on) then pr(", питание включено"); end; if (submarine_leviathan.airpump) then pr(", воздушные насосы включены"); end; if (submarine_leviathan.circuit_breaks > 0) then pr(", разорвана цепь освещения"); end; pr(". "); else pr("На панели не горит ни одна лампочка. "); end; local percent = submarine_leviathan.air_level / 432000 * 100; pr ([[ Кислородные баллоны заполнены на ]] .. tostring(math.floor(percent + 0.5)) .. "%. "); end; seen_level = 1; }; leviathan_wiring_dsc = [[ Под потолком висят какие-то {провода}. ]]; leviathan_wiring_act = function(s) if (submarine_leviathan.power_on and submarine_leviathan.battery) then return [[ Возможно, лучше отключить электричество, прежде чем копаться в проводах. ]]; end; if (s.state == 0) then return [[ Некоторые провода разорваны. ]]; elseif (s.state == 1) then return [[ Некоторые провода перемотаны изолентой. ]]; else return [[ Провода в порядке. ]]; end; end; leviathan_wiring_used = function(s, o) if (submarine_leviathan.power_on and submarine_leviathan.battery) then return [[ Возможно, лучше отключить электричество, прежде чем копаться в проводах. ]]; end; if (o == item_ducttape and s.state == 0) then s.state = 1; submarine_leviathan.circuit_breaks = submarine_leviathan.circuit_breaks - 1; if (submarine_leviathan.circuit_breaks == 0) then for i = 1, #leviathan_wiring do leviathan_wiring[i]:disable(); end; remove(item_ducttape, pl); end; return [[ Вы соединяете провода и заматываете их изолентой. ]]; end; end; leviathan_wheelhouse_wiring = obj { nam = "leviathan_wheelhouse_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_wardroom_wiring = obj { nam = "leviathan_wardroom_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_engineering_wiring = obj { nam = "leviathan_engineering_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_cargo_wiring = obj { nam = "leviathan_cargo_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_corridor_wiring = obj { nam = "leviathan_corridor_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_lower_wiring = obj { nam = "leviathan_lower_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_life_wiring = obj { nam = "leviathan_life_wiring"; dsc = leviathan_wiring_dsc; act = leviathan_wiring_act; used = leviathan_wiring_used; state = 2; seen_level = 1; }; leviathan_wiring = { leviathan_wheelhouse_wiring; leviathan_wardroom_wiring; leviathan_engineering_wiring; leviathan_cargo_wiring; leviathan_corridor_wiring; leviathan_lower_wiring; leviathan_life_wiring; }; leviathan_dlg = dlg { nam = "leviathan_dlg"; disp = "Штурвал Левиафана"; dsc = function() local view = ""; if (type(where(submarine_leviathan).view) == "function") then view = where(submarine_leviathan).view(where(submarine_leviathan)); else view = where(submarine_leviathan).view; end; return [[ Вы находитесь в рубке Левиафана перед штурвалом. Отсюда вы можете направиться куда-нибудь. Яркий свет электрических ламп освещает помещение. ^ ]] .. (view); end; update_options = function() leviathan_dlg:poff(10,11,12,13,14); if (where(submarine_leviathan).navigatable) then leviathan_dlg:poff(1,2,3,4,5); if (where(submarine_leviathan).south) then pon(10); end; if (where(submarine_leviathan).north) then pon(11); end; if (where(submarine_leviathan).east) then pon(12); end; if (where(submarine_leviathan).west) then pon(13); end; if (where(submarine_leviathan).gate) then pon(14); end; else if (atlantis_found) then leviathan_dlg:pon(1); end; --leviathan_dlg:pon(1, 2, 3, 4); leviathan_dlg:poff(5); if (where(submarine_leviathan) == atlantis_dock) then leviathan_dlg:poff(1); end; if (where(submarine_leviathan) == navjiarr_settlement) then leviathan_dlg:poff(2); end; if (where(submarine_leviathan) == navjiarr_hostile_settlement) then leviathan_dlg:poff(3); end; if (where(submarine_leviathan) == first_city_entrance) then leviathan_dlg:poff(4); leviathan_dlg:pon(5); end; end; end; enter = function(s) s.update_options(); end; phr = { {1, always = "true", "Атлантида", function() return "Вы прибыли в Атлантиду"; end, function() move(submarine_leviathan, "atlantis_dock"); leviathan_dlg:update_options(); end}, {2, always = "true", "Поселение Навьяр", function() return "Вы прибыли в Атлантиду"; end, function() move(submarine_leviathan, "navjiarr_settlement"); leviathan_dlg:update_options(); end}, {3, always = "true", "Враждебное поселение Навьяр", function() return "Вы прибыли в Атлантиду"; end, function() move(submarine_leviathan, "navjiarr_hostile_settlement"); leviathan_dlg:update_options(); end}, {4, always = "true", "Лсэрианотр, древний город Навьяр", function() return "Вы прибыли в Лсэрианотр"; end, function() move(submarine_leviathan, "first_city_entrance"); leviathan_dlg:update_options(); end}, {5, always = "true", "Вперед, в город", function() if (first_city_entrance.open) then return [[ Движимый вашей рукой, Левиафан вплывает в ворота. Оказавшись среди светящихся стен древнего города, вы отключаете прожектор. ]]; else return [[ Вы не рискуете протаранить ворота, простоявшие не одно тысячелетие. ]]; end; end, function() if (first_city_entrance.open) then move(submarine_leviathan, "first_city_outer_south"); leviathan_dlg:update_options(); end; end; }, {10, always = "true", "На юг", "", function() move(submarine_leviathan, where(submarine_leviathan).south); leviathan_dlg:update_options(); return where(submarine_leviathan).view; end;}; {11, always = "true", "На север", "", function() move(submarine_leviathan, where(submarine_leviathan).north); leviathan_dlg:update_options(); return where(submarine_leviathan).view; end;}; {12, always = "true", "На восток", "", function() move(submarine_leviathan, where(submarine_leviathan).east); leviathan_dlg:update_options(); return where(submarine_leviathan).view; end;}; {13, always = "true", "На запад", "", function() move(submarine_leviathan, where(submarine_leviathan).west); leviathan_dlg:update_options(); return where(submarine_leviathan).view; end;}; {14, always = "true", "В ворота", "", function() move(submarine_leviathan, where(submarine_leviathan).gate); leviathan_dlg:update_options(); return where(submarine_leviathan).view; end;}; {255, always = "true", "Назад", "", function() back(); end} }; }; phone_cabin = obj { nam = "phone_cabin"; disp = "Телефон"; dsc = [[ На столе установлен {телефонный аппарат} для связи в пределах субмарины. ^ ]]; act = function(s) walkin(phone_dlg); end; seen_level = 1; }; phone_wardroom = obj { nam = "phone_wardroom"; disp = "Телефон"; dsc = [[ На столе, рядом с креслом командира установлен {телефонный аппарат} для связи в пределах субмарины. ^ ]]; act = function(s) walkin(phone_dlg); end; seen_level = 1; }; phone_dlg = dlg { nam = "phone_dlg"; disp = "Телефон"; hideinv = true; dsc = [[ Вы снимаете трубку и можете вызвать кого-нибудь ]]; entered = function(s) poff("phaetlarr", "learr", "radcliffe", "wright"); for i = 1, #pl.party do pon(pl.party[i]); end; end; phr = { { tag = "phaetlarr", always = true, "Фаэтларр", code = [[walkin(phaetlarr_dlg)]]}, { tag = "learr", always = true, "Леарр", code = [[walkin(learr_dlg)]]}, { tag = "radcliffe", always = true, "Рэдклифф", code = [[walkin(radcliffe_dlg)]]}, { tag = "wright", always = true, "Райт", code = [[walkin(wright_dlg)]]}, { tag = "exit", always = true, "Положить трубку", code = [[back()]]} } }; function leviathan_init() local i = 0; while i < submarine_leviathan.circuit_breaks do local t = rnd(#leviathan_wiring); if (leviathan_wiring[t].state == 2) then leviathan_wiring[t].state = 0; i = i + 1; end; end; end;