• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в оценке работ на конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык
    Ссылка на тему с работами участников- тык

Готика 2: НВ Вопросы по прохождению

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
  • Первое сообщение
  • #1
Готика 2 - Вопросы по прохождению.png

Эта тема предназначена для вопросов по прохождению Готики 2 - Ночь Ворона

Правила Темы
1. Запрещено написание постов, связанных с выполнением квестов, без использования спойлера!
Посты, написанные без спойлера, если они рассказывают о прохождении игры, будут удаляться.
2. В этой теме запрещено обсуждать баги. Это можно сделать здесь.
3. Запрещено спрашивать коды в этой теме. Если нужен чит, вам сюда.
4. Правила темы, впрочем, как и все другие, включают в себя Правила форума.
5. Важно: в этой теме обсуждается только оригинал Г2 НВ! Если вы играете с неофициальным обновлением, то идите в эту тему!
 
Последнее редактирование модератором:

Коляныч

Участник форума
Регистрация
4 Янв 2018
Сообщения
379
Благодарности
116
Баллы
210
В 4ой главе наемник Дар (торчек который) дал задание на поиск кольца орка, квест Позерство, где его найти?
В разговоре с самим Даром, когда он даёт задание, то подсказывает место, где можно найти нужного орка... Просто будь внимательнее.
 

The WiSe

Участник форума
Регистрация
2 Авг 2011
Сообщения
44
Благодарности
5
Баллы
160
В разговоре с самим Даром, когда он даёт задание, то подсказывает место, где можно найти нужного орка... Просто будь внимательнее.
Вот везде ведь вы есть, "умники", думающие что умнее остальных. Ни чего он не подсказывает, а говорит лишь о том, что ему нужен какой то символ орков, повязка, знамя или кольцо. Но это ладно, я уже нашел его. А вот тебе, совет, сначала подумай, уверен ли ты в своем ответе на вопрос или только примерно что то помнишь, где то слышал...
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.201
Благодарности
6.172
Баллы
1.565
Вот везде ведь вы есть, "умники", думающие что умнее остальных. Ни чего он не подсказывает, а говорит лишь о том, что ему нужен какой то символ орков, повязка, знамя или кольцо. Но это ладно, я уже нашел его. А вот тебе, совет, сначала подумай, уверен ли ты в своем ответе на вопрос или только примерно что то помнишь, где то слышал...
Вот везде, ведь, вы есть, "умники", думающие, что им все должны и обязаны. Сами ничего, для этого, не сделавшие орки!
А вот тебе совет:
Прежде чем бузить на других, подумай. И напиши, что человек просто был немного не прав. И ответ на самом деле вот.

Еще вопросы?
 

The WiSe

Участник форума
Регистрация
2 Авг 2011
Сообщения
44
Благодарности
5
Баллы
160
The WiSe, ты бы хамил меньше. Тебе помочь пытались, а ошибиться может каждый.
Вот везде, ведь, вы есть, "умники", думающие, что им все должны и обязаны. Сами ничего, для этого, не сделавшие орки!
А вот тебе совет:
Прежде чем бузить на других, подумай. И напиши, что человек просто был немного не прав. И ответ на самом деле вот.

Еще вопросы?
Откуда вы все беретесь то? О, господи, неужели Иннос ослепил вас...?
 

3y6AcTuKeP

Участник форума
Регистрация
22 Авг 2011
Сообщения
50
Благодарности
30
Баллы
170
Яркендар, глава 2/3, квест с зачисткой башни около лагеря пиратов:
Небольшое введение:​
Помнится, проходя G2NR в один из первых разов, я стремился сдать квесты как можно скорее. Спустя n-е кол-во похождений стал замечать, что опыт за некоторые действия/закрытия квестов становится больше с каждой последующей главой, поэтому начал экспериментировать с последовательностью выполнения этих самых квестов/действий. И вот, если рассмотреть квест с зачисткой башни от бандитов: наверное многие в 1й раз сразу же вырезали бандитов в башне, чтобы обеспечить себе бесплатных проход к пиратам. Хотя, как выяснилось позднее, гораздо выгоднее что по опыту, что по монетам это квест выполнять уже после прибытия Грега.​
Теперь сам вопрос:​
Для зачистки башни, Генри выделяет в помощь одного из 2х пиратов: один вооружен кинжалом, другой - весьма серьезным двуручным оружием. При этом они оба не так уж и горят желанием нам помогать. Забавно то, что после уничтожения бандитов, реакция этих самых пиратов разная: тот, что вооружен кинжалом называет ГГ славным парнем, в то время как пират, вооруженный 2H, чуть менее любезно отзывается о протагонисте. Так вот, чем вызвано такое различие в отношении к ГГ? Просто особенность характера? Либо есть какие-то доп. условия появления того или иного диалога у пиратов? Или причина чуть больше ясна при англ./нем. локализации? Поделитесь мыслями)​
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.771
Благодарности
557
Баллы
275
3y6AcTuKeP, нет, никаких доп. условий. Смотри сам.

Daedalus:
instance DIA_Addon_HammerPirate_Hello(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 1;
    condition = DIA_Addon_HammerPirate_Hello_Condition;
    information = DIA_Addon_HammerPirate_Hello_Info;
    permanent = TRUE;
    description = "Все в порядке?";
};


func int DIA_Addon_HammerPirate_Hello_Condition()
{
    return TRUE;
};

func void DIA_Addon_HammerPirate_Hello_Info()
{
    AI_Output(other,self,"DIA_Addon_HammerPirate_Hello_15_00");    //Все в порядке?
    if(self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        if(C_TowerBanditsDead() == TRUE)
        {
            AI_Output(self,other,"DIA_Addon_HammerPirate_Hello_07_01");    //Конечно. Мы же расправились с этими подонками.
        }
        else
        {
            AI_Output(self,other,"DIA_Addon_HammerPirate_Hello_07_02");    //Давай покончим с ними!
        };
    }
    else
    {
        AI_Output(self,other,"DIA_Addon_HammerPirate_Hello_07_03");    //Нет! Это не для меня.
    };
};


instance DIA_Addon_HammerPirate_Anheuern(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 11;
    condition = DIA_Addon_HammerPirate_Anheuern_Condition;
    information = DIA_Addon_HammerPirate_Anheuern_Info;
    permanent = FALSE;
    description = "Ты должен мне помочь.";
};


func int DIA_Addon_HammerPirate_Anheuern_Condition()
{
    if(MIS_Henry_FreeBDTTower == LOG_Running)
    {
        return TRUE;
    };
};

func void DIA_Addon_HammerPirate_Anheuern_Info()
{
    AI_Output(self,other,"DIA_Addon_HammerPirate_Anheuern_07_00");    //Только не говори, что ты хочешь, чтобы я пошел с тобой и помог тебе разделаться с бандитами!
    AI_Output(other,self,"DIA_Addon_PIR_6_JoinHenry_15_08");    //Точно.
    if(!Npc_IsDead(SawPirate))
    {
        AI_Output(self,other,"DIA_Addon_HammerPirate_Anheuern_07_01");    //Почему бы тебе не взять парня, который пилит дрова?
    };
    AI_Output(self,other,"DIA_Addon_HammerPirate_Anheuern_07_02");    //Это работа не для меня...
};


instance DIA_Addon_HammerPirate_ComeOn(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 12;
    condition = DIA_Addon_HammerPirate_ComeOn_Condition;
    information = DIA_Addon_HammerPirate_ComeOn_Info;
    permanent = TRUE;
    description = "Пойдем со мной.";
};


func int DIA_Addon_HammerPirate_ComeOn_Condition()
{
    if((self.aivar[AIV_PARTYMEMBER] == FALSE) && (MIS_Henry_FreeBDTTower == LOG_Running) && (C_TowerBanditsDead() == FALSE) && Npc_KnowsInfo(other,DIA_Addon_HammerPirate_Anheuern))
    {
        return TRUE;
    };
};

func void DIA_Addon_HammerPirate_ComeOn_Info()
{
    AI_Output(other,self,"DIA_Addon_HammerPirate_ComeOn_15_00");    //Пойдем со мной.
    if(SawPirate.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        AI_Output(self,other,"DIA_Addon_HammerPirate_ComeOn_07_01");    //Один из нас должен остаться здесь...
    }
    else if(Npc_GetDistToWP(self,"ADW_PIRATECAMP_WAY_08") > 6000)
    {
        AI_Output(self,other,"DIA_Addon_HammerPirate_ComeOn_07_02");    //Сначала давай подойдем поближе к лагерю.
        AI_StopProcessInfos(self);
    }
    else
    {
        AI_Output(self,other,"DIA_Addon_HammerPirate_ComeOn_07_03");    //Есть!..
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    };
};


instance DIA_Addon_HammerPirate_GoHome(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 13;
    condition = DIA_Addon_HammerPirate_GoHome_Condition;
    information = DIA_Addon_HammerPirate_GoHome_Info;
    permanent = TRUE;
    description = "Ты мне больше не нужен.";
};


func int DIA_Addon_HammerPirate_GoHome_Condition()
{
    if(self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };
};

func void DIA_Addon_HammerPirate_GoHome_Info()
{
    AI_Output(other,self,"DIA_Addon_HammerPirate_GoHome_15_00");    //Ты мне больше не нужен.
    AI_Output(self,other,"DIA_Addon_HammerPirate_GoHome_07_01");    //Как скажешь...
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
};


instance DIA_Addon_HammerPirate_TooFar(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 14;
    condition = DIA_Addon_HammerPirate_TooFar_Condition;
    information = DIA_Addon_HammerPirate_TooFar_Info;
    permanent = TRUE;
    important = TRUE;
};


func int DIA_Addon_HammerPirate_TooFar_Condition()
{
    if((self.aivar[AIV_PARTYMEMBER] == TRUE) && (Npc_GetDistToWP(self,"ADW_PIRATECAMP_WAY_08") > 6000))
    {
        return TRUE;
    };
};

func void DIA_Addon_HammerPirate_TooFar_Info()
{
    AI_Output(self,other,"DIA_Addon_HammerPirate_TooFar_07_01");    //Если ты пойдешь дальше, то я тебе не помощник...
    AI_Output(self,other,"DIA_Addon_HammerPirate_GoHome_07_02");    //Думаю, я пойду назад.
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
    AI_StopProcessInfos(self);
};


instance DIA_Addon_HammerPirate_Success(C_Info)
{
    npc = PIR_1360_Addon_PIRAT;
    nr = 14;
    condition = DIA_Addon_HammerPirate_Success_Condition;
    information = DIA_Addon_HammerPirate_Success_Info;
    permanent = TRUE;
    important = TRUE;
};


func int DIA_Addon_HammerPirate_Success_Condition()
{
    if((C_TowerBanditsDead() == TRUE) && (self.aivar[AIV_PARTYMEMBER] == TRUE))
    {
        return TRUE;
    };
};

func void DIA_Addon_HammerPirate_Success_Info()
{
    AI_Output(self,other,"DIA_Addon_HammerPirate_Success_07_01");    //Знаешь, что? Я тут подумал... а ты, пожалуй, не такой уж и плохой парень.
    AI_Output(self,other,"DIA_Addon_HammerPirate_Success_07_02");    //Ладно, я возвращаюсь в лагерь. Увидимся!
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
    AI_StopProcessInfos(self);
};

А это диалоги с тем, что пилит.

Daedalus:
instance DIA_Addon_SawPirate_Hello(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 1;
    condition = DIA_Addon_SawPirate_Hello_Condition;
    information = DIA_Addon_SawPirate_Hello_Info;
    permanent = TRUE;
    description = "Как дела?";
};


func int DIA_Addon_SawPirate_Hello_Condition()
{
    return TRUE;
};

func void DIA_Addon_SawPirate_Hello_Info()
{
    AI_Output(other,self,"DIA_Addon_SawPirate_Hello_15_00");    //Как дела?
    AI_Output(self,other,"DIA_Addon_SawPirate_Hello_09_01");    //Не приставай ко мне.
};


instance DIA_Addon_SawPirate_Anheuern(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 11;
    condition = DIA_Addon_SawPirate_Anheuern_Condition;
    information = DIA_Addon_SawPirate_Anheuern_Info;
    permanent = FALSE;
    description = "Ты один из людей Генри?";
};


func int DIA_Addon_SawPirate_Anheuern_Condition()
{
    if(MIS_Henry_FreeBDTTower == LOG_Running)
    {
        return TRUE;
    };
};

func void DIA_Addon_SawPirate_Anheuern_Info()
{
    AI_Output(other,self,"DIA_Addon_Bones_JoinHenry_15_00");    //Ты один из людей Генри?
    AI_Output(self,other,"DIA_Addon_SawPirate_Anheuern_09_01");    //Нет. Просто мне нравится пилить деревья.
    AI_Output(self,other,"DIA_Addon_SawPirate_Anheuern_09_02");    //Что такое? Генри поручил тебе какое-то задание?
    AI_Output(other,self,"DIA_Addon_Bones_JoinHenry_15_04");    //Да. Я должен убить нескольких бандитов.
    AI_Output(self,other,"DIA_Addon_SawPirate_Anheuern_09_03");    //Нет. Не-ет! Не смотри на меня так! Я не хочу туда идти.
    AI_Output(self,other,"DIA_Addon_SawPirate_Anheuern_09_04");    //Мне нужно пилить, ты меня слышишь?
};


var int SawPirate_ComeOn_Once;

instance DIA_Addon_SawPirate_ComeOn(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 12;
    condition = DIA_Addon_SawPirate_ComeOn_Condition;
    information = DIA_Addon_SawPirate_ComeOn_Info;
    permanent = TRUE;
    description = "Пойдем со мной.";
};


func int DIA_Addon_SawPirate_ComeOn_Condition()
{
    if((self.aivar[AIV_PARTYMEMBER] == FALSE) && (MIS_Henry_FreeBDTTower == LOG_Running) && (C_TowerBanditsDead() == FALSE) && Npc_KnowsInfo(other,DIA_Addon_SawPirate_Anheuern))
    {
        return TRUE;
    };
};

func void DIA_Addon_SawPirate_ComeOn_Info()
{
    AI_Output(other,self,"DIA_Addon_SawPirate_ComeOn_15_00");    //Пойдем со мной.
    if(HammerPirate.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        AI_Output(self,other,"DIA_Addon_SawPirate_ComeOn_09_01");    //Зачем я тебе нужен? С тобой уже есть люди...
    }
    else if(Npc_GetDistToWP(self,"ADW_PIRATECAMP_WAY_08") > 6000)
    {
        AI_Output(self,other,"DIA_Addon_SawPirate_ComeOn_09_04");    //Сначала давай подойдем поближе к лагерю.
        AI_StopProcessInfos(self);
    }
    else if(!Npc_IsDead(HammerPirate) && (SawPirate_ComeOn_Once == FALSE))
    {
        AI_Output(self,other,"DIA_Addon_SawPirate_ComeOn_09_02");    //(ворчит) Он бы мог позвать и кого-нибудь другого...
        SawPirate_ComeOn_Once = TRUE;
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    }
    else
    {
        AI_Output(self,other,"DIA_Addon_SawPirate_ComeOn_09_03");    //Есть!..
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    };
};


instance DIA_Addon_SawPirate_GoHome(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 13;
    condition = DIA_Addon_SawPirate_GoHome_Condition;
    information = DIA_Addon_SawPirate_GoHome_Info;
    permanent = TRUE;
    description = "Ты мне больше не нужен.";
};


func int DIA_Addon_SawPirate_GoHome_Condition()
{
    if(self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };
};

func void DIA_Addon_SawPirate_GoHome_Info()
{
    AI_Output(other,self,"DIA_Addon_SawPirate_GoHome_15_00");    //Ты мне больше не нужен.
    AI_Output(self,other,"DIA_Addon_SawPirate_GoHome_09_01");    //В таком случае я вернусь к своей работе.
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
};


instance DIA_Addon_SawPirate_TooFar(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 14;
    condition = DIA_Addon_SawPirate_TooFar_Condition;
    information = DIA_Addon_SawPirate_TooFar_Info;
    permanent = TRUE;
    important = TRUE;
};


func int DIA_Addon_SawPirate_TooFar_Condition()
{
    if((self.aivar[AIV_PARTYMEMBER] == TRUE) && (Npc_GetDistToWP(self,"ADW_PIRATECAMP_WAY_08") > 6000))
    {
        return TRUE;
    };
};

func void DIA_Addon_SawPirate_TooFar_Info()
{
    AI_Output(self,other,"DIA_Addon_SawPirate_TooFar_09_01");    //Мы слишком далеко от лагеря.
    AI_Output(self,other,"DIA_Addon_SawPirate_GoHome_09_02");    //Мне все это не нравится. Я возвращаюсь.
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
    AI_StopProcessInfos(self);
};


instance DIA_Addon_SawPirate_Success(C_Info)
{
    npc = PIR_1361_Addon_PIRAT;
    nr = 14;
    condition = DIA_Addon_SawPirate_Success_Condition;
    information = DIA_Addon_SawPirate_Success_Info;
    permanent = TRUE;
    important = TRUE;
};


func int DIA_Addon_SawPirate_Success_Condition()
{
    if((C_TowerBanditsDead() == TRUE) && (self.aivar[AIV_PARTYMEMBER] == TRUE))
    {
        return TRUE;
    };
};

func void DIA_Addon_SawPirate_Success_Info()
{
    AI_Output(self,other,"DIA_Addon_SawPirate_Success_09_01");    //Знаешь что? Поразмыслив, я решил, что ты просто сволочь!
    AI_Output(self,other,"DIA_Addon_SawPirate_Success_09_02");    //Я возвращаюсь в лагерь и надеюсь, что больше тебя никогда не увижу!
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"START");
    AI_StopProcessInfos(self);
};
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
Или причина чуть больше ясна при англ./нем. локализации?
Можешь сравнить русскую версию диалогов с немецкой из G2 MDK:
DIA_Addon_PIR_1360_HammerPirate.d:
Daedalus:
// *************************************************************************
//                                     EXIT
// *************************************************************************
instance DIA_Addon_HammerPirate_EXIT(C_INFO)
{
    npc         = PIR_1360_Addon_Pirat;
    nr            = 999;
    condition    = DIA_Addon_HammerPirate_EXIT_Condition;
    information    = DIA_Addon_HammerPirate_EXIT_Info;
    permanent    = TRUE;
    description = DIALOG_ENDE;
};                      
func INT DIA_Addon_HammerPirate_EXIT_Condition()
{
    return TRUE;
};
func VOID DIA_Addon_HammerPirate_EXIT_Info()
{  
    AI_StopProcessInfos    (self);
};

// *************************************************************************
//                                 Hello - PERM
// *************************************************************************
instance DIA_Addon_HammerPirate_Hello(C_INFO)
{
    npc         = PIR_1360_Addon_Pirat;
    nr            = 1;
    condition    = DIA_Addon_HammerPirate_Hello_Condition;
    information    = DIA_Addon_HammerPirate_Hello_Info;
    permanent    = TRUE;
    description = "Alles klar?";
};                      
func INT DIA_Addon_HammerPirate_Hello_Condition()
{
    return TRUE;
};
func VOID DIA_Addon_HammerPirate_Hello_Info()
{  
    AI_Output (other, self, "DIA_Addon_HammerPirate_Hello_15_00"); //Alles klar?
    if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        if (C_TowerBanditsDead() == TRUE)
        {
            AI_Output (self, other, "DIA_Addon_HammerPirate_Hello_07_01"); //Jetzt haben wir's ja hinter uns! Die Mistkerle sind platt wie 'ne Flunder!
        }
        else
        {
            AI_Output (self, other, "DIA_Addon_HammerPirate_Hello_07_02"); //Bringen wir's hinter uns!
        };
    }
    else
    {
        AI_Output (self, other, "DIA_Addon_HammerPirate_Hello_07_03"); //Nein! Ich steh' nicht auf Hämmern!
    };
};



// ************************************************************
// ***                                                         ***
//                         Mitkommen (Henry)
// ***                                                         ***
// ************************************************************
// ------------------------------------------------------------
//                              Anheuern
// ------------------------------------------------------------
instance DIA_Addon_HammerPirate_Anheuern(C_INFO)
{
    npc            = PIR_1360_Addon_Pirat;
    nr            = 11;
    condition    = DIA_Addon_HammerPirate_Anheuern_Condition;
    information    = DIA_Addon_HammerPirate_Anheuern_Info;
    permanent    = FALSE;
    description = "Du sollst mir helfen.";
};                      
FUNC INT DIA_Addon_HammerPirate_Anheuern_Condition()
{
    if (MIS_Henry_FreeBDTTower == LOG_RUNNING)
    {
        return TRUE;
    };  
};
func VOID DIA_Addon_HammerPirate_Anheuern_Info()
{  
    AI_Output (self, other, "DIA_Addon_HammerPirate_Anheuern_07_00"); //Sag nichts! Du willst, daß ich mit dir die Banditen plattmache!
    AI_Output (other,self ,"DIA_Addon_PIR_6_JoinHenry_15_08"); //Du hast es erfasst.
    if (!Npc_IsDead(SawPirate))
    {
        AI_Output (self, other, "DIA_Addon_HammerPirate_Anheuern_07_01"); //Warum fragst du nicht den Typen an der Säge?
    };
    AI_Output (self, other, "DIA_Addon_HammerPirate_Anheuern_07_02"); //Ich... hab keine Lust auf den ganzen Stress...
};
// ------------------------------------------------------------
//                         Komm (wieder) mit!
// ------------------------------------------------------------
instance DIA_Addon_HammerPirate_ComeOn(C_INFO)
{
    npc            = PIR_1360_Addon_Pirat;
    nr             = 12;
    condition    = DIA_Addon_HammerPirate_ComeOn_Condition;
    information    = DIA_Addon_HammerPirate_ComeOn_Info;
    permanent    = TRUE;
    description    = "Komm mit.";
};
func int DIA_Addon_HammerPirate_ComeOn_Condition ()
{
    if (self.aivar[AIV_PARTYMEMBER] == FALSE)
    && (MIS_Henry_FreeBDTTower == LOG_RUNNING)
    && (C_TowerBanditsDead() == FALSE)
    && (Npc_KnowsInfo (other, DIA_Addon_HammerPirate_Anheuern))
    {
        return TRUE;
    };
};
func void DIA_Addon_HammerPirate_ComeOn_Info ()
{
    AI_Output (other, self, "DIA_Addon_HammerPirate_ComeOn_15_00"); //Komm mit.
    if (SawPirate.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        AI_Output (self ,other,"DIA_Addon_HammerPirate_ComeOn_07_01"); //Henry braucht einen von uns HIER...
    }
    else if (Npc_GetDistToWP (self, "ADW_PIRATECAMP_WAY_08") > 6000)
    {  
        AI_Output (self ,other,"DIA_Addon_HammerPirate_ComeOn_07_02"); //Lass uns erst ein Stück zurück in Richtung Lager gehen.
        AI_StopProcessInfos (self);
    }
    else
    {
        AI_Output (self ,other,"DIA_Addon_HammerPirate_ComeOn_07_03"); //(seufzt) Aye, aye...
        AI_StopProcessInfos (self);
        Npc_ExchangeRoutine    (self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    };
};

// ------------------------------------------------------------
//                             Go Home!
// ------------------------------------------------------------
INSTANCE DIA_Addon_HammerPirate_GoHome(C_INFO)
{
    npc            = PIR_1360_Addon_Pirat;
    nr            = 13;
    condition    = DIA_Addon_HammerPirate_GoHome_Condition;
    information    = DIA_Addon_HammerPirate_GoHome_Info;
    permanent    = TRUE;
    description = "Ich brauch dich nicht mehr.";
};                      
FUNC INT DIA_Addon_HammerPirate_GoHome_Condition()
{
    if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };  
};

FUNC VOID DIA_Addon_HammerPirate_GoHome_Info()
{  
    AI_Output (other,self ,"DIA_Addon_HammerPirate_GoHome_15_00"); //Ich brauch dich nicht mehr.
    AI_Output (self ,other,"DIA_Addon_HammerPirate_GoHome_07_01"); //Wie du meinst...
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
};

// ------------------------------------------------------------
//                          Zu weit weg
// ------------------------------------------------------------
INSTANCE DIA_Addon_HammerPirate_TooFar(C_INFO)
{
    npc            = PIR_1360_Addon_Pirat;
    nr            = 14;
    condition    = DIA_Addon_HammerPirate_TooFar_Condition;
    information    = DIA_Addon_HammerPirate_TooFar_Info;
    permanent    = TRUE;
    important   = TRUE;
};                      
FUNC INT DIA_Addon_HammerPirate_TooFar_Condition()
{
    if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    && (Npc_GetDistToWP (self, "ADW_PIRATECAMP_WAY_08") > 6000)
    {
        return TRUE;
    };
};

FUNC VOID DIA_Addon_HammerPirate_TooFar_Info()
{  
    AI_Output (self ,other,"DIA_Addon_HammerPirate_TooFar_07_01"); //Wenn du weiter in die Richtung gehen willst, lass dich nicht aufhalten...
    AI_Output (self ,other,"DIA_Addon_HammerPirate_GoHome_07_02"); //Ich geh mal lieber wieder zurück.
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
   
    AI_StopProcessInfos (self);
};

   

// ************************************************************
//                              SUCCESS
// ************************************************************
INSTANCE DIA_Addon_HammerPirate_Success(C_INFO)
{
    npc            = PIR_1360_Addon_Pirat;
    nr            = 14;
    condition    = DIA_Addon_HammerPirate_Success_Condition;
    information    = DIA_Addon_HammerPirate_Success_Info;
    permanent    = TRUE;
    important   = TRUE;
};                      
FUNC INT DIA_Addon_HammerPirate_Success_Condition()
{
    if (C_TowerBanditsDead() == TRUE)
    && (self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };
};

FUNC VOID DIA_Addon_HammerPirate_Success_Info()
{  
    AI_Output (self ,other,"DIA_Addon_HammerPirate_Success_07_01"); //Weißt da was, ich hab nachgedacht. Du bist doch ganz in Ordnung!
    AI_Output (self ,other,"DIA_Addon_HammerPirate_Success_07_02"); //Ich geh mal wieder zum Lager. Wir sehen uns!
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
   
    AI_StopProcessInfos (self);
};
DIA_Addon_PIR_1361_SawPirate.d:
Daedalus:
// *************************************************************************
//                                     EXIT
// *************************************************************************
instance DIA_Addon_SawPirate_EXIT(C_INFO)
{
    npc         = PIR_1361_Addon_Pirat;
    nr            = 999;
    condition    = DIA_Addon_SawPirate_EXIT_Condition;
    information    = DIA_Addon_SawPirate_EXIT_Info;
    permanent    = TRUE;
    description = DIALOG_ENDE;
};                      
func INT DIA_Addon_SawPirate_EXIT_Condition()
{
    return TRUE;
};
func VOID DIA_Addon_SawPirate_EXIT_Info()
{  
    AI_StopProcessInfos    (self);
};

// *************************************************************************
//                                     Hello - PERM
// *************************************************************************
instance DIA_Addon_SawPirate_Hello(C_INFO)
{
    npc         = PIR_1361_Addon_Pirat;
    nr            = 1;
    condition    = DIA_Addon_SawPirate_Hello_Condition;
    information    = DIA_Addon_SawPirate_Hello_Info;
    permanent    = TRUE;
    description = "Wie sieht's aus?";
};                      
func INT DIA_Addon_SawPirate_Hello_Condition()
{
    return TRUE;
};
func VOID DIA_Addon_SawPirate_Hello_Info()
{  
    AI_Output (other,self,"DIA_Addon_SawPirate_Hello_15_00"); //Wie sieht's aus?
    AI_Output (self,other,"DIA_Addon_SawPirate_Hello_09_01"); //Quatsch mich nicht voll!
};

// ************************************************************
// ***                                                         ***
//                         Mitkommen (Henry)
// ***                                                         ***
// ************************************************************
// ------------------------------------------------------------
//                              Anheuern
// ------------------------------------------------------------
instance DIA_Addon_SawPirate_Anheuern(C_INFO)
{
    npc            = PIR_1361_Addon_Pirat;
    nr            = 11;
    condition    = DIA_Addon_SawPirate_Anheuern_Condition;
    information    = DIA_Addon_SawPirate_Anheuern_Info;
    permanent    = FALSE;
    description = "Gehörst du zu Henrys Jungs?";
};                      
FUNC INT DIA_Addon_SawPirate_Anheuern_Condition()
{
    if (MIS_Henry_FreeBDTTower == LOG_RUNNING)
    {
        return TRUE;
    };  
};
func VOID DIA_Addon_SawPirate_Anheuern_Info()
{  
    AI_Output (other,self ,"DIA_Addon_Bones_JoinHenry_15_00"); //Gehörst du zu Henrys Jungs?
    AI_Output (self, other, "DIA_Addon_SawPirate_Anheuern_09_01"); //Nein. Ich säge hier zum Spaß ein bißchen am Baum herum.
    AI_Output (self, other, "DIA_Addon_SawPirate_Anheuern_09_02"); //Was ist los? Hat Henry dir gesagt, was du zu tun hast?
    AI_Output (other,self ,"DIA_Addon_Bones_JoinHenry_15_04"); //Ja. Ich soll für ihn einige Banditen aus dem Weg räumen.
    AI_Output (self, other, "DIA_Addon_SawPirate_Anheuern_09_03"); //(wehrt ab) Ooh nein! Sieh mich NICHT so an. Ich will da nicht hingehen.
    AI_Output (self, other, "DIA_Addon_SawPirate_Anheuern_09_04"); //Lass mich lieber weitersägen, okay?
};
// ------------------------------------------------------------
//                         Komm (wieder) mit!
// ------------------------------------------------------------
var int SawPirate_ComeOn_Once;
// ------------------------------------------------------------
instance DIA_Addon_SawPirate_ComeOn(C_INFO)
{
    npc            = PIR_1361_Addon_Pirat;
    nr             = 12;
    condition    = DIA_Addon_SawPirate_ComeOn_Condition;
    information    = DIA_Addon_SawPirate_ComeOn_Info;
    permanent    = TRUE;
    description    = "Komm mit.";
};
func int DIA_Addon_SawPirate_ComeOn_Condition ()
{
    if (self.aivar[AIV_PARTYMEMBER] == FALSE)
    && (MIS_Henry_FreeBDTTower == LOG_RUNNING)
    && (C_TowerBanditsDead() == FALSE)
    && (Npc_KnowsInfo (other, DIA_Addon_SawPirate_Anheuern))
    {
        return TRUE;
    };
};
func void DIA_Addon_SawPirate_ComeOn_Info ()
{
    AI_Output (other, self, "DIA_Addon_SawPirate_ComeOn_15_00"); //Komm mit.
    if (HammerPirate.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        AI_Output (self ,other,"DIA_Addon_SawPirate_ComeOn_09_01"); //Wieso? Du hast doch schon 'nen Mann dabei...
    }
    else if (Npc_GetDistToWP (self, "ADW_PIRATECAMP_WAY_08") > 6000)
    {  
        AI_Output (self ,other,"DIA_Addon_SawPirate_ComeOn_09_04"); //Erst gehen wir mal ein Stück zurück in Richtung Lager...
        AI_StopProcessInfos (self);
    }
    else if (!Npc_IsDead(HammerPirate))
    && (SawPirate_ComeOn_Once == FALSE)
    {
        AI_Output (self ,other,"DIA_Addon_SawPirate_ComeOn_09_02"); //(zu sich) Warum hat er nicht den ANDEREN gefragt...
        SawPirate_ComeOn_Once = TRUE;
        AI_StopProcessInfos (self);
        Npc_ExchangeRoutine    (self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    }
    else
    {
        AI_Output (self ,other,"DIA_Addon_SawPirate_ComeOn_09_03"); //(seufzt) Aye, aye...
        AI_StopProcessInfos (self);
        Npc_ExchangeRoutine    (self,"FOLLOW");
        self.aivar[AIV_PARTYMEMBER] = TRUE;
    };
};

// ------------------------------------------------------------
//                             Go Home!
// ------------------------------------------------------------
INSTANCE DIA_Addon_SawPirate_GoHome(C_INFO)
{
    npc            = PIR_1361_Addon_Pirat;
    nr            = 13;
    condition    = DIA_Addon_SawPirate_GoHome_Condition;
    information    = DIA_Addon_SawPirate_GoHome_Info;
    permanent    = TRUE;
    description = "Ich brauch dich nicht mehr.";
};                      
FUNC INT DIA_Addon_SawPirate_GoHome_Condition()
{
    if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };  
};

FUNC VOID DIA_Addon_SawPirate_GoHome_Info()
{  
    AI_Output (other,self ,"DIA_Addon_SawPirate_GoHome_15_00"); //Ich brauch dich nicht mehr.
    AI_Output (self ,other,"DIA_Addon_SawPirate_GoHome_09_01"); //Dann werd ich mal ein bißchen weitersägen!
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
};

// ------------------------------------------------------------
//                          Zu weit weg
// ------------------------------------------------------------
INSTANCE DIA_Addon_SawPirate_TooFar(C_INFO)
{
    npc            = PIR_1361_Addon_Pirat;
    nr            = 14;
    condition    = DIA_Addon_SawPirate_TooFar_Condition;
    information    = DIA_Addon_SawPirate_TooFar_Info;
    permanent    = TRUE;
    important   = TRUE;
};                      
FUNC INT DIA_Addon_SawPirate_TooFar_Condition()
{
    if (self.aivar[AIV_PARTYMEMBER] == TRUE)
    && (Npc_GetDistToWP (self, "ADW_PIRATECAMP_WAY_08") > 6000)
    {
        return TRUE;
    };
};

FUNC VOID DIA_Addon_SawPirate_TooFar_Info()
{  
    AI_Output (self ,other,"DIA_Addon_SawPirate_TooFar_09_01"); //Wir sind zu weit weg vom Lager.
    AI_Output (self ,other,"DIA_Addon_SawPirate_GoHome_09_02"); //Das gefällt mir gar nicht. Ich werd' mal wieder zurückgehen.
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
   
    AI_StopProcessInfos (self);
};



// ************************************************************
//                              SUCCESS
// ************************************************************
INSTANCE DIA_Addon_SawPirate_Success(C_INFO)
{
    npc            = PIR_1361_Addon_Pirat;
    nr            = 14;
    condition    = DIA_Addon_SawPirate_Success_Condition;
    information    = DIA_Addon_SawPirate_Success_Info;
    permanent    = TRUE;
    important   = TRUE;
};                      
FUNC INT DIA_Addon_SawPirate_Success_Condition()
{
    if (C_TowerBanditsDead() == TRUE)
    && (self.aivar[AIV_PARTYMEMBER] == TRUE)
    {
        return TRUE;
    };
};

FUNC VOID DIA_Addon_SawPirate_Success_Info()
{  
    AI_Output (self ,other,"DIA_Addon_SawPirate_Success_09_01"); //Weißt da was, ich hab nachgedacht. Du bist ein Arschloch!
    AI_Output (self ,other,"DIA_Addon_SawPirate_Success_09_02"); //Ich geh zurück zum Lager. Wir sehen uns hoffentlich nie wieder!
   
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine    (self,"START");
   
    AI_StopProcessInfos (self);
};
 

Htonium

Участник форума
Регистрация
27 Сен 2019
Сообщения
44
Благодарности
1
Баллы
110
После помощи на ферме Акилла, ополченец Мика не дошел до города. Его можно как-то найти?
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
А ты не забыл подойти к Мике, чтобы он сказал, что может возвращаться назад?
Daedalus:
instance DIA_Mika_WIEDERNACHHAUSE(C_Info)
{
    npc = MIL_337_Mika;
    nr = 9;
    condition = DIA_Mika_WIEDERNACHHAUSE_Condition;
    information = DIA_Mika_WIEDERNACHHAUSE_Info;
    important = TRUE;
};


func int DIA_Mika_WIEDERNACHHAUSE_Condition()
{
    if(Npc_GetDistToWP(self,"NW_FARM2_PATH_03") < 1000)
    {
        if(C_AkilFarmIsFree())
        {
            return TRUE;
        };
        if(Kapitel >= 4)
        {
            return TRUE;
        };
    };
};

func void DIA_Mika_WIEDERNACHHAUSE_Info()
{
    AI_Output(self,other,"DIA_Mika_WIEDERNACHHAUSE_12_00");    //Вот и все. Я могу возвращаться назад.
    AI_StopProcessInfos(self);
    self.aivar[AIV_PARTYMEMBER] = FALSE;
    Npc_ExchangeRoutine(self,"Start");
    B_GivePlayerXP(XP_Ambient);
};
 

Htonium

Участник форума
Регистрация
27 Сен 2019
Сообщения
44
Благодарности
1
Баллы
110
Dimus, Точно, забыл. И не проверил к тому же.
 

Htonium

Участник форума
Регистрация
27 Сен 2019
Сообщения
44
Благодарности
1
Баллы
110
А есть разница в опыте за выполнение квеста по вступлению во фракцию? Конкретно - сколько дают экспы, если привести овцу в монастырь и заплатить 1000 монет и при быстром вступлении, когда ищешь статуэтку Дарона?
 

Boockman

Участник форума
Регистрация
28 Апр 2015
Сообщения
1.518
Благодарности
463
Баллы
300
А есть разница в опыте за выполнение квеста по вступлению во фракцию? Конкретно - сколько дают экспы, если привести овцу в монастырь и заплатить 1000 монет и при быстром вступлении, когда ищешь статуэтку Дарона?

Думаю, за статуэтку больше - там еще и Дарон экспу дает, когда докладываешь ему о выполненном задании.
 

Htonium

Участник форума
Регистрация
27 Сен 2019
Сообщения
44
Благодарности
1
Баллы
110
Дарон экспу дает, когда докладываешь ему о выполненном задании.
Вот и хотел сначала о статуэтке ему рассказать, но потом овцу в монастырь привести. Но с какого-то момента у Лареса пропала строка о помощи вступления во фракции.
 

Pystosh

Участник форума
Регистрация
5 Окт 2019
Сообщения
82
Благодарности
7
Баллы
110
1) Читал, что доспехи Кольца Воды можно получить в первой главе уже после выполнения квеста на пропавших. Так ли это? Ибо Ватрас упорно требует доставить сообщение Хагену, что уже вторая глава + вступление в гильдию + во второй главе есть доспехи крепко лучше.
2) EDIT: Секоб - бессмертный персонаж. Торлоф дает задание либо убить ополчение, либо забрать дань с Секоба (в этот момент он становится смертным).
Ополченцы - больше опыта. Секоб - несет в инвентаре яблоко. Читал, что всего 125 яблок в игре. Поскольку недостача даже одного яблока - это -1 силы -> вопрос: Если выполнять квест на ополченцев, то в каких-то последующих главах Секоб станет ли смертным, чтобы это яблоко с него снять?
 
Последнее редактирование:

Коляныч

Участник форума
Регистрация
4 Янв 2018
Сообщения
379
Благодарности
116
Баллы
210
Секоб - бессмертный персонаж. Торлоф дает задание либо убить ополчение, либо забрать дань с Секоба (в этот момент он становится смертным).
Ополченцы - больше опыта. Секоб - несет в инвентаре яблоко. Читал, что всего 125 яблок в игре. Поскольку недостача даже одного яблока - это -1 силы -> вопрос: Если выполнять квест на ополченцев, то в каких-то последующих главах Секоб станет ли смертным, чтобы это яблоко с него снять?
Не знаю насчёт яблока... но где то в середине игры появляется квест "Сопроводить Рози" (как то так называется).
что посреди дороги мы встречаем Рози и Тилла, сбежавших от Секоба. Провожаем их до города, а затем наведываемся к Секобу и рассказываем ему всё, что о нём думаем. В итоге Секоб лезет в драку... ну а дальше - делай с ним что хочешь.
 

Test Level

Участник форума
Регистрация
1 Ноя 2011
Сообщения
1.771
Благодарности
557
Баллы
275
Это квест "Пропавшая жена Секоба"
и куда мы отводим Рози и Тила, зависит от гильдии.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.803
Баллы
995
1) Читал, что доспехи Кольца Воды можно получить в первой главе уже после выполнения квеста на пропавших. Так ли это? Ибо Ватрас упорно требует доставить сообщение Хагену, что уже вторая глава + выступление в гильдию + во второй главе есть доспехи крепко лучше.
Это не так. В скриптах прописаны условие на вторую главу. Доспехи КВ могут быть так же полезны наему /менту в 3 главе так как они имеют хорошую защиту от магии, т.е. от фаерболов которыми атакуют ищущие.


Читал, что всего 125 яблок в игре.
В игре их больше. К тому же они бесконечно генерятся у некоторых НПС которые их поедают. Так же 10 яблок есть в посылке которую герой получает у Акилы для Бальтрама. Если ее сдать Бальтраму то у него появятся в продаже 10 яблок. Если Нагуру, то они просто пропадут. В продаже у торговцев они обновляются каждую главу, в том числе у Фиска(Яркендар) в 3,4,5 главах.
 

Pystosh

Участник форума
Регистрация
5 Окт 2019
Сообщения
82
Благодарности
7
Баллы
110
В итоге Секоб лезет в драку... ну а дальше - делай с ним что хочешь.
Т.е. он становится смертный? Ясно. Просто находил и читал этот квест на польской вики (ни английскую, ни русскую поисковики не находили). И там в гуглопереводе читалось как-то так "после чего он бросаетя на ГГ и становится бессмертым", что у меня вызвало когнитивный диссонанс :D

Так же 10 яблок есть в посылке которую герой получает у Акилы для Бальтрама. Если ее сдать Бальтраму то у него появятся в продаже 10 яблок. Если Нагуру, то они просто пропадут. В продаже у торговцев они обновляются каждую главу, в том числе у Фиска(Яркендар) в 3,4,5 главах.
Я предполагал, что 125 - это посчитаны все яблоки в игре, в т.ч. и те, что у торговцев во всех главах, и по квестам. Ок, буду знать.

К тому же они бесконечно генерятся у некоторых НПС которые их поедают.
Похоже на то. Я думал, это пофиксили, как в случае с багом на полный инвентарь при смерти от ледяной глыбы. Другое дело, где найти этих яблокодавов, так чтобы потом не сражаться с половиной города и не платить по 500 монет за яблочко.
 
Сверху Снизу