# HG changeset patch # User Silverwing # Date 2015-05-23 09:23:01 # Node ID c97551e53eab1b75fa29239801f94409908793f4 # Parent 371428971e233817f6c3d78c8a48321b6e204187 following implemented diff --git a/leviathan.lua b/leviathan.lua --- a/leviathan.lua +++ b/leviathan.lua @@ -19,7 +19,7 @@ submarine_leviathan = obj { -- Вы видите огромную металлическую конструкцию, напоминающую рыбу. Большие стеклянные иллюминаторы по бортам еще больше усиливают впечатление. На бортах крупными буквами выведено "А12 Левиафан". В верхней части машины вы видите {люк}.^ --]]; dsc = [[ - Вы видите "{Левиафан}" - вашу субмарину + Вы видите "{Левиафан}" - вашу субмарину. ^ ]]; act = [[ Несмотря на проведенные в бездействии годы, субмарина сейчас в отличном состоянии. Из иллюминаторов льется яркий свет. На борту виднреется слегка пошарпанная, но читаемая надпись "А04 - Левиафан" ]]; -- function() @@ -42,6 +42,7 @@ submarine_leviathan = obj { leviathan_airlock = room { nam = "leviathan_airlock"; disp = "Левиафан, шлюз"; + leviathan = true; dsc = [[ Вы находитесь в шлюзовом отсеке Левиафана. Яркий свет электрических ламп освещает помещение. ]]; @@ -56,6 +57,7 @@ leviathan_airlock = room { leviathan_captains_cabin = room { nam = "leviathan_captains_cabin"; disp = "Левиафан, каюта капитана"; + leviathan = true; dsc = [[ Вы находитесь в каюте, очевидно, предназначенной для капитана. Эта каюта немного больше остальных, в ней размещен стол и стул. В столе несколько ящичков, хитроумно закрытых, чтобы при качке они не открывались. @@ -71,6 +73,7 @@ leviathan_captains_cabin = room { leviathan_cabins = room { nam = "leviathan_cabins"; disp = "Левиафан, каюты"; + leviathan = true; dsc =[[ Вы находитесь в длинном коридоре с множеством дверей, ведущих в каюты, расположенные по левому борту. ]]; @@ -84,6 +87,7 @@ leviathan_cabins = room { leviathan_cargo_hold = room { nam = "leviathan_cargo_hold"; disp = "Левиафан, грузовой отсек"; + leviathan = true; dsc = [[ Вы находитесь в грузовом отсеке Левиафана ]]; @@ -95,6 +99,7 @@ leviathan_cargo_hold = room { leviathan_wardroom = room { nam = "leviathan_wardroom"; disp = "Левиафан, кают-компания"; + leviathan = true; dsc = [[ Вы находитесь в кают-компании Левиафана. Просторная комната, в центре которой укреплен массивный металлический стол. Из машинного отсека доносится гул двигателей. Яркий свет электрических ламп освещает помещение. @@ -107,15 +112,6 @@ leviathan_wardroom = room { vroom("Машинный отсек", "leviathan_engines"); }; obj = { - --vway("Машинный отсек", "Из {машинного отсека} доносится легкий гул.^", "leviathan_engines"); - --vway("Рубка", "{В рубку}^", "leviathan_dlg"); - --vway("Шлюз", "{В шлюз}^", "leviathan_airlock"); - --vway("Каюты", "{В каюты экипажа}^", "leviathan_cabins"); - --vway("Грузовой отсек", "{В грузовой отсек}^", "leviathan_cargo_hold"); - "char_learr"; - --"char_phaetlarr"; - "char_radcliffe"; - "char_wright"; "phone_wardroom"; }; }; @@ -123,6 +119,7 @@ leviathan_wardroom = room { leviathan_engines = room { nam = "leviathan_engines"; disp = "Левиафан, машинное отделение"; + leviathan = true; dsc = [[ Вы находитесь в машинном отделении Левиафана. Равномерный гул электрических двигателей сообщает о полной готовности субмарины. ]]; @@ -135,7 +132,7 @@ phone_cabin = obj { nam = "phone_cabin"; disp = "Телефон"; dsc = [[ - На столе установлен {телефонный аппарат} для связи в пределах субмарины + На столе установлен {телефонный аппарат} для связи в пределах субмарины. ^ ]]; act = function(s) walkin(phone_dlg); @@ -146,7 +143,7 @@ phone_wardroom = obj { nam = "phone_wardroom"; disp = "Телефон"; dsc = [[ - На столе, рядом с креслом командира установлен {телефонный аппарат} для связи в пределах субмарины + На столе, рядом с креслом командира установлен {телефонный аппарат} для связи в пределах субмарины. ^ ]]; act = function(s) walkin(phone_dlg); diff --git a/main.lua b/main.lua --- a/main.lua +++ b/main.lua @@ -146,4 +146,8 @@ function init() move(submarine_leviathan, first_city_outer_south); --walk(final_scene); walk(leviathan_wardroom); + put("char_learr", "leviathan_wardroom"); + --put("char_phaetlarr", "leviathan_engines"); + put("char_radcliffe", "leviathan_engines"); + put("char_wright", "leviathan_wardroom"); end \ No newline at end of file diff --git a/party.lua b/party.lua --- a/party.lua +++ b/party.lua @@ -6,6 +6,28 @@ char_learr = obj { {Леарр} ждет ваших указаний ^ ]]; end; + home = "leviathan_wardroom"; + accompany = function(s, value) + if (value) then + lifeon(s); + else + move(s, s.home, where(s)); + lifeoff(s); + end; + end; + life = function(s) + print("learr"); + if (where(pl).leviathan) then + print("learr:leviathan"); + if (stead.nameof(where(s)) ~= s.home) then + print("learr:goinghome"); + move(s, s.home, where(s)); + end; + else + print("learr:following"); + move(s, where(pl), where(s)); + end; + end; act = function(s) walkin(learr_dlg); end; @@ -19,6 +41,24 @@ char_phaetlarr = obj { {Фаэтларр} ждет ваших указаний ^ ]]; end; + home = "leviathan_engines"; + accompany = function(s, value) + if (value) then + lifeon(s); + else + move(s, s.home, where(s)); + lifeoff(s); + end; + end; + life = function(s) + if (where(pl).leviathan) then + if (stead.nameof(where(s)) ~= s.home) then + move(s, s.home, where(s)); + end; + else + move(s, where(pl), where(s)); + end; + end; act = function(s) walkin(phaetlarr_dlg); end; @@ -32,6 +72,24 @@ char_radcliffe = obj { {Уолтер Рэдклифф} ждет ваших указаний ^ ]]; end; + home = "leviathan_engines"; + accompany = function(s, value) + if (value) then + lifeon(s); + else + move(s, s.home, where(s)); + lifeoff(s); + end; + end; + life = function(s) + if (where(pl).leviathan) then + if (stead.nameof(where(s)) ~= s.home) then + move(s, s.home, where(s)); + end; + else + move(s, where(pl), where(s)); + end; + end; act = function(s) walkin(radcliffe_dlg); end; @@ -45,6 +103,28 @@ char_wright = obj { {Джек Райт} ждет ваших указаний ^ ]]; end; + home = "leviathan_wardroom"; + accompany = function(s, value) + if (value) then + lifeon(s); + else + move(s, s.home, where(s)); + lifeoff(s); + end; + end; + life = function(s) + print("wright"); + if (where(pl).leviathan) then + print("wright:leviathan"); + if (stead.nameof(where(s)) ~= s.home) then + print("wright:goinghome"); + move(s, s.home, where(s)); + end; + else + print("wright:following"); + move(s, where(pl), where(s)); + end; + end; act = function(s) walkin(wright_dlg); end; @@ -62,10 +142,10 @@ learr_dlg = dlg { phr = { { tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз", "Хорошо", function() - char_learr.accompany = true; - char_phaetlarr.accompany = false; - char_radcliffe.accompany = false; - char_wright.accompany = false; + char_learr.accompany(char_learr, true); + char_phaetlarr.accompany(char_phaetlarr, false); + char_radcliffe.accompany(char_radcliffe, false); + char_wright.accompany(char_wright, false); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", @@ -88,10 +168,10 @@ phaetlarr_dlg = dlg { phr = { { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", function() - char_learr.accompany = false; - char_phaetlarr.accompany = true; - char_radcliffe.accompany = false; - char_wright.accompany = false; + char_learr.accompany(char_learr, false); + char_phaetlarr.accompany(char_phaetlarr, true); + char_radcliffe.accompany(char_radcliffe, false); + char_wright.accompany(char_wright, false); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", @@ -112,10 +192,10 @@ radcliffe_dlg = dlg { phr = { { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", function() - char_learr.accompany = false; - char_phaetlarr.accompany = false; - char_radcliffe.accompany = true; - char_wright.accompany = false; + char_learr.accompany(char_learr, false); + char_phaetlarr.accompany(char_phaetlarr, false); + char_radcliffe.accompany(char_radcliffe, true); + char_wright.accompany(char_wright, false); end; }; { tag = "exit", always = "true", "Это все", "Хорошо", @@ -136,10 +216,10 @@ wright_dlg = dlg { phr = { { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз", "Хорошо", function() - char_learr.accompany = false; - char_phaetlarr.accompany = false; - char_radcliffe.accompany = false; - char_wright.accompany = true; + char_learr.accompany(char_learr, false); + char_phaetlarr.accompany(char_phaetlarr, false); + char_radcliffe.accompany(char_radcliffe, false); + char_wright.accompany(char_wright, true); end; }; { tag = "exit", always = "true", "Это все", "Хорошо",