# HG changeset patch # User Silverwing # Date 2016-11-05 09:07:00 # Node ID ed3e3614459353a46626c4a46bcdd9f967ddcef8 # Parent cf9341cbe1ef7e96cfc0cdd1f2c14834619ce1e6 zayslanotrr additions. Added new file diff --git a/game_over.lua b/game_over.lua --- a/game_over.lua +++ b/game_over.lua @@ -1,3 +1,7 @@ +game_over_za_temple = game_over("game_over_za_temple", [[ + Развернув субмарину вы подставили винт под удары ваших противников. Несколько попаданий в винт выводят его из строя и Левиафан оказывается обездвижен. Теперь вы совершенно беззащитны перед атаками противника. +]]); + game_over_za_fight = game_over("game_over_za_fight", [[ Стражники навьяров - опасные противники. Очередной удар копья проделывает дыру в вашем скафандре и он наполняется водой. Вскоре вы задыхаетесь. ]]); diff --git a/items.lua b/items.lua --- a/items.lua +++ b/items.lua @@ -664,4 +664,35 @@ item_suit = suit { --cantakeoff = function(s) -- return not where(pl).underwater; --end; +}; + +item_deep_key = obj { + nam = "item_deep_key"; + disp = "Пирамидка"; + dsc = [[ + На пьедестале вы видите небольшой блестящий {предмет}. + ]]; + inv = [[ + Небольшая полупрозрачная пирамидка из неизвестного материала. Гладкая и холодная на ощупь. На гранях пирамидки нанесены непонятные символы. + ]]; + tak = [[ + Это оказалась небольшая полупрозрачная пирамидка. Вы забираете ее себе. + ]]; +}; + +item_navjiarr_chart_z = obj { +nam = "item_navjiarr_chart_z"; + disp = "Навьярская табличка"; + dsc = [[ + На пьедестале лежит небольшая металлическая {табличка}. + ]]; + tak = function(s) + + return [[ + Вы поднимаете предмет - это небольшая металлическая табличка. Вдалеке вы слышите скрежет камней - дверь храма снова открыта. + ]]; + end; + inv = [[ + Металлическая табличка, на которую нанесены странные обозначения. + ]]; }; \ No newline at end of file diff --git a/journey_temple.lua b/journey_temple.lua new file mode 100644 diff --git a/journey_venaedanotrr.lua b/journey_venaedanotrr.lua --- a/journey_venaedanotrr.lua +++ b/journey_venaedanotrr.lua @@ -217,6 +217,9 @@ ven_center = room { dsc = [[ Центральная площадь навьярского города вымощена камнем. Во все стороны вокруг тянутся невысокие каменные строения. Вдали на востоке вы видите башню, возвышающуюся над остальными зданиями города. ]]; + view = [[ + Из иллюминаторов Левиафана открывается великолемный вид на навьярский город. Множество каменных строений, раскинувшихся вокруг центрального обелиска соединены между собой ровными улицами, протянувшимися от окраин к центру. + ]]; obj = { 'ven_obelisk', 'ven_chieftain' diff --git a/journey_zayslanotrr_temple.lua b/journey_zayslanotrr_temple.lua --- a/journey_zayslanotrr_temple.lua +++ b/journey_zayslanotrr_temple.lua @@ -0,0 +1,392 @@ +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"); diff --git a/main.lua b/main.lua --- a/main.lua +++ b/main.lua @@ -38,6 +38,8 @@ dofile "atlantis_catching_the_tail.lua" -- Часть 3 dofile "journey_venaedanotrr.lua" dofile "journey_zayslanotrr.lua" +dofile "journey_zayslanotrr_temple.lua" +dofile "journey_temple.lua" -- Часть 4 dofile "final_scene.lua"; dofile "final_battle.lua"; @@ -219,8 +221,8 @@ function init() put(item_colt, pl); --ven_shark.position = "55"; --pl.where = "za_plaetlarr_fight"; - pl.where = "za_phaetlarr_dlg"; - move(submarine_leviathan, "ven_center"); + pl.where = "za_temple_back_entrance"; + move(submarine_leviathan, "za_temple_back_entrance_foot"); char_anna.follow = true; --pl.where = "ven_chest_look"; --move(ven_shark, "ven_temple_l1");