# HG changeset patch # User Silverwing # Date 2015-05-23 08:48:22 # Node ID 7e7579e1714079b9cd62e5209b2cdd8649098448 # Parent 8c44ecc37d8d35467fd73f848d0e6d7c32a72399 phone added, library added, factory added, pipe replaced with pickaxe, descriptions altered, transitions order modified, dialogs for party members added diff --git a/final_battle.lua b/final_battle.lua --- a/final_battle.lua +++ b/final_battle.lua @@ -495,7 +495,7 @@ fb_generator = obj { nam = "fb_generator", dsc = function(s) if (final_battle.generators[s.index] == 0) then - return "Рядом с вами расположен огромный металлический {шкаф}, искореженный несколькими ударами тяжелого предмета. Судя по всему этот генератор выведен из строя. ^"; + return "Рядом с вами расположен огромный металлический {шкаф}, искореженный несколькими ударами кирки. Судя по всему этот генератор выведен из строя. ^"; else return "Рядом с вами расположен огромный металлический {шкаф}, расположенный рядом с вами издает негромкий гул. На его передней стенке виден светящийся символ. Конструкция соединена толстыми проводами с троном Наэтвьирра, в центре зала. ^"; end; diff --git a/first_city_outer_rim.lua b/first_city_outer_rim.lua --- a/first_city_outer_rim.lua +++ b/first_city_outer_rim.lua @@ -46,6 +46,7 @@ first_city_entrance = room { }; way = { vroom("Левиафан", "leviathan_airlock"); + vroom("В здание", "first_city_library"); }; }; @@ -83,13 +84,14 @@ first_city_outer_east = room { north = "first_city_outer_north"; navigatable = true; dsc = [[ - Вы находитесь в восточной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. + Вы находитесь в восточной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. На востоке вы видите огромное здание с большим количеством труб, идущих до самого купола. Скорее всего, это какая-то древняя фабрика. ]]; view = [[ Вы находитесь в восточной части внешнего кольца Лсэрианотр. Это огромный коридор, опоясывающий город по периметру. ]]; way = { vroom("Левиафан", "leviathan_airlock"); + vroom("В здание", "first_city_factory"); }; }; @@ -125,5 +127,67 @@ first_city_outer_north = room { ]]; way = { vroom("Левиафан", "leviathan_airlock"); + vroom("Надежда", "hope_airlock"); }; +}; + +first_city_factory = room { + nam = "first_city_factory"; + disp = "Лсэрианотр, внешнее кольцо, завод"; + dsc = [[ + Помещение, в котором вы находитесь, очевидно, некогда было заводом. Конвейеры, странные механизмы, разбросанные инструменты, долгие тысячелетия лежавшие без движения. + ]]; + obj = { + "item_pickaxe", + "first_city_crack" + }; +}; + +first_city_crack = obj { + nam = "first_city_crack"; + dsc = "В дальней стене вы видите {трещину}. Сквозь нее пробивается слабый свет, очевидно там какое-то помещение."; + act = [[ + Нужно чем-то расширить эту щель, если вы хотите туда попасть + ]]; + canhit = true; + onhit = function(s) + if (s.wide) then + return "Трещина уже достаточно большая для вас, нет смысла еще что-то с ней делать." + else + s.wide = true; + return "Несколькими осторожными ударами кирки вы расширяете трещину достаточно, чтобы пролезть внутрь." + end; + end; +}; + +first_city_library = room { + nam = "first_city_library"; + disp = "Лсэрианотр, внешнее кольцо, библиотека"; + dsc = [[ + В здании вы видите огромные стеллажи, заполненные табличками из неизвестного материала. Таблички исписаны письменами Навьяров и потускнели от времени. + ]]; + obj = { + 'first_city_index', + 'first_city_maintenance_info' + }; +}; + +first_city_index = obj { + nam = "first_city_index"; + dsc = "На стене возле входа висит большая {табличка}. "; + act = function(s) + end; +}; + +first_city_maintenance_info = obj { + nam = "first_city_index"; + dsc = "Один из {стеллажей} рядом со входом содержит информацию об обслуживании Лсэрианотра. Вероятно, там вы найдете то, что поможет вам отключить охранную систему города. "; + act = function(s) + if (s.taken) then + return "Врядли вы найдете здесь что-то еще полезное. "; + else + take("item_service_info") + return "Вы просматриваете тысячи записей и уже почти теряете всякую надежду когда натыкаетесь на табличку, описывающую сервисные тоннели города. "; + end; + end; }; \ No newline at end of file diff --git a/items.lua b/items.lua --- a/items.lua +++ b/items.lua @@ -1,7 +1,13 @@ -item_pipe = obj { - nam = "pipe"; - disp = "Кусок трубы"; - inv = "Прочный, толстый кусок металлической трубы. Вполне может пригодиться"; +item_pickaxe = obj { + nam = "pickaxe"; + disp = "Кирка"; + dsc = [[ + Ваше внимание привлекает предмет, похожий на {кирку}^^ + ]]; + tak = [[ + Вы решили забрать кирку с собой, на всякий случай + ]]; + inv = "Хорошая годная кирка. Сделанная из неизвестного металла она хорошо перенесла тысячелетия в соленой воде атлантического океана."; use = function(s, o) local canhit = false; if (type(o.canhit) == "function") then @@ -89,4 +95,18 @@ item_first_city_key = obj { ]]; end; end +}; + +item_service_info = obj { + nam = "service_info"; + disp = "Схема города"; + inv = [[ + Это "карта" сервисных тоннелей Лсэрианотра. Вы видите следующие последовательности символов, подписанные на языке навьяров + Nol + Tei + Vlye'Tei + Elt'Dyle + Tei'Elt + Tei'Tei + ]]; }; \ No newline at end of file diff --git a/leviathan.lua b/leviathan.lua --- a/leviathan.lua +++ b/leviathan.lua @@ -10,7 +10,7 @@ Плохо освещено - Описания минимальны, большинство действий недостпны Хорошо освещено - полные описания, все действия доступны -На складе имеется три скафандра в хорошем состоянии. Без них невозможно покинуть корабль в подводных локациях. Скафандр может быть испорчен и потребует ремонта. Если оба скафандра выведены из строя их потребуется отремонтировать. +Скафандры придется зарабатывать на Атлантиде ]] submarine_leviathan = obj { nam = "submarine_leviathan"; @@ -63,6 +63,9 @@ leviathan_captains_cabin = room { way = { vroom("Каюты", "leviathan_cabins"); }; + obj = { + "phone_cabin"; + }; }; leviathan_cabins = room { @@ -97,11 +100,11 @@ leviathan_wardroom = room { Из машинного отсека доносится гул двигателей. Яркий свет электрических ламп освещает помещение. ]]; way = { - vroom("Машинный отсек", "leviathan_engines"); vroom("Рубка", "leviathan_dlg"); vroom("Шлюз", "leviathan_airlock"); vroom("Каюты", "leviathan_cabins"); vroom("Грузовой отсек", "leviathan_cargo_hold"); + vroom("Машинный отсек", "leviathan_engines"); }; obj = { --vway("Машинный отсек", "Из {машинного отсека} доносится легкий гул.^", "leviathan_engines"); @@ -110,9 +113,10 @@ leviathan_wardroom = room { --vway("Каюты", "{В каюты экипажа}^", "leviathan_cabins"); --vway("Грузовой отсек", "{В грузовой отсек}^", "leviathan_cargo_hold"); "char_learr"; - "char_phaetlarr"; + --"char_phaetlarr"; "char_radcliffe"; "char_wright"; + "phone_wardroom"; }; }; @@ -127,6 +131,50 @@ leviathan_engines = room { }; }; +phone_cabin = obj { + nam = "phone_cabin"; + disp = "Телефон"; + dsc = [[ + На столе установлен {телефонный аппарат} для связи в пределах субмарины + ]]; + act = function(s) + walkin(phone_dlg); + end; +}; + +phone_wardroom = obj { + nam = "phone_wardroom"; + disp = "Телефон"; + dsc = [[ + На столе, рядом с креслом командира установлен {телефонный аппарат} для связи в пределах субмарины + ]]; + act = function(s) + walkin(phone_dlg); + end; +}; + +phone_dlg = dlg { + nam = "phone_dlg"; + disp = "Телефон"; + hideinv = true; + dsc = [[ + Вы снимаете трубку и можете вызвать кого-нибудь + ]]; + entered = function(s) + poff("phaetlarr", "learr", "radcliffe", "wright"); + for i = 1, #pl.party do + pon(pl.party[i]); + end; + end; + phr = { + { tag = "phaetlarr", always = true, "Фаэтларр", code = [[walkin(phaetlarr_dlg)]]}, + { tag = "learr", always = true, "Леарр", code = [[walkin(learr_dlg)]]}, + { tag = "radcliffe", always = true, "Рэдклифф", code = [[walkin(radcliffe_dlg)]]}, + { tag = "wright", always = true, "Райт", code = [[walkin(wright_dlg)]]}, + { tag = "exit", always = true, "Полождить трубку", code = [[back()]]} + } +}; + leviathan_dlg = dlg { nam = "leviathan_dlg"; disp = "Штурвал Левиафана"; @@ -182,7 +230,7 @@ leviathan_dlg = dlg { end; end; enter = function(s) - leviathan_dlg.update_options(); + s.update_options(); end; phr = { {1, always = "true", "Атлантида", function() diff --git a/main.lua b/main.lua --- a/main.lua +++ b/main.lua @@ -80,9 +80,10 @@ pl = player { disp = "Дэвид Дрейк"; where = 'port'; hitpoints = 10; - obj = {'item_umbrella', "item_documents", "item_note_1", "item_first_city_key", "item_colt", "item_pipe"}; + obj = {'item_umbrella', "item_documents", "item_note_1", "item_first_city_key", "item_colt"}; -- party flags. Should be false on start - party = {"learr", "radcliffe", "phaetlarr", "wright"}; + party = {"learr", "radcliffe", --[["phaetlarr", ]]"wright"}; + companion = nil; }; hotel = room { diff --git a/party.lua b/party.lua --- a/party.lua +++ b/party.lua @@ -1,11 +1,14 @@ char_learr = obj { nam = "learr"; disp = "Леарр"; - dsc = function() + dsc = function(s) return [[ {Леарр} ждет ваших указаний ^ ]]; end; + act = function(s) + walkin(learr_dlg); + end; }; char_phaetlarr = obj { @@ -16,6 +19,9 @@ char_phaetlarr = obj { {Фаэтларр} ждет ваших указаний ^ ]]; end; + act = function(s) + walkin(phaetlarr_dlg); + end; }; char_radcliffe = obj { @@ -26,6 +32,9 @@ char_radcliffe = obj { {Уолтер Рэдклифф} ждет ваших указаний ^ ]]; end; + act = function(s) + walkin(radcliffe_dlg); + end; }; char_wright = obj { @@ -36,4 +45,107 @@ char_wright = obj { {Джек Райт} ждет ваших указаний ^ ]]; end; + act = function(s) + walkin(wright_dlg); + end; +}; + +learr_dlg = dlg { + nam = "learr_dlg"; + disp = "Леарр"; + hideinv = true; + entered = function(s) + return [[ + Леарр вопросительно смотрит на вас + ]]; + end; + phr = { + { tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", + function() + char_learr.accompany = true; + char_phaetlarr.accompany = false; + char_radcliffe.accompany = false; + char_wright.accompany = false; + end; + }; + { tag = "exit", always = "true", "Это все", "Хорошо", + function() + back(); + end; + } + }; +}; + +phaetlarr_dlg = dlg { + nam = "phaetlarr_dlg"; + disp = "Фаэтларр"; + hideinv = true; + entered = function(s) + return [[ + Фаэтларр ждет ваших указаний + ]]; + end; + phr = { + { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", + function() + char_learr.accompany = false; + char_phaetlarr.accompany = true; + char_radcliffe.accompany = false; + char_wright.accompany = false; + end; + }; + { tag = "exit", always = "true", "Это все", "Хорошо", + function() + back(); + end; + } + }; +}; + +radcliffe_dlg = dlg { + nam = "radcliffe_dlg"; + disp = "Уолтер Рэдклифф"; + hideinv = true; + entered = [[ + Уолтер задумчиво смотрит на вас + ]]; + phr = { + { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", + function() + char_learr.accompany = false; + char_phaetlarr.accompany = false; + char_radcliffe.accompany = true; + char_wright.accompany = false; + end; + }; + { tag = "exit", always = "true", "Это все", "Хорошо", + function() + back(); + end; + } + }; +}; + +wright_dlg = dlg { + nam = "wright_dlg"; + disp = "Джек Райт"; + hideinv = true; + entered = [[ + Джек ждет ваших указаний + ]]; + phr = { + { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", + function() + char_learr.accompany = false; + char_phaetlarr.accompany = false; + char_radcliffe.accompany = false; + char_wright.accompany = true; + end; + }; + { tag = "exit", always = "true", "Это все", "Хорошо", + function() + back(); + end; + } + }; }; \ No newline at end of file