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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

Готика 2: НВ Неофициальное обновление для Г2 НВ

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.454
Баллы
485
  • Первое сообщение
  • #1
Неофициальное обновление для игры "Готика 2: Ночь Ворона" представляет собой модификацию, направленную на исправление многочисленных ошибок и недоработок игры различной степени критичности. Данное обновление не включает новые квесты или глобальные изменения баланса и рекомендуется всем, кто хочет играть в Г2НВ без багов.
Разработка обновления ведется с 2005 года и по сегодняшний день. Камрад Efectivo (aka Нефариус) русифицировал патч от Fizzban и внес несколько дополнительных исправлений (так что получилась не русификация, а самостоятельный продукт на его основе).
В неофициальном обновлении камрад Dimus значительно расширил список исправлений и добавил некоторые улучшения. Дальнейшая работа над обновлением продолжена силами D36.
Также в данную сборку включены исправленные миры от Kvincius (Рудниковая долина, Яркендар, Хоринис и Ирдорат), исправленные шрифты от N1kX, неофициальное исправление русской озвучки от Dimus и полезные плагины для Union от Slavemaster (zBugFixes, zMiscUtils, zPicklockAnis, zTorchControl и другие).

Текущая версия:
30 от 02.09.2024

Ссылки:
Установщик модификации (76.9 МБ);
Версия для Мастерской Steam;
Исходники скриптов и архив релизов.

Установка:
Запустить установщик обновления, указать каталог с установленной игрой и выбрать набор устанавливаемых компонентов.
Внимание: Для того, чтобы все изменения вступили в силу, после установки обновления нужно начать новую игру!

Загрузка текста...

Удаление:
Удалить данное обновление можно через раздел "Программы и компоненты" в панели управления или запустив исполняемый файл G2a_NR_ScriptPatch_v30_uninstall.exe в каталоге с установленной игрой.

Примечания:
1. Для предотвращения возможных конфликтов с различными модами обновление устанавливается в формате модификации, поэтому для её работы необходимо наличие мод-стартера Player Kit. Также настоятельно рекомендуется установить последнюю версию Union;
2. Каждая версия неофициального обновления запускается через GothicStarter.exe отдельно и использует собственные папки сохранений. Удаление разных версий из панели управления также происходит раздельно;
3. Для установки игры не рекомендуется использовать папку Program Files, так как в ней может быть заблокирована работа стартера модов;
3. При возникновении проблем с запуском встроенных плагинов рекомендуется скачать и установить этот набор vcredist.

Начало новой игры обязательно. Не поддерживаются сохранения, сделанные в оригинале, в любом другом моде или в любой предшествующей версии неофициального обновления. Игнорирование данного предупреждения может привести к непредсказуемым последствиям: от невозможности продвижения по сюжету до вылетов.
Для тестирования доступна рабочая сборка очередной версии обновления с дополнительными исправлениями. Подробности здесь.
 
Последнее редактирование:

Jonano

Участник форума
Регистрация
7 Июл 2016
Сообщения
438
Благодарности
107
Баллы
200
Большое спасибо за ваш титанический труд!
У меня такой вопрос, недавно начал проходить Готику с патчем v21 от 01.05. Сейчас в первой главе, недавно стал магом. Мне так же желательно начать новую игру, если ставить новый патч v22?
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.454
Баллы
485
а если набить морду каждому из мастеров, то они.. будут голосовать за гг?
А какое ожидаемое поведение? Как должно быть?

Мне так же желательно начать новую игру, если ставить новый патч v22?
Если уже стал магом, то не парься и продолжай. Для исследовательских целей - желательно, если не жалко потраченного времени.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Кстати, не хочешь исправить один Event? Исправляя мод, заметил, что event в храме аданоса имеет не правильные названия функции, из-за чего они не срабатывают.
Это про комнаты, где лежат каменные таблички, перед Радамесом. Хотя, мне кажется, что разрабы специально убрали их, чтобы был эффект неожиданности, а так, открыв сундук в одной комнате, в другой каменные стражи сразу нападут, хотя в небольшом количестве (В одной 2, в другой 3). Тогда стоит ли править?


Спасибо за поправку ElderGamer, тогда хотя бы использовать правильные аргументы в функциях
Daedalus:
var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_01()
{
    if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime == FALSE)
    {
        //новое
        var C_NPC StoneGuardianAdanos_01;
        var C_NPC StoneGuardianAdanos_02;
        var C_NPC StoneGuardianAdanos_03;
        var C_NPC StoneGuardianAdanos_04;
        StoneGuardianAdanos_01 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_01);
        StoneGuardianAdanos_02 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_02);
        StoneGuardianAdanos_03 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_03);
        StoneGuardianAdanos_04 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_04);
        //конец
        /*b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_01);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_02);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_03);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_04);*/
        b_awake_stoneguardian(StoneGuardianAdanos_01);
        b_awake_stoneguardian(StoneGuardianAdanos_02);
        b_awake_stoneguardian(StoneGuardianAdanos_03);
        b_awake_stoneguardian(StoneGuardianAdanos_04);
        //if((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_01) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_02) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_03) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_04) == FALSE))
        if((Npc_IsDead(StoneGuardianAdanos_01) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_02) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_03) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_04) == FALSE))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime = TRUE;
    };
};

var int OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime;

//func void open_adanostempelchest_01_func_s1()
[S]func void OPEN_ADANOSTEMPELCHEST_01_FUNC()[/S]
{
    if(OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime == FALSE)
    {
        //новое
        var C_NPC StoneGuardianAdanos_05C;
        var C_NPC StoneGuardianAdanos_05E;
        StoneGuardianAdanos_05C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05C);
        StoneGuardianAdanos_05E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05E);
        //конец
        /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05C);
        b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05E);
        if((Npc_IsDead(Stoneguardian_TREASUREPITS_05C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_05E) == FALSE))*/
        b_awake_stoneguardian(StoneGuardianAdanos_05C);
        b_awake_stoneguardian(StoneGuardianAdanos_05E);
        if((Npc_IsDead(StoneGuardianAdanos_05C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05E) == FALSE))
        {
            Snd_Play("THRILLJINGLE_03");
        };
        OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime = TRUE;
    };
};

var int OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime;

//func void open_adanostempelchest_02_func_s1()
[S]func void OPEN_ADANOSTEMPELCHEST_02_FUNC()[/S]
{
    if(OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
    {
        //новое
        var C_NPC StoneGuardianAdanos_09A;
        var C_NPC StoneGuardianAdanos_09C;
        var C_NPC StoneGuardianAdanos_09E;
        StoneGuardianAdanos_09A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09A);
        StoneGuardianAdanos_09C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09C);
        StoneGuardianAdanos_09E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09E);
        //конец
        /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09A);
        b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09C);
        b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09E);
        if((Npc_IsDead(Stoneguardian_TREASUREPITS_09A) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09E) == FALSE))*/
        b_awake_stoneguardian(StoneGuardianAdanos_09A);
        b_awake_stoneguardian(StoneGuardianAdanos_09C);
        b_awake_stoneguardian(StoneGuardianAdanos_09E);
        if((Npc_IsDead(StoneGuardianAdanos_09A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09E) == FALSE))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
    };
};

var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_02()
{
    if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime == FALSE)
    {
        //новое
        var C_NPC StoneGuardianAdanos_14A;
        var C_NPC StoneGuardianAdanos_14D;
        var C_NPC StoneGuardianAdanos_14F;
        StoneGuardianAdanos_14A = Hlp_GetNpc(Stoneguardian_RHADEMES_14A);
        StoneGuardianAdanos_14D = Hlp_GetNpc(Stoneguardian_RHADEMES_14D);
        StoneGuardianAdanos_14F = Hlp_GetNpc(Stoneguardian_RHADEMES_14F);
        //конец
        /*b_awake_stoneguardian(Stoneguardian_RHADEMES_14A);
        b_awake_stoneguardian(Stoneguardian_RHADEMES_14D);
        b_awake_stoneguardian(Stoneguardian_RHADEMES_14F);*/
        b_awake_stoneguardian(StoneGuardianAdanos_14A);
        b_awake_stoneguardian(StoneGuardianAdanos_14D);
        b_awake_stoneguardian(StoneGuardianAdanos_14F);
        SC_TookRhademesTrap = TRUE;
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime = TRUE;
    };
};

var int EVT_RAVEN_AWAKE_FUNC_OneTime;

func void evt_raven_awake_func()
{
};
1560929159927.png
1560929192523.png1560929267787.png
1560929239505.png1560929252482.png
 
Последнее редактирование:

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.576
Благодарности
4.171
Баллы
915
Похоже на то, что при создании триггеров событий в зенах и их обработке на уровне скриптов Daedalus разработчики допускали ошибки в названиях этих точек, из-за чего в функциях обработки событий в храме Аданоса было добавлено окончание "_s1", которое блокирует активацию каменных стражей при открытии этих сундуков. Лично я считаю, что стражи должны враждебно реагировать на все попытки не принадлежащих к определённой касте Яркендара чужаков проникнуть в запретную зону или поживиться за счёт содержимого сундуков. Потому что ГГ может обмануть только духа Куарходрона, сказав ему, что является представителем касты стражей мёртвых. Неизвестно, как Ворон смог обмануть верховного жреца Кардимона, чтобы получить от него информацию, как попасть в храм Аданоса. Единственное, что ГГ узнал от Кримсона, что для вызова Кардимона Ворон использовал заклинание Белиара: "KHARDIMON FATAGN SCHATAR FATAGN BELIAR.".
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
разработчики допускали ошибки в названиях этих точек, из-за чего в функциях обработки событий в храме Аданоса было добавлено окончание "_s1"
Тут всё правильно. Если в свойствах сундука прописано название функции ХХХ, то при открытии крышки сундука (состояние S1) будет вызываться скриптовая функция ХХХ_S1, а при закрытии крышки (состояние S0) - функция ХХХ_S0.
 

Jonano

Участник форума
Регистрация
7 Июл 2016
Сообщения
438
Благодарности
107
Баллы
200
Нашёл пару нелогичных ситуаций.
Кардиффа в Хоринисе можно спросить "Как выглядел этот парень" (про Атиллу) даже несмотря на то, что Атилла давно уже мёртв.
Поговорил с Хуаном в пещере в Яркендаре, после разговора он с напарником напал. Я отбежал и натравил на них трёх скелетов гоблинов. Бандиты с ними расправились и со словами "Ещё одна тварь мертва" спокойно пошли обратно в пещеру, я им был уже не интересен. Я добил бандита, при этом Хуану было всё-равно. А дальше я уже и с Хуаном расправился..
 

Paladdin

Участник форума
Регистрация
20 Дек 2017
Сообщения
172
Благодарности
66
Баллы
175
С прохождения накопилось несколько заметок, вот нашел время отписаться.
Играл на майской версии, не обновляясь, поэтому, если что-то уже было исправлено, извиняюсь.

1. Торбен начинает учить взлому за 200 золота, говоря, что ГГ хороший человек и заплатил долг Маттео, даже если побить Гритту и отобрать золото у нее. Может стоит делать это доступным только при мирном решении (шантаж или заплатить за нее).
2. Фраза "Я хочу присоединиться к наемникам..." пропадает после первого раза у Рода, но периодически появляется снова с записями в дневник. Возможно, после смены дня, не понял от чего.
3. В дневнике по квесту Лобарта несколько довольно однотипных записей. Может стоит немного откорректировать вторую?
Gothic2 2019-05-05 14-33-26-93.jpg
4. Торбен довольно часто тупит у бревна. Беннет часто застревает в кадушке.
Gothic2 2019-05-10 11-11-49-18.jpgGothic2 2019-05-21 12-47-49-41.jpg
5. Вещи, полученные из кладов, и некоторые драконьи яйца висят в воздухе.
Gothic2 2019-05-20 09-55-53-19.jpgGothic2 2019-05-20 09-57-33-88.jpgGothic2 2019-05-24 11-02-35-94.jpgGothic2 2019-06-15 16-08-07-22.jpg
6. После убийства Ворона и ролика пропала музыка.
7. Не было звука монет при карманной краже у Джарвиса.
8. Если сказать Эстебану "Давай сюда камень сейчас же", то телохранители сразу нападают, не давая даже дослушать разговор.
9. У Боспера накладываются записи о шкурах волка и ледяного волка.
Gothic2 2019-06-15 10-00-04-23.jpg
10. У наемника Дара генерируются косяки довольно в большом количестве. Если его побить, в инвентаре может быть несколько десятков.
11. Фраза у Лестера "Ты не очень-то хорошо выглядишь" и его ответ о том, что на него нападают ящеры, появляется еще в 3 главе по возвращении из колонии. Тогда я не очень понимал о чем он. Но позже в пятой (возможно даже 4) главе, я понял к чему относится эта фраза.
Gothic2 2019-06-15 09-27-06-62.jpgGothic2 2019-06-15 09-26-03-73.jpg
12. Барток говорит эту фразу даже если отказаться идти с ним дальше в лес.
Gothic2 2019-05-14 15-58-48-97.jpg
13. Джарвис и Корд не могут поделить кровать ночью.
Gothic2 2019-05-19 14-29-25-30.jpgGothic2 2019-05-19 14-29-28-07.jpgGothic2 2019-05-19 14-30-32-90.jpg
14. Может стоит как-то проще назвать некоторых стражников, если это возможно. Такие есть еще в замке рудниковой долины и лагере бандитов в Яркендаре.
Gothic2 2019-05-16 16-00-54-91.jpg
15. Немного не помещается в окно субтитров, хотя бывают субтитры и длиннее.
Gothic2 2019-05-23 11-50-15-58.jpg
16. Вокруг мракорисов можно красться, обчищать сундуки, вещи и т.д. Но вот долбить клад это явно слишком.
Gothic2 2019-05-24 11-24-39-32.jpg
17. Скип. Фраза явно должна быть одноразовой после сдачи ему грога, но она повторяется бесконечно.
Gothic2 2019-05-28 19-09-12-71.jpgGothic2 2019-05-28 19-09-15-00.jpg
18. Фраза "Ты дашь мне что-нибудь поесть у Хильды" не произносится ГГ, когда она начинает отказывать.
Gothic2 2019-05-28 19-33-24-38.jpgGothic2 2019-05-28 19-33-26-00.jpg
19. У некоторых сундуков очень заметно, что нет дна.
Gothic2 2019-05-22 19-54-22-27.jpg
20. После 100 дней некорректно отображается день в дневнике, не помещается. 100, 102,103, 120, 130 и т.д. не отображаются
Gothic2 2019-06-12 17-53-28-99.jpg
21. Не знаю, должен ли Удар забирать арбалет Сенграта?
22. Алхимические столы в монастыре не выделяются с названием.
Gothic2 2019-06-16 09-18-06-84.jpgGothic2 2019-06-16 09-18-46-55.jpg
23. Рамон и стражник в лагере бандитов не реагируют, если ГГ не в доспехах бандитов.
Gothic2 2019-06-16 19-22-36-88.jpgGothic2 2019-06-16 19-28-53-05.jpg
24. Можно ли у убитых скриптами NPC либо делать оружие снятым, либо вообще, чтобы его не было.?
Gothic2 2019-05-23 14-35-26-85.jpgGothic2 2019-06-12 13-40-58-24.jpgGothic2 2019-06-17 19-46-35-52.jpg
25. Квест "Лакей судьи" у наемников.
- Беглецы не атакуют вместе, если напасть на одного из них, зато один из них кидается, если напасть на стоящего в той же пещере Корнелиуса.
- В таверне Рухар единственный кто вступается за беглецов, остальные атакуют, если добить одного из беглецов.
- Беглецы в пещере по пути к башне Ксардаса умирают без добивания, в таверне и у Онара - требуют добивания. Может должно быть везде одинаково?
26. Если драться с наемниками, то иногда Ли начинает обвинять ГГ. Иногда нет за тех же наемников, от чего зависит, не понял.
Gothic2 2019-06-11 17-54-10-19.jpgGothic2 2019-06-11 17-54-13-47.jpg
27. Скорее всего требуются правки мира, но напишу тут. Пещера, где проводятся испытания магов, очень проблемная. Даже, когда идешь по нижнему ярусу, сквозь стенки агрятся ползуны и некоторые застревают.
Gothic2 2019-05-20 19-57-24-08.jpg
28. Яркендар. Библиотека. Какая-то дырочка все время бросается в глаза.
Gothic2 2019-05-24 14-31-09-53.jpg
29. Эта фраза у Ли немного нелогична после того, как приглашаем его в команду. На скрине плохо видно, я про фразу "Как дела на ферме?"
Gothic2 2019-06-19 18-32-57-56.jpg
30. Получил вот такой баг на Ирдорате.
Gothic2 2019-06-19 18-42-56-10.jpgGothic2 2019-06-19 18-43-14-64.jpgGothic2 2019-06-19 18-43-18-43.jpgGothic2 2019-06-19 18-43-20-41.jpgGothic2 2019-06-19 18-50-43-24.jpgGothic2 2019-06-19 18-50-58-76.jpgGothic2 2019-06-19 18-50-59-63.jpg
Скорее всего связано с тем, что превращался в овцу.
31. Наверное это не исправить, но напишу. Не запоминается сохранением состояние факелов / света. Насколько я помню, даже в первой Готике можно было загрузиться с факелом в руках, тут же они просто пропадают

Есть еще пару предложений:
1. Сделайте, чтобы Мартин и Фернандо забирали в качестве улик только одну бандитскую шпагу. А то приходится бегать выкладывать в сундук.
2. Телепорт к кругу солнца появляется в продаже у Горакса довольно поздно, уже после восстановления глаза Инноса, может сделать его доступным в промежутке как ГГ находит поврежденный глаз у ищущих и до освящения его магами?
3. Есть предложение сделать все ключи одноразовыми. Чтобы они исчезали после использования и не захламляли инвентарь. Тем более вскрытый ключом сундук / дверь все-равно потом уже считается открытым, а так как-будто ключ остается в замке. Не нужно будет выкидывать / выкладывать их. (Если не ошибаюсь, так было в Возвращении).
4. Может стоит переносить Атиллу в лагерь воров, например, после выполнения испытания от Кассии с кольцом. Чтобы он не терся до конца игры в порту.
 
Последнее редактирование:

Raswen

Гражданин Хориниса
Регистрация
18 Фев 2014
Сообщения
1.352
Благодарности
784
Баллы
260
Не плохо ты так всё подметил, заметил :).
С ключами действительно не удобно, иногда не помнишь юзал ли ты ключ уже... И он продолжает дальше мешаться в инв.
Сундуки наверное просто чуть ниже текстур земли опущены, отсюда и дно пробитое.
Мне тоже нравится идея с ворами, что бы они возвращались к себе на базу, для атмосферы.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Мне кажется, что овца вообще не должна пытаться давать сдачи, поэтому думаю, что надо поправить в ее отношениях
Daedalus:
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SEPERATOR_HUM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_DMT);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_MEATBUG);
    //B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SHEEP);
    //new
    B_SetMonsterAttitude(GIL_SHEEP,ATT_FRIENDLY,GIL_SHEEP);
    //end
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_GOBBO);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_GOBBO_SKELETON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SUMMONED_GOBBO_SKELETON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SCAVENGER);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_Giant_Rat);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_GIANT_BUG);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_BLOODFLY);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_WARAN);
    //B_SetMonsterAttitude(GIL_SHEEP,ATT_HOSTILE,GIL_WOLF);
    //new
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_WOLF);
    //end
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SUMMONED_WOLF);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_MINECRAWLER);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_LURKER);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SKELETON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SUMMONED_SKELETON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SKELETON_MAGE);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_ZOMBIE);
    //B_SetMonsterAttitude(GIL_SHEEP,ATT_HOSTILE,GIL_SNAPPER);
    //B_SetMonsterAttitude(GIL_SHEEP,ATT_HOSTILE,GIL_SHADOWBEAST);
    //new
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SNAPPER);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SHADOWBEAST);
    //end
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SHADOWBEAST_SKELETON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_HARPY);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_STONEGOLEM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_FIREGOLEM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_ICEGOLEM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SUMMONED_GOLEM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_DEMON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SUMMONED_DEMON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_TROLL);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SWAMPSHARK);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_DRAGON);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_MOLERAT);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_ORC);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_FRIENDLY_ORC);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_UNDEADORC);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_DRACONIAN);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_Alligator);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SWAMPGOLEM);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_Stoneguardian);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_Gargoyle);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SummonedGuardian);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_SummonedZombie);
    B_SetMonsterAttitude(GIL_SHEEP,ATT_NEUTRAL,GIL_WISP);
 

Jonano

Участник форума
Регистрация
7 Июл 2016
Сообщения
438
Благодарности
107
Баллы
200
Ещё пару мелких замечаний нашёл.
1. В Хоринисе около пирамид рядом с пещерой стоит палатка. Во время дождя внутри неё тоже идёт дождь. Хотя это можно связать с ветхостью палатки.
2. ГГ был сильно пьяный (выпил молот Лу), лёг спать до утра. На утро опьянение так и не прошло.
 

Diego1987

★★★★★★★★★★★
Администратор
Регистрация
7 Апр 2008
Сообщения
17.188
Благодарности
7.613
Баллы
1.950
2. ГГ был сильно пьяный (выпил молот Лу), лёг спать до утра. На утро опьянение так и не прошло.
А ты выпей литр водки и ляг спать, если на утро будешь абсолютно трезвым, то можешь считать этот момент в патче багом :)
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.576
Благодарности
4.171
Баллы
915
Всё правильно, в реале перепой чреват сильным похмельем даже после продолжительного сна. С другой стороны, в игре плохо проработана реализация состояния алкогольного или наркотического опьянения, в первую очередь слишком мало анимаций, из-за чего пьяного героя или персонажа перестаёт "штормить" после перехода к анимациям, которых нет в оверлее опьянения (HumanS_Drunken.mds), например, ходьба и бег с вытащенным оружием или активированным заклинанием. Поэтому сейчас наиболее простым решением при выходе из состояния сна будет отмена оверлея опьянения.
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.454
Баллы
485
Спасибо за поправку ElderGamer, тогда хотя бы использовать правильные аргументы в функциях
Как оказалось, это уже было полностью исправлено в прошлых версиях. Интересно, что в комнатах с сундуками пробуждаются не все присутствующие каменные стражи, а только три из шести. На ошибку не похоже - разработчики просто их не прописали. Поэтому я не стала увеличивать количество пробуждаемых стражей. А как считаете, должны ли пробуждаться все шесть стражей в комнатах при открытии сундука, или эти битвы будут слишком сложными? С другой стороны, и три неподвижно стоящих стража выглядят странно.
Итоговый вариант скрипта EventFunctions_AdanosTemple.d выглядит так:
Daedalus:
var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_01()
{
    if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime == FALSE)
    {
        var C_NPC StoneGuardianAdanos_01;
        var C_NPC StoneGuardianAdanos_02;
        var C_NPC StoneGuardianAdanos_03;
        var C_NPC StoneGuardianAdanos_04;
        StoneGuardianAdanos_01 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_01);
        StoneGuardianAdanos_02 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_02);
        StoneGuardianAdanos_03 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_03);
        StoneGuardianAdanos_04 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_04);
        b_awake_stoneguardian(StoneGuardianAdanos_01);
        b_awake_stoneguardian(StoneGuardianAdanos_02);
        b_awake_stoneguardian(StoneGuardianAdanos_03);
        b_awake_stoneguardian(StoneGuardianAdanos_04);
        if(!Npc_IsDead(StoneGuardianAdanos_01) || !Npc_IsDead(StoneGuardianAdanos_02) || !Npc_IsDead(StoneGuardianAdanos_03) || !Npc_IsDead(StoneGuardianAdanos_04))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime = TRUE;
    };
};


var int OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime;

func void open_adanostempelchest_01_func_s1()
{
    if(OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime == FALSE)
    {
        var C_NPC StoneGuardianAdanos_05A;
        var C_NPC StoneGuardianAdanos_05C;
        var C_NPC StoneGuardianAdanos_05E;
        StoneGuardianAdanos_05A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05A);
        StoneGuardianAdanos_05C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05C);
        StoneGuardianAdanos_05E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05E);
        b_awake_stoneguardian(StoneGuardianAdanos_05A);
        b_awake_stoneguardian(StoneGuardianAdanos_05C);
        b_awake_stoneguardian(StoneGuardianAdanos_05E);
        if(!Npc_IsDead(StoneGuardianAdanos_05A) || !Npc_IsDead(StoneGuardianAdanos_05C) || !Npc_IsDead(StoneGuardianAdanos_05E))
        {
            Snd_Play("THRILLJINGLE_03");
        };
        OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime = TRUE;
    };
};


var int OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime;

func void open_adanostempelchest_02_func_s1()
{
    if(OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
    {
        var C_NPC StoneGuardianAdanos_09A;
        var C_NPC StoneGuardianAdanos_09C;
        var C_NPC StoneGuardianAdanos_09E;
        StoneGuardianAdanos_09A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09A);
        StoneGuardianAdanos_09C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09C);
        StoneGuardianAdanos_09E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09E);
        b_awake_stoneguardian(StoneGuardianAdanos_09A);
        b_awake_stoneguardian(StoneGuardianAdanos_09C);
        b_awake_stoneguardian(StoneGuardianAdanos_09E);
        if(!Npc_IsDead(StoneGuardianAdanos_09A) || !Npc_IsDead(StoneGuardianAdanos_09C) || !Npc_IsDead(StoneGuardianAdanos_09E))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
    };
};


var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_02()
{
    if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime == FALSE)
    {
        var C_NPC StoneGuardianAdanos_14A;
        var C_NPC StoneGuardianAdanos_14B;
        var C_NPC StoneGuardianAdanos_14C;
        var C_NPC StoneGuardianAdanos_14D;
        var C_NPC StoneGuardianAdanos_14E;
        var C_NPC StoneGuardianAdanos_14F;
        StoneGuardianAdanos_14A = Hlp_GetNpc(Stoneguardian_RHADEMES_14A);
        StoneGuardianAdanos_14B = Hlp_GetNpc(Stoneguardian_RHADEMES_14B);
        StoneGuardianAdanos_14C = Hlp_GetNpc(Stoneguardian_RHADEMES_14C);
        StoneGuardianAdanos_14D = Hlp_GetNpc(Stoneguardian_RHADEMES_14D);
        StoneGuardianAdanos_14E = Hlp_GetNpc(Stoneguardian_RHADEMES_14E);
        StoneGuardianAdanos_14F = Hlp_GetNpc(Stoneguardian_RHADEMES_14F);
        b_awake_stoneguardian(StoneGuardianAdanos_14A);
        b_awake_stoneguardian(StoneGuardianAdanos_14B);
        b_awake_stoneguardian(StoneGuardianAdanos_14C);
        b_awake_stoneguardian(StoneGuardianAdanos_14D);
        b_awake_stoneguardian(StoneGuardianAdanos_14E);
        b_awake_stoneguardian(StoneGuardianAdanos_14F);
        SC_TookRhademesTrap = TRUE;
        if(!Npc_IsDead(StoneGuardianAdanos_14A) || !Npc_IsDead(StoneGuardianAdanos_14B) || !Npc_IsDead(StoneGuardianAdanos_14C) || !Npc_IsDead(StoneGuardianAdanos_14D) || !Npc_IsDead(StoneGuardianAdanos_14E) || !Npc_IsDead(StoneGuardianAdanos_14F))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime = TRUE;
    };
};


var int EVT_RAVEN_AWAKE_FUNC_OneTime;

func void evt_raven_awake_func()
{
};
Кардиффа в Хоринисе можно спросить "Как выглядел этот парень" (про Атиллу) даже несмотря на то, что Атилла давно уже мёртв.
Действительно, такая ситуация возможна, если ГГ убьет Аттилу, не поговорив с ним. Но в таком случае вопрос Кардифу не является нелогичным - ведь ГГ не поговорил с Аттилой и не знает, что именно он ищет его и что именно его имел в виду Кардиф. Пока исправлю, но давайте подумаем.

1. Торбен начинает учить взлому за 200 золота, говоря, что ГГ хороший человек и заплатил долг Маттео, даже если побить Гритту и отобрать золото у нее. Может стоит делать это доступным только при мирном решении (шантаж или заплатить за нее).
Исправлено - Маттео не назовет ГГ хорошим человеком, если Гритта была избита или отдала золото после угроз.

2. Фраза "Я хочу присоединиться к наемникам..." пропадает после первого раза у Рода, но периодически появляется снова с записями в дневник. Возможно, после смены дня, не понял от чего.
Исправлено в тестовой сборке. Диалог появлялся снова после загрузки сохранения.

5. Вещи, полученные из кладов, и некоторые драконьи яйца висят в воздухе.
Неисправимо - так вставляются предметы в мир. Где-то можно опустить соответствующие точки, но поможет слабо и можно переусердствовать так, что предметы будут вставлены слишком низко (под землей).

6. После убийства Ворона и ролика пропала музыка.
Музыка всегда пропадает после проигрывания видеороликов. Точнее, пропадает перед началом, чтобы не мешать аудиоряду ролика, но потом не возобновляется до пересечения триггера с новой музыкальной зоной.

12. Барток говорит эту фразу даже если отказаться идти с ним дальше в лес.
18. Фраза "Ты дашь мне что-нибудь поесть у Хильды" не произносится ГГ, когда она начинает отказывать.
20. После 100 дней некорректно отображается день в дневнике, не помещается. 100, 102,103, 120, 130 и т.д. не отображаются
29. Эта фраза у Ли немного нелогична после того, как приглашаем его в команду. На скрине плохо видно, я про фразу "Как дела на ферме?"
Исправлено.

19. У некоторых сундуков очень заметно, что нет дна.
Нужны многочисленные правки миров и подстраивания всех сундуков под текущий ландшафт, но, возможно, я просто сделаю новые модели сундуков, у которых внутри будет не пустота, а какие-нибудь мешки/веревки/коробки. Что-то, что придаст им ощущение наполненности. Если руки дойдут. Заодно можно будет улучшить ужасные кривые замки...

21. Не знаю, должен ли Удар забирать арбалет Сенграта?
И я не знаю.

23. Рамон и стражник в лагере бандитов не реагируют, если ГГ не в доспехах бандитов.
Сделано специально (еще в оригинале), чтобы стражники не уходили со своих постов и не переставали останавливать ГГ диалогами. Исправлять не буду, потому что тогда их можно будет легко выманивать и свободно проходить в лагерь.

24. Можно ли у убитых скриптами NPC либо делать оружие снятым, либо вообще, чтобы его не было.?
Делаю выборочно. Это легко сделать, если персонаж вставляется в мир уже мертвым (например, Ланс). Сложно и ненадежно - если скриптом убивается живой.

30. Получил вот такой баг на Ирдорате.
К сожалению, пока я не знаю как исправить такую возможную ситуацию. Да, если ГГ попадет на Ирдорат в виде овцы, то игра посчитает, что у него нет Глаза Инноса (и вставит в мир мешочек от Ксардаса) и что у него слишком мало ловкости (и вставит в мир зелье ловкости).

31. Наверное это не исправить, но напишу. Не запоминается сохранением состояние факелов / света. Насколько я помню, даже в первой Готике можно было загрузиться с факелом в руках, тут же они просто пропадают
Неисправимо на уровне скриптов.

1. Сделайте, чтобы Мартин и Фернандо забирали в качестве улик только одну бандитскую шпагу. А то приходится бегать выкладывать в сундук.
Похоже, что отдавать нужно всё-таки все шпаги, потому что доказательством их поставок является как раз их множественное число.

2. Телепорт к кругу солнца появляется в продаже у Горакса довольно поздно, уже после восстановления глаза Инноса, может сделать его доступным в промежутке как ГГ находит поврежденный глаз у ищущих и до освящения его магами?
Да, наверное, нужно пораньше. Но если у магов уже есть технология телепортации к месту ритуала, то почему Пирокар направляется туда пешком? Может, придется делать катсцену с его телепортацией на глазах игрока, как это сделано с Милтеном в пещере с горой руды в мод-фиксах к Г1?

Поэтому сейчас наиболее простым решением при выходе из состояния сна будет отмена оверлея опьянения.
Да, конечно, я так и пыталась сделать, но на выходе из состояния сна всегда проигрывается анимация подъема, а отмена оверлея всегда сбрасывает текущую анимацию, из-за чего ГГ застревает в кровати.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Это легко сделать, если персонаж вставляется в мир уже мертвым (например, Ланс). Сложно и ненадежно - если скриптом убивается живой.
Если нужно убить скриптами живого непися, можно перевести его на распорядок, в котором он, попав в зону действия ИИ, достанет оружие и только после этого помрёт. Оружие будет валяться рядом с телом. Это на тот случай, если нужно создать впечатление, что непись погиб в бою. Недостаток: при определённых обстоятельствах (открытая местность, быстрый бег в сторону непися) можно увидеть, как это произойдёт.

Да, конечно, я так и пыталась сделать, но на выходе из состояния сна всегда проигрывается анимация подъема, а отмена оверлея всегда сбрасывает текущую анимацию, из-за чего ГГ застревает в кровати.
Нормально это реализовать можно, только при использовании циклической функции. Сброс оверлея нужно производить, только когда завершится взаимодействие с объектом. И это касается не только сна в кровати. Если действие оверлея заканчивается по внутридвижковому таймеру, то это может произойти в момент взаимодействия с любым объектом. С некрасивыми последствиями. Поэтому, лучше бы отказаться от временных оверлеев (ускорение, опьянение) и перевести их снятие на таймеры в циклической функции.
 

Jonano

Участник форума
Регистрация
7 Июл 2016
Сообщения
438
Благодарности
107
Баллы
200
Действительно, такая ситуация возможна, если ГГ убьет Аттилу, не поговорив с ним. Но в таком случае вопрос Кардифу не является нелогичным - ведь ГГ не поговорил с Аттилой и не знает, что именно он ищет его и что именно его имел в виду Кардиф. Пока исправлю, но давайте подумаем.
Я 100% не уверен, но я вроде разговаривал с этим Атиллой. В целом - не суть важно.
 

Paladdin

Участник форума
Регистрация
20 Дек 2017
Сообщения
172
Благодарности
66
Баллы
175
Похоже, что отдавать нужно всё-таки все шпаги, потому что доказательством их поставок является как раз их множественное число.
Во-первых, сейчас и Фернандо, и Мартину достаточно по одной шпаге. Во-вторых, по словам Мартина шпаги все-равно не являются доказательством, хоть она одна, хоть 20. Они полезны лишь в комплекте с другими доказательствами.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.576
Благодарности
4.171
Баллы
915
Как оказалось, это уже было полностью исправлено в прошлых версиях. Интересно, что в комнатах с сундуками пробуждаются не все присутствующие каменные стражи, а только три из шести. На ошибку не похоже - разработчики просто их не прописали. Поэтому я не стала увеличивать количество пробуждаемых стражей. А как считаете, должны ли пробуждаться все шесть стражей в комнатах при открытии сундука, или эти битвы будут слишком сложными? С другой стороны, и три неподвижно стоящих стража выглядят странно.
У тебя есть авторские исходники скриптов из G2 MDK? В них видно, что PB планировали пробудить всех каменных стражей, но в итоге активировали только часть этих существ. Возможно, они посчитали, что игрок не сможет выжить в бою со всеми активными стражами.
Daedalus:
//EVENTFUNCTIONS_ADANOSTEMPLE
var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime;                                                      
func void ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01 ()
{
    if (ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime == FALSE)
    {
        B_AWAKE_STONEGUARDIAN (Stoneguardian_ADANOSTEMPELENTRANCE_01);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_ADANOSTEMPELENTRANCE_02);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_ADANOSTEMPELENTRANCE_03);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_ADANOSTEMPELENTRANCE_04);
   
        if ((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_01))== FALSE)
        || ((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_02))== FALSE)
        || ((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_03))== FALSE)
        || ((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_04))== FALSE)
        {
            Snd_Play ("THRILLJINGLE_02");
        };
   
        B_KillNpc (BDT_10400_Addon_DeadBandit);
        B_KillNpc (BDT_10401_Addon_DeadBandit);   
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime = TRUE;
    };
};
var int OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime;
func void OPEN_ADANOSTEMPELCHEST_01_FUNC_S1 ()
{
    if (OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime == FALSE)
    {
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05A);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05B);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05C);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05D);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05E);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_05F);
   
        if ((Npc_IsDead(Stoneguardian_TREASUREPITS_05C))== FALSE)
        || ((Npc_IsDead(Stoneguardian_TREASUREPITS_05E))== FALSE)
        {
            Snd_Play ("THRILLJINGLE_03");
        };

        OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime = TRUE;
    };
};
var int OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime;
func void OPEN_ADANOSTEMPELCHEST_02_FUNC_S1 ()
{
    if (OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
    {
        B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09A);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09B);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09C);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09D);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09E);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_TREASUREPITS_09F);
       
        if ((Npc_IsDead(Stoneguardian_TREASUREPITS_09A))== FALSE)
        || ((Npc_IsDead(Stoneguardian_TREASUREPITS_09C))== FALSE)
        || ((Npc_IsDead(Stoneguardian_TREASUREPITS_09E))== FALSE)
        {
            Snd_Play ("THRILLJINGLE_02");
        };

        OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
    };
};
var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime;
func void ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02 ()
{
    if (ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime == FALSE)
    {
        B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14A);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14B);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14C);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14D);
        //B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14E);
        B_AWAKE_STONEGUARDIAN (Stoneguardian_RHADEMES_14F);
        SC_TookRhademesTrap = TRUE;
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime = TRUE;
    };
};
var int EVT_RAVEN_AWAKE_FUNC_OneTime;
func void EVT_RAVEN_AWAKE_FUNC ()
{
    /*
    if (EVT_RAVEN_AWAKE_FUNC_OneTime == FALSE)
    {
        var C_NPC Ravn; Ravn = Hlp_GetNpc (BDT_1090_Addon_Raven);
   
        AI_StandUp  (Ravn);
        AI_TurnToNpc (Ravn,hero);
       
        B_StartOtherRoutine    (Ravn,"WaitforPlayer");
        EVT_RAVEN_AWAKE_FUNC_OneTime = TRUE;       
    };
    */
};
 

Paladdin

Участник форума
Регистрация
20 Дек 2017
Сообщения
172
Благодарности
66
Баллы
175
В них видно, что PB планировали пробудить всех каменных стражей, но в итоге активировали только часть этих существ. Возможно, они посчитали, что игрок не сможет выжить в бою со всеми активными стражами.
А нельзя сделать, чтобы во второй главе пробуждалась часть стражей. А если глава 3 и выше, то все? Для второй главы все 6 стражей действительно слишком сложны.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
А нельзя сделать, чтобы во второй главе пробуждалась часть стражей. А если глава 3 и выше, то все? Для второй главы все 6 стражей действительно слишком сложны.
Мне кажется, что даже нужно.
Daedalus:
var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_01()
{
    if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime == FALSE)
    {
        //новое
        var C_NPC StoneGuardianAdanos_01;
        var C_NPC StoneGuardianAdanos_02;
        var C_NPC StoneGuardianAdanos_03;
        var C_NPC StoneGuardianAdanos_04;
        StoneGuardianAdanos_01 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_01);
        StoneGuardianAdanos_02 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_02);
        StoneGuardianAdanos_03 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_03);
        StoneGuardianAdanos_04 = Hlp_GetNpc(Stoneguardian_ADANOSTEMPELENTRANCE_04);
        //конец
        /*b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_01);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_02);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_03);
        b_awake_stoneguardian(Stoneguardian_ADANOSTEMPELENTRANCE_04);*/
        b_awake_stoneguardian(StoneGuardianAdanos_01);
        b_awake_stoneguardian(StoneGuardianAdanos_02);
        b_awake_stoneguardian(StoneGuardianAdanos_03);
        b_awake_stoneguardian(StoneGuardianAdanos_04);
        //if((Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_01) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_02) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_03) == FALSE) || (Npc_IsDead(Stoneguardian_ADANOSTEMPELENTRANCE_04) == FALSE))
        if((Npc_IsDead(StoneGuardianAdanos_01) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_02) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_03) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_04) == FALSE))
        {
            Snd_Play("THRILLJINGLE_02");
        };
        ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_01_OneTime = TRUE;
    };
};

var int OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime;

func void open_adanostempelchest_01_func_s1()
{
    //new
    var C_NPC StoneGuardianAdanos_05A;
    var C_NPC StoneGuardianAdanos_05B;
    var C_NPC StoneGuardianAdanos_05C;
    var C_NPC StoneGuardianAdanos_05D;
    var C_NPC StoneGuardianAdanos_05E;
    var C_NPC StoneGuardianAdanos_05F;
    StoneGuardianAdanos_05A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05A);
    StoneGuardianAdanos_05B = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05B);
    StoneGuardianAdanos_05C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05C);
    StoneGuardianAdanos_05D = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05D);
    StoneGuardianAdanos_05E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05E);
    StoneGuardianAdanos_05F = Hlp_GetNpc(Stoneguardian_TREASUREPITS_05F);
    //end
    //new
    if(kapitel == 2)
    {
        if(OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05C);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05E);
            if((Npc_IsDead(Stoneguardian_TREASUREPITS_05C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_05E) == FALSE))*/
            b_awake_stoneguardian(StoneGuardianAdanos_05C);
            b_awake_stoneguardian(StoneGuardianAdanos_05E);
            if((Npc_IsDead(StoneGuardianAdanos_05C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05E) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05A) == FALSE))
            {
                Snd_Play("THRILLJINGLE_03");
            };
            OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime = TRUE;
        };
    }
    else
    {
        if(OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05C);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_05E);
            if((Npc_IsDead(Stoneguardian_TREASUREPITS_05C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_05E) == FALSE))*/
            b_awake_stoneguardian(StoneGuardianAdanos_05C);
            b_awake_stoneguardian(StoneGuardianAdanos_05E);
            if((Npc_IsDead(StoneGuardianAdanos_05A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05B) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05D) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05E) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_05F) == FALSE))
            {
                Snd_Play("THRILLJINGLE_03");
            };
            OPEN_ADANOSTEMPELCHEST_01_FUNC_OneTime = TRUE;
        };
    };
};

var int OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime;

func void open_adanostempelchest_02_func_s1()
{
    //new
    var C_NPC StoneGuardianAdanos_09A;
    var C_NPC StoneGuardianAdanos_09B;
    var C_NPC StoneGuardianAdanos_09C;
    var C_NPC StoneGuardianAdanos_09D;
    var C_NPC StoneGuardianAdanos_09E;
    var C_NPC StoneGuardianAdanos_09F;
    StoneGuardianAdanos_09A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09A);
    StoneGuardianAdanos_09B = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09B);
    StoneGuardianAdanos_09C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09C);
    StoneGuardianAdanos_09D = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09D);
    StoneGuardianAdanos_09E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09E);
    StoneGuardianAdanos_09F = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09F);
    //end
    //new
    if(KAPITEL == 2)
    {
        if(OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09A);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09C);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09E);
            if((Npc_IsDead(Stoneguardian_TREASUREPITS_09A) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09E) == FALSE))*/
            b_awake_stoneguardian(StoneGuardianAdanos_09A);
            b_awake_stoneguardian(StoneGuardianAdanos_09C);
            b_awake_stoneguardian(StoneGuardianAdanos_09E);
            if((Npc_IsDead(StoneGuardianAdanos_09A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09E) == FALSE))
            {
                Snd_Play("THRILLJINGLE_02");
            };
            OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
        };
    }
    else
    {
        if(OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09A);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09C);
            b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09E);
            if((Npc_IsDead(Stoneguardian_TREASUREPITS_09A) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09E) == FALSE))*/
            b_awake_stoneguardian(StoneGuardianAdanos_09A);
            b_awake_stoneguardian(StoneGuardianAdanos_09C);
            b_awake_stoneguardian(StoneGuardianAdanos_09E);
            if((Npc_IsDead(StoneGuardianAdanos_09A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09B) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09D) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09E) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09F) == FALSE))
            {
                Snd_Play("THRILLJINGLE_02");
            };
            OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
        };
    };
};

var int ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime;

func void adw_adanostempel_stonegrd_trigg_func_02()
{
    //new
    var C_NPC StoneGuardianAdanos_14A;
    var C_NPC StoneGuardianAdanos_14B;
    var C_NPC StoneGuardianAdanos_14C;
    var C_NPC StoneGuardianAdanos_14D;
    var C_NPC StoneGuardianAdanos_14E;
    var C_NPC StoneGuardianAdanos_14F;
    StoneGuardianAdanos_14A = Hlp_GetNpc(Stoneguardian_RHADEMES_14A);
    StoneGuardianAdanos_14B = Hlp_GetNpc(Stoneguardian_RHADEMES_14B);
    StoneGuardianAdanos_14C = Hlp_GetNpc(Stoneguardian_RHADEMES_14C);
    StoneGuardianAdanos_14D = Hlp_GetNpc(Stoneguardian_RHADEMES_14D);
    StoneGuardianAdanos_14E = Hlp_GetNpc(Stoneguardian_RHADEMES_14E);
    StoneGuardianAdanos_14F = Hlp_GetNpc(Stoneguardian_RHADEMES_14F);
    //end
    //new
    if(KAPITEL == 2)
    {
        if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_RHADEMES_14A);
            b_awake_stoneguardian(Stoneguardian_RHADEMES_14D);
            b_awake_stoneguardian(Stoneguardian_RHADEMES_14F);*/
            b_awake_stoneguardian(StoneGuardianAdanos_14A);
            b_awake_stoneguardian(StoneGuardianAdanos_14D);
            b_awake_stoneguardian(StoneGuardianAdanos_14F);
            SC_TookRhademesTrap = TRUE;
            ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime = TRUE;
        };
    }
    else
    {
        if(ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime == FALSE)
        {
            /*b_awake_stoneguardian(Stoneguardian_RHADEMES_14A);
            b_awake_stoneguardian(Stoneguardian_RHADEMES_14D);
            b_awake_stoneguardian(Stoneguardian_RHADEMES_14F);*/
            b_awake_stoneguardian(StoneGuardianAdanos_14A);
            b_awake_stoneguardian(StoneGuardianAdanos_14B);
            b_awake_stoneguardian(StoneGuardianAdanos_14C);
            b_awake_stoneguardian(StoneGuardianAdanos_14D);
            b_awake_stoneguardian(StoneGuardianAdanos_14E);
            b_awake_stoneguardian(StoneGuardianAdanos_14F);
            SC_TookRhademesTrap = TRUE;
            ADW_ADANOSTEMPEL_STONEGRD_TRIGG_FUNC_02_OneTime = TRUE;
        };
    };
};

var int EVT_RAVEN_AWAKE_FUNC_OneTime;

func void evt_raven_awake_func()
{
};
Только не забывай, что даже если пробудятся трое, другие все равно нападут на тебя, зависит от кучности.
 
Последнее редактирование:

Jonano

Участник форума
Регистрация
7 Июл 2016
Сообщения
438
Благодарности
107
Баллы
200
Баг: выучил шестой круг магии. После этого отправился в Яркендар и в диалоге с Сатурасом увидел пункт "Следующий круг магии (0 очков)". Сейв прикладывать нужно?
 
Сверху Снизу