diff --git a/journey_nleyyslanotrr_old.lua b/journey_nleyyslanotrr_old.lua deleted file mode 100644 --- a/journey_nleyyslanotrr_old.lua +++ /dev/null @@ -1,2006 +0,0 @@ -global { - za_convoy_gone = false; -}; - -za_gate_foot = room { - nam = "Вход в Нлейисланотр"; - handwheel_room = "za_gate"; - underwater = true; - no_exit = [[ - Нет смысла покидать Левиафан здесь. - ]]; - view = [[ - Через иллюминаторы вы видите перед собой высокие металлические ворота Нлейисланотра. С обеих сторон от них стоят две смотровые башни, на вершинах которых горят красные огоньки. - ]]; -}; - -za_gate = dlg { - var { - state = 0; - }; - nam = "Левиафан, рубка"; - entered = function(s) - if (s.state == 0) then - s.state = 1; - if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then - psub("learr"); - return [[ - Как только Левиафан приближается к городу, массивные металлические ворота начинают закрываться. Огни на башнях окрашиваются красным, а по всему городу начинается какое-то волнение. В рубку поднимается Леарр. Она встает рядом с вами и, окидывая взглядом город, произносит: "Мы туда-не-идем. Они не-пускают-нас". - ]]; - else - psub("anna"); - return [[ - Как только Левиафан приближается к городу, массивные металлические ворота начинают закрываться. Огни на башнях окрашиваются красным, а по всему городу начинается какое-то волнение. В рубку поднимается Анна. Она встает рядом с вами и, окидывая взглядом город, произносит: "Кажется, нам здесь не рады". - ]]; - end; - else - psub("control"); - return [[ - Левиафан находится перед массивными металлическими воротами Нлейисланотра. Огни на башнях горят ярко-красным, сообщая вам что пути нет. - ]]; - end; - end; - phr = { - {tag="learr"}; - {"[Остановить субмарину] И что нам делать?", [[ - Леарр пожимает плечами: "Мы незаметными-пройти-должны. Сильнее-они так-как много-их". - ]], code [[ psub("control"); ]]}; - {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_learr"); ]]}; - {tag="anna"}; - {"[Остановить субмарину] И что нам делать?", [[ - Анна пожимает плечами: "Понятия не имею". - ]], code [[ psub("control"); ]]}; - {"[Продолжать движение] Попробуем преподать им урок", code = [[ walk("game_over_za_anna"); ]]}; - {tag="control"}; - {always = true, "[Проплыть над воротами]", code = [[ - if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then - walk("game_over_za_learr"); - else - walk("game_over_za_anna"); - end; - ]]}; - {always = true, "[Двигаться вдоль стен]", code = [[ - move(submarine_leviathan, "za_crack_foot"); - walk("za_crack"); - ]]}; - {always = true, "[Отправиться в другое место]", code = [[ - walk("leviathan_handwheel"); - ]]}; - {always = true, "[Отойти от штурвала]", code = [[ - walk("leviathan_wheelhouse"); - ]]}; - }; -}; - -za_crack_foot = room { - nam = "Вход в Нлейисланотр"; - handwheel_room = "za_crack"; - underwater = true; - dsc = [[ - Перед вами возвышается каменная стена древнего города. Через широкую трещину в ней вы вполне можете попытаться попасть на другую сторону. - ]]; - view = [[ - Через иллюминаторы вы видите высокие стены Нлейисланотра. Мощный луч прожектора освещает едва заметную трещину в стене. Быть может, вы сможете незаметно пробраться через нее в город. - ]]; - way = { - kh_vroom("В Левиафан", leviathan_airlock); - kh_vroom("В трещину", "za_crack_inside"); - }; -}; - -za_crack = dlg { - nam = "Левиафан, рубка"; - entered = [[ - Левиафан находится у стены Нлейисланотра. Огни на башнях погашены, сообщая что навьяры скорее всего не придают значения вашему присутствию. - ]]; - phr = { - {always = true, "[Вернуться к воротам]", code = [[ - move(submarine_leviathan, "za_gate_foot"); - walk("za_gate"); - ]]}; - {always = true, "[Отправиться в другое место]", code = [[ - walk("leviathan_handwheel"); - ]]}; - {always = true, "[Отойти от штурвала]", code = [[ - walk("leviathan_wheelhouse"); - ]]}; - }; -}; - -za_convoy_route = { - "za_cross_6", - "za_street_11", - "za_cross_5", - "za_street_13", - "za_cross_24", - "za_street_15", - "za_cross_7", - "za_street_16", - "za_cross_8", - "za_street_22", - "za_cross_11", - "za_street_23", - "za_cross_12", - "za_street_41", - "za_cross_22", - "za_street_42", - "za_cross_23", - "za_street_44", - "za_cross_15", - "za_street_27", - "za_prison_entrance", - "za_prison" -}; - -za_convoy = { - position = null; - direction = 'za_cross_6'; - index = 1; - life = function(s) - local loc = stead.deref(here()); - for i = 1, #za_convoy_messages do - if (za_convoy_messages[i][1] == loc and za_convoy_messages[i][2] == za_convoy.position) then - pr(za_convoy_messages[i][3]); - end; - end; - if (za_convoy.index > #za_convoy_route) then - --TODO Конвой ушол - za_convoy_gone = true; - timer:stop(); - game.timer = nil; - lifeoff(za_convoy); - else - za_convoy.direction = za_convoy_route[za_convoy.index]; - if (loc == za_convoy.position) then - --TODO Бой начинается - timer:stop(); - game.timer = nil; - lifeoff(za_convoy); - enter(za_phaetlarr_fight_intro); - end; - end; - end; -}; - -za_convoy_messages = { - --here--new_position--message-- - {"za_street_12", "za_cross_6", "Конвой выходит на перекресток к северу от вас. Навьяры поворачивают в противоположную от вас сторону и продолают свой путь. "}, - {"za_street_11", "za_cross_6", "Конвой выходит на перекресток к северу от вас. Навьяры поворачивают в вашу сторону и продолают свой путь. "}, - {"za_street_12", "za_street_11", "Конвой удаляется на север. "}, - {"za_cross_6", "za_street_11", "Конвой движется на север. "}, - {"za_cross_5", "za_street_11", "Конвой приближается к вам. "}, - {"za_cross_6", "za_cross_5", "Конвой удаляется на север. "}, - {"za_street_11", "za_cross_5", "Конвой движется на север. "}, - {"za_street_10", "za_cross_5", "Конвой приближается к вам. "}, - {"za_street_13", "za_cross_5", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_10", "za_street_13", "Конвой сворачивает на улицу к западу. "}, - {"za_street_11", "za_street_13", "Конвой сворачивает на улицу к западу. "}, - {"za_cross_24", "za_street_13", "Конвой приближается к вас с востока. "}, - {"za_street_14", "za_cross_24", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_15", "za_cross_24", "Конвой выходит на перекресток к северу от вас. "}, - {"za_street_14", "za_street_15", "Конвой удаляется от вас на юг. "}, - {"za_cross_24", "za_street_15", "Конвой движется от вас на юг. "}, - {"za_cross_7", "za_street_15", "Конвой приближается к вас с севера. "}, - {"za_deadend_3n", "za_cross_7", "Конвой выходит на перекресток к северу от вас. "}, - {"za_cross_24", "za_cross_7", "Конвой удаляется на юг. "}, - {"za_street_15", "za_cross_7", "Конвой движется на юг. "}, - {"za_street_16", "za_cross_7", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_deadend_3n", "za_street_16", "Конвой уходит на запад. "}, - {"za_street_15", "za_street_16", "Конвой уходит на запад. "}, - {"za_cross_7", "za_street_16", "Конвой уходит на запад. "}, - {"za_cross_8", "za_street_16", "Конвой приближается с востока. "}, - {"za_street_17", "za_cross_8", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_22", "za_cross_8", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_16", "za_cross_8", "Конвой уходит на запад. "}, - {"za_cross_7", "za_cross_8", "Конвой удаляется на запад. "}, - {"za_cross_7", "za_street_22", "Конвой удаляется на запад. "}, - {"za_street_16", "za_street_22", "Конвой движется на запад. "}, - {"za_street_17", "za_street_22", "Конвой движется на запад. "}, - {"za_cross_11", "za_street_22", "Конвой приближается с востока. "}, - {"za_cross_8", "za_cross_11", "Конвой удаляется на запад. "}, - {"za_street_22", "za_cross_11", "Конвой движется на запад. "}, - {"za_street_21", "za_cross_11", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_36", "za_cross_11", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_23", "za_cross_11", "Конвой выходит на перекресток к северу от вас. "}, - {"za_street_22", "za_street_23", "Конвой движется на юг. "}, - {"za_street_21", "za_street_23", "Конвой удаляется на юг. "}, - {"za_street_36", "za_street_23", "Конвой движется на юг. "}, - {"za_cross_11", "za_street_23", "Конвой движется на юг. "}, - {"za_cross_12", "za_street_23", "Конвой приближается с севера. "}, - {"za_cross_11", "za_cross_12", "Конвой удаляется на юг. "}, - {"za_street_23", "za_cross_12", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_46", "za_cross_12", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_24", "za_cross_12", "Конвой выходит на перекресток к западу от вас. "}, - {"za_street_41", "za_cross_12", "Конвой выходит на перекресток к северу от вас. "}, - {"za_street_23", "za_street_41", "Конвой удаляется на юг. "}, - {"za_cross_12", "za_street_41", "Конвой движется на юг. "}, - {"za_street_46", "za_street_41", "Конвой движется на юг. "}, - {"za_street_24", "za_street_41", "Конвой движется на юг. "}, - {"za_cross_22", "za_street_41", "Конвой приближается с севера. "}, - {"za_cross_12", "za_cross_22", "Конвой удаляется на юг. "}, - {"za_street_41", "za_cross_22", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_45", "za_cross_22", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_42", "za_cross_22", "Конвой выходит на перекресток к западу от вас. "}, - {"za_street_40", "za_cross_22", "Конвой выходит на перекресток к северу от вас. "}, - {"za_street_41", "za_street_42", "Конвой движется на восток. "}, - {"za_street_40", "za_street_42", "Конвой движется на восток. "}, - {"za_cross_22", "za_street_42", "Конвой движется на восток. "}, - {"za_street_45", "za_street_42", "Конвой удаляется на восток. "}, - {"za_cross_23", "za_street_42", "Конвой приближается с запада. "}, - {"za_cross_22", "za_cross_23", "Конвой удаляется на восток. "}, - {"za_street_42", "za_cross_23", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_43", "za_cross_23", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_44", "za_cross_23", "Конвой выходит на перекресток к западу от вас. "}, - {"za_street_42", "za_street_44", "Конвой удаляется на восток. "}, - {"za_cross_23", "za_street_44", "Конвой движется на восток. "}, - {"za_street_43", "za_street_44", "Конвой движется на восток. "}, - {"za_cross_15", "za_street_44", "Конвой приближается с запада. "}, - {"za_cross_23", "za_cross_15", "Конвой удаляется на восток. "}, - {"za_street_44", "za_cross_15", "Конвой выходит на перекресток к востоку от вас. "}, - {"za_street_26", "za_cross_15", "Конвой выходит на перекресток к югу от вас. "}, - {"za_street_35", "za_cross_15", "Конвой выходит на перекресток к северу от вас. "}, - {"za_street_27", "za_cross_15", "Конвой выходит на перекресток к западу от вас. "}, - {"za_street_44", "za_street_27", "Конвой удаляется на восток. "}, - {"za_cross_15", "za_street_27", "Конвой движется на восток. "}, - {"za_street_26", "za_street_27", "Конвой движется на восток. "}, - {"za_street_35", "za_street_27", "Конвой движется на восток. "}, - {"za_prison_entrance", "za_street_27", "Конвой приближается с запада. "}, - {"za_cross_15", "za_prison_entrance", "Конвой удаляется на восток. "}, - {"za_street_27", "za_prison_entrance", "Конвой приближается ко входу в здание. "}, - {"za_deadend_2s", "za_prison_entrance", "Конвой приближается ко входу в здание к югу от вас. "}, - {"za_street_28", "za_prison_entrance", "Конвой приближается ко входу в здание. "}, - {"za_street_27", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "}, - {"za_deadend_2s", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "}, - {"za_street_28", "za_prison", "Двери здания мгновенно раскрываются, впуская навьяров, после чего столь же быстро закрываются. "} -}; - -za_timer = function() - local loc = stead.deref(here()); - za_convoy.index = za_convoy.index + 1; - za_convoy.position = za_convoy.direction; - for i = 1, #za_convoy_messages do - if (za_convoy_messages[i][1] == loc and za_convoy_messages[i][2] == za_convoy.position) then - pr(za_convoy_messages[i][3]); - end; - end; - if (za_convoy.index > #za_convoy_route) then - --TODO Конвой ушол - print("Konvoy left"); - timer:stop(); - game.timer = nil; - lifeoff(za_convoy); - else - za_convoy.direction = za_convoy_route[za_convoy.index]; - if (loc == za_convoy.position) then - --TODO Бой начинается - timer:stop(); - game.timer = nil; - lifeoff(za_convoy); - enter(za_phaetlarr_fight_intro); - end; - end; -end; - -za_alley = inherit(room, function(s) - if (not s.disp) then - s.disp = "Нлейисланотр, проулок"; - end; - if (not s.dsc) then - s.dsc = [[ - Вы находитесь посреди узкого проулка где-то в Нлейисланотре. - ]]; - end; - - return s; -end); - -za_street = inherit(room, function(s) - if (not s.disp) then - s.disp = "Нлейисланотр, улица"; - end; - if (not s.dsc) then - s.dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. - ]]; - end; - - return s; -end); - -za_deadend = inherit(room, function(s) - if (not s.disp) then - s.disp = "Нлейисланотр, тупик"; - end; - if (not s.dsc) then - s.dsc = [[ - Вы находитесь в тупике где-то в Нлейисланотре. - ]]; - end; - - return s; -end); - -za_cross = inherit(room, function(s) - if (not s.disp) then - s.disp = "Нлейисланотр, перекресток"; - end; - if (not s.dsc) then - s.dsc = [[ - Вы находитесь на перекрестке где-то в Нлейисланотре. - ]]; - end; - - return s; -end); - -za_crack_inside = za_alley { - nam = "za_crack_inside"; - disp = "Нлейисланотр, у трещины в стене"; - dsc = [[ - Вы находитесь в небольшом проулке на окраине Нлейисланотра. К западу от вас возвышается городская стена, а с востока и севера вы видите стены домов. - ]]; - way = { - kh_vroom("На юг", "za_alley_1"); - kh_vroom("В трещину", "za_crack_foot"); - }; -}; - -za_alley_1 = za_alley { - nam = "za_alley_1"; - way = { - kh_vroom("На юг", "za_alley_2"); - kh_vroom("На север", "za_crack_inside"); - }; -}; - -za_alley_2 = za_alley { - nam = "za_alley_2"; - way = { - kh_vroom("На юг", "za_deadend_1n"); - kh_vroom("На север", "za_alley_1"); - kh_vroom("На восток", "za_street_1"); - }; -}; - -za_deadend_1n = za_deadend{ - nam = "za_deadend_1n"; - way = { - kh_vroom("На север", "za_alley_2"); - }; -}; - -za_street_1 = za_street { - nam = "za_street_1"; - way = { - kh_vroom("На запад", "za_alley_2"); - kh_vroom("На восток", "za_cross_1"); - }; -}; - -za_cross_1 = za_cross { - var { - state = 0; - }; - nam = "za_cross_1"; - enter = function(s) - if (s.state == 0) then - s.state = 1; - walkin("za_cutscene_1"); - end; - end; - way = { - kh_vroom("На юг", "za_street_20"); - kh_vroom("На север", "za_street_2"); - kh_vroom("На запад", "za_street_1"); - kh_vroom("На восток", "za_street_4"); - }; -}; - -za_cutscene_1 = cutscene("za_cutscene_1", "Нлейисланотр, перекресток", [[ - Из темной невзрачной улицы вы выходите в город. Древние каменные и металлические сооружения возвышаются над вами. Вы стоите посреди просторного перекрестка. Дороги ведут во все стороны. Сейчас посреди ночи улицы города пустынны и вы можете спокойно обследовать их. -]], "za_cross_1"); - -za_street_2 = za_street { - nam = "za_street_2"; - way = { - kh_vroom("На юг", "za_cross_1"); - kh_vroom("На север", "za_street_3"); - }; -}; - -za_street_3 = za_street { - nam = "za_street_3"; - dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. К северу от вас стоят несколько навьяров, опершись на стену дома. - ]]; - way = { - kh_vroom("На юг", "za_street_2"); - kh_vroom("На север", function() - pr [[ - Если они меня увидят, то поднимут тревогу. - ]]; - return false; - end); - }; -}; - -za_street_4 = za_street { - nam = "za_street_4"; - way = { - kh_vroom("На запад", "za_cross_1"); - kh_vroom("На восток", "za_cross_2"); - }; -}; - -za_cross_2 = za_cross { - nam = "za_cross_2"; - way = { - kh_vroom("На юг", "za_street_18"); - kh_vroom("На север", "za_street_5"); - kh_vroom("На запад", "za_street_4"); - kh_vroom("На восток", "za_street_6"); - }; -}; - -za_street_5 = za_street { - nam = "za_street_5"; - way = { - kh_vroom("На юг", "za_cross_2"); - }; -}; - -za_street_6 = za_street { - nam = "za_street_6"; - way = { - kh_vroom("На запад", "za_cross_2"); - kh_vroom("На северо-восток", "za_street_7"); - }; -}; - -za_street_7 = za_street { - nam = "za_street_7"; - way = { - kh_vroom("На юго-запад", "za_street_6"); - kh_vroom("На восток", "za_cross_3"); - }; -}; - -za_cross_3 = za_cross { - nam = "za_cross_3"; - way = { - kh_vroom("На юго-восток", "za_street_9"); - kh_vroom("На запад", "za_street_7"); - kh_vroom("На северо-запад", "za_street_8"); - }; -}; - -za_street_8 = za_street { - nam = "za_street_8"; - way = { - kh_vroom("На юго-восток", "za_cross_3"); - }; -}; - -za_street_9 = za_street { - nam = "za_street_9"; - way = { - kh_vroom("На северо-запад", "za_cross_3"); - kh_vroom("На юг", "za_cross_4"); - }; -}; - -za_cross_4 = za_cross { - nam = "za_cross_4"; - dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на востоке завалена камнями и заросла водорослями. - ]]; - way = { - kh_vroom("На юг", "za_street_10"); - kh_vroom("На север", "za_street_9"); - kh_vroom("На восток", function(s) - pr [[ - Я не пройду здесь. - ]]; - return false; - end); - }; -}; - -za_street_10 = za_street { - nam = "za_street_10"; - way = { - kh_vroom("На юг", "za_cross_5"); - kh_vroom("На север", "za_cross_4"); - }; -}; - -za_cross_5 = za_cross { - nam = "za_cross_5"; - way = { - kh_vroom("На юг", "za_street_11"); - kh_vroom("На север", "za_street_10"); - kh_vroom("На запад", "za_street_13"); - }; -}; - -za_street_11 = za_street { - nam = "za_street_11"; - way = { - kh_vroom("На юг", "za_cross_6"); - kh_vroom("На север", "za_cross_5"); - }; -}; - -za_cross_6 = za_cross { - var { - state = 0; - }; - nam = "za_cross_6"; - entered = function(s) - if (s.state == 0) then - s.state = 1; - pr("С востока к вам приближается группа навьяров. Четверо из них вооружены копьями с ними идет еще один, не вооруженный. Судя по тому, как они обращаются с ним - он пленник. "); - game.timer = za_timer; - timer:set(2000); - lifeon(za_convoy); - end; - end; - dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. На востоке вы видите нескольких навьярских воинов. - ]]; - way = { - kh_vroom("На юг", "za_street_12"); - kh_vroom("На север", "za_street_11"); - kh_vroom("На восток", function(s) - pr [[ - Если они меня увидят, то поднимут тревогу. - ]]; - end); - }; -}; - -za_street_12 = za_street { - nam = "za_street_12"; - way = { - kh_vroom("На юг", "za_deadend_2n"); - kh_vroom("На север", "za_cross_6"); - }; -}; - -za_deadend_2n = za_deadend { - nam = "za_deadend_2n"; - way = { - kh_vroom("На север", "za_street_12"); - }; -}; - -za_street_13 = za_street { - nam = "za_street_13"; - way = { - kh_vroom("На запад", "za_cross_24"); - kh_vroom("На восток", "za_cross_5"); - }; -}; - -za_cross_24 = za_cross { - nam = "za_cross_24"; - way = { - kh_vroom("На юг", "za_street_15"); - kh_vroom("На север", "za_street_14"); - kh_vroom("На восток", "za_street_13"); - }; -}; - -za_street_14 = za_street { - nam = "za_street_14"; - way = { - kh_vroom("На юг", "za_cross_24"); - }; -}; - -za_street_15 = za_street { - nam = "za_street_15"; - way = { - kh_vroom("На юг", "cross_7"); - kh_vroom("На север", "za_cross_24"); - }; -}; - -za_cross_7 = za_cross { - nam = "za_cross_7"; - way = { - kh_vroom("На юг", "za_deadend_3n"); - kh_vroom("На север", "za_street_15"); - kh_vroom("На запад", "za_street_16"); - }; -}; - -za_deadend_3n = za_deadend { - nam = "za_deadend_3n"; - way = { - kh_vroom("На север", "za_cross_7"); - }; -}; - -za_street_16 = za_street { - nam = "za_street_16"; - way = { - kh_vroom("На запад", "za_cross_8"); - kh_vroom("На восток", "za_cross_7"); - }; -}; - -za_cross_8 = za_cross { - nam = "za_cross_8"; - way = { - kh_vroom("На север", "za_street_17"); - kh_vroom("На запад", "za_street_22"); - kh_vroom("На восток", "za_street_16"); - }; -}; - -za_street_17 = za_street { - nam = "za_street_17"; - way = { - kh_vroom("На юг", "za_cross_8"); - kh_vroom("На север", "za_cross_9"); - }; -}; - -za_cross_9 = za_cross { - nam = "za_cross_9"; - way = { - kh_vroom("На юг", "za_street_17"); - kh_vroom("На север", "za_street_18"); - kh_vroom("На запад", "za_street_19"); - }; -}; - -za_street_18 = za_street { - nam = "za_street_18"; - way = { - kh_vroom("На юг", "za_cross_9"); - kh_vroom("На север", "za_cross_2"); - }; -}; - -za_street_19 = za_street { - nam = "za_street_19"; - way = { - kh_vroom("На запад", "za_cross_10"); - kh_vroom("На восток", "za_cross_9"); - }; -}; - -za_cross_10 = za_cross { - nam = "za_cross_10"; - way = { - kh_vroom("На юг", "za_street_21"); - kh_vroom("На север", "za_street_20"); - kh_vroom("На запад", "za_street_31"); - kh_vroom("На восток", "za_street_19"); - }; -}; - -za_street_20 = za_street { - nam = "za_street_20"; - way = { - kh_vroom("На юг", "za_cross_10"); - kh_vroom("На север", "za_cross_1"); - }; -}; - -za_street_31 = za_street { - nam = "za_street_31"; - way = { - kh_vroom("На запад", "za_alley_3"); - kh_vroom("На восток", "za_cross_10"); - }; -}; - -za_alley_3 = za_alley { - nam = "za_alley_3"; - way = { - kh_vroom("На восток", "za_street_31"); - kh_vroom("На север", "za_deadend_1s"); - }; -}; - -za_deadend_1s = za_deadend{ - nam = "za_deadend_1s"; - way = { - kh_vroom("На юг", "za_alley_3"); - }; -}; - -za_street_21 = za_street { - nam = "za_street_21"; - way = { - kh_vroom("На юг", "za_cross_11"); - kh_vroom("На север", "za_cross_10"); - }; -}; - -za_cross_11 = za_cross { - nam = "za_cross_11"; - way = { - kh_vroom("На юг", "za_street_23"); - kh_vroom("На север", "za_street_21"); - kh_vroom("На запад", "za_street_36"); - kh_vroom("На восток", "za_street_22"); - }; -}; - -za_street_22 = za_street { - nam = "za_street_22"; - way = { - kh_vroom("На запад", "za_cross_11"); - kh_vroom("На восток", "za_cross_8"); - }; -}; - -za_street_36 = za_street { - nam = "za_street_36"; - dsc = [[ - Западным концом эта улица упирается в городскую стену. - ]]; - way = { - kh_vroom("На восток", "za_cross_11"); - }; -}; - -za_street_46 = za_street { - nam = "za_street_46"; - dsc = [[ - Западным концом эта улица упирается в городскую стену. - ]]; - way = { - kh_vroom("На восток", "za_cross_12"); - }; -}; - -za_street_23 = za_street { - nam = "za_street_23"; - way = { - kh_vroom("На юг", "za_cross_12"); - kh_vroom("На север", "za_cross_11"); - }; -}; - -za_cross_12 = za_cross { - nam = "za_cross_12"; - way = { - kh_vroom("На юг", "za_street_41"); - kh_vroom("На север", "za_street_23"); - kh_vroom("На запад", "za_street_46"); - kh_vroom("На восток", "za_street_24"); - }; -}; - -za_street_24 = za_street { - nam = "za_street_24"; - way = { - kh_vroom("На запад", "za_cross_12"); - kh_vroom("На восток", "za_cross_13"); - }; -}; - -za_cross_13 = za_cross { - nam = "za_cross_13"; - way = { - kh_vroom("На юг", "za_street_43"); - kh_vroom("На запад", "za_street_24"); - kh_vroom("На восток", "za_street_25"); - }; -}; - -za_street_25 = za_street { - nam = "za_street_25"; - way = { - kh_vroom("На запад", "za_cross_13"); - kh_vroom("На восток", "za_cross_14"); - }; -}; - -za_cross_14 = za_cross { - nam = "za_cross_14"; - way = { - kh_vroom("На юг", "za_street_26"); - kh_vroom("На север", "za_deadend_3s"); - kh_vroom("На запад", "za_street_25"); - }; -}; - -za_deadend_3s = za_deadend { - nam = "za_deadend_3s"; - way = { - kh_vroom("На юг", "za_cross_14"); - }; -}; - -za_street_26 = za_street { - nam = "za_street_26"; - way = { - kh_vroom("На юг", "za_cross_15"); - kh_vroom("На север", "za_cross_14"); - }; -}; - -za_cross_15 = za_cross { - nam = "za_cross_15"; - way = { - kh_vroom("На юг", "za_street_35"); - kh_vroom("На север", "za_street_26"); - kh_vroom("На запад", "za_street_44"); - kh_vroom("На восток", "za_street_27"); - }; -}; - -za_street_27 = za_street { - nam = "za_street_27"; - way = { - kh_vroom("На запад", "za_cross_15"); - kh_vroom("На восток", "za_prison_entrance"); - }; -}; - -za_prison_entrance = room { - nam = "za_prison_entrance"; - disp = "Нлейисланотр, у входа в тюрьму"; - dsc = [[ - Перед вами вход в большое металлическое здание. Похоже, оно гораздо старше остальных зданий в городе - на это указывают многочисленные следы коррозии на стенах и явно не раз восстановленная дверь. Именно сюда навьяры завели пленника. - ]]; - way = { - kh_vroom("На запад", "za_street_27"); - kh_vroom("На восток", "za_street_28"); - }; -}; - -za_deadend_2s = za_deadend { - nam = "za_deadend_2s"; - way = { - kh_vroom("На юг", "za_prison_entrance"); - }; -}; - -za_street_28 = za_street { - nam = "za_street_28"; - way = { - kh_vroom("На запад", "za_prison_entrance"); - kh_vroom("На восток", "za_cross_16"); - }; -}; - -za_cross_16 = za_cross { - nam = "za_cross_16"; - way = { - kh_vroom("На юг", "za_street_29"); - kh_vroom("На запад", "za_street_28"); - kh_vroom("На восток", "za_deadend_4"); - }; -}; - -za_deadend_4 = za_deadend { - nam = "za_deadend_4"; - way = { - kh_vroom("На запад", "za_cross_16"); - }; -}; - -za_street_29 = za_street { - nam = "za_street_29"; - way = { - kh_vroom("На юг", "za_street_30"); - kh_vroom("На север", "za_cross_16"); - }; -}; - -za_street_30 = za_street { - nam = "za_street_30"; - way = { - kh_vroom("На юг", "za_cross_17"); - kh_vroom("На север", "za_street_29"); - }; -}; - -za_cross_17 = za_cross { - nam = "za_cross_17"; - dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. - ]]; - way = { - kh_vroom("На юг", function() - pr [[ - Мне с ними не справиться. - ]]; - return false; - end); - kh_vroom("На север", "za_street_30"); - kh_vroom("На запад", "za_street_32"); - kh_vroom("На восток", "za_deadend_5"); - }; -}; - -za_deadend_5 = za_deadend { - nam = "za_deadend_5"; - way = { - kh_vroom("На запад", "za_cross_17"); - }; -}; - -za_street_32 = za_street { - nam = "za_street_32"; - way = { - kh_vroom("На запад", "za_cross_18"); - kh_vroom("На восток", "za_cross_17"); - }; -}; - -za_cross_18 = za_cross { - nam = "za_cross_18"; - dsc = [[ - Вы находитесь посреди перекрестка рядом с тюрьмой Нлейисланотра. - ]]; - way = { - kh_vroom("На юг", "za_deadend_6"); - kh_vroom("На запад", "za_street_33"); - kh_vroom("На восток", "za_street_32"); - }; - obj = { - "za_prison_window"; - }; -}; - -za_prison_window = obj { - var { - state = 0; - }; - nam = "za_prison_window"; - dsc = [[ - Рядом с собой в стене здания вы видите небольшой зарешеченное {окошко}. - ]]; - act = function(s) - if (s.state == 0) then - if (za_convoy_gone) then - return [[ - В камере по ту сторону окна находится тот самый навьяр, которого вы видели в сопровождении конвоя. - ]]; - else - return [[ - Здесь нет ничего интересного. - ]]; - end; - else - return [[ - Вам здесь больше нечего делать. - ]]; - end; - end; - used = function (s, o) - if (o == item_toolbox) then - walk("za_phaetlarr_free"); - end; - end; -}; - -za_deadend_6 = za_deadend { - nam = "za_deadend_6"; - way = { - kh_vroom("На север", "za_cross_18"); - }; -}; - -za_street_33 = za_street { - nam = "za_street_33"; - way = { - kh_vroom("На запад", "za_cross_19"); - kh_vroom("На восток", "za_cross_18"); - }; -}; - -za_cross_19 = za_cross { - nam = "za_cross_19"; - dsc = [[ - Вы находитесь посреди улицы где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. - ]]; - way = { - kh_vroom("На юг", function() - pr [[ - Мне с ними не справиться. - ]]; - return false; - end); - kh_vroom("На север", "za_street_34"); - kh_vroom("На запад", "za_street_37"); - kh_vroom("На восток", "za_street_33"); - }; -}; - -za_street_34 = za_street { - nam = "za_street_34"; - way = { - kh_vroom("На юг", "za_cross_19"); - kh_vroom("На север", "za_street_35"); - }; -}; - -za_street_35 = za_street { - nam = "za_street_35"; - way = { - kh_vroom("На юг", "za_street_34"); - kh_vroom("На север", "za_cross_15"); - }; -}; - -za_street_37 = za_street { - nam = "za_street_37"; - way = { - kh_vroom("На северо-запад", "za_street_38"); - kh_vroom("На восток", "za_cross_19"); - }; -}; - -za_street_38 = za_street { - nam = "za_street_38"; - way = { - kh_vroom("На север", "za_cross_20"); - kh_vroom("На юго-восток", "za_street_37"); - }; -}; - -za_street_47 = za_street { - nam = "za_street_47"; - dsc = [[ - Вы находитесь на углу двух улиц Нлейисланотра. - ]]; - way = { - kh_vroom("На запад", "za_street_39"); - kh_vroom("На юг", "za_street_38"); - }; -}; - -za_street_39 = za_street { - nam = "za_street_39"; - way = { - kh_vroom("На запад", "za_cross_21"); - kh_vroom("На восток", "za_street_47"); - }; -}; - -za_cross_21 = za_cross { - nam = "za_cross_21"; - dsc = [[ - Вы находитесь посреди перекрестка где-то в Нлейисланотре. Улица на юге перегорожена отрядом навьярских воинов. - ]]; - way = { - kh_vroom("На юг", function() - pr [[ - Мне с ними не справиться. - ]]; - return false; - end); - kh_vroom("На север", "za_street_40"); - kh_vroom("На восток", "za_street_39"); - }; -}; - -za_street_40 = za_street { - nam = "za_street_40"; - way = { - kh_vroom("На юг", "za_cross_21"); - kh_vroom("На север", "za_cross_22"); - }; -}; - -za_cross_22 = za_cross { - nam = "za_cross_22"; - way = { - kh_vroom("На юг", "za_street_40"); - kh_vroom("На север", "za_street_41"); - kh_vroom("На запад", "za_street_45"); - kh_vroom("На восток", "za_street_42"); - }; -}; - -za_street_42 = za_street { - nam = "za_street_42"; - way = { - kh_vroom("На запад", "za_cross_22"); - kh_vroom("На восток", "za_cross_23"); - }; -}; - -za_cross_23 = za_cross { - nam = "za_cross_23"; - way = { - kh_vroom("На север", "za_street_43"); - kh_vroom("На запад", "za_street_42"); - kh_vroom("На восток", "za_street_44"); - }; -}; - -za_street_41 = za_street { - nam = "za_street_41"; - way = { - kh_vroom("На юг", "za_cross_22"); - kh_vroom("На север", "za_cross_12"); - }; -}; - -za_street_43 = za_street { - nam = "za_street_43"; - way = { - kh_vroom("На юг", "za_cross_23"); - kh_vroom("На север", "za_cross_13"); - }; -}; - -za_street_44 = za_street { - nam = "za_street_44"; - way = { - kh_vroom("На запад", "za_cross_23"); - kh_vroom("На восток", "za_cross_15"); - }; -}; - -za_street_45 = za_street { - nam = "za_street_45"; - way = { - kh_vroom("На запад", "za_alley_4"); - kh_vroom("На восток", "za_cross_22"); - }; -}; - -za_alley_4 = za_alley { - nam = "za_alley_4"; - way = { - kh_vroom("На восток", "za_street_45"); - kh_vroom("На юг", "za_deadend_7"); - }; -}; - -za_deadend_7 = za_deadend { - nam = "za_deadend_7"; - way = { - kh_vroom("На север", "za_alley_4"); - }; -}; - -za_phaetlarr_fight_intro = cutscene("za_phaetlarr_fight_intro_a", "Нлейисланотр, улица",[[Конвой замечает вас и переходит в атаку. Внезапно пленник выхватывает копье у одного из стражников и бросается в бой. ]], "za_plaetlarr_fight"); - -za_plaetlarr_victory = cutscene("za_phaetlarr_victory", "Нлейисланотр, улица", function(s) - if (char_learr.follow) then - return [[ - Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" Глядя на Леарр он немного успокаивается и внимательно следит за ее словами: "Они что-хотели?" - ]]; - elseif (char_anna.follow) then - return [[ - Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Анны: "Он явно не расположен к нам. Но у нас мало выбора. Спроси его, знает ли он где храм"? - ]]; - elseif (char_wright.follow) then - return [[ - Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Джека: "Я думаю, пора возвращаться на корабль. Я надеюсь, он даст нам всю необходимую информацию". - ]]; - elseif (char_radcliffe.follow) then - return [[ - Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Уолтера: "Здесь слишком опасно оставаться. Надо доставить его на Левиафан и там решить, что делать дальше". - ]]; - else - return [[ - Вы побеждаете стражников. Фаэтларр с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" - ]]; - end; -end, "za_phaetlarr_dlg"); - -za_plaetlarr_fight = battlefield { - nam = "Нлейисланотр, улица"; - plX = 4; - plY = 1; - map = { - {2,0,0,0,0,0,2}; - {2,0,0,0,0,0,2}; - {2,1,1,0,0,0,2}; - {2,0,0,0,1,1,2}; - {2,0,0,0,0,0,2}; - {2,0,0,0,0,0,2}; - {2,0,0,0,0,0,2}; - }; - obstacle = "images/stones.png"; - lose = "game_over_za_fight"; - win = "za_plaetlarr_victory"; - underwater = true; - entered = function(s) - if (char_learr.follow) then - table.insert(s.obj, 2, za_cmbt_learr); - s.plX = 3; - elseif (char_anna.follow) then - table.insert(s.obj, 2, za_cmbt_anna); - s.plX = 3; - elseif (char_wright.follow) then - table.insert(s.obj, 2, za_cmbt_wright); - s.plX = 3; - elseif (char_radcliffe.follow) then - table.insert(s.obj, 2, za_cmbt_radcliffe); - s.plX = 3; - end; - end; - obj = { - 'za_cmbt_phaetlarr', - 'za_cmbt_guard1', - 'za_cmbt_guard2', - 'za_cmbt_guard3', - 'za_cmbt_guard4' - }; -}; - -za_cmbt_phaetlarr = combatant { - nam = "za_cmbt_phaetlarr"; - disp2 = "Фаэтларра"; - disp3 = "Фаэтларру"; - x = 4; - y = 6; - pic = "images/phaetlarr.png"; - ally = "Я не буду атаковать союзника."; - nohit = "Я не буду атаковать союзника."; - noshoot = "Я не буду атаковать союзника."; - hp = 10; - hasSpear = true; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.enemy and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - if (#enemies == 0) then - pn("Фаэтларр ждет. "); - return; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - local enemy = enemies[1].o; - local path = enemies[1].p; - -- AI Order: - -- If has spear and enemy is far - throw spear - -- If has spear and enemy is close - hit with spear - -- if spear is nearer than any enemy - walk towards spear - -- walk towards nearest enemy - -- If enemy close and enemy has spear - take spear from enemy - -- If enemy close and enemy doesn't have spear - hit with claws - - if s.hasSpear then - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Фаэтларр бьет " .. enemy.disp2 .. " копьем и попадает. "); - return; - else - local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y); - if (rnd(4) > dist - 2) then - s.hasSpear = false; - enemy.hp = enemy.hp - 2; - pn("Фаэтларр бросает копье в " .. enemy.disp2 .. " и попадает. "); - else - pn("Фаэтларр бросает копье в " .. enemy.disp2 .. ", но промахивается. "); - end; - return; - end; - else - if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - if (enemy.hasSpear) then - enemy.hasSpear = false; - s.hasSpear = true; - pn("Фаэтларр забирает копье у " .. enemy.disp2 .. ". "); - else - enemy.hp = enemy.hp - 1; - pn("Фаэтларр бьет " .. enemy.disp2 .. " и попадает. "); - end; - end; - end; - - s.x = path.p[2][1]; - s.y = path.p[2][2]; - pn("Фаэтларр идет к " .. enemy.disp3 .. ". "); - end; - dsc = function(s) - if (s.hp > 0) then - return [[ {Фаэтларр} готов к бою. ]]; - else - return [[ {Фаэтларр} без сознания. ]]; - end; - end; -}; - -za_cmbt_learr = combatant { - nam = "za_cmbt_learr"; - disp2 = "Леарр"; - disp3 = "Леарр"; - x = 5; - y = 1; - pic = "images/learr.png"; - ally = "Я не буду атаковать союзника."; - nohit = "Я не буду атаковать союзника."; - noshoot = "Я не буду атаковать союзника."; - hp = 10; - hasSpear = true; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.enemy and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - if (#enemies == 0) then - pn("Леарр ждет. "); - return; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - local enemy = enemies[1].o; - local path = enemies[1].p; - for i = 1,#enemies do - print(enemies[i].p.l); - end; - -- AI Order: - -- If has spear and enemy is far - throw spear - -- If has spear and enemy is close - hit with spear - -- if spear is nearer than any enemy - walk towards spear - -- walk towards nearest enemy - -- If enemy close and enemy has spear - take spear from enemy - -- If enemy close and enemy doesn't have spear - hit with claws - - if s.hasSpear then - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Леарр бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Леарр бьет " .. enemy.disp2 .. " копьем и попадает. "); - return; - end; - else - if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - enemy.hp = enemy.hp - 1; - pn("Леарр бьет " .. enemy.disp2 .. " и попадает. "); - return; - end; - end; - - s.x = path.p[2][1]; - s.y = path.p[2][2]; - pn("Леарр идет к " .. enemy.disp3 .. ". "); - end; - dsc = function(s) - if (s.hp > 0) then - return [[ {Леарр} готова к бою. ]]; - else - return [[ {Леарр} без сознания. ]]; - end; - end; -}; - -za_cmbt_wright = combatant { - nam = "za_cmbt_wright"; - disp2 = "Райта"; - disp3 = "Райту"; - x = 5; - y = 1; - pic = "images/jack.png"; - ally = "Я не буду атаковать союзника."; - nohit = "Я не буду атаковать союзника."; - noshoot = "Я не буду атаковать союзника."; - hp = 10; - hasHarpoon = true; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.enemy and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - if (#enemies == 0) then - pn("Райт ждет. "); - return; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - local enemy = enemies[1].o; - local path = enemies[1].p; - - if (s.x ~= 6 or s.y ~=3) then - local ppath = here():getWalkDistance(s.x, s.y, 6, 3); - if (ppath.l < path.l) then - s.x = ppath.p[2][1]; - s.y = ppath.p[2][2]; - pn("Райт идет к укрытию"); - end; - end; - - -- AI Order: - -- If has harpoon and enemy is far - shoot - -- If has harpoon and enemy is close - hit with harpoon - -- walk towards nearest enemy - - if (s.hasHarpoon) then - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Райт бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Райт бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - return; - else - local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y); - if (rnd(4) > dist - 2) then - s.hasSpear = false; - enemy.hp = enemy.hp - 2; - pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Райт стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - end; - else - s.hasHarpoon = true; - pn("Райт перезаряжает ружье. "); - end; - - s.x = path.p[2][1]; - s.y = path.p[2][2]; - pn("Райт идет к " .. enemy.disp3 .. ". "); - end; - dsc = function(s) - if (s.hp > 0) then - return [[ {Райт} готов к бою. ]]; - else - return [[ {Райт} без сознания. ]]; - end; - end; -}; - -za_cmbt_radcliffe = combatant { - nam = "za_cmbt_radcliffe"; - disp2 = "Рэклиффа"; - disp3 = "Рэдклиффу"; - x = 5; - y = 1; - pic = "images/walter.png"; - ally = "Я не буду атаковать союзника."; - nohit = "Я не буду атаковать союзника."; - noshoot = "Я не буду атаковать союзника."; - hp = 10; - hasHarpoon = true; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.enemy and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - if (#enemies == 0) then - pn("Рэдклифф ждет. "); - return; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - local enemy = enemies[1].o; - local path = enemies[1].p; - - if (s.x ~= 6 or s.y ~=3) then - local ppath = here():getWalkDistance(s.x, s.y, 6, 3); - if (ppath.l < path.l) then - s.x = ppath.p[2][1]; - s.y = ppath.p[2][2]; - pn("Рэдклифф идет к укрытию"); - end; - end; - - -- AI Order: - -- If has harpoon and enemy is far - shoot - -- If has harpoon and enemy is close - hit with harpoon - -- walk towards nearest enemy - - if (s.hasHarpoon) then - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Рэдклифф бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - return; - else - local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y); - if (rnd(4) > dist - 2) then - s.hasSpear = false; - enemy.hp = enemy.hp - 2; - pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Рэдклифф стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - end; - else - s.hasHarpoon = true; - pn("Рэдклифф перезаряжает ружье. "); - end; - - s.x = path.p[2][1]; - s.y = path.p[2][2]; - pn("Рэдклифф идет к " .. enemy.disp3 .. ". "); - end; - dsc = function(s) - if (s.hp > 0) then - return [[ {Рэдклифф} готов к бою. ]]; - else - return [[ {Рэдклифф} без сознания. ]]; - end; - end; -}; - -za_cmbt_anna = combatant { - nam = "za_cmbt_anna"; - disp2 = "Анну"; - disp3 = "Анне"; - x = 5; - y = 1; - pic = "images/anna.png"; - ally = "Я не буду атаковать союзника."; - nohit = "Я не буду атаковать союзника."; - noshoot = "Я не буду атаковать союзника."; - hp = 10; - hasHarpoon = true; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.enemy and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - if (#enemies == 0) then - pn("Анна ждет. "); - return; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - local enemy = enemies[1].o; - local path = enemies[1].p; - - if (s.x ~= 6 or s.y ~=3) then - local ppath = here():getWalkDistance(s.x, s.y, 6, 3); - if (ppath.l < path.l) then - s.x = ppath.p[2][1]; - s.y = ppath.p[2][2]; - pn("Анна идет к укрытию"); - end; - end; - - -- AI Order: - -- If has harpoon and enemy is far - shoot - -- If has harpoon and enemy is close - hit with harpoon - -- walk towards nearest enemy - - if (s.hasHarpoon) then - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Анна бьет " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Анна бьет " .. enemy.disp2 .. " гарпуном и попадает. "); - return; - else - local dist = math.sqrt((s.x - here().plX) * (s.x - here().plX) + (s.y - here().plY) * (s.y - here().plY));--here().getDistance(here().plX, here().plY, s.x, s.y); - if (rnd(4) > dist - 2) then - s.hasSpear = false; - enemy.hp = enemy.hp - 2; - pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном и попадает. "); - else - pn("Анна стреляет в " .. enemy.disp2 .. " гарпуном, но промахивается. "); - end; - return; - end; - else - s.hasHarpoon = true; - pn("Анна перезаряжает ружье. "); - end; - - local plpath = here():getWalkDistance(s.x, s.y, pl.x, pl.y); - if (plpath.l > 2) then - s.x = plpath.p[2][1]; - s.y = plpath.p[2][2]; - pn("Анна идет к вам. "); - end; - end; - dsc = function(s) - if (s.hp > 0) then - return [[ {Анна} готова к бою. ]]; - else - return [[ {Анна} без сознания. ]]; - end; - end; -}; - -za_cmbt_guard = function(nam, index, x, y, spear) - return combatant { - nam = nam; - disp2 = "стражника " .. tostring(index); - disp3 = "стражника " .. tostring(index); - x = x; - y = y; - hp = 6; - pic = "images/navjiarr_guard".. index ..".png"; - shootHit = "Вы стреляете в стражника и попадаете в него. "; - shootMiss = "Вы стреляете в стражника, но не попадаете в него. "; - shootKill = "Вы стреляете в стражника и он падает замертво. "; - handHit = "Вы ударяете стражника. "; - handKill = "После вашего удара стражник падает. "; - handFar = "Слишком далеко. "; - hasSpear = spear; - enemy = true; - dsc = function(s) - if (s.hp > 0) then - if (s.hasSpear) then - return "{Стражник " .. tostring(index).. "} вооружен копьем готов к бою. "; - else - return "{Стражник " .. tostring(index).. "} готов к бою. "; - end; - else - return false; - end; - end; - make_turn = function(s) - local enemies = { }; - for item=1,#here().obj do - local obj = here().obj[item]; - if (obj.ally and obj.hp > 0) then - local p = here():getWalkDistance(s.x, s.y, obj.x, obj.y); - if (p) then - table.insert(enemies, { - o = obj, - p = p - }); - end; - end; - end; - table.sort(enemies, function(a, b) - return (a.p.l < b.p.l); - end); - - local enemy = enemies[1]; - local path = here():getWalkDistance(s.x, s.y, here().plX, here().plY); - if (not enemy or path and enemy.p.l > path.l ) then - enemy = pl; - else - path = enemy.p; - enemy = enemy.o; - end; - - if (not enemy or not path) then - pn("Стражник ".. tostring(index).. " ждет. "); - return; - end; - - -- AI Order: - -- If has spear and enemy is close - hit with spear - -- walk towards nearest enemy - -- If enemy close - hit with claws - - if (s.hasSpear) then - here():canShoot(s.x,s.y, enemy.x, enemy.y); - - if (math.abs(s.x - enemy.x) + math.abs(s.y - enemy.y) <= 2 and here():canShoot(s.x,s.y, enemy.x, enemy.y)) then - if (math.abs(s.x - enemy.x) == 2 or math.abs(s.y - enemy.y) == 2) then - --50% - if (rnd(2) > 1) then - enemy.hp = enemy.hp - 2; - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and math.abs(s.y - enemy.y) == 1) then - --75% - if (rnd(4) > 1) then - enemy.hp = enemy.hp - 2; - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. "); - else - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем, но промахивается. "); - end; - return; - elseif (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - --100% - enemy.hp = enemy.hp - 2; - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " копьем и попадает. "); - return; - end; - end; - else - if (math.abs(s.x - enemy.x) == 1 and s.y == enemy.y or - s.x == enemy.x and math.abs(s.y - enemy.y) == 1) then - enemy.hp = enemy.hp - 1; - pn("Стражник ".. tostring(index).. " бьет " .. enemy.disp2 .. " и попадает. "); - return; - end; - end; - print("fug2",path); - s.x = path.p[2][1]; - s.y = path.p[2][2]; - pn("Стражник ".. tostring(index).. " идет к " .. enemy.disp3 .. ". "); - end; - }; -end; - -za_cmbt_guard1 = za_cmbt_guard("za_cmbt_guard1", 1, 3, 5, true); -za_cmbt_guard2 = za_cmbt_guard("za_cmbt_guard2", 2, 5, 5, false); -za_cmbt_guard3 = za_cmbt_guard("za_cmbt_guard3", 3, 3, 7, true); -za_cmbt_guard4 = za_cmbt_guard("za_cmbt_guard4", 4, 5, 7, true); - -za_phaetlarr_dlg = dlg { - var { - state = 0; - }; - nam = "za_phaetlarr_dlg"; - disp = "Фаэтларр"; - entered = function(s) - psub("intro"); - if (char_learr.follow) then - s.state = 1; - return [[ - Навьяр смотрит попеременно на Леарр и на вас, после чего отвечает: "Я Фаэтларр из Венаэданотра. Хевьяры обманули их и меня. Но как вы здесь оказались? Они закрыли хевьярам путь в город". Обращаясь к Леарр, он продолжает: "Ты осторожна будь. Хевьярам нельзя доверять". - ]]; - else - return [[ - Навьяр представляется: "Я Фаэтларр из Венаэданотра". После чего повторяет свой вопрос: "Что вы здесь хотите?" - ]]; - end; - end; - phr = { - {tag="intro"}; - {"[Цветокод] Венаэданотр неблизко. Как ты оказался здесь?", - function(s) - if (char_learr.follow) then - return [[ - Фаэтларр больше обращается к Леарр, чем к вам: "Другие хевьяры взяли меня на свой корабль. Пойдем со мной, сестра, вместе мы вернемся в Венаэданотр". Потом он гневно смотрит на вас: "Уходите, мы справимся сами". Видя, что Леарр не двигается, он застывает в удивлении. - ]]; - else - return [[ - "Другие хевьяры взяли меня на свой корабль. Больше я не повторю такой ошибки. Уходите, я справлюсь сам". - ]]; - end; - end, code [[ - if (char_learr.follow) then - psub("on_my_own_learr"); - else - psub("on_my_own"); - end; - ]]}; - {"[Цветокод] Мы ищем Лсэрианотр", - function(s) - if (char_learr.follow) then - return [[ - Фаэтларр больше обращается к Леарр, чем к вам: "Пойдем сестра. Эти такие же, как и те, с которыми был я. Вернемся в Венаэданотр". Потом он гневно смотрит на вас: "Уходите. Я не стану помогать вам". - ]]; - else - return [[ - "Вы заодно с ними. Уходите, я не стану помогать вам". - ]]; - end; - end, code [[ - psub("on_my_own"); - ]]}; - {tag="on_my_own"}; - {"[Цветокод] Расскажи больше о них", [[ - "Что вы хотите знать?" - ]], code [[ psub("more_on_them"); ]]}; - {"[Цветокод] Мы не враги тебе", [[ - "Почему я должен вам верить?" - ]], code [[ psub("trust");]]}; - {tag="more_on_them", empty = code [[ pret(); ]]}; - {"[Цветокод] Куда они направились?", [[ - "Они идут в Лсэрианотр. Их цель - пробудить Наэтвьирра. Блэк хочет с его помощью стать правителем мира. Дрейк хотел найти древние знания. Но сейчас он мертв". - ]], code [[ pon("black");pon("drake"); ]]}; - {"[Цветокод] Сколько их было?", [[ - "Хевьяров было пятеро. Но на борту также были навьяры. Нас было много. Большинство из них свято верят в Наэтвьирра, способного возродить старый мир. Хотя Уильям Дрейк не одобрял этого, Адриан Блэк всячески поощрял это". - ]]}; - {"[Цветокод] Почему они оставили тебя?", [[ - "Мы должны были взять ключ. Я, Дрейк и Блэк. Местные были против, но у нас не было выбора - ключ нужен для открытия врат Лсэрианотра. Мы пробрались в храм без проблем. Потом начались проблемы. Когда я взял ключ, я оказался в ловушке. К сожалению, у них не было инструментов, чтобы вытащить меня. Тогда я отдал ключ Дрейку и они ушли за инструментами. Они не вернулись. А потом пришли местные. От них я узнал, что Дрейк был убит". - ]], code [[ pon("drake"); ]]}; - {tag="black", false, "[Цветокод] Теперь Блэк главный?", [[ - "Да. У других хевьяров нет выбора, а навьяры на его корабле почти поклоняются ему". - ]]}; - {tag="drake", false, "[Цветокод] Что случилось с Дрейком?", [[ - Фаэтларр долго молчал. Наконец он собрался с силами и ответил: "Его убили местные во время их отступления с ключом". - ]], code [[ pon("i_am_drake"); ]]}; - {tag="i_am_drake", false, "[Цветокод] Я Дэвид Дрэйк. Сын Уильяма", [[ - Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки". - ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; poff("i_am_drake2"); ]]}; - {tag="trust"}; - {"[Цветокод] Мы хотим остановить Блэка", [[Фаэтларр - Фаэтларр кажется сильно удивленным. Он долго молчит, обдумывая ваши слова. Наконец, навьяр кивает. - ]], code [[ pon("need_help"); ]]}; - {tag="need_help", false, "[Цветокод] Нам нужна твоя помощь", [[ - Фаэтларр делает вам знак продолжать. - ]], code [[ psub("not_sure"); ]]}; - {tag="i_am_drake2", "[Цветокод] Я сын Уильяма Дрейка", [[ - Фаэтларр удивленно смотрит на вас: "Близких вьяров пути близки". - ]], code [[ za_phaetlarr_dlg.state = za_phaetlarr_dlg.state + 1; ]]}; - {tag="not_sure"}; - {"[Цветокод] Нам нужно знать, где находится храм Нлейисланотра", [[ - Фаэтларр уверенно говорит: "Вы спасли меня. Я помогу в ответ. Но я прошу вас еще об одном. Я хочу на борт вашего корабля". - ]], code [[ pon('join'); pon('go'); ]]}; - {tag="join", false, "[Цветокод] Хорошо, мы согласны", code = [[ - nleyyslanotrr_temple_found = true; - walk("za_phaetlarr_final"); - ]]}; - {tag="go", false, "[Цветокод] Что, если мы откажемся?", [[ - "Я не скажу вам где храм, и каждый идет своей дорогой". - ]]}; - }; -}; - -za_char_phaetlarr = npc { - nam = "za_char_phaetlarr"; - dsc = [[ - {Фаэтларр} стоит рядом и ждет ваших действий. - ]]; - phrases = { - "Фаэтларр ждет ваших действий. " - }; -}; - -za_phaetlarr_final = cutscene("za_phaetlarr_final", "Левиафан, Кают-компания", [[ - Вы возвращаетесь на Левиафан, где уже собрался весь экипаж. Фаэтларр рассказывает вам как попасть в храм -]], "leviathan_wardroom"); - -za_phaetlarr_free = cutscene("za_phaetlarr_free", "Нлейисланотр, улица", function(s) - if (char_learr.follow) then - return [[ - При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" Глядя на Леарр он немного успокаивается и внимательно следит за ее словами: "Они что-хотели?" - ]]; - elseif (char_anna.follow) then - return [[ - При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Анны: "Он явно не расположен к нам. Но у нас мало выбора. Спроси его, знает ли он где храм"? - ]]; - elseif (char_wright.follow) then - return [[ - При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Джека: "Я думаю, пора возвращаться на корабль. Я надеюсь, он даст нам всю необходимую информацию". - ]]; - elseif (char_radcliffe.follow) then - return [[ - При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" В динамиках раздается голос Уолтера: "Здесь слишком опасно оставаться. Надо доставить его на Левиафан и там решить, что делать дальше". - ]]; - else - return [[ - При помощи инструментов, вы убираете решетку из окна и освобождаете Фаэтларра. Навьяр выбирается из тюрьмы и с недоверием смотрит на вас, сжимая копье. Вы видите, как цветные полосы на его плавниках формируются в вопрос: "Что вы здесь хотите?" - ]]; - end; -end, za_phaetlarr_dlg); \ No newline at end of file diff --git a/journey_nleyyslanotrr_temple_old.lua b/journey_nleyyslanotrr_temple_old.lua deleted file mode 100644 --- a/journey_nleyyslanotrr_temple_old.lua +++ /dev/null @@ -1,392 +0,0 @@ -za_temple_entrance_foot = room { - nam = "Храм Нлейисланотра, вход"; - handwheel_room = "za_temple_entrance_foot"; - underwater = true; - no_exit = [[ - Нет смысла покидать Левиафан здесь. - ]]; - view = [[ - Через иллюминаторы вы видите вдалеке главный вход в храм Нлейисланотра. Над вырезанными в каменной толще массивными воротами видны узоры, нанесенные светящейся краской. У входа стоят несколько стражников, вооруженных копьями. Рядом с ними кружат их верные ездовые акулы, а чуть поодаль вы видите двух скатов, готовых рвануться в бой. - ]]; -}; - -za_temple_entrance = dlg { - nam = "Левиафан, рубка"; - var { - state = 0; - }; - entered = function(s) - if (s.state == 0) then - s.state = 1; - return [[ - Через иллюминаторы вы видите вдалеке главный вход в храм Нлейисланотра. Над вырезанными в каменной толще массивными воротами видны узоры, нанесенные светящейся краской. У входа стоят несколько стражников, вооруженных копьями. Рядом с ними кружат их верные ездовые акулы, а чуть поодаль вы видите двух скатов, готовых рвануться в бой. ^ - В рубку поднимается Фаэтларр и окидывает взглядом скалу перед вами. Медленно подойдя к иллюминатору он произносит: "Другой-вход в-храм-такой-есть. Он меньше-охраняться-должен. Ты смотри правее. У нас так построено, значит и у них так". - ]]; - else - return [[ - Через иллюминаторы вы видите вдалеке главный вход в храм Нлейисланотра. Над вырезанными в каменной толще массивными воротами видны узоры, нанесенные светящейся краской. У входа стоят несколько стражников, вооруженных копьями. Рядом с ними кружат их верные ездовые акулы, а чуть поодаль вы видите двух скатов, готовых рвануться в бой. - ]]; - end; - end; - phr = { - {"[Двигаться налево вдоль скалы]", [[ - Вы двигаетесь довольно долго, но когда становится очевидно, что там ничего нет, вы возвращаетесь на исходную позицию. - ]]}; - {"[Двигаться направо вдоль скалы]", [[ - Фаэтларр оказался прав. Совсем скоро вы замечаете узкий проход в скале. Если второй вход в храм существует, то он здесь. - ]], code = [[ walk("za_temple_back_entrance");]]}; - {"[Отправиться в другое место]", code = [[ walk("leviathan_wheelhouse"); ]]}; - {"[Отойти от штурвала]", code = [[ walk("leviathan_wheelhouse");]]}; - }; -}; - -za_temple_back_entrance_foot = room { - nam = "Храм Нлейисланотра, задний вход"; - dsc = [[ - Вы стоите перед расщелиной в скале, освещенной мощным лучом прожектора вашей субмарины. - ]]; - underwater = true; - view = [[ - Через иллюминаторы вы видите расщелину в скале, освещенную мощным лучом прожектора Левиафана. - ]]; - way = { - kh_vroom("В Левиафан", function(s) - if (not have(item_navjiarr_chart_z)) then - return leviathan_airlock; - else - return "za_leviathan_fight"; - end; - end); - kh_vroom("В ущелье", "za_ravine_1"); - }; -}; - -za_temple_back_entrance = dlg { - nam = "Левиафан, рубка"; - entered = [[ - Через иллюминаторы вы видите расщелину в скале, освещенную мощным лучом прожектора. - ]]; - phr = { - {"[Вернуться к главному входу]", code = [[ walk("za_temple_entrance"); ]]}; - {"[Отправиться в другое место]", code = [[ walk("leviathan_wheelhouse"); ]]}; - {"[Отойти от штурвала]", code = [[ walk("leviathan_wheelhouse");]]}; - }; -}; - -za_ravine_1 = room { - nam = "za_ravine_1"; - disp = "Ущелье"; - dsc = [[ - Вы находитесь в узком темном ущелье. Вы с трудом можете передвигаться по нему не задевая стен. Впереди ущелье разветвляется. Левое ответвление достаточно широкое, чтобы вы могли спокойно пройти. Правое настолько узкое, что вы с трудом сможете протиснуться в него. - ]]; - way = { - kh_vroom("Выйти из ущелья", "za_temple_back_entrance_foot"); - kh_vroom("Налево", "za_ravine_2"); - kh_vroom("Направо", "za_ravine_3"); - }; -}; - -za_ravine_2 = room { - nam = "za_ravine_2"; - disp = "Ущелье, вход в храм"; - dsc = [[ - В конце ущелья вы видите массивую металлическую дверь. - ]]; - way = { - kh_vroom("Назад", "za_ravine_1"); - kh_vroom("В храм", function(s) - if (za_panel.state == 1) then - return "za_temple_chamber"; - else - pr [[ - Дверь заперта и вы не знаете как ее открыть. - ]]; - return false; - end; - end); - }; -}; - -za_ravine_3 = room { - nam = "za_ravine_3"; - disp = "Ущелье"; - dsc = [[ - Вы находитесь в конце одного из ответвлений ущелья. Здесь так тесно, что вы не можете даже развернуться. - ]]; - obj = { - "za_panel" - }; - way = { - kh_vroom("Назад", "za_ravine_1"); - }; -}; - -za_panel = obj { - var { - state = 0; - }; - nam = "za_panel"; - dsc = [[ - В скале вы видите небольшую каменную {панель}. - ]]; - act = function(s) - if (s.state == 0) then - s.state = 1; - return [[ - Вы нажимаете панель и слышите из глубин ущелья скрежет открывающейся двери. - ]]; - else - return [[ - Вам здесь больше нечего делать. - ]]; - end; - end; -}; - -za_temple_chamber = room { - var { - state = 0; - }; - nam = "za_temple_chamber"; - disp = "Храм Нлейисланотра, главный зал"; - dsc = [[ - Вы находитесь в главном помещении древнего храма. Металлические стены зала освещены сиянием люминесцентных водорослей на потолке и на полу. - ]]; - entered = function(s) - if (s.state == 0) then - s.state = 1; - return [[ - Дверь позади вас закрывается и вы оказываетесь заперты в помещении. - ]]; - end; - end; - obj = { - "za_pedestal", - "item_deep_key" - }; - way = { - kh_vroom("Выйти", function(s) - if (have(item_navjiarr_chart_z)) then - return "za_ravine_2"; - else - return "Дверь заперта"; - end; - end); - }; -}; - -za_temple_lower_level1 = room { - nam = "za_temple_lower_level1"; - disp = "Храм Нлейисланотра, нижний этаж, спуск"; - dsc = [[ - Вы находитесь в узком коридоре, ярко освещенном люминесцентными водорослями. Коридор плавно уходит вниз, в недра скалы. - ]]; - way = { - kh_vroom("Наверх", "za_temple_chamber"); - kh_vroom("Дальше по коридору", "za_temple_lower_level2"); - }; -}; - -za_temple_lower_level2 = room { - nam = "za_temple_lower_level2"; - disp = "Храм Нлейисланотра, нижний этаж"; - dsc = [[ - Вы находитесь в узком коридоре, ярко освещенном люминесцентными водорослями. - ]]; - way = { - kh_vroom("Назад", "za_temple_lower_level1"); - kh_vroom("Дальше по коридору", "za_temple_lower_level3"); - }; -}; - -za_temple_lower_level3 = room { - nam = "za_temple_lower_level3"; - disp = "Храм Нлейисланотра, нижний этаж, тупик"; - dsc = [[ - Вы находитесь в узком коридоре, ярко освещенном люминесцентными водорослями. В конце коридора находится массивная металлическая дверь. - ]]; - way = { - kh_vroom("Назад", "za_temple_lower_level2"); - kh_vroom("В дверь", "za_temple_lower_hall"); - }; -}; - -za_temple_room1 = room { - nam = "za_temple_room1"; - disp = "Храм Нлейисланотра, нижний этаж, комната"; - dsc = [[ - Вы находитесь в небольшой комнате. Так же, как и другие помещения храма, пол и потолок ее покрыты светящимися водорослями. - ]]; - obj = { - "za_temple_room1_walls", - "za_temple_room1_niche", - }; -}; - -za_temple_room2 = room { - nam = "za_temple_room2"; - disp = "Храм Нлейисланотра, нижний этаж, комната"; - dsc = [[ - Вы находитесь в небольшой комнате. Так же, как и другие помещения храма, пол и потолок ее покрыты светящимися водорослями. - ]]; - obj = { - "za_temple_room2_niche" - }; -}; - -za_temple_room1_walls = obj { - nam = "za_temple_room1_walls"; - dsc = [[ - На стенах комнаты нанесены навьярские {записи}. - ]]; - act = [[ - Записи гласят, что где-то в этом храме должен быть ключ от древнего храма, где сокрыт некий "тайный предмет". - ]]; -}; - -za_temple_room1_niche = obj { - nam = "za_temple_room1_niche"; - dsc = [[ - В одной из стен вы видите небольшую {выемку}. - ]]; - act = function(s) - if (seen(za_temple_room2_niche, za_temple_room2)) then - return [[ - Вам здесь больше нечего делать. - ]]; - else - za_temple_room2_niche:enable(); - return [[ - Внутри выемки вы нажимаете на что-то и слышите скрежет камня в соседней комнате. - ]]; - end; - end; -}; - -za_temple_room2_niche = obj { - var { - state = 0; - }; - nam = "za_temple_room2_niche"; - dsc = function(s) - if (s.state == 0) then - return [[ - В одной из стен вы видите небольшую выемку, в которой лежит {табличка}. - ]]; - else - return [[ - В одной из стен вы видите небольшую {выемку}. - ]]; - end; - end; - act = function(s) - if (s.state == 0) then - s.state = 1; - return [[ - Табличка оказывается фрагментом карты. Вы забираете ее, чтобы на Левиафане совместить с имеющимися у вас частями. - ]]; - else - return [[ - Здесь больше нет ничего интересного. - ]]; - end; - end; -}; - -za_temple_room2_niche:disable(); - -za_temple_lower_hall = room { - nam = "za_temple_lower_hall"; - disp = "Храм Нлейисланотра, нижний этаж, главный зал"; - dsc = [[ - Вы находитесь в просторном зале на нижнем этаже храма Нлейисланотра. - ]]; - obj = { - "za_temple_hall_walls"; - "za_hall_pedestal"; - "item_navjiarr_chart_z"; - }; - way = { - kh_vroom("В коридор", "za_temple_lower_level3"); - }; -}; - -za_temple_hall_walls = obj { - nam = "za_temple_hall_walls"; - dsc = [[ - На стенах зала нанесены навьярские {записи}. - ]]; - act = [[ - - ]]; -}; - -za_pedestal = obj { - nam = "za_pedestal"; - dsc = [[ - В центре зала установлен небольшой пьедестал. - ]]; -}; - -za_hall_pedestal = obj { - nam = "za_hall_pedestal"; - dsc = [[ - В центре зала установлен небольшой пьедестал. - ]]; -}; - -za_leviathan_fight = dlg { - var { - state = 0; - }; - nam = "za_leviathan_fight"; - disp = "Левиафан, рубка"; - entered = function(s) - pr [[ - Еще забираясь в люк, вы замечаете, как со стороны главного входа храма к вам движется вооруженный отряд навьяров. Вы быстро снимаете скафандр и отправляетесь в рубку. Фаэтларр уже стоит у иллюминатора и внимательно наблюдает за происходящим. Повернувшись к вам, навьяр говорит: "Ваш-корабль быстрее их-воинов. Мы легко-уйдем". - ]]; - if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then - pr [[ - Леарр, стоящая рядом соглашается с ним: "Я им-вредить-не-хочу. Если мы просто-уйти-можем, то мы просто-уйдем". - ]]; - end; - pr [[ - Встав за штурвал, вы оцениваете ситуацию: со стороны главного входа к вам приближаются несколько всадников на акулах и три ската. вслед за ними плывут около десятка воинов вооруженных копьями. Просто уйти вы не сможете - пока Левиафан будет разворачиваться, враги догонят вас. - ]]; - end; - phr = { - {tag="torpedo", "[Выпустить торпеду]", function(s) - rel_learr = rel_learr - 1; - rel_phaetlarr = rel_phaetlarr - 1; - - pr [[ - Мощный взрыв раскидывает ошарашенных навьяров. Вода окрашивается кровью и ваш путь оказывается свободен. Фаэтларр в ужасе прильнул к степклу иллюминатора. По его плавникам бегут цветные полосы: "Что ты наделал?" - ]]; - if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0) then - pr [[ - Леарр не говоря ни слова покидает рубку. - ]]; - end; - end, code [[ poff("sonic"); za_leviathan_fight.state = 2; ]]}; - {tag="sonic", "[Выстрелить из звуковой пушки]", [[ - Несколько выстрелов из звуковой пушки успешно дезориентируют противника. Теперь у вас есть достаточно времени, чтобы уйти. - ]], code [[ za_leviathan_fight.state = 1; ]]}; - {tag="away", "[Развернуть субмарину]", code = function(s) - if (za_leviathan_fight.state == 0) then - walk("game_over_za_temple_escape"); - elseif (za_leviathan_fight.state == 1) then - walk("za_temple_escape_sonic"); - else - walk("za_temple_escape_torpedo"); - end; - end}; - }; -}; - -za_temple_escape_sonic = cutscene("za_temple_escape_sonic", "Левиафан, рубка", [[ - Пользуясь смятением в рядах противника, вы разворачиваете субмарину и быстро набираете скорость. -]], "leviathan_wheelhouse"); - -za_temple_escape_torpedo = cutscene("za_temple_escape_sonic", "Левиафан, рубка", [[ - Вы разворачиваете субмарину и покидаете место бойни. Немногие выжившие противники в ужасе бегут. -]], "leviathan_wheelhouse");