diff --git a/atlantis_iyhehevjiarr.lua b/atlantis_iyhehevjiarr.lua --- a/atlantis_iyhehevjiarr.lua +++ b/atlantis_iyhehevjiarr.lua @@ -58,6 +58,9 @@ iyh_far_from_entrance = dlg { var { visited = false; }; + no_exit = [[ + Нет смысла покидать Левиафан здесь. + ]]; nam = "Левиафан, рубка"; hideinv = true; entered = function(s) @@ -128,9 +131,9 @@ iyh_fight = room { hideinv = true; forcedsc = true; dsc = function(s) - pr "Вы находитесь от ската на расстоярии около " .. tostring(s.distance) .. " метров"; - pr "Храм находится примерно на расстоянии " .. tostring(s.temple_distance) .. " метров"; - pr "На приборной панели вы видите, что "; + pr("Вы находитесь от ската на расстоянии около "..tostring(s.distance).." метров"); + pr("Храм находится примерно на расстоянии " .. tostring(s.temple_distance) .. " метров"); + pr("На приборной панели вы видите, что "); iyh_fight_torpedo:enable(); iyh_fight_recharge:disable(); if (submarine_leviathan.torpedoes == 2) then @@ -241,7 +244,7 @@ iyh_fight_torpedo = obj { else iyh_fight.distance = iyh_fight.distance - meters; end; - pr "Вы стреляете торпедой в ската. Торпеда достигает цели. Ската отбрасывает назад на ".. tostring(meters) .. " метров. " + pr("Вы стреляете торпедой в ската. Торпеда достигает цели. Ската отбрасывает назад на ".. tostring(meters) .. " метров. "); else iyh_fight.shockfish_health = 0; atl_iyh_shockfish_dead = true; @@ -298,13 +301,13 @@ iyh_advance_full = obj { iyh_fight.distance = iyh_fight.distance - 100; iyh_fight.temple_distance = iyh_fight.temple_distance - 100; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance + 100; iyh_fight.temple_distance = iyh_fight.temple_distance + 100; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -320,13 +323,13 @@ iyh_advance_half = obj { iyh_fight.distance = iyh_fight.distance - 50; iyh_fight.temple_distance = iyh_fight.temple_distance - 50; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance + 50; iyh_fight.temple_distance = iyh_fight.temple_distance + 50; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -342,13 +345,13 @@ iyh_advance_quarter = obj { iyh_fight.distance = iyh_fight.distance - 25; iyh_fight.temple_distance = iyh_fight.temple_distance - 25; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance + 25; iyh_fight.temple_distance = iyh_fight.temple_distance + 25; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -364,13 +367,13 @@ iyh_retreat_full = obj { iyh_fight.distance = iyh_fight.distance + 100; iyh_fight.temple_distance = iyh_fight.temple_distance + 100; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance - 100; iyh_fight.temple_distance = iyh_fight.temple_distance - 100; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -386,13 +389,13 @@ iyh_retreat_half = obj { iyh_fight.distance = iyh_fight.distance + 50; iyh_fight.temple_distance = iyh_fight.temple_distance + 50; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance - 50; iyh_fight.temple_distance = iyh_fight.temple_distance - 50; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -408,13 +411,13 @@ iyh_retreat_quarter = obj { iyh_fight.distance = iyh_fight.distance + 25; iyh_fight.temple_distance = iyh_fight.temple_distance + 25; if (iyh_fight.distance < 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; else iyh_fight.distance = iyh_fight.distance - 25; iyh_fight.temple_distance = iyh_fight.temple_distance - 25; if (iyh_fight.distance >= 0) then - pr "Вы пропылваете мимо противника и разворачиваете субмарину". + pr "Вы проплываете мимо противника и разворачиваете субмарину." end; end; iyh_fight.maketurn(); @@ -423,6 +426,9 @@ iyh_retreat_quarter = obj { iyh_ravine_entry = room { nam = "Левиафан, рубка"; + no_exit = [[ + Нет смысла покидать Левиафан здесь. + ]]; dsc = [[ Левиафан находится у входа в ущелье. Вдалеке по левому борту, на юго-западе, вы видите вход в навьярский храм. ]]; @@ -430,14 +436,14 @@ iyh_ravine_entry = room { way = { kh_vway("Отойти от штурвала", function(s) return "leviathan_wheelhouse"; - end), + end); kh_vway("Войти в ущелье", function(s) iyh_labyrinth.position = 1; iyh_labyrinth.direction = 1; return "iyh_labyrinth"; - end), - kh_vway("Ко входу в храм", "iyh_near_temple"), - kh_vway("Отойти назад", "iyh_far_from_entrance"), + end); + kh_vway("Ко входу в храм", "iyh_near_temple"); + kh_vway("Отойти назад", "iyh_far_from_entrance"); }; }; @@ -452,43 +458,43 @@ iyh_ravine_entry = room { выход описывается одной строкой, невыходы описываются парой "узел+направление" ]] iyh_labyrinth_template = { - 1: {1:{"l":{32, 1}, "r":{2, 1}}, 2:{"f":"iyh_ravine_entry"}}; - 2: {1:{"f":{3, 1}}, 2:{"f":{1,2}}}; - 3: {1:{"l":{5, 1}, "f":{4,1}}, 2:{"f":{2,2}}}; - 4: {1:{}, 2:{"f":{3,2}}}; - 5: {1:{"l":{37, 1}, "f":{6,1} }, 2:{"f":{3,2}}}; - 6: {1:{"l":{7,1}, "r":{33, 1}}, 2:{"f":{5,2}}}; - 7: {1:{"l":{12,1}, "f":{11,1}, "r":{8,1}}, 2:{"f":{6,2}}}; - 8: {1:{"l":{10,1}, "r":{9,1}}, 2:{"f":{7,2}}}; - 9: {1:{}, 2:{"f":{8,2}}}; - 10:{1:{}, 2:{"f":{8,2}, "r":{11,2}}}; - 11:{1:{"f":{10,1}}, 2:{"f":{7,2}}}; - 12:{1:{"l":{14,1}, "f":{13,1}}, 2:{"f":{7,2}}}; - 13:{1:{}, 2:{"f":{12,2}}}; - 14:{1:{"f":{15,1}, "l":{20,1}}, 2:{"f":{12,2}}}; - 15:{1:{"l":{17,1}, "r":{16,1}}, 2:{"f":{14,2}}}; - 16:{1:{}, 2:{"f":{15,2}}}; - 17:{1:{"l":{19,1}, "r":{18,1}}, 2:{"f":{15,2}}}; - 18:{1:{}, 2:{"f":{17,2}}}; - 19:{1:{}, 2:{"f":{17,2}}}; - 20:{1:{"l":{22,1}, "f":{21,1}}, 2:{"f":{14,2}}}; - 21:{1:{}, 2:{"f":{20,2}}}; - 22:{1:{"l":{25,1}, "r":{23,1}}, 2:{"f":{20,2}}}; - 23:{1:{"l":"iyh_rear_entrance", "r":{24,1}},2:{"f":{22,2}}}; - 24:{1:{}, 2:{"f":{23,2}}}; - 25:{1:{"l":{27,1},"r":{26:1}}, 2:{"f":{22,2}}}; - 26:{1:{}, 2:{"f":{25,2}}}; - 27:{1:{"l":{30,2}, "f":{29,1}, "r":{28,1}}, 2:{"f":{25,2}}}; - 28:{1:{}, 2:{"f":{27,2}}}; - 29:{1:{}, 2:{"f":{27,2}}}; - 30:{1:{"l":{27,2}, "r":{36,1}}, 2:{"f":{31,2}}}; - 31:{1:{"l":{30,1}, "r":{35,1}}, 2:{"f":{32,2}}}; - 32:{1:{"l":{31,1}, "r":{34,1}}, 2:{"f":{1,2}}}; - 33:{1:{}, 2:{"l":{6,2}, "r":{37,2}}}; - 34:{1:{}, 2:{"f":{32,2}}}; - 35:{1:{}, 2:{"f":{31,2}}}; - 36:{1:{}, 2:{"f":{30,2}}}; - 37:{1:{"f":{33,1}}, 2:{"f":{5,2}}}; + [1]= {[1]={l={32, 1}, r={2, 1}}, [2]={f="iyh_ravine_entry"}}; + [2]= {[1]={f={3, 1}}, [2]={f={1,2}}}; + [3]= {[1]={l={5, 1}, f={4,1}}, [2]={f={2,2}}}; + [4]= {[1]={}, [2]={f={3,2}}}; + [5]= {[1]={l={37, 1}, f={6,1} }, [2]={f={3,2}}}; + [6]= {[1]={l={7,1}, r={33, 1}}, [2]={f={5,2}}}; + [7]= {[1]={l={12,1}, f={11,1}, r={8,1}}, [2]={f={6,2}}}; + [8]= {[1]={l={10,1}, r={9,1}}, [2]={f={7,2}}}; + [9]= {[1]={}, [2]={f={8,2}}}; + [10]={[1]={}, [2]={f={8,2}, r={11,2}}}; + [11]={[1]={f={10,1}}, [2]={f={7,2}}}; + [12]={[1]={l={14,1}, f={13,1}}, [2]={f={7,2}}}; + [13]={[1]={}, [2]={f={12,2}}}; + [14]={[1]={f={15,1}, l={20,1}}, [2]={f={12,2}}}; + [15]={[1]={l={17,1}, r={16,1}}, [2]={f={14,2}}}; + [16]={[1]={}, [2]={f={15,2}}}; + [17]={[1]={l={19,1}, r={18,1}}, [2]={f={15,2}}}; + [18]={[1]={}, [2]={f={17,2}}}; + [19]={[1]={}, [2]={f={17,2}}}; + [20]={[1]={l={22,1}, f={21,1}}, [2]={f={14,2}}}; + [21]={[1]={}, [2]={f={20,2}}}; + [22]={[1]={l={25,1}, r={23,1}}, [2]={f={20,2}}}; + [23]={[1]={l="iyh_rear_entrance", r={24,1}},[2]={f={22,2}}}; + [24]={[1]={}, [2]={f={23,2}}}; + [25]={[1]={l={27,1},r={26,1}}, [2]={f={22,2}}}; + [26]={[1]={}, [2]={f={25,2}}}; + [27]={[1]={l={30,2}, f={29,1}, r={28,1}}, [2]={f={25,2}}}; + [28]={[1]={}, [2]={f={27,2}}}; + [29]={[1]={}, [2]={f={27,2}}}; + [30]={[1]={l={27,2}, r={36,1}}, [2]={f={31,2}}}; + [31]={[1]={l={30,1}, r={35,1}}, [2]={f={32,2}}}; + [32]={[1]={l={31,1}, r={34,1}}, [2]={f={1,2}}}; + [33]={[1]={}, [2]={l={6,2}, r={37,2}}}; + [34]={[1]={}, [2]={f={32,2}}}; + [35]={[1]={}, [2]={f={31,2}}}; + [36]={[1]={}, [2]={f={30,2}}}; + [37]={[1]={f={33,1}}, [2]={f={5,2}}}; }; iyh_labyrinth = room { @@ -613,3 +619,76 @@ iyh_lab_turn = obj { end; }; +iyh_rear_entrance = room { + nam = "Левиафан"; + disp = [[ + Вы находитесь в конце ущелья. Луч прожектора освещает небольшой проход в скале. + ]]; + way = { + kh_vway("Отойти от штурвала", "iyh_rear_entrance_foot"); + kh_vway("В ущелье", function(s) + iyh_labyrinth.position = 23; + iyh_labyrinth.direction = 2; + return "iyh_labyrinth"; + end); + }; + entered = function(s) + move(submarine_leviathan, iyh_rear_entrance_foot); + end; +}; + +iyh_rear_entrance_foot = room { + nam = "Ущелье"; + disp = [[ + Узкое глубокое ущелье. Вы находитесь в одном из его концов. В скале вы видите небольшой проход явно искусственного происхождения. + ]]; + way = { + kh_vway("В Левиафан", "leviathan_airlock"); + kh_vway("Внутрь", "iyh_temple_rear_corridor_entry"); + }; + entered = function(s) + way("В Левиафан"):disable(); + if (where(submarine_leviathan) == here()) then + way("В Левиафан"):enable(); + end; + end; +}; + +iyh_temple_rear_corridor_entry = room { + nam = "Корридор"; + disp = [[ + Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. + ]]; + way = { + kh_vway("Выйти", "iyh_rear_entrance_foot"); + kh_vway("В левую комнату", "iyh_left_room_1"); + kh_vway("В правую комнату", "iyh_right_room_1"); + kh_vway("Пройти дальше", "iyh_temple_rear_corridor_middle"); + }; +}; + +iyh_temple_rear_corridor_middle = room { + nam = "Корридор"; + disp = [[ + Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. + ]]; + way = { + kh_vway("К выходу", "iyh_temple_rear_corridor_entry"); + kh_vway("В левую комнату", "iyh_left_room_2"); + kh_vway("В правую комнату", "iyh_right_room_2"); + kh_vway("Пройти дальше", "iyh_temple_rear_corridor_end"); + }; +}; + +iyh_temple_rear_corridor_end = room { + nam = "Корридор"; + disp = [[ + Темный узкий и невысокий коридор. По обе стороны коридора вы видите дверные проемы. + ]]; + way = { + kh_vway("К выходу", "iyh_temple_rear_corridor_entry"); + kh_vway("В левую комнату", "iyh_left_room_3"); + kh_vway("В правую комнату", "iyh_right_room_3"); + kh_vway("В главный зал", "iyh_temple_main_hall"):disable(); + }; +}; \ No newline at end of file