diff --git a/atlantis.lua b/atlantis.lua --- a/atlantis.lua +++ b/atlantis.lua @@ -18,6 +18,7 @@ global { atl_lfc_state = 0; atl_lfc_panic = 0; + atl_lfc_panic_warning = 0; atl_lfc_hallrooms = 0; atl_lfc_electric = 0; atl_lfc_board = 0; @@ -53,7 +54,13 @@ atl_illuminator = obj { atl_intersect_phone = obj { nam = "Телефон"; dsc = [[На одной из стен укреплен {телефонный аппарат} в герметичном контейнере. ]]; - act = [[Вам незачем кому-то звонить. ]]; + act = function(s) + if (atl_lfc_state == 1 and atl_lfc_panic == 1 and atl_lfc_panic_warning == 0) then + walkin("panic_first_warning_dlg"); + else + return [[Вам незачем кому-то звонить. ]]; + end; + end; }; atl_intersect_suit = obj { @@ -194,18 +201,43 @@ atl_aqua_main_corridor = room { }; }; -atl_intersection_aqua_dom = room { +atl_intersection = inherit(room, function(v) + v.disp = "Атлантида, межсекционный коридор"; + v.dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]]; + v.entered = function(s) + if (atl_lfc_state == 1) then + if (atl_lfc_panic == 1) then + if (atl_lfc_panic_warning == 0) then + pr([[Когда вы проходите мимо, телефон начинает звонить. ]]); + end; + elseif (atl_lfc_panic == 2) then + if (atl_lfc_panic_warning < 2) then + atl_lfc_panic_warning = 2; + end; + elseif (atl_lfc_panic == 3) then + walk("game_over_banished_lfc"); + end; + end; + end; + v.left = function(s) + if (atl_lfc_state == 1) then + atl_lfc_panic_warning = 1; + end; + end; + if (not v.obj) then + v.obj = {}; + end; + table.insert(v.obj, "atl_illuminator"); + table.insert(v.obj, "atl_intersect_phone"); + table.insert(v.obj, "atl_intersect_suit"); +end); + +atl_intersection_aqua_dom = atl_intersection { nam = "Атлантида, межсекционный коридор"; - dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]]; way = { kh_vroom("В секцию \"Аква\"", "atl_aqua_main_corridor"); kh_vroom("В секцию \"Доминус\"", "atl_dom_main_near_aqua"); }; - obj = { - "atl_illuminator", - "atl_intersect_phone", - "atl_intersect_suit" - }; }; atl_dom_main_near_aqua = room { diff --git a/atlantis_dlg.lua b/atlantis_dlg.lua --- a/atlantis_dlg.lua +++ b/atlantis_dlg.lua @@ -5,6 +5,11 @@ char_darkstar_dlg = dlg { nam = "Винсент Даркстар"; disp = "Винсент Даркстар"; entered = function(s) + if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then + psub("lfc_warning"); + return [[Винсент Даркстар недовольно смотрит на вас: "Господин Дрейк. Вы вообще понимаете, что делаете? Это последнее предупреждение. В следующий раз я приму меры. Все ясно? "]]; + end; + if (atl_lfc_leroy_spoken) then pon("accuse_leroy"); end; @@ -69,6 +74,8 @@ char_darkstar_dlg = dlg { end; end; phr = { + {tag="lfc_warning"}; + {always = true, "Так точно.", [[Даркстар кивает: "Отлично. Вам нужно что-то еще?"]], code[[ atl_lfc_panic_warning = 3; psub("generic")]]}; {tag="first_meeting"}; {"Что мне нужно сделать, чтобы мне вернули Левиафан?", [[Винсент Даркстар хлопает ладонями о стол и уверенно сообщает: "Вести себя хорошо и не делать глупостей". ]]}; {"Когда мне вернут Левиафан?", [[Винсент Даркстар отвечает: "Всему свое время. Используйте это время с пользой. Если хотите найти Уильяма, сначала стоит выяснить где и как его искать. И вам не помешает узнать кое-что помимо этого". ]]}; @@ -236,6 +243,11 @@ char_moreau_dlg = dlg { nam = "Фредерик Моро"; disp = "Фредерик Моро"; entered = function(s) + if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then + psub("lfc_warning"); + return [[Фредерик Моро сообщает вам: "Месье Дрейк, добрый день. Винсент Даркстар просил вас срочно поговорить с ним". ]]; + end; + if (atl_lfc_state == 3) then atl_lfc_state = 4; atl_lev_state = 1; @@ -344,6 +356,8 @@ char_moreau_dlg = dlg { end; end; phr = { + {tag="lfc_warning"}; + {always = true, "Я пойду", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]}; {tag="iof_learr_dead"}; {"Я ничего не мог сделать. ", [[Фредерик Моро кивает: "Я понимаю". Немного помолчав он говорит: "Давайте к делу". ]], code [[psub("generic");]]}; {"Давайте к делу. ", [[Фредерик Моро неодобрительно кивает: "Слушаю". ]], code [[ @@ -497,11 +511,11 @@ char_moreau_dlg = dlg { atl_rep_darkstar = atl_rep_darkstar - 1; ]]}; {tag="ignis_what", false, "Почему начался пожар в Игнисе?", [[Фредерик Моро пожимает плечами и как-то неуверенно проговаривает: "Не знаю. Этим вопросом занимаются инженеры и служба безопасности. Будьте спокойны, наши специалисты не допустят повторения аварии". ]]}; - {"Я пойду", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]}; + {always = true, "Я пойду", [[Моро прощается с вами: "До встречи, месье Дрейк". ]], code [[ back(); ]]}; {tag="lfc_debrief_good"}; - {"Спасибо, это все", [[Моро спрашивает: "Вы что-то хотели?". ]], code [[ psub("generic");]]}; + {always = true, "Спасибо, это все", [[Моро спрашивает: "Вы что-то хотели?". ]], code [[ psub("generic");]]}; {tag="lfc_debrief_bad"}; - {"Я пойду", [[Моро кивает. ]], code [[ walk("game_over_banished"); ]]}; + {always = true, "Я пойду", [[Моро кивает. ]], code [[ walk("game_over_banished"); ]]}; }; }; @@ -516,6 +530,11 @@ char_svetlova_dlg = dlg { nam = "Екатерина Светлова"; disp = "Екатерина Светлова"; entered = function(s) + if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then + psub("lfc_warning"); + return [[Екатерина Светлова сообщает вам: "Добрый день, господин Дрейк. Винсент Даркстар просил вас срочно поговорить с ним". ]]; + end; + poff("on_drake", "on_black", "on_darkstar", "on_svetlova", "on_moreau", "on_wright", "on_leroy", "on_jones", "on_goldman", "on_atlantis", "on_navjiarr", "on_learr", "on_ryveerr", "on_aikerjarr"); if (atl_rep_svetlova < 0) then if (char_svetlova.drake_asked == 0) then pon("on_drake"); end; @@ -621,6 +640,8 @@ char_svetlova_dlg = dlg { end; end; phr = { + {tag="lfc_warning"}; + {always = true, "Я пойду", [[Светлова возвращается ко своим бумагам: "До встречи". ]], code [[ back(); ]]}; {tag = "iof_learr_dead"}; {"Я ничего не мог сделать. ", [[Екатерина Светлова опускает глаза: "Я понимаю". Вздохнув, она спрашивает: "Вам что-то нужно?" ]], code [[ psub("generic"); ]]}; {"Перейдем к делу. ", [[Екатерина Светлова кивает: "Что вам нужно?" ]], code [[ @@ -844,6 +865,11 @@ char_michael_wright_dlg = dlg { nam = "Майкл Райт"; disp = "Майкл Райт"; entered = function(s) + if (atl_lfc_panic_warning == 2 and atl_lfc_panic == 2 and atl_lfc_state == 1) then + psub("lfc_warning"); + return [[Екатерина Светлова сообщает вам: "Добрый день Винсент Даркстар просил вас срочно поговорить с ним". ]]; + end; + if (atl_nih_state == 2) then pon('nih_fixed'); end; @@ -922,6 +948,8 @@ char_michael_wright_dlg = dlg { end; end; phr = { + {tag="lfc_warning"}; + {always=true, "Мне пора", [["До встречи", -- Майкл Райт возвращается к своим делам. ]], code [[ back(); ]]}; {tag="iof_learr_dead"}; {"Мне очень жаль.", [[Майкл Райт кивает: "Утерянного не вернуть. Мы сделали выводы и постараемся не допустить опасных инцидентов в будущем". ]], code [[psub("generic");]]}; {"Я чуть не погиб там!", [[Майкл Райт отворачивается от вас и произносит: "Приходите позже, я занят"]], code [[ atl_rep_wright = atl_rep_wright - 1; back(); ]]}; 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 @@ -1,3 +1,14 @@ +panic_first_warning_dlg = dlg { + nam = "Телефон"; + disp = "Телефон"; + entered = [[Вы снимаете трубку. Собседник на том конце провода молчит, видимо ожидая, что вы что-то скажете, ]]; + phr = { + {"Дрейк слушает.", [[Из трубки доносится голос Винсента Даркстара: "Дрейк! Какого черта вы делаете? Я же просил вас не распространяться про события в Игнисе. Если вы будете продолжать нарушать мои указания, мне придется принять меры. Конец связи. "]], code [[ back();]]}; + {"Алло.", [[Из трубки доносится голос Винсента Даркстара: "Дрейк! Какого черта вы делаете? Я же просил вас не распространяться про события в Игнисе. Если вы будете продолжать нарушать мои указания, мне придется принять меры. И в следующий раз, отвечайте по протоколу. Конец связи. "]], code [[back();]]}; + {"[Положить трубку]", code [[ atl_lfc_panic_warning = 1; back(); ]]}; + }; +}; + atl_lfc_darkstar_dlg = dlg { var { total_limit = 3; diff --git a/game_over.lua b/game_over.lua --- a/game_over.lua +++ b/game_over.lua @@ -1,3 +1,5 @@ +game_over_banished_lfc = game_over("game_over_banished_lfc", [[Как только вы оказываетесь в межсекционном коридоре, вас окружают стражники Атлантиды. Они просят вас проследовать за ними и вы понимаете, что сопротивление бесполезно. Вас проводят в кабинет Винсента Даркстара. Когда стражники выходят, начальник службы безопасности поднимается из-за стола и начинает вас отчитывать:"Господин Дрейк. Вы крайне разочаровали меня. Мало того! Вы поставили под угрозу дальнейшую работу станции", -- впервые вы слышите, как Даркстар практически срывается на крик -- до этого он всегда говорил спокойно и уверенно, -- "Отныне, вы лишены всяческих привилегий и при первой возможности будете депортированы". Когда вы выходите из кабинета, охранники сопроваждают вас в вашу каюту и запирают там. Несколько месяцев вы проводите взаперти. Уильям и Адриан Блэк так и не вернулись из своей экспедиции.^Вскоре вас в запертой каюте Левиафана, мало отличающейся от каюты на станции, высылают на поверхность. Вас высаживают возле одного из небольшихэ прибрежных городков соединенных штатов, откуда вы без проблем доберетесь куда угодно. Однако, путь на Атлантиду потерян для вас навсегда. ]]); + game_over_lse_prison_fight = game_over("game_over_lse_prison", [[Стражники с легкостью останавливают вашу попытку побега. Вы возвращаетесь в камеры и теперь вам уже не на что надеяться. ]]); game_over_lse_prison = game_over("game_over_lse_prison", [[Фаэтларр рванулся к двери, расчитывая проскользнуть незаметно. К сожалению, дверь оказалась запертой и навьяру не оставалось ничего, кроме как попытаться убрать стражника, пока тот не позвал на помощь. К сожалению, Фаэтларр оказался недостаточно быстр. Дверь открылась и в помещение вбежали сразу несколько стражников. Фаэтларру не оставалось ничего, кроме как сдаться. Его запирают рядом с остальными членами экипажа. Вы понимаете, что теперь все действительно кончено. Вы проиграли. ]]);