# HG changeset patch # User Silverwing # Date 2016-05-15 10:18:23 # Node ID 387d673c520ddfbc1d6744089e3f5ec33eb70798 # Parent 712baf728ed1162369c0134ab43675899140a888 LFC partially implemented diff --git a/atlantis.lua b/atlantis.lua --- a/atlantis.lua +++ b/atlantis.lua @@ -10,6 +10,8 @@ global { atl_iyh_state = 0; atl_iyh_ryveerr_spoken = false; + atl_lfc_state = 0; + atl_rep_moreau = 0; atl_rep_darkstar = 0; atl_rep_svetlova = 0; diff --git a/atlantis_ignis_on_fire.lua b/atlantis_ignis_on_fire.lua --- a/atlantis_ignis_on_fire.lua +++ b/atlantis_ignis_on_fire.lua @@ -1162,10 +1162,11 @@ atl_iof_electr_panel_open = dlg { atl_iof_end = room { nam = "Атлантида"; dsc = [[ - Вы возвращаетесь на станцию и сразу же отправляетесь в свою комнату, чтобы отдохнуть. При выходе из дока вас встречает Моро и говорит: "Дрейк. Я понимаю, вам нужен отдых. Как сможете - посетите меня и других лидеров станции". Вы приходите в свою комнату и сразу же засыпаете...^ - Вы просыпаетесь утром, полностью готовый заняться новыми делами. + Вы возвращаетесь на станцию и сразу же отправляетесь в свою комнату, чтобы отдохнуть. Вы просыпаетесь утром, полностью готовый заняться новыми делами. ^ + Почти сразу к вам в комнату входят двое охранников. Они просят вас проследовать за ними к начальнику службы безопасности - Винсенту Даркстару. У вас нет никакого выхода, кроме как пойти с ними... ]]; entered = function(s) + atl_lfc_state = 1; if (atl_iof_time_state.learr_safe) then atl_iof_learr_suit = true; end; @@ -1179,7 +1180,7 @@ atl_iof_end = room { atl_iof_completed = true; end; obj = { - vway("Продолжить", "{Продолжить}", "atlantis_luna_drake_room"); + vway("Продолжить", "{Продолжить}", "atl_lfc_darkstar_dlg"); }; }; \ No newline at end of file diff --git a/atlantis_looking_for_clues.lua b/atlantis_looking_for_clues.lua new file mode 100644 --- /dev/null +++ b/atlantis_looking_for_clues.lua @@ -0,0 +1,331 @@ +atl_lfc_darkstar_dlg = dlg { + var { + total_limit = 3; + limit = 3; + q2_states = 0; + }; + nam = "Винсент Даркстар"; + disp = "Винсент Даркстар"; + entered = function(s) + psub("q1"); + s.limit = 3; + q2_states = 0; + if (atl_jack_in_party) then + pon("random_lie", "wright_said"); + poff("random_true"); + else + poff("random_lie", "wright_said"); + pon("random_true"); + end; + return [[ + Винсент Даркстар сидит за столом в своем кабинете. Он приглашает вас сесть напротив, а охранников просит покинуть помещение. ^ + Как только они выходят, Даркстар достает из под стола папку с какими-то бумагами и начинает спрашивать вас: "Где вы были, когда начался пожар?" + ]]; + end; + phr = { + {tag="q1"}; + {"Вы меня подозреваете?", [[ + "Отвечайте на поставленный вопрос. Это не имеет значения". + ]]}; + {always=true,"Мы с Леарр разговаривали в зале А", [[ + "Хорошо. Дальше. Заметили ли вы что-то необычное в секции?" + ]], code [[ psub("q2"); ]]}; + {always=true,"Я не хочу отвечать", [[ + "Нет проблем. Следующий вопрос. Заметили ли вы что-то необычное в секции?" + ]], code [[ + atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1; + psub("q2"); + ]]}; + {tag="q2"}; + {always=true,"Больше ничего.", function(s) + if (atl_lfc_darkstar_dlg.q2_states < 2) then + atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1; + end; + pr [[ + "Хорошо, идем дальше. + ]]; + if (atl_jack_in_party) then + psub("q3_1"); + return [[ + Что делал в это время ваш друг, Джек?" + ]]; + else + psub("q3_2"); + return [[ + Кроме вас кто-нибудь еще был в секции?" + ]]; + end; + + end}; + {always=true,"Двери в залы B и C не работали.", [[ + "Техники..." + ]], code [[ + atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; + ]]}; + {always=true,"Один из электрощитов не был закрыт.", [[ + "Обычное дело на Атлантиде. Наши техники порой позволяют себе невероятную неаккуратность". + ]], code [[ + atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; + ]]}; + {always=true,"В зале А не работали электроприборы.", [[ + "Это уже совсем ни в какие ворота не лезет". + ]], code [[ + atl_lfc_darkstar_dlg.q2_states = atl_lfc_darkstar_dlg.q2_states + 1; + ]]}; + {tag="q3_1"};--Что делал в это время ваш друг, Джек? + {always=true,"Он вышел в главный зал, чтобы не мешать нам", function(s) + if (atl_lfc_darkstar_dlg.limit < 2) then + psub("i1"); + return [[ + "Вы в Игнис с какой целью пришли?" + ]]; + else + walk("atl_ifc_darkstar_interlude"); + return [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]]; + end; + end}; + {always=true,"Он был с нами", function(s) + if (atl_lfc_darkstar_dlg.limit < 2) then + psub("i1"); + return [[ + "Вы в Игнис с какой целью пришли?" + ]]; + else + walk("atl_ifc_darkstar_interlude"); + return [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]]; + end; + end}; + {always=true,"Не помню", function(s) + atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1; + if (atl_lfc_darkstar_dlg.limit < 2) then + psub("i1"); + return [[ + "Вы в Игнис с какой целью пришли?" + ]]; + else + walk("atl_ifc_darkstar_interlude"); + return [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]]; + end; + end}; + {tag="q3_2"};--Кроме вас с Леарр кто-нибудь еще был в секции? + {always=true,"Я никого не видел", function(s) + if (atl_lfc_darkstar_dlg.limit < 2) then + psub("i1"); + return [[ + "Вы в Игнис с какой целью пришли?" + ]]; + else + walk("atl_ifc_darkstar_interlude"); + return [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]]; + end; + end}; + {always=true,"Не помню", function(s) + atl_lfc_darkstar_dlg.limit = atl_lfc_darkstar_dlg.limit - 1; + if (atl_lfc_darkstar_dlg.limit < 2) then + psub("i1"); + return [[ + "Вы в Игнис с какой целью пришли?" + ]]; + else + walk("atl_ifc_darkstar_interlude"); + return [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]]; + end; + end}; + {tag="i1"}; + {always=true,"Поговорить с Леарр.", function(s) + if (atl_iof_learr_dead) then + if (atl_lfc_darkstar_dlg.total_limit > 1) then + psub("i2_1"); + return [[ + "Почему вы оставили Леарр там?" + ]]; + else + psub("i3"); + return [[ + "Откуда вы узнали про скафандры?" + ]]; + end; + else + psub("i2_2"); + return [[ + "Почему вы спасли Леарр?" + ]]; + end; + end;}; + {always=true,"Посмотреть Игнис.", [[ + "Вы знали, что Леарр там?" + ]], code [[ psub("i2_3"); ]]}; + {always=true,"Это имеет значение?", [[ + Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования". + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1; + walk('atl_ifc_non_coop'); + ]]}; + {tag="i2_1"}; + {always=true,"У меня не было выбора", [[ + Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Вам стоит еще подумать". + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1; + walk('atl_ifc_non_coop'); + ]]}; + {always=true,"Я рассчитывал вернуться за ней позже", [[ + "Вы идиот", - Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место. + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1; + walk('atl_ifc_non_coop'); + ]]}; + {always=true,"С чего я должен был думать об этом чудище?", [[ + _"Выкинуть бы вас за борт. Без скафандра Жаль, что мы не ,,чудища'', как вы выражаетесь"_, - Даркстар встает из-за стола и начинает ходить по комнате. Вы явно вывели его из себя. Через некоторое время он успокаивается и садится на место. + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 3; + walk('atl_ifc_non_coop'); + ]]}; + {tag="i2_2"}; + {always=true,"Я не мог оставить ее умирать", [[ + "Откуда вы узнали про скафандры?" + ]], code [[ + psub("i3"); + ]]}; + {tag="i2_3"}; + {always=true,"Светлова говорила, что она может быть в Игнисе", [[ + "Откуда вы узнали про скафандры?" + ]], code [[ + psub("i3"); + ]]}; + {always=true,"Нет", [[ + "Откуда вы узнали про скафандры?" + ]], code [[ + psub("i3"); + ]]}; + {always=true,"Это имеет значение?", [[ + Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Все имеет значение. Раз вы не хотите сотрудничать, придется вас изолировать до окончания расследования". + ]], code [[ + psub("i3"); + ]]}; + {tag = "i3"}; + {always=true,tag="wright_said", "Джек Райт сказал", [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]], code = [[ + walk("atl_ifc_darkstar_interlude"); + ]]}; + {always=true,"Леарр сказала", [[ + "Она не могла этого знать", - Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "А я терпеть не могу, когда мне врут". + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1; + walk('atl_ifc_non_coop'); + ]]}; + {always=true,tag="random_lie", "Я случайно наткнулся", [[ + Даркстар угрожающе поднимается, опирается на стол и недовольно говорит: "Я думаю вам стоит еще подумать". + ]], code = [[ + atl_lfc_darkstar_dlg.total_limit = atl_lfc_darkstar_dlg.total_limit - 1; + walk('atl_ifc_non_coop'); + ]]}; + {always=true,tag="random_true", "Я случайно наткнулся", [[ + "Хорошо. Больше у меня вопросов нет. Но я хочу вам кое-что рассказать". + ]], code = [[ + walk("atl_ifc_darkstar_interlude"); + ]]}; + + }; +}; + +atl_ifc_darkstar_interlude = room { + nam = "Винсент Даркстар"; + dsc = [[ + Винсент раскрывает папку лежающую на столе и раскладывает перед собой несколько бумаг: _"У нас есть основания полагать, что события в Игнисе - следствие саботажа. Мы считаем, что саботажник не рассчитывал, что в секции в момент пожара будет кто-либо - обычно в это время в Игнисе никого нет. Должен сказать, на станции уже давно некоторые выступают за сворачивание проекта и возвращение на поверхность. Вы прекрасно понимаете, что мы не можем просто так отправить их на поверхность - их слишком много, и если они начнут болтать - существование станции будет раскрыто. А нам этого не хотелось бы"_. Внезапно раздается звонок. Даркстар поднимает трубку телефона и отрывисто бросает туда: "Сейчас буду". Он встает и направляется к выходу, при этом просит вас: "Ждите здесь, я не надолго". + ]]; + obj = { + vway("Продолжить", "{Продолжить}", "atl_ifc_darkstar_office"); + }; +}; + +atl_ifc_darkstar_office = room { + nam = "Атлантида, Доминус, кабинет начальника СБ"; + dsc = [[ + Кабинет начальника службы безопасности почти пуст - здесь нет ничего кроме массивного металлического стола(судя по всему - бронированного) в центре и кресла перед ним. + ]]; + entered = function() + end; + life = function() + end; + way = { + kh_vroom("В коридор", function() + pr("Дверь заперта"); + return false; + end); + }; + obj = { + 'atl_darkstar_papers' + }; +}; + +atl_darkstar_papers = obj { + nam = "atl_darkstar_papers"; + dsc = [[ + На столе лежит оставленная Винсентом {папка с бумагами}. + ]]; + act = function(s) + walk("atl_ifc_darkstar_interlude_2") + return [[ + Вы просматриваете бумаги - это список подозреваемых в саботаже. Здесь присутствует большая часть обитателей Атлантиды. На отдельном листе записаны несколько моментов: во-первых, Даркстар не подозревает никого из руководства, поскольку каждый из них напрямую заинтересован в развитии станции. Во-вторых, к вашему удивлению, он не подозревает вас, поскольку саботажник, судя по всему, был хорошо знаком с устройством системы электроснабжения Игниса. Основными подозреваемыми он считает Мишеля Леруа, Леонарда Голдмана и Чарльза Джонса. Все они сторонники закрытия проекта и обладают достаточными знаниями, чтобы устроить подобный саботаж. ^ + Вы слышите звук открывающегося замка и поспешно возвращаете папку в ее изначальное положение. + ]]; + end; +}; + +atl_ifc_darkstar_interlude_2 = room { + nam = "Винсент Даркстар"; + dsc = [[ + В комнату входит Винсент Даркстар и садится на свое место. Вам он говорит: "С учетом цели саботажника, я предполагаю, что следующая атака будет направлена на вывод из строя субмарин. В любом случае - я прошу вас никому не говорить о том, что я вам тут рассказал. В случае необходимости я вас вызову. Вы свободны". + ]]; + obj = { + vway("Продолжить", "{Продолжить}", "atl_dom_security_office"); + }; +}; + +atl_ifc_non_coop = room { + nam = "Винсент Даркстар"; + dsc = [[ + После этого он снимает телефонную трубку и отдает туда приказ: "Заберите Дрейка". ^ + В комнату входят два стражника и сопровождают вас в вашу комнату. + ]]; + obj = { + kh_vway("Продолжить", "{Продолжить}", function() + if (atl_lfc_darkstar_dlg.total_limit < 1) then + return "atl_ifc_game_over"; + else + return "atl_lfc_waiting"; + end; + end); + }; +}; + +atl_ifc_game_over = room { + nam = "Игра окончена"; + disp = "Игра окончена"; + dsc = [[ + Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Вы останетесь под стражей до тех пор, пока мы не найдем саботажника. После этого, мы решим, что делать с вами".^ + Вам ничего не остается, кроме как ждать. Через несколько дней стражники сопровождают вас на Левиафан. Там вас запирают в одной из кают. Несколько недель Левиафан полным ходом движется в неизвестном направлении. Наконец, вас выпускают из каюты. Один из охранников сообщает вам: "В нескольких милях к северу вдоль побережья находится небольшой городок. Оттуда вы сможете добраться куда вам угодно. Мы дадим вам немного еды и достаточно денег, чтобы вы могли добраться домой".^ + Вы забираете переданные вам вещи и через несколько мгновений Левиафан скрывается под поверхностью воды. Никаких средств для возвращения на Атлантиду у вас не остается и, скорее всего, вы никогда не узнаете что стало с вашим отцом. + ]]; +}; + +atl_lfc_waiting = room { + nam = "Атлантида, Луна, ваша комната"; + dsc = [[ + Охранники уходят и запирают за собой дверь. Вы остаетесь один, запертый в собственной каюте. Через некоторое время вы слышите голос Даркстара по радио: "Отдохните. Завтра мы попробуем поговорить еще раз". + ]]; + obj = { + vway("Продолжить", "{Продолжить}", "atl_lfc_waiting"); + }; +}; \ No newline at end of file diff --git a/main.lua b/main.lua --- a/main.lua +++ b/main.lua @@ -27,9 +27,11 @@ dofile "leviathan.lua" dofile "atlantis.lua" dofile "atlantis_intro.lua" dofile "atlantis_ignis_on_fire.lua" +dofile "atlantis_looking_for_clues.lua" dofile "navjiarr_settlement.lua" dofile "navjiarr_hostile_settlement.lua" -- Часть 3 +-- Часть 4 dofile "final_scene.lua"; dofile "final_battle.lua"; dofile "first_city_inner_rim.lua"