diff --git a/atlantis_dyp.lua b/atlantis_dyp.lua --- a/atlantis_dyp.lua +++ b/atlantis_dyp.lua @@ -326,12 +326,9 @@ dyp_library_floor2 = room { }; dyp_librarian = npc { - var { - state = 0; - }; nam = "dyp_librarian"; dsc = function(s) - if s.state == 0 then + if dyp_librarian_dlg.state == 0 then return [[Перед вами на полу сидит {навьяр}. Вокруг него разложены какие-то записи, которые он рассматривает, время от времени перекладывая с места на место. ]]; else return [[Перед вами на полу сидит {Эйлехиарр}. Вокруг него разложены какие-то записи, которые он рассматривает, время от времени перекладывая с места на место. ]]; @@ -503,12 +500,29 @@ dyp_chief_dlg = dlg { end; if (dyp_quest_state == 1 or dyp_quest_state == 2) and have(item_electric_lamp, pl) and (item_electric_lamp.state == 0 or item_electric_lamp.state == 2) then pon("quest1"); + else + poff("quest1"); end; - if dyp_quest_state == 2 and have(item_shark_tooth, pl) then - pon("quest2"); + if dyp_quest_state == 2 then + if have(item_shark_tooth, pl) then + pon("quest2"); + poff("quest1_repeat"); + else + pon("quest1_repeat"); + poff("quest2"); + end; + else + poff("quest2"); end; - if dyp_stones_known and dyp_quest_state == 0 then + if dyp_quest_state >= 3 and dyp_quest_state < 7 then + pon("quest2_repeat"); + else + poff("quest2_repeat"); + end; + if dyp_stones_known and (dyp_quest_state == 0 or dyp_quest_state == 1) then pon("quest"); + else + poff('quest'); end; poff("quest3"); if have(dyp_item_star_map_copy) or have(dyp_item_star_map) and not dyp_map then @@ -528,6 +542,7 @@ dyp_chief_dlg = dlg { {tag="lseryanotrr", false, "[Кодировщик] Я ищу карту пути в Лсэрианотр.", [[Вождь отвечает: "Не мое дело следить за этим. Ты спроси в храме или в библиотеке". ]]}; {tag="quest", false, "[Кодировщик] Мне нужен камень из твоего жезла. Что я могу предложить в обмен на него?", [[Глаза вождя загораются, он ухмыляется. По плавникам быстро, словно в нетерпении бегут цветные полосы: "Принеси мне три вещи, что я попрошу и получишь жезл вместе с камнем". ]], code [[psub("agree_quest");]]}; {tag="quest1", false, "[Отдать светильник] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", function(s) + poff("quest", "quest1_repeat"); if dyp_quest_state == 1 then if item_electric_lamp.state == 0 then dyp_quest_lamp_failed = true; @@ -543,6 +558,13 @@ dyp_chief_dlg = dlg { return [[Вождь кладет светильник на стол рядом с зубом и говорит: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ]]; end; end}; + {tag="quest1_repeat", false, "[Кодировщик] Что ты хочешь, чтобы я принес тебе?", function(s) + if have(item_electric_lamp, pl) then + return [[Вождь отвечает: "Принеси мне светяющуюся капсулу с Атлантиды. И смотри, чтобы она не погасла как предыдущая". ]]; + else + return [[Вождь отвечает: "Принеси мне зуб акулы, что живет у храма Ираафаанотра". ]]; + end; + end}; {tag="quest2", false, "[Отдать зуб акулы] [Кодировщик] Вот то, что ты просил. Что тебе еще нужно?", function(s) remove("item_shark_tooth", pl); if dyp_quest_lamp_failed then @@ -555,7 +577,9 @@ dyp_chief_dlg = dlg { return [[Вождь кладет зуб на стол рядом со светильником и говорит: "Я хочу карту небесных огней из Ираафаанотра. Принеси ее и забирай этот жезл вместе с камнем". ]]; end; end}; + {tag="quest2_repeat", false, "[Кодировщик] Что ты хочешь, чтобы я принес тебе?", [[Вождь отвечает: "Принеси мне карту небесных огней из Ираафаанотра. Они могут быть против. Уговори их". ]]}; {tag="quest3", false, function(s) + poff("quest1_repeat", "quest2_repeat"); if have(dyp_item_star_map_copy) then return "[Отдать копию карты небесных огней] Вот то, что ты просил. Я могу забрать камень?" else