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

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

    Ссылка на конкурсную тему - тык

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

D36


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

Текущая версия:
29 от 14.08.2023

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

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

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

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

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

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
Тогда твой сэйв - в студию. Меня в нём интересует значение указанной выше переменной.
 

Kvincius

Участник форума
Регистрация
6 Ноя 2012
Сообщения
257
Благодарности
234
Баллы
210
Хотелось бы что-то сделать с вот этими ребятами:
Screenshot_4.jpg Screenshot_5.jpg Screenshot_6.jpg Screenshot_7.jpg
Фрипоинты вроде есть, но они похоже их не используют.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
На самом деле они используют фрипойнты при условии, что носящий доспехи бандитов ГГ обратится к ним - тогда непись встаёт и пытается занять ближайший свободный FP_CAMPFIRE - смотри тестовый сэйв во вложении.
 

Вложения

  • savegame3.rar
    2 MB · Просмотры: 39

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.336
Благодарности
3.181
Баллы
525
На самом деле они используют фрипойнты
Состояние ZS_Bandit написано криво, как и многие другие состояния. Нужно переписывать его, чтобы бандюганы нормально занимали отведённые для них места.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
Тогда пожалуйста покажи, что нужно сделать с этим состоянием, чтобы бандюги нормально занимали отведённые для них места.
ZS_Bandit.d:
Код:
func void ZS_Bandit()
{
    Perception_Set_Normal();
    B_ResetAll(self);
    AI_SetWalkMode(self,NPC_WALK);
    if(Npc_GetDistToWP(self,self.wp) > TA_DIST_SELFWP_MAX)
    {
        AI_GotoWP(self,self.wp);
    };
    self.aivar[AIV_TAPOSITION] = NOTINPOS;
};

func int ZS_Bandit_Loop()
{
    var int random;
    if(self.aivar[AIV_TAPOSITION] == NOTINPOS)
    {
        if(!Npc_IsOnFP(self,"CAMPFIRE") && Wld_IsFPAvailable(self,"CAMPFIRE"))
        {
            AI_GotoFP(self,"CAMPFIRE");
            AI_AlignToFP(self);
            AI_PlayAniBS(self,"T_STAND_2_SIT",BS_SIT);
        }
        else if(!Npc_IsOnFP(self,"STAND") && Wld_IsFPAvailable(self,"STAND"))
        {
            AI_GotoFP(self,"STAND");
            AI_AlignToFP(self);
            AI_PlayAni(self,"T_STAND_2_HGUARD");
        }
        else
        {
            AI_AlignToWP(self);
            AI_PlayAni(self,"T_STAND_2_HGUARD");
        };
        self.aivar[AIV_TAPOSITION] = ISINPOS;
    };
    if((Npc_GetStateTime(self) > 5) && (self.aivar[AIV_TAPOSITION] == ISINPOS) && !C_BodyStateContains(self,BS_SIT))
    {
        random = Hlp_Random(3);
        if(random == 0)
        {
            AI_PlayAni(self,"T_HGUARD_LOOKAROUND");
        };
        Npc_SetStateTime(self,0);
    };
    return LOOP_CONTINUE;
};

func void ZS_Bandit_End()
{
    if(C_BodyStateContains(self,BS_SIT))
    {
        AI_PlayAniBS(self,"T_SIT_2_STAND",BS_STAND);
    }
    else
    {
        AI_PlayAni(self,"T_HGUARD_2_STAND");
    };
};
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.125
Благодарности
3.218
Баллы
485
На самом деле они используют фрипойнты при условии, что носящий доспехи бандитов ГГ обратится к ним - тогда непись встаёт и пытается занять ближайший свободный FP_CAMPFIRE - смотри тестовый сэйв во вложении.
Это не условие: после разговора состояние сбрасывается и правильно проигрывается через все стадии с самого начала. А при, например, загрузке сохранения они сразу переходят в стадию loop и садятся на попы прямо там, где стоят, не заморачиваясь ходить куда-либо. Возможное исправление:
Код:
func int ZS_Bandit_Loop()
{
    var int random;
    if(self.aivar[AIV_TAPOSITION] != ISINPOS)
    {
        AI_GotoWP(self,self.wp);
...

В идеале следует вообще отказаться от использования аиваров в этом и других состояниях:
Код:
func void ZS_Bandit()
{
    Perception_Set_Normal();
    B_ResetAll(self);
    AI_SetWalkMode(self,NPC_WALK);
    if(Npc_GetDistToWP(self,self.wp) > TA_DIST_SELFWP_MAX)
    {
        AI_GotoWP(self,self.wp);
    };
};

func int ZS_Bandit_Loop()
{
    var int random;
    if(!Npc_IsOnFP(self,"CAMPFIRE") && Wld_IsFPAvailable(self,"CAMPFIRE"))
        {
            AI_GotoFP(self,"CAMPFIRE");
            AI_AlignToFP(self);
            AI_PlayAniBS(self,"T_STAND_2_SIT",BS_SIT);
        }
        else if(!Npc_IsOnFP(self,"STAND") && Wld_IsFPAvailable(self,"STAND"))
        {
            AI_GotoFP(self,"STAND");
            AI_AlignToFP(self);
            AI_PlayAni(self,"T_STAND_2_HGUARD");
        }
        else
        {
            AI_AlignToWP(self);
            AI_PlayAni(self,"T_STAND_2_HGUARD");
        };
    };
    if((Npc_GetStateTime(self) > 5) && !C_BodyStateContains(self,BS_SIT))
    {
        random = Hlp_Random(3);
        if(random == 0)
        {
            AI_PlayAni(self,"T_HGUARD_LOOKAROUND");
        };
        Npc_SetStateTime(self,0);
    };
    return LOOP_CONTINUE;
};

func void ZS_Bandit_End()
{
    if(C_BodyStateContains(self,BS_SIT))
    {
        AI_PlayAniBS(self,"T_SIT_2_STAND",BS_STAND);
    }
    else
    {
        AI_PlayAni(self,"T_HGUARD_2_STAND");
    };
};
 
Последнее редактирование:

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
@D36:
Спасибо за подсказку, теперь бандиты активно ищут свободные FP у костров, причём некоторые приходят даже с соседних WP. А те, кому не достались свободные места, садятся на попу ровно на исходной точке. Пойду проверять гопников в пещере у озера рядом с НЛ.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.336
Благодарности
3.181
Баллы
525
Тогда пожалуйста покажи, что нужно сделать с этим состоянием,
Попробуй и такой вариант. :)

ЗЫ. В Г2 не тестировал сам. В Г1 такая архитектура нормально работает.
 

Вложения

  • ZS_Bandit.d
    4,1 KB · Просмотры: 152

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
@ElderGamer:
Твой вариант отлично работает и в Г2а, поэтому я включил его в новую сборку обновления.

@heckler:
Включил в сборку твои исправленные шрифты. Также удалось разобраться, почему на твоём сэйве иногда удирали бандиты: оказалось, что когда-то я добавил возможность бегства в восприятие врага B_AssessEnemy(), но забыл сделать его опциональным. Исправляю эту недоработку.

Обновил сборку неофициального патча (от 05.12.2017). Новая игра не нужна, если она была начата на сборках от 14 или 25 ноября.
 
Последнее редактирование:

Kvincius

Участник форума
Регистрация
6 Ноя 2012
Сообщения
257
Благодарности
234
Баллы
210
Твой вариант отлично работает и в Г2а, поэтому я включил его в новую сборку обновления.
Чёт я абсолютно никакой разницы не вижу. Всё осталось также.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
Загрузил другой сэйв и бандиты опять сели по старому, т.е. игнорируя фрипойнты. Неужели это не работает и их надо переводить из состояния ZS_Bandit() в состояния ZS_Sit_Campfire() и ZS_Stand_Guarding()? Или же вообще отказываться от этого состояния и прописывать каждому бандиту своё расписание жизнедеятельности, но возникнут проблемы из-за того, что безымянные NPC могут быть вставлены где угодно и в каком угодно количестве, например, вокруг костра рядом с точкой OW_WOODRUIN_FOR_WOLF_SPAWN в главе 4 сидят 2 бандита с инстанцией BDT_1000_Bandit_L.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.336
Благодарности
3.181
Баллы
525
Загрузил другой сэйв и бандиты опять сели по старому, т.е. игнорируя фрипойнты.
Чем отличается первый сейв от второго?

Неужели это не работает и их надо переводить из состояния ZS_Bandit() в состояния ZS_Sit_Campfire() и ZS_Stand_Guarding()?
Можно попробовать для эксперимента создать состояние-прослойку, аналогичное состоянию для монстров ZS_MM_AllScheduler. В инстанции бандита назначить экспериментальное состояние-прослойку, а из него уже вызывать состояние ZS_Bandit.

Или же вообще отказываться от этого состояния и прописывать каждому бандиту своё расписание жизнедеятельности, но возникнут проблемы из-за того, что безымянные NPC могут быть вставлены где угодно и в каком угодно количестве, например, вокруг костра рядом с точкой OW_WOODRUIN_FOR_WOLF_SPAWN в главе 4 сидят 2 бандита с инстанцией BDT_1000_Bandit_L.
Персональное расписание не будет правильно работать в случае наличия неписей-клонов. Также в Г2 есть такая особенность, что движок не удаляет из мира неписей с персональным расписанием.

Если делать персональные расписания бандитам, придётся создавать дополнительные инстанции взамен клонов.

Вообще, ситуация довольно странная. Если бандит сел, значит фрипоинт "CAMPFIRE" был обнаружен поблизости. Почему он не идёт туда? Косяк движка, связанный с наличием клонов? Но у монстров тоже полно клонов, а фрипоинты они занимать умеют, вроде бы. :oops:

ДОПОЛНЕНО:
Имеет место проблема при выполнении функции AI_GotoFP, если непосредственно перед ней следует перевод в режим передвижения шагом AI_SetWalkMode. Добавь между этими функциями паузу AI_Wait. У меня достаточно паузы 0,5 секунды, но нужен тест на других компах. Кроме этого имеет место проблема вскакивания непися в начале диалога с ним и после него, если непись во время диалога сидит. С этим ещё не разбирался.
 
Последнее редактирование:

heckler

Участник форума
Регистрация
25 Апр 2017
Сообщения
413
Благодарности
109
Баллы
210
Есть какой-то лаг с моделькой истукана
g2.jpg g1.jpg

один в храме аданоса повёрнут
g3.jpg

После битвы с богомолом, Мердарион переключается на вил-о-виспера, если он есть
Есть ли возможность улучшить функционал вил-о-виспера? Так он ищет или всё, или нечего, или что-то одно
 

Kvincius

Участник форума
Регистрация
6 Ноя 2012
Сообщения
257
Благодарности
234
Баллы
210
один в храме аданоса повёрнут
Всё что касается правок игрового мира, просьба кидать в соседнюю тему.*pointing*
Также мне очень бы помогли какие-либо замечания и предложения прошедших игру с исправленным Zen'ом рудниковой долины.
Темка давно висит, но похоже многие люди её не заметили.
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.125
Благодарности
3.218
Баллы
485
Перфекционист врывается в тему.

1) Сразу в трех областях Ирдората нет музыки. Ситуация такая же, как и с музыкой в заснеженной части Рудниковой долины: разработчики не успели или забыли записать темы GRO (большая пещера с Феодароном), TMP (зал с черным магом и большой дверью) и END (пещера с драконом-нежитью). Для исправления нужны дополнения в music.dat:
Код:
instance GRO_DAY_STD(C_MUSICTHEME_STANDARD)
{
    file = "dlc_daystd.sgt";
};

instance GRO_DAY_FGT(C_MUSICTHEME_FIGHT)
{
    file = "dlc_dayfgt.sgt";
};

instance TMP_DAY_STD(C_MUSICTHEME_STANDARD)
{
    file = "dlc_daystd.sgt";
};

instance TMP_DAY_FGT(C_MUSICTHEME_FIGHT)
{
    file = "dlc_dayfgt.sgt";
};

instance END_DAY_STD(C_MUSICTHEME_STANDARD)
{
    file = "dlc_daystd.sgt";
};

instance END_DAY_FGT(C_MUSICTHEME_FIGHT)
{
    file = "dlc_dayfgt.sgt";
};
2) Раз в продаже появились магические и огненные стрелы и болты, то и цены на них нужно продумать как следует. 1 золотая монета за штуку - это просто смешно. Предлагаю повысить до 100 или даже больше, учитывая со скольки убивается последний дракон. Заодно будет куда тратить деньги на Ирдорате.
Кстати, сделала для них новые модели, прикрепляю (нужны правки их визуалов в скриптах):
arr.png


3) Модели доспехов Кольца воды, доспехов пиратов и одежды пиратов в инвентаре используют неправильные текстуры. Прикрепляю исправленные, изменения в скриптах не нужны. С моделью доспехов капитана то же самое, но по сюжету игрок не может их получить, поэтому не стала заморачиваться.

4) Терпеть не могу одинаковые модели у разных предметов: дымящаяся мясная похлебка с моделью тарелки ухи? Отвратительно! Сделала ретекстур некоторых повторных, нужны правки визуалов в скриптах:
- пиво Корагона (ITFO_CORAGONSBEER)
- пламенная нарезка (ITFO_FIRESTEW)
- дымящаяся мясная похлебка (ITFO_MEATSOUP)
- похлебка Теклы (ITFO_XPSTEW)
- баранья колбаса (ITFO_SCHAFSWURST)
- быстрая селедка (ITMI_RUM_03)
- молот Лу (ITMI_RUM_04)
На двойном молоте Лу фантазия закончилась, так что пусть у него тоже будет ITMI_RUM_04.

5) У некоторых моделей имеются неправильные материалы, что могло приводить к перемешиванию их текстур при загрузке сохранения или переходе на другую карту. Например, зеленая голова богомола превращается в серую, путая текстуру с ползуном. Например, дубинка ветра и дубинка бури вообще никогда не использовали задуманные текстуры. Например, текстура головы Бладвина смешивается с текстурой на вратах к дракону-нежити, приводя к очень смешному эффекту:
1.png
Удалось исправить это, прикладываю исправленные модели головы богомола, головы Бладвина, ухи, молока, мандибул полевого хищника, мандибул ползуна, панцирной пластины ползуна, чешуи дракона, дубинки ветра, дубинки бури и врат Ирдората.

6) Неправильные материалы в скриптах у некоторых образцов оружия. Как должно быть:
- мечи, сабли, шпаги (всё, что достается из ножен или колец): MAT_METAL
- булавы, топоры, молоты, дубины, посохи (всё с деревянными элементами): MAT_WOOD
В игре имеем, например, "металлическую" кирку, от деревянной основы которой сыпятся искры во время блока. Также этот материал влияет на звук, с которым достается оружие: если с металлическим звуком достается полностью деревянная дубинка, то выглядит это очень странно. Нужно пересмотреть всё оружие (на самом деле это не долго).

7) В описаниях свитков и рун не хватает ":" после слов "Урон магией", "Длительность" и т.д. Также есть путаница между сокращениями "мин." (минимум) и "мин" (минут). Думаю, что минуты и секунды можно не сокращать вовсе.

8) В ресурсах игры есть несколько неиспользуемых моделей посохов. Предлагаю несколько изменений визуалов, чтобы не было повторных и нелогичных:
Посох Ультара - ItMW_MageStaff_Ball_2H_01.3DS (неиспользуемый)
Магический посох - ItMW_MageStaff_Normal_2H_01.3DS (неиспользуемый)
Посох мага Огня - ItMW_MageStaff_Good_2H_03.3DS (красный, неиспользуемый)
Посох мага Воды - ItMW_MageStaff_Good_2H_02.3DS (синий)

9) Наконец уменьшила и исправила гигантские модели бутылок алкоголя из аддона. Теперь они будут повернуты в инвентаре правильной стороной и не будут наполовину торчать в столах.
b.png
b2.png

10) Неправильные названия некоторых предметов: см. их name и description. Думаю, что текст из description на самом деле должен быть в описании предмета (text[0]), а description = name (как у всех других предметов).
- Дымящаяся мясная похлебка - Мясная похлебка
- Белый ром - Ром
- Настоящий грог моряков - Грог
- Красный жгучий перец - Мешочек с перцем
- Посох мага Воды - Посох Воды
- Посох мага Огня - Посох мага (ошибка? нужно Посох Огня?)

11) Кронос снимет "Тайфун" на время торговли, но потом больше его не экипирует (так со всеми торговцами?). Нужно добавить ему (и всем другим) AI_EquipBestMeleeWeapon(self) в опцию завершения диалога.

Огненный дракон использует заклинание 'Огненный шторм'
Исправление спорное. Если подойти к дракону без Глаза Инноса, то это заклинание кастуется без анимации с огромной частотой: аж игра тормозить начинает. Не говоря уже про невероятно громкий звук такого "залпа".

Есть какой-то лаг с моделькой истукана
А ещё есть баг с анимацией их смерти: приподнимаются в воздух и только потом рассыпаются. Попробую поправить.
 

Вложения

  • FIXME.rar
    203,9 KB · Просмотры: 52

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
@ElderGamer:
Эта проблема затрагивает связку функций AI_SetWalkMode и AI_GotoWP?

@D36:
1) Обязательно включу это исправление в следующую сборку обновления (приблизительно к Новому Году).

2) Я обеими руками за изменение внешнего вида особых стрел и болтов, но не стоит слишком сильно увеличивать их цену, поэтому предлагаю вынести этот вопрос на общее обсуждение готоманов.

3) Принято.

5) Принято.

6) Это предложение можно оспорить тем, что оружие содержит несколько материалов, например, кирки и топоры состоят из деревянной ручки и металлической боевой части.

8) Принято.

9) Хорошая работа. Не могу понять, почему PB сделали такие большие модели для аддоновского бухла. Если тебя не затруднит, пожалуйста посмотри, почему NPC неправильно держат в руке кружку пива.

10) К сожалению, в игре имеется полный бардак по текстам из параметров name, description и text[n]. Когда-то я пытался создать хотя бы минимальную систему, но в итоге обломался.*facepalm*

11) Это последствие разоружения NPC перед началом торговли с ним. К сожалению, пока я не знаю, можно ли создать общий алгоритм, заставляющий торговца экипироваться наилучшим оружием ближнего или дальнего боя после завершения сеанса торговли с ГГ. Вдобавок у магов имеются свои заморочки, из-за чего они всегда переходят в режим магической атаки вне зависимости от экипированного оружия. Поэтому мне не удалось реализовать схему поведения магов из Gothic 3: если расстояние между магом и его целью меньше, чем дистанция для магической атаки, то он переходит в режим ближнего боя.

Я не проверял поведение драконов в случаях несанкционированного приближения к ним до наступления главы 4.
 
Последнее редактирование:

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
5.847
Благодарности
5.274
Баллы
910
2) предлагаю сделать цену огненных/магических стрел/болтов в 25 золотых.
 

Vain

Участник форума
Регистрация
19 Сен 2008
Сообщения
394
Благодарности
123
Баллы
205
Я обеими руками за изменение внешнего вида особых стрел и болтов, но не стоит слишком сильно увеличивать их цену, поэтому предлагаю вынести этот вопрос на общее обсуждение готоманов.

Изначально в игре было 20 огненных и 20 магических стрел, 10 магических болтов (вроде как то так) И огненные и магические наносили урон Магией. Как и вся магия в игре, кроме огненных ящеров и драконов (от них спасала только защита от огня)
Все заклинания стихии огня будут наносить урон огнём, а не магией (взято из мода 'Кузнец: Безымянный герой').

После такой глобальной переделки, соответственно появляется вопрос:
Нафига козе баян
Зачем вообще тогда в игре "Огненный лук" и "Магический арбалет".
ИМХО, В настоящем контексте они не нужны и их следует воспринимать как внутриигровой тест от Пираний на возможность стрельбы разными боеприпасами.
И получается (самый логически понятных выход), чтобы Магические стрелы - это освещение у статуи Инноса за деньги. (имхо 50 монет минимум за 1 стрелу/болт)
Огненные - сделай сам на алхимическом столе исходя из 1 смола - 10 огненных стрел. По аналогии как сделано в Gothic 2 Mod Fix 5 палок + смола = 5 факелов. А палок хватает, те же самые гоблины и бандиты.
 
Сверху Снизу