diff --git a/journey_nleyyslanotrr.lua b/journey_nleyyslanotrr.lua --- a/journey_nleyyslanotrr.lua +++ b/journey_nleyyslanotrr.lua @@ -492,10 +492,13 @@ nley_telhyarr_dlg = dlg { } } +function nley_init_catacombs() + if not nley_catacombs_password.password then + nley_catacombs_password.password = tostring(rnd(6) - 1) .. tostring(rnd(6) - 1) .. tostring(rnd(6) - 1) .. tostring(rnd(6) - 1); + end; +end + nley_catacombs_1 = room { - var { - state = 0; - }; nam = 'Нлейисланотр, катакомбы'; dsc = [[Вы находитесь у одного из входов в катакомбы Нлейисланотра. Узкие, выложенные камнем коридоры протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. На юге расположена дверь, ведущая к выходу из катакомб, коридор тянется на север. ]]; way = { @@ -711,9 +714,36 @@ nley_cat_room_7 = room { } } + + +nley_catacombs_password = input_number_nav { + nam = 'Нлейисланотр, катакомбы'; + maxlen = 4; + password = nil; + label = 'На стене перед вами расположено несколько кнопок. Шесть из них соответствуют навьярским цифрам, еще одна гласит "завершить". Очевидно, с их помощью нужно ввести код. ^Введенный код:'; + check = function(s, input) + if input == s.password then + path('На восток, в секретную дверь', nley_cat_room_8):enable(); + nley_cat_room_8.state = 1; + pn [[Вы слышите скрежет, доносящийся откуда-то с востока. ]]; + else + pn [[Ничего не происходит. ]]; + end; + back(); + end; +} + +nley_cat_panel = obj { + nam = "nley_cat_panel"; + dsc = "На одной из стен вы замечаете несколько выступающих {кнопок}. "; + act = function(s) + walkin(nley_catacombs_password); + end; +}; + nley_catacombs_7 = room { nam = 'Нлейисланотр, катакомбы'; - dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. На севере вы видите небольшой проем, ведущий в отдельную комнатку. на востоке коридор обрушился, преграждая вам путь. ]]; + dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. На севере вы видите небольшой проем, ведущий в отдельную комнатку. На востоке коридор обрушился, преграждая вам путь. ]]; way = { kh_vroom('На север, в комнату', 'nley_cat_room_8'); kh_vroom('На запад, по коридору', 'nley_catacombs_5'); @@ -725,21 +755,31 @@ nley_catacombs_7 = room { } nley_cat_room_8 = room { + var { + state = 0; + }; nam = 'Нлейисланотр, катакомбы'; - dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. ]]; + dsc = function(s) + if s.state == 0 then + return [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. ]]; + else + return [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. В восточной стене комнаты открыт потайной проход, ведущий в другую часть катакомб. ]]; + end; + end; way = { kh_vroom('На юг, в коридор', 'nley_catacombs_7'); + kh_vroom('На восток, в секретную дверь', 'nley_cat_room_13'):disable(); } } -nley_catacombs_7 = room { +nley_catacombs_8 = room { var { state = 0; }; nam = 'Нлейисланотр, катакомбы'; dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. ]]; obj = { - 'nley_cat_7_grate' + 'nley_cat_8_grate' }; way = { kh_vroom('На север, по коридору', function(s) @@ -754,16 +794,273 @@ nley_catacombs_7 = room { }; } -nley_cat_7_grate = obj { - nam = 'nley_cat_7_grate'; +nley_cat_8_grate = obj { + nam = 'nley_cat_8_grate'; dsc = [[Прочная коралловая {решетка} преграждает путь. ]]; act = [[Решетка очень прочная. Вам ее не сломать. В стене рядом с решеткой есть замочная скважина. ]]; used = function(s, o) if o == nley_item_grate_key then - remove(nley_cat_7_grate, here()); + remove(nley_cat_8_grate, here()); remove(nley_item_grate_key, pl); - nley_catacombs_7.state = 1; + nley_catacombs_8.state = 1; + return [[Ключ подходит к замку. Вы поворачиваете его и решетка поднимается. ]]; + end; + end +} + +nley_catacombs_9 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. На западе и востоке вы видите небольшие проемы, ведущие в отдельные комнатки. ]]; + way = { + kh_vroom('На запад, в комнату', 'nley_cat_room_9'); + kh_vroom('На восток, в комнату', 'nley_cat_room_10'); + kh_vroom('На юг, по коридору', 'nley_catacombs_8'); + kh_vroom('На север, по коридору', 'nley_catacombs_10'); + } +} + +nley_cat_room_9 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. Это помещение завалено всевозможными контейнерами: ящиками, бочками, клетками и, очевидно, используется как склад. ]]; + way = { + kh_vroom('На восток, в коридор', 'nley_catacombs_9'); + }; +} + +nley_cat_room_10 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. Это помещение завалено всевозможными контейнерами: ящиками, бочками, клетками и, очевидно, используется как склад. ]]; + obj = { + 'nley_item_food' + }; + way = { + kh_vroom('На запад, в коридор', 'nley_catacombs_9'); + }; +} + +nley_item_food = { + nam = 'nley_item_food'; + disp = 'Водоросли'; + inv = 'Небольшой пучок водорослей, употребляемых навьярами в пищу. Водоросли довольно свежие на вид. '; + dsc = [[Одна из клеток полна съедобных {водорослей}. ]]; + tak = [[Вы забираете немного водорослей с собой. ]]; +} + +nley_catacombs_10 = room { + var { + state = 0; + }; + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. Здесь тоннель соединяется с другим, ведущим на восток. ]]; + obj = { + 'nley_cat_10_grate'; + }; + way = { + kh_vroom('На восток, по коридору', 'nley_catacombs_13'); + kh_vroom('На юг, по коридору', 'nley_catacombs_9'); + kh_vroom('На север, по коридору', function(s) + if nley_catacombs_7.state == 0 then + pr [[Решетка преграждает вам путь. ]]; + return false; + else + return 'nley_catacombs_11'; + end; + end); + } +} + +nley_cat_10_grate = obj { + nam = 'nley_cat_10_grate'; + dsc = [[Прочная коралловая {решетка} преграждает путь. ]]; + act = [[Решетка очень прочная. Вам ее не сломать. В стене рядом с решеткой есть замочная скважина. ]]; + used = function(s, o) + if o == nley_item_prison_key then + remove(nley_cat_10_grate, here()); + remove(nley_item_prison_key, pl); + nley_catacombs_10.state = 1; return [[Ключ подходит к замку. Вы поворачиваете его и решетка поднимается. ]]; end; end +} + +nley_catacombs_11 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор. Стены покрыты тонкими прожилками светящихся водорослей. На западе вы видите зарешеченный проход в небольшую комнатку. Внутри нее сидит навьяр. На востоке точно такой же проход, но решетка открыта. ]]; + way = { + kh_vroom('К решетке на западе', 'nley_cat_cell_1'); + kh_vroom('На восток, в комнату', 'nley_cat_cell_2'); + kh_vroom('На юг, по коридору', 'nley_catacombs_10'); + kh_vroom('На север, по коридору', 'nley_catacombs_12'); + } +} + +nley_cat_cell_1 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Вы стоите у решетки, за которой расположена небольшая комнатушка, служащая тюрьмой. ]]; + obj = { + 'nley_prisoner'; + }; + way = { + kh_vroom('Отойти от решетки', 'nley_catacombs_11'); + } +} + +nley_cat_cell_2 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. ]]; + obj = { + 'nley_dead_prisoner'; + }; + way = { + kh_vroom('На запад, в коридор', 'nley_catacombs_11'); + } +} + +nley_dead_prisoner = obj { + nam = 'nley_dead_prisoner'; + dsc = 'На полу комнаты лежит мертвый {навьяр}. '; + act = [[Соленая вода хорошо сохранила труп. Вы не знаете лежит он здесь несколько часов или же дней. ]]; +} + +nley_prisoner = obj { + var { + state = 0; + }; + nam = 'nley_prisoner'; + dsc = function(s) + if s.state == 0 then + return [[Худой {навьяр} при виде вас подходит к решетке, по его головным плавникам бегут цветные полосы: "Вы можете мне помочь?"]]; + else + return [[Худой {навьяр} сидит в углу комнаты. ]]; + end; + end; + act = function(s) + if s.state == 0 then + return [[По головным плавникам навьяра бегут цветные полосы: "Кто бы вы ни были. Принесите мне еды и я скажу вам как открыть потайной проход здесь, в катакомбах". ]]; + else + return [[По головным плавникам навьяра бегут цветные полосы: "Эти цифры откроют проход: ]] .. nley_catacombs_password.password .. [[". ]] + end; + end; + used = function(s, o) + if o == nley_item_food then + s.state = 1; + remove(nley_item_food, pl); + return [[Навьяр выхватывает клочок водорослей из ваших рук и сразу же глотает его. По головным плавникам навьяра бегут цветные полосы: "Благодарю вас. Эти цифры откроют проход: ]] .. nley_catacombs_password.password .. [[". ]] + end; + end +} + +nley_catacombs_12 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор заканчивается на севере глухой стеной. Стены покрыты тонкими прожилками светящихся водорослей. На западе вы видите зарешеченный проход в небольшую комнатку. Внутри нее спит навьяр. На востоке точно такой же проход, но решетка открыта. ]]; + way = { + kh_vroom('К решетке на западе', 'nley_cat_cell_3'); + kh_vroom('На восток, в комнату', 'nley_cat_cell_4'); + kh_vroom('На юг, по коридору', 'nley_catacombs_11'); + } +} + +nley_cat_cell_3 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Вы стоите у решетки, за которой расположена небольшая комнатушка, служащая тюрьмой. ]]; + obj = { + 'nley_sleeping_prisoner'; + }; + way = { + kh_vroom('Отойти от решетки', 'nley_catacombs_12'); + } +} + +nley_cat_cell_2 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. ]]; + way = { + kh_vroom('На запад, в коридор', 'nley_catacombs_12'); + } +} + +nley_sleeping_prisoner = obj { + nam = 'nley_sleeping_prisoner'; + dsc = [[В дальнем конце комнаты спит {навьяр}. ]]; + act = [[Как бы вы ни пытались, вам не удается его разбудить. ]]; +} + +nley_catacombs_13 = room { + state = 0; + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. Здесь тоннель соединяется с другим, ведущим на запад. Вдалеке на севере стоят несколько навьяров. ]]; + way = { + kh_vroom('На запад, по коридору', 'nley_catacombs_10'); + kh_vroom('На юг, по коридору', 'nley_catacombs_14'); + kh_vroom('На север, по коридору', function(s) + if nley_catacombs_13.state == 0 then + nley_catacombs_13.state = 1; + pr [[Вас там могут заметить.]]; + return false; + else + return 'game_over_nley_cat_caught'; + end; + end); + } +} + +nley_catacombs_14 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Узкий, выложенный камнем коридор. Такие протянулись почти под всем городом. Стены покрыты тонкими прожилками светящихся водорослей. На западе и востоке вы видите небольшие проемы, ведущие в отдельные комнатки. На юге коридор обрушился, преграждая вам путь. ]]; + way = { + kh_vroom('На запад, в комнату', 'nley_cat_room_11'); + kh_vroom('На восток, в комнату', 'nley_cat_room_12'); + kh_vroom('На север, по коридору', 'nley_catacombs_13'); + kh_vroom('На юг, по коридору', function(s) + pr [[Этот проход завален. ]]; + return false; + end); + }; +} + +nley_cat_room_11 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. ]]; + way = { + kh_vroom('На восток, в коридор', 'nley_catacombs_14'); + } +} + +nley_cat_room_12 = room { + nam = 'Нлейисланотр, катакомбы'; + dsc = [[Небольшая комнатка, стены которой покрыты тонкими прожилками светящихся водорослей. В центре комнаты стоит небольшой столик. ]]; + enter = function(s) + if nley_sleeping_guard.state ~= 0 then + walk(game_over_nley_cat_ambush); + end; + end; + obj = { + 'nley_sleeping_guard' + }; + way = { + kh_vroom('На запад, в коридор', 'nley_catacombs_14'); + } +} + +nley_sleeping_guard = obj { + var { + state = 0; + }; + nam = 'nley_sleeping_guard'; + dsc = [[За столиком дремлет {навьяр}, слегка покачиваясь на плаву. ]]; + act = function(s) + if s.state == 0 then + s.state = 1; + take(nley_item_prison_key); + return [[На поясе навьяра висит небольшой ключик. Вы аккуратно забираете его себе. ]]; + else + return [[Надо уходить, пока стражник не проснулся. ]]; + end; + end; +} + +nley_item_prison_key = obj { + nam = 'nley_item_prison_key'; + disp = 'Ключ'; + inv = [[Ключик, взятый вами у стражника в катакомбах Нлейисланотра. ]]; } \ No newline at end of file