party_accompany = function(s, value) if (ArrayUtils.indexOf(pl.party, s.nam) == 0) then return; end; s.follow = value; if (value) then lifeon(s); else move(s, s.home, where(s)); lifeoff(s); end; end; party_follow = function(s) if (where(pl).cutscene or where(pl).not_follow) then elseif (where(pl).leviathan) then if (stead.nameof(where(s)) ~= s.home) then move(s, s.home, where(s)); end; else move(s, where(pl), where(s)); end; end; -- TODO больше отвлеченных диалогов, дабы было о чем поговорить с сопартийцами. Не стоит делать их деревянными безжизненными манекенами char_learr = obj { var { follow = false; on_books = 0; }; nam = "learr"; disp = "Леарр"; dsc = function(s) if (stead.nameof(where(s)) == s.home) then return [[{Леарр} стоит возле одного из иллюминаторов и наблюдает за происходящим снаружи субмарины. ^]]; else return [[{Леарр} ждет ваших указаний. ^]]; end; end; home = "leviathan_wardroom"; accompany = party_accompany; life = party_follow; act = function(s) if (stead.nameof(where(s)) == s.home) then walkin(learr_home_dlg); else walkin(learr_dlg); end; end; }; char_phaetlarr = obj { var { follow = false; }; nam = "phaetlarr"; disp = "Фаэтларр"; dsc = function(s) if (stead.nameof(where(s)) == s.home) then return [[{Фаэтларр} с интересом наблюдает за работой двигателей "Левиафана" ^]]; else return [[{Фаэтларр} ждет ваших указаний. ^]]; end; end; home = "leviathan_engines"; accompany = party_accompany; life = party_follow; act = function(s) if (stead.nameof(where(s)) == s.home) then walkin(phaetlarr_home_dlg); else walkin(phaetlarr_dlg); end; end; }; char_radcliffe = obj { var { follow = false; rel_on_join = nil; }; nam = "radcliffe"; disp = "Уолтер Рэдклифф"; dsc = function(s) if (stead.nameof(where(s)) == s.home) then return [[{Уолтер Рэдклифф} задумчиво крутит в руках какую-то деталь. ^]]; else return [[{Уолтер Рэдклифф} ждет ваших указаний. ^]]; end; end; home = "leviathan_engines"; accompany = party_accompany; life = party_follow; act = function(s) if (stead.nameof(where(s)) == s.home) then walkin(radcliffe_home_dlg); else walkin(radcliffe_dlg); end; end; }; char_wright = obj { var { follow = false; iof_reaction = 0; on_learr = 0; on_leviathan = 0; }; nam = "wright"; disp = "Джек Райт"; dsc = function(s) if (stead.nameof(where(s)) == s.home) then return [[{Джек Райт} читает какую-то книгу. ^]]; else return [[{Джек Райт} ждет ваших указаний. ^]]; end; end; home = "leviathan_wardroom"; accompany = party_accompany; life = party_follow; act = function(s) walkin(wright_main_dlg); end; }; char_anna = obj { var { follow = false; anna_asked = 0; walter_asked = 0; atlantis_asked = 0; drake_asked = 0; join_asked = 0; rel_on_join = nil; }; nam = "anna"; disp = "Анна Рэдклифф"; dsc = function(s) if (stead.nameof(where(s)) == s.home) then return [[{Анна Рэдклифф} смотрит в иллюминатор. ^]]; else return [[{Анна Рэдклифф} ждет ваших указаний. ^]]; end; end; home = "leviathan_wardroom"; accompany = party_accompany; life = party_follow; act = function(s) if (stead.nameof(where(s)) == s.home) then walkin(anna_home_dlg); else walkin(anna_dlg); end; end; }; learr_home_dlg = dlg { nam = "learr_dlg"; disp = "Леарр"; hideinv = true; entered = function(s) if (atl_iyh_state == 7) then pon("on_iyh"); else poff("on_iyh"); end; if (char_learr.follow) then pon('stay'); poff('join'); else pon('join'); poff('stay'); end; return [[ Леарр вопросительно смотрит на вас ]]; end; phr = { { tag = "on_iyh", always = true, "Что ты можешь рассказать мне о храме?", [[ "Каждый-храм два-входа-имеет. Большой-главный-вход далеко-виден. Тайный-задний-вход незаметен-но-всегда-есть. Мы давно-потеряли дорогу-к-этому-святилищу и задний-вход-не-помним. Если мы задний-вход-найдем, то обманим затмевающего-свет и в-храм-проникнем". ]]}; { tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", function() char_learr:accompany(true); char_phaetlarr:accompany(false); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(false); pon('stay'); poff('join'); end; }; { tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", function() char_learr.accompany(char_learr, false); poff('stay'); pon('join'); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", function() back(); end; } }; }; phaetlarr_home_dlg = dlg { nam = "phaetlarr_dlg"; disp = "Фаэтларр"; hideinv = true; entered = function(s) if (char_phaetlarr.follow) then pon('stay'); poff('join'); else pon('join'); poff('stay'); end; return [[ Фаэтларр ждет ваших указаний ]]; end; phr = { { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", function() char_learr:accompany(false); char_phaetlarr:accompany(true); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(false); poff('join'); pon('stay'); end; }; { tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", function() char_phaetlarr.accompany(char_phaetlarr, false); pon('join'); poff('stay'); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", function() back(); end; } }; }; radcliffe_home_dlg = dlg { nam = "radcliffe_dlg"; disp = "Уолтер Рэдклифф"; hideinv = true; entered = function (s) if (atl_iyh_state == 7) then pon("on_iyh"); else poff("on_iyh"); end; if (char_radcliffe.follow) then pon('stay'); poff('join'); else pon('join'); poff('stay'); end; psub("generic"); return [[ Уолтер задумчиво смотрит на вас ]]; end; phr = { {tag="generic"}; {tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[ "Возможно, мы сможем разрушить вход в храм. Однако я не знаю, как навьяры на это отреагируют. " ]]}; {tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", function() if (submarine_leviathan.suits > 1) then char_learr:accompany(false); char_phaetlarr:accompany(false); char_radcliffe:accompany(true); char_wright:accompany(false); char_anna:accompany(false); pon('stay'); poff('join'); return [[Я готов]]; else -- TODO сообщать это только если в партии есть навьяры return [[У нас не хватит оборудования. Лучше возьми кого-нибудь из навьяров]]; end; end; }; {tag="stay", always="true", "Оставайся на Левиафане", "Хорошо", function() char_radcliffe.accompany(char_radcliffe, false); pon('join'); poff('stay'); end; }; {tag="exit", always="true", "Это все", "Хорошо", function() back(); end; }; }; }; wright_main_dlg = dlg { nam = "wright_main_dlg"; disp = "Джек Райт"; entered = function(s) if (atl_iyh_state == 7) then pon("on_iyh"); else poff("on_iyh"); end; if (char_wright.follow) then pon('stay'); poff('join'); else pon('join'); poff('stay'); end; if (rel_jack < 0) then if (char_wright.on_learr == 0) then pon("on_learr"); end; if (char_wright.on_leviathan == 0) then pon("on_leviathan"); end; if (char_wright.on_jack == 0) then pon("on_jack"); end; else if (char_wright.on_learr < 3 and ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then pon("on_learr"); end; if (char_wright.on_leviathan < 2) then pon("on_leviathan"); end; if (char_wright.on_jack < 2) then pon("on_jack"); end; end; psub("generic"); return [[ Джек ждет ваших указаний ]]; end; phr = { {tag="generic"}; {tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[Джек Райт задумчиво произносит: "Возможно получится выманить ската, если направить прожектор на вход храма..." Немного подумав, он добавляет: "Другое дело, что при этом он, скорее всего, атакует Левиафан. "]]}; {tag="join", always="true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Джек Райт отвечает: "Хорошо". ]], code [[ char_learr:accompany(false); char_phaetlarr:accompany(false); char_radcliffe:accompany(false); char_wright:accompany(true); char_anna:accompany(false); pon('stay'); poff('join'); ]]}; {tag="stay", always="true", "Оставайся на Левиафане.", [[Джек Райт отвечает: "Хорошо". ]], code [[ char_wright:accompany(false); pon('join'); poff('stay'); ]]}; {tag="exit", always="true", "Это все.", [[Джек Райт отвечает: "Хорошо". ]], code [[ back(); ]]}; {tag = "more_questions"}; {tag="on_learr", "Что ты думаешь о Леарр?", function() char_wright.on_learr = 3; if (ArrayUtils.indexOf(pl.party, 'readcliffe') ~= 0) then return [[Джек отвечает: "Никогда бы не подумал, что скажу это о девушке, да еще и навьярессе, но у меня порой возникает ощущение, что Леарр разбирается в работе Левиафана лучше всех на борту, исключая, может быть Уолтера. Не поверишь, если скажу, сколь часто мне самому приходится обращаться к ней за советом". ]]; else return [[Джек отвечает: "Никогда бы не подумал, что скажу это о девушке, да еще и навьярессе, но у меня порой возникает ощущение, что Леарр разбирается в работе Левиафана лучше всех на борту. Не поверишь, если скажу, сколь часто мне самому приходится обращаться к ней за советом". ]]; end; end}; {tag="on_leviathan", "Как впечатления от Левиафана?", function() if (rel_jack < 0) then char_wright.on_leviathan = 1; return [[Джек отвечает: "Левиафан, без сомнения, превосходный корабль. Жаль, что ему не нашлось лучшего капитана". ]]; else char_wright.on_leviathan = 2; return [[Джек не скрывает своего восхищения: "Никогда не видел ничего подобного. Неудивительно, что отец оставил жизнь на поверхности в пользу возможности создавать подобное здесь. Пока мы были в пути, я подробно изучил субмарину. Многие решения до сих пор кажутся мне невероятными - например, использование электричества в качестве движущей силы или наличие звуковой пушки. Я уже успел обсудить с отцом детали диагностических цепей. Это совершенно непостижимо, чтобы машина сама сообщала, что с ней что-то не так". ]]; end; end}; {tag="on_jack", "Чем ты занимался все это время?", function() if (rel_jack < 0) then return [[Джек отказывается отвечать: "Не хочу это обсуждать".]]; else return [[Джек отвечает: "Да, в общем-то, ничем. Отец оставил нам с матерью достаточно денег, чтобы мы могли ни в чем не нуждаться. Мать оплатила мое образование в том же университете, где учился отец. Получив диплом с отличием, я просто поставил его на полку. Не нашел дела по душе, да и необходимости не было. Позже, когда мать умерла, я вообще практически прекратил связи с внешним миром. Думаю, что хоть я и бросил идею найти отца, я все-таки продолжал надеяться -- практически все время я посвящал чтению газет со всех уголков света, в поисках известий о случившемся с Вестхейвен Трансоушен. Впрочем, как только первоначальный ажиотаж спал, никто толком и не писал о случившемся. "]]; end; end}; {"Вернемся к делу", [[Джек молча кивает. ]], code [[ pret(); ]]}; }; }; anna_home_dlg = dlg { nam = "anna_home_dlg"; disp = "Анна Рэдклифф"; hideinv = true; entered = function(s) if (atl_iyh_state == 7) then pon("on_iyh"); else poff("on_iyh"); end; poff("on_anna", "on_walter", "on_atlantis", "on_drake", "on_join", "talk"); if (rel_anna < 0) then pon("talk"); else if (char_anna.anna_asked < 2) then pon("on_anna"); pon("talk"); end; if (char_anna.walter_asked < 2) then pon("on_walter"); pon("talk"); end; if (char_anna.atlantis_asked < 2) then pon("on_atlantis"); pon("talk"); end; if (char_anna.drake_asked < 2) then pon("on_drake"); pon("talk"); end; if (char_anna.join_asked < 2) then pon("on_join"); pon("talk"); end; end; if (char_anna.follow) then pon('stay'); poff('join'); else pon('join'); poff('stay'); end; return [[ Анна ждет ваших указаний ]]; end; phr = { {tag="talk", false, "Мы можем поговорить?", function(s) if (rel_anna < 0) then return [[Анна отрицательно качает головой: "Не сейчас". ]]; else psub("talk_more"); return [[Анна кивает: "Да, конечно. Я вас слушаю". ]]; end; end}; {tag="on_iyh", always=true, "Что ты можешь рассказать мне о храме?", [[ "Ночью скат скорее всего покинет свое логово в поисках пищи. Мы можем воспользоваться его отсутствием". ]]}; { tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", function() if (submarine_leviathan.suits > 1) then char_learr:accompany(false); char_phaetlarr:accompany(false); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(true); pon('stay'); poff('join'); return [[Я готова]]; else -- TODO сообщать это только если в партии есть навьяры return [[У нас не хватит оборудования. Лучше возьми кого-нибудь из навьяров]]; end; end; }; { tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", function() char_anna:accompany(false); pon('join'); poff('stay'); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", function() back(); end; }; { tag = "talk_more"}; {tag="on_anna", "Расскажи о себе. ", function(s) char_anna.anna_asked = 2; return [[Анна Рэдклифф грустно вздыхает: "Мне почти нечего рассказывать. Я с молодости живу здесь, на Атлантиде. Когда Уолтер сказал, что мы будем жить здесь, я сперва расстроилась -- тогда это казалось мне невероятно скучным -- жить вдалеке от цивилизации, среди людей, которые старше меня на двадцать с лишним лет. На самом деле все оказалось не столь плохо -- здесь есть навьяры. Когда они заняты -- я сижу в библиотеке, с Мари, или смотрю фильмы в Игнисе". ]]; end}; {tag="on_walter", "Расскажи об Уолтере. ", function(s) char_anna.walter_asked = 2; return [[Анна Рэдклифф отвечает: "Уолтер -- мой старший брат. Он заботится обо мне с тех пор, как мама с папой покинули нас. Хотя моя жизнь сильно изменилась, когда Уолтер забрал меня с собой на Атлантиду, я не жалею об этом". ]]; end}; {tag="on_atlantis", "Что ты думаешь об Атлантиде?", function(s) char_anna.on_atlantis = 2; return [[Анна Рэдклифф отвечает: "Последние десять лет я живу здесь, на Атлантиде. Я хорошо помню, как расстроена я была, приехав сюда. Конечно, я не думала, что мы все проведем здесь лет десять. Мне казалось, что уже через полгода-год мы вернемся на поверхность, но намерения вашего отца сильно отличались от этого. Потом Екатерина и Сильвия познакомили меня с Телнеарром и Хетеарром -- двумя навьярами, которые первыми жили на станции. Потом Хетеарр вернулся домой, а вместо него на станцию прибыл Ривеерр. А затем покинул станцию и Телнеарр. Его заменила Леарр". ]]; end}; {tag="on_drake", "Расскажи об Уильяме Дрейке. ", function(s) char_anna.on_drake = 2; return [[Анна Рэдклифф отвечает: "Хотя Дрейк -- руководитель Атлантиды, он проводит больше времени здесь, в Окулусе, чем в своем кабинете в Доминусе. Сейчас он в экспедиции -- они с Блэком отправились на поиски отдаленных навьярских поселений". ]]; end}; {tag="on_join", "Почему ты решила присоединиться к нам?", function(s) char_anna.on_join = 2; if (char_anna.rel_on_join >= 0) then return [[Анна Рэдклифф отвечает: "". ]]; elseif (char_walter.rel_on_join >= 0) then return [[Анна Рэдклифф отвечает: "". ]]; else return [[Анна Рэдклифф отвечает: "". ]]; end; end}; }; };