dosinabox / g2nr_unofficial_update

Исходники скриптов, релизы, хотфиксы и тестовые версии неофициального обновления для игры "Готика 2: Ночь Ворона".
https://worldofplayers.ru/threads/36817
The Unlicense
13 stars 1 forks source link

instance DIA_Xardas_RITUALREQUEST #285

Open Kor-Angar opened 3 years ago

Kor-Angar commented 3 years ago

Писал про это пару раз. Штука важная, особенно для тех кто игру не знает крепко: диалог про отказ Пирокара доступен после диалога про Ватраса. НО после диалога про Ватраса, Ксардас тут же(!) уходит. Таким образом для в ряде случаев придётся бежать за Ксардасом.

Ввиду этого под строчкой Xardas_GoesToRitualInnosEye = TRUE; можно добавить проверку на Пирокара и тут же продолжить разговор за Пирокара:-)

        if(Pyrokar_DeniesInnosEyeRitual == TRUE)
        {
            DIA_Xardas_PYROWILLNICHT_Info();
        };

а саму instance DIA_Xardas_PYROWILLNICHT в коде поставить выше instance DIA_Xardas_RITUALREQUEST

Kor-Angar commented 3 years ago

Ксардас тут же(!) уходит

https://github.com/dosinabox/g2nr_unofficial_update/blob/aed56ebb175bc52740bf908b2ece4ef16490b17d/PrjGOTHIC/Story/Dialoge/DIA_NONE_100_Xardas.d#L910

dosinabox commented 3 years ago

Как-то так: https://github.com/dosinabox/g2nr_unofficial_update/blob/207d34389007fa8015dfe532266db4be07bacf2b/PrjGOTHIC/Story/Dialoge/DIA_NONE_100_Xardas.d#L882 Нужно проверить.

Kor-Angar commented 3 years ago

а файл отдельный этот с Гитхаба скачать нельзя? -)

dosinabox commented 3 years ago

image

Kor-Angar commented 3 years ago

Вот на это https://github.com/dosinabox/g2nr_unofficial_update/blob/207d34389007fa8015dfe532266db4be07bacf2b/PrjGOTHIC/Story/Dialoge/DIA_NONE_100_Xardas.d#L800

надо добавить условие дополнительные. я хотел сделать возможность переход сразу к диалогу про глаз, но после тестов оказалось что так делать не стоит, так как там что то сыпаться начинается. я у себя в коде это оставил в виде напоминания на будущее так сказать что так делать нельзя :-)

    if (Npc_HasItems(other,ItMi_InnosEye_Broken_Mis) || (MIS_SCKnowsInnosEyeIsBroken == TRUE))
    {
        // нельзя использовать
        //Info_AddChoice(DIA_Xardas_DMTSINDDA,"Глаз Инноса был уничтожен",DIA_Xardas_INNOSEYEBROKEN_Info);
    }
    else
    {
        Info_AddChoice(DIA_Xardas_DMTSINDDA,"Я, наконец, добыл доказательство, которое требовал от меня лорд Хаген.",DIA_Xardas_DMTSINDDA_Beweis);
    };  
Kor-Angar commented 3 years ago

так же у себя сделал и проверил:

в DIA_Xardas_INNOSEYEBROKEN можно добавить проверку на Ватраса

    if(MIS_RitualInnosEyeRepair == LOG_Running)
    {
        DIA_Xardas_RITUALREQUEST_Info ();
    }
    else
    {   
        Info_ClearChoices(DIA_Xardas_INNOSEYEBROKEN);
        Info_AddChoice(DIA_Xardas_INNOSEYEBROKEN,"И что теперь?",DIA_Xardas_INNOSEYEBROKEN_wasnun);
    };

Info RitualRequest поднять и добавить проверку на то был ли он :-)

///////////////////////////////////////////////////////////////////////
//  Info RitualRequest
///////////////////////////////////////////////////////////////////////
instance DIA_Xardas_RITUALREQUEST(C_Info)
{
    npc = NONE_100_Xardas;
    nr = 34;
    condition = DIA_Xardas_RITUALREQUEST_Condition;
    information = DIA_Xardas_RITUALREQUEST_Info;
    description = "Ватрас отправил меня к тебе.";
};

var int Xardas_RITUALREQUEST;

func int DIA_Xardas_RITUALREQUEST_Condition()
{
    if  (Xardas_RITUALREQUEST == 0)
    {
        return FALSE;
    }
    else if((MIS_RitualInnosEyeRepair == LOG_Running) && Npc_KnowsInfo(other,DIA_Xardas_INNOSEYEBROKEN) && (Kapitel == 3))
    {
        return TRUE;
    };
};
Kor-Angar commented 3 years ago

таким образом если ГГ приходит к Ксардасу после того как нашёл глаз Инноса всё становится гладко. но это прям тестить надо так как там много вариантов событий. 3 сценария как минимум.

Kor-Angar commented 3 years ago

но это прям тестить надо так как там много вариантов событий

я сегодня свои правки проверял час. и так и эдак.

Kor-Angar commented 3 years ago

я у себя в коде это оставил в виде напоминания на будущее так сказать что так делать нельзя :-)

вот так конструктивно-практично будет: запись в топик спрятать под условие и вносить разное в зависимости от того как сюжет будет развиваться ;-)

    if (Npc_HasItems(other,ItMi_InnosEye_Broken_Mis) || (MIS_SCKnowsInnosEyeIsBroken == TRUE))
    {
        B_LogEntry(TOPIC_INNOSEYE,"Врагу теперь известно, что я ищу Глаз Инноса.");
        // нельзя использовать
        //Info_AddChoice(DIA_Xardas_DMTSINDDA,"Глаз Инноса был уничтожен",DIA_Xardas_INNOSEYEBROKEN_Info);
    }
    else
    {   
        B_LogEntry(TOPIC_INNOSEYE,"Врагу теперь известно, что я ищу Глаз Инноса. Мне нужно побыстрее найти его, пока еще не слишком поздно.");
        Info_AddChoice(DIA_Xardas_DMTSINDDA,"Я, наконец, добыл доказательство, которое требовал от меня лорд Хаген.",DIA_Xardas_DMTSINDDA_Beweis);
    };
Kor-Angar commented 3 years ago

Как-то так: g2nr_unofficial_update/PrjGOTHIC/Story/Dialoge/DIA_NONE_100_Xardas.d

Line 882 in 207d343

func void B_XardasGivesProofForPyrokar()

Нужно проверить.

тогда тебе надо и B_XardasGivesProofForPyrokar показать сразу под DIA_Xardas_PYROWILLNICHT а так у тебя общая логика структуры кода Пираней теряется.

dosinabox commented 3 years ago

тогда тебе надо и B_XardasGivesProofForPyrokar показать сразу под DIA_Xardas_PYROWILLNICHT

Так и есть:

func void DIA_Xardas_PYROWILLNICHT_Info()
{
    B_XardasGivesProofForPyrokar();
};
Kor-Angar commented 3 years ago

Что то мы про разное говорим как обычно. Я про людей читающих код, а ты мне про то как его обрабатывают машины. 22:58, 25 сентября 2020 г., dosinabox notifications@github.com:

тогда тебе надо и B_XardasGivesProofForPyrokar показать сразу под DIA_Xardas_PYROWILLNICHT

Так и есть: func void DIA_Xardas_PYROWILLNICHT_Info() { B_XardasGivesProofForPyrokar(); };

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe. -- Отправлено из мобильного приложения Яндекс.Почты

Kor-Angar commented 3 years ago

вообщем меня всё это в голову не помещается и я для себя вынес диалоги Ксардаса в отдельный файл https://github.com/Kor-Angar/G2_NotR_Kor_Angar/blob/master/PrjGOTHIC/Story/Dialoge/DIA_NONE_100_Xardas_3_Kapitel.d

попробовал такую конструкцию, записи в дневник почему то не добавились :-1:

    if (Npc_HasItems(other,ItMi_InnosEye_Broken_Mis) || (MIS_SCKnowsInnosEyeIsBroken == TRUE))
    {
        B_LogEntry(TOPIC_INNOSEYE,"Врагу теперь известно, что я ищу Глаз Инноса.");
        // нельзя использовать
        //Info_AddChoice(DIA_Xardas_DMTSINDDA,"Глаз Инноса был уничтожен",DIA_Xardas_INNOSEYEBROKEN_Info);
    }
    else
    {   
        B_LogEntry(TOPIC_INNOSEYE,"Врагу теперь известно, что я ищу Глаз Инноса. Мне нужно побыстрее найти его, пока еще не слишком поздно.");
        Info_AddChoice(DIA_Xardas_DMTSINDDA,"Я, наконец, добыл доказательство, которое требовал от меня лорд Хаген.",DIA_Xardas_DMTSINDDA_Beweis);
    };
Kor-Angar commented 3 years ago

попробовал такую конструкцию, записи в дневник почему то не добавились -1

ан-нет. добавилось :-)

Kor-Angar commented 3 years ago

Надо наверное после

AI_Output(self,other,"DIA_Xardas_RITUALREQUEST_14_06"); //Я буду помогать в этом ритуале только когда буду уверен, что ты готов к встрече с драконами.

делать запись в дневник. так как сейчас если диалог будет прощёлкан непонятно почему ксардас не ушёл в круг солнца. например: Ксардас будет участвовать в ритуале в Круге Солнца, когда я буду готов к встрече с драконами.

и/или в диалог DIA_Xardas_BEREIT_Info добавить вариант

    AI_Output(self,other,"DIA_Xardas_WARUMNICHTJETZT_wastun_14_01");    //Ты все еще слишком слаб, чтобы сражаться с драконами. С этим снаряжением у тебя нет никаких шансов.
    AI_Output(self,other,"DIA_Xardas_WARUMNICHTJETZT_wastun_14_02");    //Не возвращайся ко мне, пока не будешь полностью готов. Вот тогда я пойду, и присоединюсь к Ватрасу.

но в таком случае дополнительно надо будет проверки менять в диалогах с Npc_KnowsInfo(other,DIA_Xardas_RITUALREQUEST) на (Xardas_RITUALREQUEST == TRUE)

В одном видео: длинная версия и короткая версия https://www.youtube.com/watch?v=Xm_GpUdNbnE&feature=youtu.be

dosinabox commented 3 years ago

делать запись в дневник. так как сейчас если диалог будет прощёлкан непонятно почему ксардас не ушёл в круг солнца.

Добавлено:

AI_Output(self,other,"DIA_Xardas_RITUALREQUEST_14_06"); //Я буду помогать в этом ритуале только когда буду уверен, что ты готов к встрече с драконами.
B_LogEntry(TOPIC_INNOSEYE,"Ксардас считает, что я еще не готов к встрече с драконами.");