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; -- TODO больше отвлеченных диалогов, дабы было о чем поговорить с сопартийцами. Не стоит делать их деревянными безжизненными манекенами char_learr = obj { var { follow = false; }; 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 = function(s) print("learr"); if (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; 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 = function(s) if (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; 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; }; 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 = function(s) if (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; 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; }; 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 = function(s) --print("wright"); if (where(pl).leviathan) then --print("wright:leviathan"); if (stead.nameof(where(s)) ~= s.home) then --print("wright:goinghome"); move(s, s.home, where(s)); end; else --print("wright:following"); move(s, where(pl), where(s)); end; end; act = function(s) if (stead.nameof(where(s)) == s.home) then walkin(wright_home_dlg); else walkin(wright_dlg); end; end; }; char_anna = obj { var { follow = false; }; 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 = function(s) if (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; 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; leviathan = 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; leviathan = 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; leviathan = 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; return [[ Уолтер задумчиво смотрит на вас ]]; end; phr = { {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_home_dlg = dlg { nam = "wright_dlg"; disp = "Джек Райт"; hideinv = true; leviathan = true; 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; return [[ Джек ждет ваших указаний ]]; end; phr = { {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(true); char_anna:accompany(false); pon('stay'); poff('join'); return [[Я готов]]; else -- TODO сообщать это только если в партии есть навьяры return [[У нас не хватит оборудования. Лучше возьми кого-нибудь из навьяров]]; end; end; }; { tag = "stay", always = "true", "Оставайся на Левиафане", "Хорошо", function() char_wright:accompany(false); pon('join'); poff('stay'); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", function() back(); end; } }; }; anna_home_dlg = dlg { nam = "anna_home_dlg"; disp = "Анна Рэдклифф"; hideinv = true; leviathan = true; entered = function(s) if (atl_iyh_state == 7) then pon("on_iyh"); else poff("on_iyh"); end; if (char_anna.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() 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; } }; };