diff --git a/atlantis_navjiarr.lua b/atlantis_navjiarr.lua --- a/atlantis_navjiarr.lua +++ b/atlantis_navjiarr.lua @@ -1113,6 +1113,9 @@ iraa_temple_main_2 = room { kh_vroom("В зал Ответа", "iraa_temple_ahall"); kh_vroom("К главному входу", "iraa_temple_main_1"); }; + obj = { + "iraa_temple_lever_4" + }; }; iraa_temple_main_1 = room { @@ -1165,12 +1168,39 @@ iraa_temple_ahall = room { }; iraa_temple_room_0 = room { + var { + state = false; + }; nam = "iraa_temple_room_0"; disp = "Храм Ираафаанотра, комната"; dsc = [[Небольшая, хорошо освещенная светящимися водорослями, комната. Ниши в стенах пустуют. ]]; way = { kh_vroom("В коридор", "iraa_temple_corridor_6"); + kh_vroom("В скрытый проход", "iraa_temple_hidden_stairs"); }; + obj = { + "iraa_temple_lever_0" + }; + open = function(s) + s.state = true; + path("В скрытый проход", s):enable(); + if here() == s then + pr("Вы видите, как одна из стен раздвигается, открывая скрытый проход куда-то в глубь скалы. "); + else + pr("Вы слышите где-то поблизости скрежет каменных плит. "); + end; + end; + close = function(s) + if s.state then + s.state = false; + path("В скрытый проход", s):disable(); + if here() == s then + pr("Вы видите, как одна из стен cдвигается, вновь закрывая потайной проход. "); + else + pr("Вы слышите где-то поблизости скрежет каменных плит. "); + end; + end; + end; }; iraa_temple_room_1 = room { @@ -1180,6 +1210,9 @@ iraa_temple_room_1 = room { way = { kh_vroom("В коридор", "iraa_temple_corridor_1"); }; + obj = { + "iraa_temple_lever_1" + }; }; iraa_temple_room_2 = room { @@ -1189,6 +1222,9 @@ iraa_temple_room_2 = room { way = { kh_vroom("В коридор", "iraa_temple_corridor_5"); }; + obj = { + "iraa_temple_lever_2" + }; }; iraa_temple_room_3 = room { @@ -1198,6 +1234,9 @@ iraa_temple_room_3 = room { way = { kh_vroom("В коридор", "iraa_temple_corridor_2"); }; + obj = { + "iraa_temple_lever_3" + }; }; iraa_temple_room_5 = room { @@ -1207,6 +1246,9 @@ iraa_temple_room_5 = room { way = { kh_vroom("В коридор", "iraa_temple_corridor_3"); }; + obj = { + "iraa_temple_lever_5" + }; }; iraa_temple_room_6 = room { @@ -1238,8 +1280,10 @@ iraa_temple_switch = obj { end; if not state[1] and not state[2] and state[3] and not state[4] and state[5] and not state[6] then -- A valid state + iraa_temple_room_0:open(); else -- An invalid state + iraa_temple_room_0:close(); end; end; }; @@ -1247,29 +1291,188 @@ iraa_temple_switch = obj { iraa_temple_lever_0 = obj { nam = "iraa_temple_lever_0"; dsc = [[Рядом со входом расположен едва заметный {рычаг} с отметкой фиолетового цвета]]; + act = function(s) + iraa_temple_switch(1); + end; }; iraa_temple_lever_1 = obj { nam = "iraa_temple_lever_0"; dsc = [[Рядом со входом расположен едва заметный {рычаг} с отметкой синего цвета]]; + act = function(s) + iraa_temple_switch(2); + end; }; iraa_temple_lever_2 = obj { nam = "iraa_temple_lever_0"; dsc = [[Рядом со входом расположен едва заметный {рычаг} с отметкой зеленого цвета]]; + act = function(s) + iraa_temple_switch(3); + end; }; iraa_temple_lever_3 = obj { nam = "iraa_temple_lever_0"; dsc = [[Рядом со входом расположен едва заметный {рычаг} с отметкой желтого цвета]]; + act = function(s) + iraa_temple_switch(4); + end; }; iraa_temple_lever_4 = obj { nam = "iraa_temple_lever_0"; dsc = [[Под пьедесталом расположен едва заметный {рычаг} с отметкой оранжевого цвета]]; + act = function(s) + iraa_temple_switch(5); + end; }; iraa_temple_lever_5 = obj { nam = "iraa_temple_lever_0"; dsc = [[Рядом со входом расположен едва заметный {рычаг} с отметкой красного цвета]]; -}; \ No newline at end of file + act = function(s) + iraa_temple_switch(6); + end; +}; + +iraa_temple_hidden_stairs = darkroom { + nam = "iraa_temple_hidden_stairs"; + dsc_dark = [[]]; + dsc_halflit = [[]]; + way = { + kh_vroom("Наверх", "iraa_temple_room_0", 1); + kh_vroom("Вниз", "iraa_temple_room_0", 1); + }; +}; + +iraa_temple_button_ctr = function(nam, index) + return obj { + nam = nam; + dsc = function(s) + local im = "images/dyp_bg.png"; + for i = 1, #iraa_temple_hidden_hall.buttons[index] do + im = im .. ";images/dyp_" .. tostring(iraa_temple_hidden_hall.buttons[index][i]) .. ".png"; + end; + if (iraa_temple_hidden_hall.pressed_buttons[index]) then + return "{Рычаг с символами " .. img(im) .."} включен.^"; + else + return "{Рычаг с символами " .. img(im) .."} выключен.^"; + end; + end; + act = function(s) + iraa_temple_hidden_hall:check(index); + return [[ + Вы переключаете рычаг и узор на полу комнаты меняется + ]]; + end; + }; +end; + +iraa_temple_hidden_hall = 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 = { + iraa_temple_button_ctr("iraa_temple_b1", 1); + iraa_temple_button_ctr("iraa_temple_b2", 2); + iraa_temple_button_ctr("iraa_temple_b3", 3); + iraa_temple_button_ctr("iraa_temple_b4", 4); + iraa_temple_button_ctr("iraa_temple_b5", 5); + iraa_temple_button_ctr("iraa_temple_b6", 6); + iraa_temple_button_ctr("iraa_temple_b7", 7); + iraa_temple_button_ctr("iraa_temple_b8", 8); + }; + way = { + kh_vroom("Наверх", "iraa_temple_hidden_stairs"):disable(); + kh_vroom("Вниз", "iraa_temple_hidden_storage"):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; +}; + +iraa_temple_hidden_storage = room { + nam = "iraa_temple_hidden_storage"; + disp = [[Храм Ираафаанотра, хранилище]]; + dsc = [[Стены этой небольшой комнаты излучают слабый свет. ]]; + obj = { + "iraa_temple_hidden_pedestal" + }; +}; + +iraa_temple_hidden_pedestal = obj { + var { + state = 0; + }; + nam = "iraa_temple_hidden_pedestal"; + dsc = function(s) + if s.state == 0: + return [[В центре установлен металлический пьедестал, на котором лежит металлическая {табличка}. ]]; + else + return [[В центре установлен металлический {пьедестал}. ]]; + end; + end; + act = function(s) + if s.state == 0: + item_lse_map.state = item_lse_map.state + 1; + return [[Вы забираете металлическую табличку себе. ]]; + else + return [[Вьедестал пуст. ]]; + end; + end; +};