--[[ iraa'pha'anot'rr ]] ctt_iraa_city = room { nam = "Центр Ираафаанотра"; dsc = [[ Вы находитесь у центра навьярского поселения Ираафаанотр. Поверхность под вами словно сделана из цельного куска камня. Несколько каменных строений возвышаются поблизости. ]]; underwater = true; entered = function(s) if (ArrayUtils.indexOf(pl.party, 'learr') ~= 0 and not char_learr.follow) then pr [[ Леарр входит в шлюз вслед за вами: "Я вместе-с-тобой-пойду". ]]; char_learr:accompany(true); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(false); elseif (ArrayUtils.indexOf(pl.party, 'anna') ~= 0 and not char_anna.follow) then pr [[ Анна входит в шлюз вслед за вами: "Я пойду вместе с вами, вам наверняка понадобится помощь". ]]; char_learr:accompany(false); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(true); end; end; obj = { "ctt_iraa_obelisk", "ctt_iraa_chieftain", "ctt_iraa_guards" }; }; ctt_iraa_obelisk = obj { nam = "ctt_iraa_obelisk"; dsc = [[ Недалеко от вас стоит {обелиск}, на котором светящимися красками нанесено название города. ]]; act = function(s) if (ctt_iraaphaanotrr_chieftain.state == 1) then iraaphaanotrr_found = true; pr [[ Каменный обелиск, на который нанесено название города. Внизу вы видите какие-то символы, но вы не понимаете их назначения. ]]; if (char_learr.follow) then pr [[ По головным плавникам Леарр бегут цветные полосы: "[Схема показывает к-храму-дорогу. Когда мы на-левиафан-вернемся, я покажу как добраться туда]". ]]; end; if (char_anna.follow) then pr [[ Анна подходит к вам и внимательно осматривает символы. вы слышите ее голос в динамиках: "Это путь к храму. Когда вернемся на Левиафан, я покажу это место на нашей карте". ]]; end; else pr [[ Каменный обелиск, на который нанесено название города. Внизу вы видите какие-то символы, но вы не понимаете их назначения. ]]; end; end; }; ctt_iraa_guards = npc { nam = "ctt_iraa_guards"; dsc = [[ Рядом с вождем стоят двое {стражников}, вооруженных копьями. ]]; phr = { [[ "Ты с-вождем-говори". ]], [[ "Что ты хочешь?" ]], [[ "Я ничего-знаю. Ты вождя-спроси". ]] }; }; ctt_iraa_chieftain = npc { var { state = 0; }; nam = "ctt_iraa_chieftain"; dsc = [[ Перед вами стоит {вождь} Ираафаанотра. ]]; dlg = "ctt_iraa_chieftain_dlg"; }; ctt_iraa_chieftain_dlg = dlg { nam = "Вождь Ираафаанотра"; entered = function(s) if (have(item_navjiarr_chart_1)) then pon("charts"); else poff("charts"); end; return [[ Перед вами стоит вождь Ираафаантора - немолодой навьяр. На шее у него коралловое ожерелье. Он внимательно осматривает вас. После чего по его головным плавникам начинают бежать цветные полосы: "[Мы рады-видеть вас. Я знаю, зачем вы пришли]". ]]; end; phr = { {tag="charts", false, "Мне нужны карты из храма", [[ Вождь отрицательно качает головой: "[Мы не дадим их вам сейчас]". ]]}; {"Вы можете нам помочь?", [[ Вождь кивает: "[Вы идите в храм. Вы там что ищете найдете. Вы возвращайтесь потом. Я помогу вам еще]". ]]}; {tag="temple", false, "Как мы найдем храм?", [[ Вождь указывает на символы в нижней части обелиска. ]], code [[ ctt_iraaphaanotrr_chieftain.state = 1; ]]}; {always=true, "Мы пойдем", [[ Вождь прощается с вами: "[Вы возвращайтесь. Нам есть что обсудить]". ]], code = [[ back(); ]]}; }; }; ctt_iraa_near_temple = room { var { state = 0; }; nam = "Храм Ираафаанотра, вход"; underwater = true; dsc = [[ Храм Ираафаанотра представляет собой обычную пещеру в скале неподалеку от города. Над входом в пещеру вытесан символ, раскрашенный цветами Ираафаанотра. ]]; entered = function(s) if (char_anna.follow and s.state == 0) then pr [[ В динамиках скафандра вы слышите голос Анны Рэдклифф: "Этот символ - ни что иное, как карта, указывающая путь к городу. В отличие от самого города, здесь я не вижу указаний ни на одно место, кроме храма и Ираафаанотра". ]]; end; s.state = 1; end; way = { vroom("Войти", "ctt_iraa_temple_entrance"); vroom("В Левиафан", "leviathan_airlock"); }; }; ctt_iraa_temple_entrance = darkroom { nam = "Храм Ираафаанотра, первый этаж"; dsc_halflit = [[ Вы находитесь в небольшом темном проходе естественного происхождения. Проход позади вас ведет к выходу. Перед собой вы видите узкий проход, ведущий вглубь пещеры. ]]; dsc_dark = [[ В темноте вы с трудом различаете очертания стен пещеры. ]]; entered = function(s) if (char_anna.follow) then char_anna.accompany(false); pr [[ В динамиках вы слышите голос Анны Рэдклифф: "Глаза навьяров лучше приспособлены к темноте, поэтому они нормально ориентируются в этих помещениях. Будь готов к тому, что с зажженой лампой ты не увидишь всего. Я подожду тебя здесь". ]]; end; if (char_learr.follow) then char_learr.accompany(false); pr [[ Вы видите цветный полосы, бегущие по плавникам Леарр: "Уильям-ты в-полной-темноте-только-все-увидишь. Свет-здесь-не-друг. Я здесь-тебя-жду". ]]; end; end; obj = { "ctt_iraa_l1_hint" }; way = { kh_vroom("Вглубь пещеры", "ctt_iraa_l1_front", 1); kh_vroom("К выходу", "ctt_iraa_near_temple", 2); }; }; ctt_iraa_l1_hint = obj { nam = "ctt_iraa_l1_hint"; dsc = function(s) if (pl.has_light) then return [[ На полу перед вами лежит большая металлическая {пластина}, покрытая странными узорами. ]]; else return [[ На полу перед вами лежит большая металлическая {пластина}, покрытая узорами, отражающими свет проникающий от входа. ]]; end; end; act = function(s) if (pl.has_light) then return [[ Вы рассматриваете пластину со всех сторон, но не можете понять, для чего она здесь. ]]; else return [[ В темноте вы видите проступающие на пластине контуры коридора: 00110 00010 0K111 K1001 0011K ]]; end; end; }; ctt_iraa_l1_front = darkroom { nam = "Храм Ираафаанотра, первый этаж"; dsc_halflit = [[ Вы стоите перед входом в большую комнату. В отличие от коридора в котором вы находитесь, к ее созданию явно причастны разумные существа. Перед собой вы видите прямоугольное помещение разделенное на двадцать пять квадратов, ]]; dsc_dark = [[ Вы стоите посреди темной пещеры. В темноте вы не видите даже пути назад. ]]; way = { kh_vroom("Вглубь пещеры", "ctt_iraa_l1", 1); kh_vroom("К выходу", "ctt_iraa_temple_entrance", 1); }; }; ctt_iraa_l1_map = { {0, 0, 1, 1, "item_ctt_iraa_key3"}; {"item_ctt_iraa_key2", 1, 0, 0, 1}; {0, "item_ctt_iraa_key1", 1, 1, 1}; {0, 0, 0, 1, 0}; {0, 0, 1, 1, 0}; }; ctt_iraa_l1 = darkroom { var { px = 3; py = 1; }; nam = "Храм Ираафаанотра, первый этаж"; forcedsc = true; entered = function(s) if (where(item_ctt_iraa_key1) ~= pl) then item_ctt_iraa_key1:disable(); end; if (where(item_ctt_iraa_key2) ~= pl) then item_ctt_iraa_key2:disable(); end; if (where(item_ctt_iraa_key3) ~= pl) then item_ctt_iraa_key3:disable(); end; if (ctt_iraa_l1_map[s.py][s.px] ~= 1 and ctt_iraa_l1_map[s.py][s.px] ~= 0 and where(ctt_iraa_l1_map[s.py][s.px]) ~= pl) then print "enable item" stead.ref(ctt_iraa_l1_map[s.py][s.px]):enable(); end; end; dsc_halflit = function(s) end; dsc_dark = [[ Вы стоите в темном помещении. Ни единого проблеска света. ]]; obj = { "item_ctt_iraa_key1", "item_ctt_iraa_key2", "item_ctt_iraa_key3" }; way = { kh_vroom("Вперед", function(s) if (ctt_iraa_l1.px == 4 and ctt_iraa_l1.py == 5) then return ctt_iraa_l1_end; end; ctt_iraa_l1.py = ctt_iraa_l1.py + 1; if (ctt_iraa_l1.py == 5 and ctt_iraa_l1.px ~= 3) then path("Вперед", ctt_iraa_l1):disable(); else path("Вперед", ctt_iraa_l1):enable(); end; if (ctt_iraa_l1_map[ctt_iraa_l1.py][ctt_iraa_l1.px] == 0) then return "game_over_trap"; else return "ctt_iraa_l1"; end; end, 1); kh_vroom("Назад", function(s) if (px == 3 and py == 1) then return ctt_iraa_l1_front; end; ctt_iraa_l1.py = ctt_iraa_l1.py - 1; if (ctt_iraa_l1.py == 1 and ctt_iraa_l1.px ~= 3) then path("Назад", ctt_iraa_l1):disable(); else path("Назад", ctt_iraa_l1):enable(); end; if (ctt_iraa_l1_map[ctt_iraa_l1.py][ctt_iraa_l1.px] == 0) then return "game_over_trap"; else return "ctt_iraa_l1"; end; end, 1); kh_vroom("Налево", function(s) ctt_iraa_l1.px = ctt_iraa_l1.px - 1; if (ctt_iraa_l1.px == 1) then path("Налево", ctt_iraa_l1):disable(); else path("Налево", ctt_iraa_l1):enable(); end; if (ctt_iraa_l1_map[ctt_iraa_l1.py][ctt_iraa_l1.px] == 0) then return "game_over_trap"; else return "ctt_iraa_l1"; end; end, 1); kh_vroom("Направо", function(s) ctt_iraa_l1.px = ctt_iraa_l1.px + 1; if (ctt_iraa_l1.px == 5) then path("Направо", ctt_iraa_l1):disable(); else path("Направо", ctt_iraa_l1):enable(); end; if (ctt_iraa_l1_map[ctt_iraa_l1.py][ctt_iraa_l1.px] == 0) then return "game_over_trap"; else return "ctt_iraa_l1"; end; end, 1); }; }; item_ctt_iraa_key1 = obj { nam = "item_ctt_iraa_key1"; disp = "Красный ключ"; seen_level = 1; dsc = [[ На полу рядом с вами валяется небольшой {ключик}. ]]; inv = [[ Небольшой коралловый ключик красноватого цвета. ]]; tak = [[ Вы забираете ключик себе. ]]; }; item_ctt_iraa_key2 = obj { nam = "item_ctt_iraa_key2"; disp = "Зеленый ключ"; seen_level = 1; dsc = [[ На полу рядом с вами валяется небольшой {ключик}. ]]; inv = [[ Небольшой коралловый ключик зеленоватого цвета. ]]; tak = [[ Вы забираете ключик себе. ]]; }; item_ctt_iraa_key3 = obj { nam = "item_ctt_iraa_key3"; disp = "Синий ключ"; seen_level = 1; dsc = [[ На полу рядом с вами валяется небольшой {ключик}. ]]; inv = [[ Небольшой коралловый ключик синеватого цвета. ]]; tak = [[ Вы забираете ключик себе. ]]; }; ctt_iraa_l1_end = darkroom { nam = "Храм Ираафаанотра, первый этаж"; dsc_halflit = [[ Вы находитесь в небольшой пещере перед массивной каменной дверью. Позади вас - главный зал первого этажа храма. ]]; dsc_dark = [[ Вы находитесь в темной пещере. ]]; way = { kh_vroom("Подняться", "ctt_iraa_l2", 1):disable(); kh_vroom("Назад", "ctt_iraa_l1", 1); }; life = function(s) if (ctt_iraa_keyhole1.key_in == item_ctt_iraa_key3 and ctt_iraa_keyhole2.key_in == item_ctt_iraa_key1 and ctt_iraa_keyhole3.key_in == item_ctt_iraa_key2) then path("Подняться"):enable(); else path("Подняться"):disable(); end; end; obj = { 'ctt_iraa_keyholes', 'ctt_iraa_keyhole1', 'ctt_iraa_keyhole2', 'ctt_iraa_keyhole3' }; }; ctt_iraa_keyholes = obj { nam = "ctt_iraa_keyholes"; seen_level = 2; dsc = function(s) if (pl.has_light) then return [[ Перед собой вы видите три замочные скважины, расположенные одна над другой, визуально почти ничем не отличающиеся: ]]; else return [[ Перед собой вы видите три замочные скважины, расположенные одна над другой: ]]; end; end; }; ctt_iraa_keyhole1 = obj { var = { key_in = nil }; nam = "ctt_iraa_keyhole1"; seen_level = 2; dsc = function(s) if (s.key_in) then return [[ В {верхнюю скважину} вставлен ключ. ^ ]]; elseif (pl.has_light) then return [[ {Верхняя скважина} пуста. ^ ]]; else return [[ Из {верхней скважины} исходит слабое синеватое свечение. ]]; end; end; }; ctt_iraa_keyhole2 = obj { var = { key_in = nil; }; nam = "ctt_iraa_keyhole2"; seen_level = 2; dsc = function(s) if (s.key_in) then return [[ В {среднюю скважину} вставлен ключ. ^ ]]; elseif (pl.has_light) then return [[ {Средняя скважина} пуста. ^ ]]; else return [[ Из {средней скважины} исходит слабое красноватое свечение. ]]; end; end; }; ctt_iraa_keyhole3 = obj { var = { key_in = nil; }; nam = "ctt_iraa_keyhole1"; seen_level = 2; dsc = function(s) if (s.key_in) then return [[ В {нижнюю скважину} вставлен ключ. ^ ]]; elseif (pl.has_light) then return [[ {Нижняя скважина} пуста. ^ ]]; else return [[ Из {нижней скважины} вы видите слабое зеленоватое свечение. ]]; end; end; use = function(s, o) if (s.key_in) then take(s.key_in); s.key_in = nil; return [[ Вы забираете ключ. ]]; else if (o == item_ctt_iraa_key1 or o == item_ctt_iraa_key2 or o == item_ctt_iraa_key3) then s.key_in = o; remove(s.key_in); return [[ Вы вставляет ключ в скважину. ]]; end; return [[ Это сюда не подходит. ]]; end; end; }; ctt_iraa_l2 = darkroom { nam = "Храм Ираафаанотра, второй этаж"; dsc_halflit = [[ Большая круглая пещера. В центре ее вы видите три совершенно одинаковых пьедестала ]]; dsc_dark = [[ В темноте вы ничего не видите. ]]; way = { kh_vroom("Подняться", "ctt_iraa_l3", 1):disable(); kh_vroom("Спуститься", "ctt_iraa_l1_end", 1); }; obj = { "ctt_iraa_pedestal1"; "ctt_iraa_pedestal2"; "ctt_iraa_pedestal3"; }; }; item_ctt_iraa_spear = obj { nam = "item_ctt_iraa_spear"; disp = "Копье"; inv = [[ Коралловое копье. ]]; }; ctt_iraa_pedestal1 = obj { var { state = 0; }; nam = "ctt_iraa_pedestal1"; 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; }; ctt_iraa_pedestal2 = obj { var { state = 0; }; nam = "ctt_iraa_pedestal2"; dsc = function(s) if (s.state == 0) then return [[ На {центральном пьедестале} установлено коралловое копье. ]]; else return [[ Центральный пьедестал пуст. ]]; end; end; act = function(s) if (s.state == 0) then s.state = 1; take(item_ctt_iraa_spear); path("Подняться"):enable(); return [[ Вы забираете копье. Из дальнего конца пещеры вы слышите скрежет и видите, как массивная каменная плита открывает проход на третий этаж. ]]; else return [[ Пьедестал пуст. ]]; end; end; }; ctt_iraa_pedestal3 = obj { var { state = 0; }; nam = "ctt_iraa_pedestal1"; 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; }; ctt_iraa_l3 = darkroom { nam = "Храм Ираафаанотра, третий этаж"; dsc_halflit = [[ Вы находитесь в небольшом коридоре. ]]; dsc_dark = [[ В темноте вы ничего не видите, кроме зияющего вдалеке выхода наружу. ]]; obj = { "ctt_iraa_statue1"; "ctt_iraa_statue2"; "ctt_iraa_statue3"; }; way = { kh_vroom("Спуститься", "ctt_iraa_l2", 1); kh_vroom("Подняться", "ctt_iraa_top", 1); }; }; ctt_iraa_statue1 = obj { var { has_spear = false; }; nam = "ctt_iraa_statue1"; seen_level = 1; dsc = function(s) if (s.has_spear) then return [[ Первая {статуя} держит в руках коралловое копье. ]]; else return [[ Первая {статуя} стоит с протянутыми руками. ]]; end; end; act = function(s) if (s.has_spear) then take(item_ctt_iraa_spear); return [[ Вы забираете копье. ]]; end; end; use = function(s, o) if (o == item_ctt_iraa_spear) then remove(item_ctt_iraa_spear); s.has_spear = true; return [[ Вы помещаете копье в протянутые руки статуи. Ничего не происходит ]]; end; return [[ Это сюда не подойдет. ]]; end; }; ctt_iraa_statue2 = obj { var { has_spear = false; }; nam = "ctt_iraa_statue2"; seen_level = 1; dsc = function(s) if (s.has_spear) then return [[ Вторая {статуя} держит в руках коралловое копье. ]]; else return [[ Вторая {статуя} стоит с протянутыми руками. ]]; end; end; use = function(s, o) if (o == item_ctt_iraa_spear) then remove(item_ctt_iraa_spear); take(item_navjiarr_chart_iraa); s.has_spear = true; return [[ Вы помещаете копье в протянутые руки статуи. Табличка на постаменте статуи отодвигается в сторону и в открывшейся нише вы находите фрагмент навьярской карты. ]]; end; return [[ Это сюда не подойдет. ]]; end; }; ctt_iraa_statue3 = obj { var { has_spear = false; }; nam = "ctt_iraa_statue3"; seen_level = 1; dsc = function(s) if (s.has_spear) then return [[ Последняя {статуя} держит в руках коралловое копье. ]]; else return [[ Последняя {статуя} стоит с протянутыми руками. ]]; end; end; act = function(s) if (s.has_spear) then take(item_ctt_iraa_spear); return [[ Вы забираете копье. ]]; end; end; use = function(s, o) if (o == item_ctt_iraa_spear) then remove(item_ctt_iraa_spear); s.has_spear = true; return [[ Вы помещаете копье в протянутые руки статуи. Ничего не происходит ]]; end; return [[ Это сюда не подойдет. ]]; end; }; ctt_iraa_top = room { nam = "Храм Ираафаанотра, вершина скалы"; dsc = [[ Вы стоите на вершине скалы, рядом с задним входом в храм Ираафаанотра. Внизу вы видите ожидающий вас Левиафан. Аккуратная лестница, вырезанная в скале позволит вам легко спуститься вниз, к гланому входу. ]]; way = { kh_vroom("Вернуться в храм", "ctt_iraa_l3"); kh_vroom("Спуститься к главному входу", "ctt_iraa_near_temple"); }; }; --[[ Dyp'atre'anot'rr ]] ctt_dyp_city = room { nam = "Дипатреанотр"; dsc = [[ Вы находитесь на окраине Дипатреанотра. ]]; underwater = true; way = { kh_vroom("В Левиафан", "leviathan_airlock"); }; entered = function(s) if ArrayUtils.indexOf(pl.party, 'anna') ~= 0 and not char_anna.follow then char_learr:accompany(false); char_radcliffe:accompany(false); char_wright:accompany(false); char_anna:accompany(true); return [[ Вы не успеваете выйти, как в шлюз входит Анна. Она говорит: "Я пойду с вами. Я знаю навьярский язык и, надеюсь, буду полезна". ]]; end; end; obj = { "ctt_dyp_guards", "ctt_dyp_priest" }; }; ctt_dyp_guards = npc { nam = "ctt_dyp_guards"; dsc = [[ Четверо {стражников} стоят перед вами. Они запрещают вам входить в город: "[Ты в-город-не-пройдешь]". ]]; phr = { "Ты в-город-не-пройдешь", "Ты не-входи", "He'vji'a'rr не-войдет" }; }; ctt_dyp_priest = npc { nam = "ctt_dyp_priest"; dsc = [[ Рядом со стражниками стоит пожилой {навьяр}. На шее у него ожерелье из кораллов, а в правой руке - посох, на вершине которого укреплен металлический диск. ]]; dlg = "ctt_dyp_priest_dlg"; }; ctt_dyp_priest_dlg = dlg { var { state = 0; }; nam = "Жрец"; entered = function(s) if (s.state == 0 and have(item_navjiarr_chart_1)) then pon("have_map"); end; return [[ Навьяр привествует вас: "[Я рад-видеть вас]". ]]; end; phr = { {"[Я ищу Лсэрианотр]", [[ Навьяр выглядит изумленно. Стражники переглядываются, не зная, как быть. Некоторое время он раздумывает, как поступить и наконец отвечает: [Хевьяр туда не идет]. ]], code [[ psub('lseryanotrr'); ]]}; {tag="have_map", false, "[Мне нужня эта карты][показать фрагмент карты]", [[ Навьяр с интересом разглядывает металлическую пластинку. Через некоторое время он сообщает вам: "[У нас есть то, что вы ищете. Это в храме. Хевьяр должен пройти испытание, чтобы попасть в храм]". Он рисует посохом на земле схему пути в храм Дипатреанотра. После чего стирает ее и говорит: "Ты возвращайся, когда пройдешь испытание". ]], code [[ ctt_dyp_priest_dlg.state = 1; dypatreanotrr_temple_found = true; back(); ]]}; {always=true, "[Я пойду]", [[ Навьяр остается не подвижен. ]], code [[ back(); ]]}; {tag="lseryanotrr"}; {"[Почему?]", [[ [Лсэрианотр - город навьяров. Хевьяр туда не идет]. ]]}; {"[Вы знаете, где он находится?]", [[ [Хевьяр туда не идет. Об этом не говорим больше]. ]], code [[ pret(); ]]}; }; }; ctt_dyp_temple_l1_map = { {"в югозападном углу", "у южной стены", "в юговосточном углу"}, {"у западной стены", "в центре", "у восточной стены"}, {"в северозападном углу", "у северной стены", "в северовосточном углу"}, }; ctt_dyp_temple_l1 = room { var { was_seen = false; px = 3; py = 1; path = {1}; cpath = {1,4,7,8,9,6,3,2,5}; solved = true; }; nam = "Храм Дипатреанотра, первый этаж"; dsc = function(s) if (s.solved) then return [[ Вы находитесь в большом квадратном зале. Пол состоит из девяти нажимных плит, на одной из которых вы и стоите. Все плиты находятся в нажатом состоянии. ]]; else return [[ Вы находитесь ]].. ctt_dyp_temple_l1_map[s.py][s.px] ..[[ зала. Пол состоит из девяти нажимных плит, на одной из которых вы и стоите. ]]; end; end; check = function(s) if (s.solved) then return; end; local pos = s.px * s.py; local has = false; for i = 1, #s.path do if (s.path[i] == pos) then has = true; end; end; if (not has) then if (s.cpath[#s.path + 1] == pos) then table.insert(s.path, pos); else s.path = { pos }; end; end; if (#s.path == #s.cpath) then s.solved = true; way("На север"):disable(); way("На юг"):disable(); way("На восток"):disable(); way("На запад"):disable(); way("Выйти из храма"):enable(); way("Пройти дальше"):enable(); else if (s.px == 1) then way("На запад"):disable(); else way("На запад"):enable(); end; if (s.px == 3) then way("На восток"):disable(); else way("На восток"):enable(); end; if (s.py == 1) then way("На юг"):disable(); else way("На юг"):enable(); end; if (s.py == 3) then way("На север"):disable(); else way("На север"):enable(); end; end; end; entered = function(s) s:check(); if (not s.was_seen) then s.was_seen = true; pr [[ Как только вы входите в храм, дверь за вами закрывается. Вы оказываетесь в запертой комнате. Пол и потолок комнаты покрыты светящимися водорослями, позволяя вам без проблем видеть все находящееся внутри. ]]; end; end; way = { kh_vroom("На север", function(s) ctt_dyp_temple_l1.py = ctt_dyp_temple_l1.py + 1; ctt_dyp_temple_l1:check(); return false; end); kh_vroom("На восток", function(s) ctt_dyp_temple_l1.px = ctt_dyp_temple_l1.px - 1; ctt_dyp_temple_l1:check(); return false; end); kh_vroom("На запад", function(s) ctt_dyp_temple_l1.px = ctt_dyp_temple_l1.px + 1; ctt_dyp_temple_l1:check(); return false; end); kh_vroom("На юг", function(s) ctt_dyp_temple_l1.py = ctt_dyp_temple_l1.py - 1; ctt_dyp_temple_l1:check(); return false; end); kh_vroom("Выйти из храма", "ctt_dyp_temple_entrance"):disable(); kh_vroom("Пройти дальше", "ctt_dyp_temple_l2"):disable(); }; }; ctt_dyp_button_ctr = function(nam, index) return obj { nam = nam; dsc = function(s) local im = "images/dyp_bg.png"; for i = 1, #ctt_dyp_temple_l2.buttons[index] do im = im .. ";images/dyp_" .. tostring(ctt_dyp_temple_l2.buttons[index][i]) .. ".png"; end; if (ctt_dyp_temple_l2.pressed_buttons[index]) then return "{Рычаг с символами " .. img(im) .."} включен.^"; else return "{Рычаг с символами " .. img(im) .."} выключен.^"; end; end; act = function(s) ctt_dyp_temple_l2:check(index); return [[ Вы переключаете рычаг и узор на полу комнаты меняется ]]; end; }; end; ctt_dyp_temple_l2 = room { var { active_parts = {false, false, false, false, false, false, false, false, false, false, false, false}; pressed_buttons = {false, false, false, false, false, false, false, false}; solved = false; }; buttons = { {1, 5, 9, 11, 12}; {1, 2, 3, 4}; {4, 8, 10, 11, 12}; {2, 4, 5, 6}; {1, 5, 7, 9, 10, 11, 12}; {2, 6, 9, 10, 12}; {1, 3, 7, 8}; {3, 7, 9, 10, 11}; }; pic = function(s) local pic = 'images/dyp_bg.png'; local cnt = 0; for i = 1, #s.active_parts do if (s.active_parts[i]) then cnt = cnt + 1; pic = pic .. ";images/dyp_" .. tostring(i) .. ".png"; end; end; if (cnt > 0) then return pic; else return nil; end; end; nam = "Храм Дипатреанотра, второй этаж"; dsc = [[ Большой круглый плохо освещенный зал. В центре зала расположено восемь рычагов, рядом с которыми нанесены какие-то символы. ]]; obj = { ctt_dyp_button_ctr("ctt_dyp_b1", 1); ctt_dyp_button_ctr("ctt_dyp_b2", 2); ctt_dyp_button_ctr("ctt_dyp_b3", 3); ctt_dyp_button_ctr("ctt_dyp_b4", 4); ctt_dyp_button_ctr("ctt_dyp_b5", 5); ctt_dyp_button_ctr("ctt_dyp_b6", 6); ctt_dyp_button_ctr("ctt_dyp_b7", 7); ctt_dyp_button_ctr("ctt_dyp_b8", 8); }; way = { kh_vroom("На первый этаж", "ctt_dyp_temple_l1"):disable(); kh_vroom("На третий этаж", "ctt_dyp_temple_l3"):disable(); }; check = function(s, index) s.pressed_buttons[index] = not s.pressed_buttons[index]; for i = 1, #s.active_parts do s.active_parts[i] = false; end; for i = 1, #s.pressed_buttons do if (s.pressed_buttons[i]) then for j = 1, #s.buttons[i] do s.active_parts[s.buttons[i][j]] = not s.active_parts[s.buttons[i][j]]; end; end; end; s.solved = true; for i = 1, #s.active_parts do if (not s.active_parts[i]) then s.solved = false; break; end; end; if (s.solved) then path("На первый этаж"):enable(); path("На третий этаж"):enable(); end; end; }; ctt_dyp_temple_l3 = room { nam = "Храм Дипатреанотра, третий этаж"; dsc = [[ Небольшая овальная комната, в центре которой расположены три статуи. На стене выгравирована надпись на навьярском языке: "[Каждый получит свое. Воин - оружие. Мудрец - знания. Вождь - власть]". ]]; entered = function(s) if (not ctt_dyp_statue1.looked) then ctt_dyp_statue_ped1:disable(); end; if (not ctt_dyp_statue2.looked) then ctt_dyp_statue_ped2:disable(); end; if (not ctt_dyp_statue3.looked) then ctt_dyp_statue_ped3:disable(); end; if (not ctt_dyp_statue1.set or not ctt_dyp_statue2.set or not ctt_dyp_statue3.set) then lifeon(s); end; end; left = function(s) lifeoff(s); end; life = function(s) if (ctt_dyp_statue1.set and ctt_dyp_statue2.set and ctt_dyp_statue3.set) then return [[ Двери открываются, позволяя вам пройти дальше. ]]; end; end; way = { kh_vroom("На второй этаж", "ctt_dyp_temple_l2"):disable(); kh_vroom("Вглубь храма", "ctt_dyp_temple_corridor_1"):disable(); }; obj = { 'ctt_dyp_spear', 'ctt_dyp_statue1', 'ctt_dyp_statue_ped1', 'ctt_dyp_statue2', 'ctt_dyp_statue_ped2', 'ctt_dyp_statue3', 'ctt_dyp_statue_ped3' }; }; ctt_dyp_spear = obj { nam = "ctt_dyp_spear"; dsc = [[ На полу у входа лежит коралловое {копье}. ]]; act = function(s) take(s); return [[ Вы поднимаете копье. ]]; end; }; ctt_dyp_lightdisk = obj { nam = "ctt_dyp_lightdisk"; dsc = [[ {светодиск}. ]]; act = function(s) take(s); return [[ Вы поднимаете светодиск. ]]; end; }; ctt_dyp_key = obj { nam = "ctt_dyp_key"; dsc = [[ {ключ}. ]]; act = function(s) take(s); return [[ Вы поднимаете ключ. ]]; end; }; ctt_dyp_statue1 = obj { var { looked = false; set = false; }; nam = "ctt_dyp_statue1"; dsc = function(s) if (s.set) then return [[ {Первая статуя} изображает навьяра, задумчиво смотрящего перед собой. В левой руке статуи лежит фигурка ската. ]]; else return [[ {Первая статуя} изображает навьяра, задумчиво смотрящего перед собой. Левая рука статуи вытянута, словно в ожидании чего-то. ]]; end; end; act = function(s) if (not s.looked) then s.looked = true; ctt_dyp_statue_ped1:enable(); return [[ Вы замечаете выемку в пьедестале под статуей. ]]; else return [[ Вы не замечаете ничего интересного. ]]; end; end; use = function(s, o) if (o == ctt_dyp_ray) then remove(ctt_dyp_ray); s.set = true; return [[ Вы помещаете фигурку ската в руку статуи. ]]; end; end; }; ctt_dyp_statue2 = obj { var { looked = false; set = false; }; nam = "ctt_dyp_statue2"; dsc = function(s) if (s.set) then return [[ {Вторая статуя} изображает навьяра в боевой стойке. В правой руке статуи лежит фигурка акулы. ]]; else return [[ {Вторая статуя} изображает навьяра в боевой стойке. Правая рука статуи вытянута, словно в ожидании чего-то. ]]; end; end; act = function(s) if (not s.looked) then s.looked = true; ctt_dyp_statue_ped2:enable(); return [[ Вы замечаете выемку в пьедестале под статуей. ]]; else return [[ Вы не замечаете ничего интересного. ]]; end; end; use = function(s, o) if (o == ctt_dyp_shark) then remove(ctt_dyp_shark); s.set = true; return [[ Вы помещаете фигурку акулы в руку статуи. ]]; end; end; }; ctt_dyp_statue3 = obj { var { looked = false; set = false; }; nam = "ctt_dyp_statue3"; dsc = function(s) if (s.set) then return [[ {Третья статуя} изображает навьяра, гордо смотрящего вперед. В правой руке статуи лежит фигурка навьяра. ]]; else return [[ {Третья статуя} изображает навьяра, гордо смотрящего вперед. Правая рука статуи вытянута, словно в ожидании чего-то. ]]; end; end; act = function(s) if (not s.looked) then s.looked = true; ctt_dyp_statue_ped3:enable(); return [[ Вы замечаете выемку в пьедестале под статуей. ]]; else return [[ Вы не замечаете ничего интересного. ]]; end; end; use = function(s, o) if (o == ctt_dyp_navjiarr) then remove(ctt_dyp_navjiarr); s.set = true; return [[ Вы помещаете фигурку навьяра в руку статуи. ]]; end; end; }; ctt_dyp_statue_ped1 = obj { nam = "ctt_dyp_statue_ped1"; dsc = [[ В пьедестале первой статуи вы замечаете {выемку}. ]]; act = [[ На пьедестале выгравировано копье. ]]; use = function(s, o) if (o == ctt_dyp_spear) then remove(ctt_dyp_spear); take(ctt_dyp_shark); return [[ Копье полностью входит в выемку. В пьедестале открывается другая выемка, в которой лежит маленькая фигурка акулы. ]]; end; end; }; ctt_dyp_statue_ped2 = obj { nam = "ctt_dyp_statue_ped2"; dsc = [[ В пьедестале второй статуи вы замечаете {выемку}. ]]; act = [[ На пьедестале выгравирован ключ. ]]; use = function(s, o) if (o == ctt_dyp_key) then remove(ctt_dyp_key); take(ctt_dyp_navjiarr); return [[ Ключ входит в выемку. В пьедестале открывается другая выемка, в которой лежит маленькая фигурка навьяра. ]]; end; end; }; ctt_dyp_statue_ped3 = obj { nam = "ctt_dyp_statue_ped3"; dsc = [[ В пьедестале третьей статуи вы замечаете {выемку}. ]]; act = [[ На пьедестале выгравирован ключ. ]]; use = function(s, o) if (o == ctt_dyp_lightdisk) then remove(ctt_dyp_lightdisk); take(ctt_dyp_navjiarr); return [[ Светодиск входит в выемку. В пьедестале открывается другая выемка, в которой лежит маленькая фигурка ската. ]]; end; end; }; ctt_dyp_shark = obj { nam = "ctt_dyp_shark"; dsp = "Акула"; inv = [[ Каменная фигурка акулы. ]]; }; ctt_dyp_navjiarr = obj { nam = "ctt_dyp_navjiarr"; dsp = "Навьяр"; inv = [[ Каменная фигурка навьяра. ]]; }; ctt_dyp_ray = obj { nam = "ctt_dyp_ray"; dsp = "Скат"; inv = [[ Каменная фигурка ската. ]]; }; ctt_dyp_temple_corridor_1 = room { nam = "Храм Дипатреанотра, коридор"; dsc = [[ Узкий извилистый темный коридор, ведущий куда-то вглубь скалы. ]]; way = { kh_vroom("Идти дальше", "ctt_dyp_temple_corridor_2"); kh_vroom("Идти назад", "ctt_dyp_temple_l3"); }; }; ctt_dyp_temple_corridor_2 = room { nam = "Храм Дипатреанотра, коридор"; dsc = [[ Узкий извилистый темный коридор, ведущий куда-то вглубь скалы. ]]; way = { kh_vroom("Идти дальше", "ctt_dyp_temple_corridor_3"); kh_vroom("Идти назад", "ctt_dyp_temple_corridor_1"); }; }; ctt_dyp_temple_corridor_3 = room { nam = "Храм Дипатреанотра, коридор"; dsc = [[ Конец коридора. Массивная каменная дверь закрывает проход. Перед дверью установлен небольшой пьедестал. ]]; way = { kh_vroom("Выйти из храма", "ctt_dyp_temple_entrance"):disable(); kh_vroom("Идти назад", "ctt_dyp_temple_corridor_2"); }; obj = { "item_navjiarr_chart_dyp"; }; };