# HG changeset patch # User Silverwing # Date 2017-11-06 17:56:36 # Node ID 0946ca600d70fe209eb7a6ab4e061d9c1c86d4a3 # Parent 7bc3b3ecc9f107d88f4f104f219745ce704905aa lfc fix/reimplementation in progress diff --git a/atlantis.lua b/atlantis.lua --- a/atlantis.lua +++ b/atlantis.lua @@ -32,8 +32,6 @@ global { atl_lfc_goldman_known = false; atl_lfc_goldman_exposed = false; atl_lfc_saboteur_known = false; - atl_lfc_sab_active = false; - atl_lfc_sab_alive = false; atl_fta_state = 0; atl_fta_darkstar_debrief = false; diff --git a/atlantis_dlg.lua b/atlantis_dlg.lua --- a/atlantis_dlg.lua +++ b/atlantis_dlg.lua @@ -1,6 +1,7 @@ char_darkstar_dlg = dlg { var { state = 0; + fta = 0; }; nam = "Винсент Даркстар"; disp = "Винсент Даркстар"; @@ -72,9 +73,12 @@ char_darkstar_dlg = dlg { elseif (atl_fta_state == 2 or atl_fta_state == 3) and not atl_fta_darkstar_debrief then atl_fta_darkstar_debrief = true; psub("fta"); - poff('show_clock'); + poff("show_clock", "accuse_saboteur"); if (have(item_goldmans_clock)) then - pon('show_clock'); + pon("show_clock"); + end; + if (atl_lfc_saboteur_known) then + pon("accuse_saboteur"); end; return [[Винсент Даркстар приказывает: "Рассказывайте". ]]; else @@ -227,19 +231,35 @@ char_darkstar_dlg = dlg { {tag="accuse_leroy", false, "Саботаж -- дело рук Леруа.", [[Даркстар недовольно отчитывает вас: "Во-первых, я вас просил не лезть в это дело. Во-вторых, я бы не был так уверен. В третьих, я еще раз прошу вас больше расследованию не мешать". ]], code [[ atl_lfc_suspect="leroy"; ]]}; {tag="more_questions", "У меня есть несколько вопросов.", [[Даркстар кивает: "Слушаю".]], code [[ psub('ask_more'); ]]}; {always=true, "Я пойду.", [[Даркстар прощается: "До встречи". ]], code [[ back(); ]]}; - {tag="fta"}; + {tag="fta"}; {"Что вы хотите услышать?", [[Даркстар поясняет: "Все, что произошло в Солисе и показалось вам подозрительным". ]]}; - {"Первый взрыв раздался, когда я был у входа в секцию[Кратко пересказать основные события]", [[Даркстар молча кивает. ]]}; - {"Один из клапанов работал неправильно: давление в нем было выше нормы.", [[Даркстар с сомнением произносит: "Интересно. За десять лет работы станции такого никогда не было". ]]}; - {tag="show_clock", "[Показать часы]А еще я нашел там вот это", [[Даркстар забирает часы и вертит их в руках: "Так-так-так. Франсуа Голдман. Леонард однозначно в этом замешан, но действовал он не один. Я все еще думаю, что они попытаются вывести из строя одну из субмарин. Скорее всего их целью будет Наутилус". ]], code [[ atl_lfc_goldman_exposed = true; psub("why_nau"); ]]}; + {"Первый взрыв раздался, когда я был у входа в секцию... [Кратко пересказать основные события]", [[Даркстар молча кивает. ]], code [[ + char_darkstar_dlg.fta = char_darkstar_dlg.fta + 1; + if char_darkstar_dlg.fta == 2 then + psub("fta2"); + end; + ]]}; + {"Один из клапанов работал неправильно: давление в нем было выше нормы.", [[Даркстар с сомнением произносит: "Интересно. За десять лет работы станции такого никогда не было". ]], code [[ + char_darkstar_dlg.fta = char_darkstar_dlg.fta + 1; + if char_darkstar_dlg.fta == 2 then + psub("fta2"); + end; + ]]}; + {tag="show_clock", "[Показать часы]А еще я нашел там вот это.", [[Даркстар забирает часы и вертит их в руках: "Так-так-так. Франсуа Голдман. Леонард однозначно в этом замешан, но действовал он не один. Я все еще думаю, что они попытаются вывести из строя одну из субмарин. Скорее всего их целью будет Наутилус". ]], code [[ + atl_rep_darkstar = atl_rep_darkstar + 1; + atl_lfc_goldman_exposed = true; + psub("why_nau"); + ]]}; + {tag="accuse_saboteur", "Голдман признался в саботаже и сдал Леруа... [Пересказать слова Голдмана]", [[Даркстар кивает: "Прекрасно. Вы далеко пойдете, Дрейк". ]], code [[ walkin("atl_lfc_outro_expose"); ]]}; + {tag="fta2"}; + {"Что-то еще?", [[Даркстар скрещивает руки на груди и откидывается на спинку кресла, продолжая смотреть прямо вам в глаза. Он подтверждает: "Да, Дрейк. Мне понадобится ваша помощь. Я все еще считаю, что следующей целью саботажника станет Наутилус". ]], code [[ psub("why_nau"); ]]}; {tag="why_nau"}; {"Почему именно Наутилус?", [[Даркстар объясняет:"Саботажник хочет не убить всех, а поломать станцию. Он хочет наверх, а не умереть здесь. Наутилус -- субмарина малого радиуса, а Энтерпрайз и Левиафан способны доставить нас на континенты". ]]}; {"Соглашусь с вашим предположением", [[Даркстар кивает: "Хорошо. Я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]}; {"Мне кажется, целью будет другая субмарина", [[Даркстар кивает: "Я это учел. Мы будем следить за всеми доками. Также, я попрошу вас помочь мне с этим заданием". ]], code [[ psub("lfc_help"); ]]}; {tag="lfc_help"}; {"Почему я?", [[Даркстар объясняет:"Я хочу свести количество людей, знающих о саботажах к минимуму, а вы уже в курсе ситуации". ]]}; - {"Что я должен сделать?", [[Даркстар рассказывает:"В семь часов вечера вы отправляетесь в док Наутилуса и наблюдаете за происходящим в течение ночи. Если вы замечаете что-то подозрительное -- принимаете меры на ваше усмотрение", -- Даркстар достает из ящика стола револьвер и кладет перед вами: "Это вам не помешает". - ]], code [[ + {"Что я должен сделать?", [[Даркстар рассказывает:"Сейчас отправляетесь в док Наутилуса и наблюдаете за происходящим в течение ночи. Если вы замечаете что-то подозрительное -- принимаете меры на ваше усмотрение", -- Даркстар достает из ящика стола револьвер и кладет перед вами: "Это вам не помешает". ]], code [[ take(item_colt); atl_lfc_state = 2; back(); @@ -2306,11 +2326,10 @@ char_goldman_dlg = dlg { {tag="give_clock_2"}; {"Эти часы я подобрал на месте саботажа. Теперь вы не отвертитесь.", [[Леонард поднимается и садится. Тяжело вздохнув он сознается: "Хорошо, я все скажу. Только если обещаете, что меня больше не будут держать на этой станции". ]], code [[ psub('promise'); ]]}; {tag="promise"}; - {always = true, "Я сделаю все, что в моих силах.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" - ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]}; + {always = true, "Я сделаю все, что в моих силах.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется, подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]}; {always = true, "Я ничего не обещаю.",[[Леонард Голдман дрожащим голосом отвечает: "Тогда я ничего не скажу". ]], code [[ psub("threaten"); ]]}; {tag = "threaten"}; - {always = true, "Тогда пусть Даркстар с вами разбирается", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]}; + {always = true, "Тогда пусть Даркстар с вами разбирается.", [[Леонард Голдман вздыхает и начинает сбивчиво рассказывать: "Это все Мишель придумал. У меня бы мозгов не хватило. Он и в Игнисе пожар устроил. Солис он тоже хотел взорвать сам, но Даркстар, кажется подозревает его. Поэтому он упросил меня это сделать... И зачем я согласился?!" ]], code [[ atl_lfc_saboteur_known = true; psub("leroy");]]}; {"[Отдать часы]Черт с тобой, забирай свои часы.", [[Голдман крайне удивлен: "Вот так просто?" ]], code [[ remove("item_goldmans_clock"); psub("tired_of_you"); ]]}; {"[Уйти]", code = [[ back(); ]]}; {tag = "tired_of_you"}; diff --git a/atlantis_from_the_ashes.lua b/atlantis_from_the_ashes.lua --- a/atlantis_from_the_ashes.lua +++ b/atlantis_from_the_ashes.lua @@ -375,10 +375,7 @@ atl_fta_game_over_left_2 = room { atl_fta_ending = room { nam = "Атлантида"; - dsc = [[ - Через шлюз вы выбираетесь из Солиса и оказываетесь снаружи. Через некоторое время вас подбирает Наутилус, чтобы вернуть на станцию. От экипажа вы узнаете, что потребление энергии на станции сокращено до восстановления Солиса. ^ - Вернувшись на станцию, вы сразу же отправляетесь в свою каюту, чтобы отдохнуть. - ]]; + dsc = [[Через шлюз вы выбираетесь из Солиса и оказываетесь снаружи. Через некоторое время вас подбирает Наутилус, чтобы вернуть на станцию. От экипажа вы узнаете, что потребление энергии на станции сокращено до восстановления Солиса. ^Вернувшись на станцию, вы сразу же отправляетесь в свою каюту, чтобы отдохнуть. ]]; entered = function(s) atl_fta_state = 2; remove(item_atl_fta_suit); @@ -386,4 +383,4 @@ atl_fta_ending = room { obj = { vway('continue', '{Продолжить}', 'atl_luna_drake_room'); }; -}; \ No newline at end of file +}; diff --git a/atlantis_looking_for_clues.lua b/atlantis_looking_for_clues.lua --- a/atlantis_looking_for_clues.lua +++ b/atlantis_looking_for_clues.lua @@ -37,10 +37,7 @@ atl_lfc_darkstar_dlg = dlg { poff("random_lie", "wright_said"); pon("random_true"); end; - return [[ - Винсент Даркстар сидит за столом в своем кабинете. Он приглашает вас сесть напротив, а охранников просит покинуть помещение. ^ - Как только они выходят, Даркстар достает из под стола папку с какими-то бумагами и начинает спрашивать вас: "Где вы были, когда начался пожар?" - ]]; + return [[Винсент Даркстар сидит за столом в своем кабинете. Он приглашает вас сесть напротив, а охранников просит покинуть помещение. ^Как только они выходят, Даркстар достает из под стола папку с какими-то бумагами и начинает спрашивать вас: "Где вы были, когда начался пожар?" ]]; end; phr = { {tag="q1"}; @@ -247,10 +244,7 @@ atl_lfc_darkstar_interlude_2 = room { atl_lfc_non_coop = room { nam = "Винсент Даркстар"; - dsc = [[ - После этого он снимает телефонную трубку и отдает туда приказ: "Заберите Дрейка". ^ - В комнату входят два стражника и сопровождают вас в вашу комнату. - ]]; + dsc = [[После этого он снимает телефонную трубку и отдает туда приказ: "Заберите его". ^В комнату входят два стражника и сопровождают вас в вашу комнату. ]]; obj = { kh_vway("Продолжить", "{Продолжить}", function() if (atl_lfc_darkstar_dlg.total_limit < 1) then @@ -265,33 +259,25 @@ atl_lfc_non_coop = room { atl_lfc_game_over = room { nam = "Игра окончена"; disp = "Игра окончена"; - dsc = [[ - Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Вы останетесь под стражей до тех пор, пока мы не найдем саботажника. После этого, мы решим, что делать с вами".^ - Вам ничего не остается, кроме как ждать. Через несколько дней стражники сопровождают вас на Левиафан. Там вас запирают в одной из кают. Несколько недель Левиафан полным ходом движется в неизвестном направлении. Наконец, вас выпускают из каюты. Один из охранников сообщает вам: "В нескольких милях к северу вдоль побережья находится небольшой городок. Оттуда вы сможете добраться куда вам угодно. Мы дадим вам немного еды и достаточно денег, чтобы вы могли добраться домой".^ - Вы забираете переданные вам вещи и через несколько мгновений Левиафан скрывается под поверхностью воды. Никаких средств для возвращения на Атлантиду у вас не остается и, скорее всего, вы никогда не узнаете что стало с вашим отцом. - ]]; + dsc = [[Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Вы останетесь под стражей до тех пор, пока мы не найдем саботажника. После этого, мы решим, что делать с вами". ^Вам ничего не остается, кроме как ждать. Через несколько дней стражники сопровождают вас на Левиафан. Там вас запирают в одной из кают. Несколько недель Левиафан полным ходом движется в неизвестном направлении. Наконец, вас выпускают из каюты. Один из охранников сообщает вам: "В нескольких милях к северу вдоль побережья находится небольшой городок. Оттуда вы сможете добраться куда вам угодно. Мы дадим вам немного еды и достаточно денег, чтобы вы могли добраться домой". ^Вы забираете переданные вам вещи и через несколько мгновений Левиафан скрывается под поверхностью воды. Никаких средств для возвращения на Атлантиду у вас не остается и, скорее всего, вы никогда не узнаете что стало с вашим отцом. ]]; }; atl_lfc_waiting = room { nam = "Атлантида, Луна, ваша комната"; - dsc = [[ - Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Отдохните. Завтра мы попробуем поговорить еще раз". - ]]; + dsc = [[Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Отдохните. Завтра мы попробуем поговорить еще раз". ]]; obj = { vway("Продолжить", "{Продолжить}", "atl_lfc_waiting"); }; }; atl_lfc_dock_s = room { - nam = "Атлантида, Аква, док Наутилуса, у входа"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. У западной стены вы видите пульт управления краном. У северной стены составлены какие-то ящики. - ]]; + nam = "Атлантида, Аква, док Наутилуса, южная часть, у входа"; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. У западной стены вы видите пульт управления краном. У северной стены составлены какие-то ящики. ]]; way = { kh_vroom("В коридор A", "atl_aqua_corridor_a"); - kh_vroom("По часовой стрелке", "atl_lfc_dock_w"); - kh_vroom("Против часовой стрелки", "atl_lfc_dock_e"); - kh_vroom("На мостик", "atl_lfc_dock_sb"); + kh_vroom("К западной стене", "atl_lfc_dock_w"); + kh_vroom("К восточной стене", "atl_lfc_dock_e"); + kh_vroom("На мостик", "atl_lfc_bridge_s"); }; obj = { @@ -307,60 +293,145 @@ atl_nd_crane = obj { }; nam = "Кран"; dsc = function(s) - local r = [[ - Под потолком расположен {кран}, прикрепленный к балкам, служащим направляющими для его движения. - ]]; - if px == 2 and py == 2 then - r = r .. "Сейчас кран висит в центре комнаты над Наутилусом."; + local r = [[Под потолком расположен {кран}, прикрепленный к балкам, служащим направляющими для его движения. ]]; + if px == 1 and py == 1 then + r = r .. "Сейчас кран висит в северо-западной части комнаты. "; + elseif px == 1 and py == 2 then + r = r .. "Сейчас кран висит в северной части комнаты. "; + elseif px == 1 and py == 3 then + r = r .. "Сейчас кран висит в северо-восточной части комнаты. "; + elseif px == 1 and py == 2 then + r = r .. "Сейчас кран висит над мостиком в западной части комнаты. "; + elseif px == 2 and py == 2 then + r = r .. "Сейчас кран висит в центре комнаты над Наутилусом. "; + elseif px == 3 and py == 2 then + r = r .. "Сейчас кран висит над мостиком в восточной части комнаты. "; + elseif px == 1 and py == 3 then + r = r .. "Сейчас кран висит над мостиком в юго-западной части комнаты. "; + elseif px == 2 and py == 3 then + r = r .. "Сейчас кран висит над мостиком в южной части комнаты. "; + elseif px == 3 and py == 3 then + r = r .. "Сейчас кран висит над мостиком в юго-восточной части комнаты. "; end; return r; end; - act = [[ - Скорее всего, вы можете управлять краном с пульта управления в этой комнате. - ]]; + act = [[Скорее всего, вы можете управлять краном с пульта управления в этой комнате. ]]; +}; + +atl_lfc_crane_control_obj = obj { + nam = "atl_lfc_crane_control_obj"; + dsc = "Рядом с вами расположен пульт управления краном. "; +}; + +atl_lfc_crane_control = room { + nam = "atl_lfc_crane_control"; + hideinv = true; + way = { + kh_vroom("Отойти от пульта", "atl_lfc_dock_w"); + }; + dsc = [[Вы стоите у панели управления краном. Перед вами три рычага: два из них, отмеченные как в<->з и c<->ю установлены в среднее положение, третий, отмеченный как "верх-низ", установлен в верхнее положение. ]]; + obj = { + "atl_nd_crane"; + "atl_lfc_crane_ew_dec"; + "atl_lfc_crane_ew_inc"; + "atl_lfc_crane_ns_dec"; + "atl_lfc_crane_ns_inc"; + "atl_lfc_crane_ud_tgl"; + }; +}; + +atl_lfc_crane_ew_dec = { + nam = "atl_lfc_crane_ew_dec"; + dsc = "^^{Сдвинуть рычаг \"в<->з\" влево}^"; + act = { + if atl_nd_crane.px == 1 then + return [[Рычаг заклинило. ]]; + end; + atl_nd_crane.px = atl_nd_crane.px - 1; + return "Кран сдвигается на запад. "; + }; +}; + +atl_lfc_crane_ew_inc = { + nam = "atl_lfc_crane_ew_inc"; + dsc = "{Сдвинуть рычаг \"в<->з\" вправо}^"; + act = { + if atl_nd_crane.px == 3 then + return [[Рычаг заклинило. ]]; + end; + atl_nd_crane.px = atl_nd_crane.px + 1; + return "Кран сдвигается на восток. "; + }; +}; + +atl_lfc_crane_ns_dec = { + nam = "atl_lfc_crane_ns_dec"; + dsc = "^^{Сдвинуть рычаг \"с<->ю\" влево}^"; + act = { + if atl_nd_crane.px == 1 then + return [[Рычаг заклинило. ]]; + end; + atl_nd_crane.py = atl_nd_crane.py - 1; + return "Кран сдвигается на север. "; + }; +}; + +atl_lfc_crane_ns_inc = { + nam = "atl_lfc_crane_ns_inc"; + dsc = "{Сдвинуть рычаг \"с<->ю\" вправо}^"; + act = { + if atl_nd_crane.px == 3 then + return [[Рычаг заклинило. ]]; + end; + atl_nd_crane.py = atl_nd_crane.py + 1; + return "Кран сдвигается на юг. "; + }; +}; + +atl_lfc_crane_ud_tgl = { + nam = "atl_lfc_crane_ud_tgl"; + dsc = "{Повернуть рычаг \"Верх-низ\"}"; + act = "Вам это сейчас не нужно. "; }; atl_nd_barrel = obj { nam = "Бочка"; - dsc = [[ - На крюке крана висит {бочка}, судя по всему -- пустая. - ]]; + dsc = [[На крюке крана висит {бочка}, судя по всему -- пустая. ]]; canshoot = function(s) - return atl_lfc_sab_active and where(atl_lfc_sab) == atl_lfc_bridge_w and atl_nd_crane.px == 1 and atl_nd_crane.py == 2; + return where(atl_lfc_sab) == atl_lfc_bridge_w and atl_nd_crane.px == 1 and atl_nd_crane.py == 2; end; onshoot = function(s) remove(atl_nd_barrel); remove(char_leroy, where('char_leroy')); remove(char_goldman, where('char_goldman')); - atl_lfc_sab_alive = true; walkin(atl_lfc_dock_end_barreled); end; }; atl_lfc_dock_w = room { nam = "Атлантида, Аква, док Наутилуса, западная часть"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь у западной стороны. На небольшом расстоянии от вас вы видите пульт управления краном. У северной стены дока составлено несколько ящиков. - ]]; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь у западной стороны. На небольшом расстоянии от вас вы видите пульт управления краном. У северной стены дока составлено несколько ящиков. ]]; way = { - kh_vroom("По часовой стрелке", "atl_lfc_dock_n"); - kh_vroom("Против часовой стрелки", "atl_lfc_dock_s"); - kh_vroom("На мостик", "atl_lfc_dock_wb"); + kh_vroom("К северной стене", "atl_lfc_dock_n"); + kh_vroom("К южной стене", "atl_lfc_dock_s"); + kh_vroom("На мостик", "atl_lfc_bridge_w"); kh_vroom("К пульту управления", "atl_lfc_control"); }; + obj = { + "atl_nd_crane"; + }; }; atl_lfc_dock_n = room { nam = "Атлантида, Аква, док Наутилуса, северная часть"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь в северной части помещения. У западной стены вы видите пульт управления краном. - ]]; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь в северной части помещения. У западной стены вы видите пульт управления краном. ]]; way = { - kh_vroom("По часовой стрелке", "atl_lfc_dock_e"); - kh_vroom("Против часовой стрелки", "atl_lfc_dock_w"); + kh_vroom("К восточной стене", "atl_lfc_dock_e"); + kh_vroom("К западной стене", "atl_lfc_dock_w"); }; obj = { + "atl_nd_crane"; "atl_lfc_boxes"; }; }; @@ -372,75 +443,64 @@ atl_lfc_boxes = obj { nam = "Ящики"; dsc = function(s) if (s.state == 0) then - return [[ - У стены составлено несколько {ящиков}. - ]]; + return [[У стены составлено несколько {ящиков}. ]]; elseif (s.state == 1) then - return [[ - У стены составлено несколько {ящиков}, за которыми вы сможете спрятаться, поджидая саботажника. - ]]; + return [[У стены составлено несколько {ящиков}, за которыми вы сможете спрятаться, поджидая саботажника. ]]; elseif (s.state == 2) then - return [[ - У стены составлено несколько {ящиков}. - ]]; + return [[У стены составлено несколько {ящиков}. ]]; end; end; act = function(s) if (s.state == 0) then s.state = 1; - return [[ - За этими ящиками можно спрятаться! - ]]; + return [[За этими ящиками можно спрятаться! ]]; elseif (s.state == 1) then s.state = 2; walk("atl_lfc_behind_boxes"); - return [[ - Вы прячетесь за ящиками. Через некоторое время дверь дока открывается и кто-то входит. В полумраке издалека вы не можете разглядеть кто это, но скорее всего, это саботажник. - ]]; + return [[Вы прячетесь за ящиками. Через некоторое время дверь дока открывается и кто-то входит. В полумраке издалека вы не можете разглядеть кто это, но скорее всего, это саботажник. ]]; else - return [[ - Вам это больше не нужно. - ]]; + return [[Вам это больше не нужно. ]]; end; end; }; atl_lfc_bridge_s = obj { nam = "Атлантида, Аква, док Наутилуса, мостик"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в южной части дока. - ]]; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в южной части дока. ]]; way = { kh_vroom("Ко входу", "atl_lfc_dock_s"); kh_vroom("На соседний мостик", "atl_lfc_bridge_e"); }; + obj = { + "atl_nd_crane"; + }; }; atl_lfc_bridge_e = obj { nam = "Атлантида, Аква, док Наутилуса, мостик"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в восточной части дока. - ]]; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в восточной части дока. ]]; way = { kh_vroom("К стене", "atl_lfc_dock_w"); kh_vroom("На соседний мостик", "atl_lfc_bridge_s"); }; + obj = { + "atl_nd_crane"; + }; }; atl_lfc_bridge_w = obj { nam = "Атлантида, Аква, док Наутилуса, мостик"; - dsc = [[ - Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в западной части дока. - ]]; + dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Наутилус. Снизу, под водой, расположен огромный люк, закрывающий доступ внутрь дока. Несколько легких мостиков сконструированы таким образом, чтобы их расположение легко можно было изменить для удобства работы и обслуживания субмарин. Вы находитесь на одном из этих мостиков, в западной части дока. ]]; way = { kh_vroom("К стене", "atl_lfc_dock_e"); kh_vroom("К субмарине", function(s) - pr [[ - Мне там нечего делать - ]]; + pr [[Вам там нечего делать. ]]; return false; end); }; + obj = { + "atl_nd_crane"; + }; }; atl_lfc_sab = obj { @@ -449,13 +509,14 @@ atl_lfc_sab = obj { }; nam = "Мишель Леруа"; canshoot = true; - dsc = [[ - В нескольких метрах от вас стоит {Мишель Леруа}. Он обращен к вам спиной и не видит вас. - ]]; + dsc = [[В нескольких метрах от вас стоит {Мишель Леруа}. Он обращен к вам спиной и не видит вас. ]]; act = function(s) walkin("atl_lfc_sab_dlg"); end; life = function(s) + if (where(atl_lfc_sab_vis) ~= where(pl)) then + move(atl_lfc_sab_vis, where(pl)); + end; if (s.tick > 0) then s.tick = s.tick - 1; else @@ -482,57 +543,33 @@ atl_lfc_sab_vis = obj { onshoot = function(s) if (s.shot == 0) then s.shot = 1; - return [[ - Вы стреляете в силуэт, но промахиваетесь. Через мгновение, где-то рядом пролетает пуля. - ]]; + return [[Вы стреляете в силуэт, но промахиваетесь. Через мгновение, где-то рядом пролетает пуля. ]]; else remove(char_leroy, where('char_leroy')); walk("atl_lfc_dock_end_shot"); - return [[ - Вы повторно стреляете в саботажника и, судя по всему, попадаете. Леруа хватается за грудь и медленно падает на пол. - ]]; + return [[Вы повторно стреляете в саботажника и, судя по всему, попадаете. Леруа хватается за грудь и медленно оседает на пол. ]]; end; end; dsc = function(s) if (where(pl) == atl_lfc_behind_boxes and where(atl_lfc_sab) == atl_lfc_bridge_w) then - return [[ - Вы видите {Мишеля Леруа}, идущего по мостику, ведущему к Наутилусу. - ]]; + return [[Вы видите {Мишеля Леруа}, идущего по мостику, ведущему к Наутилусу. ]]; elseif (where(pl) == atl_lfc_behind_boxes and where(atl_lfc_sab) == atl_lfc_dock_w) then - return [[ - Вы видите {Мишеля Леруа}, идущего вдоль западной стены дока. - ]]; + return [[Вы видите {Мишеля Леруа}, идущего вдоль западной стены дока. ]]; elseif (where(atl_lfc_sab) == atl_lfc_bridge_w) then - return [[ - Вы видите {Мишеля Леруа}, идущего по мостику в западной части дока. Он не видит вас. - ]]; - end; - end; - life = function(s) - if (where(s) ~= where(pl)) then - move(s, where(pl)); + return [[Вы видите {Мишеля Леруа}, идущего по мостику в западной части дока. Он не видит вас. ]]; end; end; }; atl_lfc_sab_dlg = dlg { nam = "Мишель Леруа"; - dsc = [[ - Мишель Леруа стоит спиной к вам и не видит вашего приближения. Вы можете воспользоваться этим. - ]]; + dsc = [[Мишель Леруа стоит спиной к вам и не видит вашего приближения. Вы можете воспользоваться этим. ]]; phr = { - {"Застрелить его", [[ - Вы стреляете саботажнику в спину и, не успев понять, что произошло, он падает в воду, пронзенный пулей. - ]], code [[ + {"Застрелить его", [[Вы стреляете саботажнику в спину и, не успев понять, что произошло, он падает в воду, пронзенный пулей. ]], code [[ remove(char_leroy, where('char_leroy')); walk("atl_lfc_dock_end_shot"); ]]}; - {"Попытаться оглушить его", [[ - Вы оглушаете саботажника. - ]], code [[ - remove(char_leroy, where('char_leroy')); - remove(char_goldman, where('char_goldman')); - atl_lfc_sab_alive = true; + {"Попытаться оглушить его", [[Вы оглушаете саботажника. ]], code [[ walk("atl_lfc_dock_end_ko"); ]]}; }; @@ -540,47 +577,58 @@ atl_lfc_sab_dlg = dlg { atl_lfc_dock_end_shot = room { nam = "Атлантида, Аква, док Наутилуса"; - dsc = [[ - Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан".^ - Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи... Проснувшись днем, вы слышите по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". - ]]; + dsc = [[Через несколько минут в помещение входит охрана станции во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам унести тело, а сам обращается к вам: "Хорошая работа. Вскоре мы сообщим о том, когда вы сможете забрать Левиафан". ^Вы возвращаетесь в свою комнату, чтобы отдохнуть после тяжелой ночи... Проснувшись днем, вы слышите по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". ]]; obj = { vway("Продолжить", "{Продолжить}", "atl_luna_drake_room"); }; entered = function(s) atl_lfc_state = 3; - if (atl_lfc_goldman_exposed) then - remove(char_goldman, where('char_goldman')); - end; + atl_lfc_leroy = 1; + remove(char_leroy, where('char_leroy')); + if (atl_lfc_goldman_exposed) then + atl_lfc_goldman = 2; + remove(char_goldman, where('char_goldman')); + end; end; }; atl_lfc_dock_end_barreled = room { nam = "Атлантида, Аква, док Наутилуса"; - dsc = [[ - Вы попадаете в один из тросов, на который крепилась бочка и она с грохотом катится вниз, сбивая с ног саботажника. Тот падает в воду. Он не успевает придти в себя, как в помещение входит охрана станции, привлеченная шумом, во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам увести Мишеля, а сам обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим".^ - Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". - ]]; + dsc = [[Вы попадаете в один из тросов, на который крепилась бочка и она с грохотом катится вниз, сбивая с ног саботажника. Тот падает в воду. Он не успевает придти в себя, как в помещение входит охрана станции, привлеченная шумом, во главе с Винсентом Даркстаром. Винсент отдает приказ охранникам увести Мишеля, а сам обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим". ^Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". ]]; obj = { vway("Продолжить", "{Продолжить}", "atl_luna_drake_room"); }; entered = function(s) atl_lfc_state = 3; + atl_lfc_leroy = 2; + atl_lfc_goldman = 2; + remove(char_leroy, where('char_leroy')); + remove(char_goldman, where('char_goldman')); end; }; atl_lfc_dock_end_ko = room { nam = "Атлантида, Аква, док Наутилуса"; - dsc = [[ - Вы оглушаете саботажника и ждете, когда в помещение придут охранники.^ - Они приходят через несколько минут вместе с Винсентом Даркстером. Охранники уносят неподвижного Леруа, а Даркстар обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим".^ - Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". - ]]; + dsc = [[Вы оглушаете саботажника и ждете, когда в помещение придут охранники. ^Они приходят через несколько минут вместе с Винсентом Даркстером. Охранники уносят неподвижного Леруа, а Даркстар обращается к вам: "Хорошая работа. Нам надо будет немного поработать с ним. Если нам потребуется ваша помощь, мы сообщим". ^Прошло около недели, прежде чем вы услышали по радио голос Моро: "Дрейк, подойдите в мой кабинет. Нам надо поговорить". ]]; obj = { vway("Продолжить", "{Продолжить}", "atl_luna_drake_room"); }; entered = function(s) atl_lfc_state = 3; + atl_lfc_leroy = 2; + atl_lfc_goldman = 2; + remove(char_leroy, where('char_leroy')); + remove(char_goldman, where('char_goldman')); end; }; +atl_lfc_outro_expose = cutscene("Атлантида", "Атлантида", [[Даркстар поднимает трубку телефона и отдает приказ: "Приведите ко мне Леруа и Голдмана". Вас он просит отойти в угол комнаты и ждать там. ^Допрос продолжался недолго. Сперва Леруа упирался, но подельник сдал его с потрохами и в итоге ему осталось только признать свою вину. ^Подозреваемых заперли в их комнатах, а вас Даркстар отпустил отдыхать. Придя в свою комнату, вы тут же ложитесь спать. ^Вы просыпаетесь от телефонного звонка. Подняв трубку вы слышите голос Даркстара: "Дрейк, зайдите ко мне". ]], "atl_luna_drake_room", function(s) + atl_lfc_state = 3; + atl_lfc_leroy = 2; + atl_lfc_goldman = 2; + atl_rep_moreau = atl_rep_moreau + 1; + atl_rep_darkstar = atl_rep_darkstar + 1; + rel_walter = rel_walter + 1; + remove(char_leroy, where('char_leroy')); + remove(char_goldman, where('char_goldman')); +end);