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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 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 версии неофициального обновления. Подробности здесь.
 
Последнее редактирование:

heckler

Участник форума
Регистрация
25 Апр 2017
Сообщения
413
Благодарности
109
Баллы
210
раньше побитые неписи, если не могли подобрать любое, даже самое отстойное оружие, то оставались безоружными
В обычной версии, если побить Бастера, например, забрать у него всё, через день (спать до следующего утра в кровати рядом) у него будет оружие (палка).
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.335
Благодарности
3.180
Баллы
525
Т.е. игнорируется вся последовательность выполнения кода функции ZS_Unconscious_End , или же функция Npc_HasEquippedWeapon возвращает некорректный результат проверки?
Функция ZS_Unconscious_End выполняется единовременно, а по результатам её работы формируется очередь AI-команд, описывающая последующие действия игрока. В момент выполнения функции ZS_Unconscious_End и проверки содержащихся в ней условий выпавшее оружие ещё лежит на земле (если его не подобрали). Проверка его экипированности, понятное дело, даст отрицательный результат. К тому же, неправильно использовать функцию Npc_HasEquippedWeapon. Непись мог выронить оружие ближнего боя, но у него при себе ещё может иметься оружие дальнего боя. Думаю, нужно проверять именно наличие оружия ближнего боя. И делать это, только по результатам попытки подобрать выпавшее оружие. Но это возможно лишь при условии, что подбор выпавшего оружия будет выполняться в полноценном состоянии, где проверка условий и выполнение AI-команд будет происходить в правильной последовательности.
 

tatun

Участник форума
Регистрация
31 Янв 2009
Сообщения
1.030
Благодарности
272
Баллы
245
Насчёт магии огня. Типа зачем защиту от огня сделали, если заклинания бьют магией. Есть свитки превращения. Например Драконим Снеппером можно убить Дракона, потому что защита от огня крутая. Также и с призванными существами. Или можно превратится самому в Огненного Ящера, и палить огнём. Кстати, кто в курсе, Ящер всегда огнём бьёт? И сколько у него урон?
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
damagetype = DAM_FIRE;
отдельно урон огня не прописан, судя по параметру силы ящера - 150 урона.
 

heckler

Участник форума
Регистрация
25 Апр 2017
Сообщения
413
Благодарности
109
Баллы
210
зачем защиту от огня сделали, если заклинания бьют магией
Убрать её, наверно, у нпс совсем нельзя, разрабы просто сделали её равной защите от оружия и у луркера зачем то подкрутили.
 
Последнее редактирование:

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.125
Благодарности
3.218
Баллы
485
- почему у некоторых рун прописан "урон магией", а у других - просто "урон" (например, "Гнев Белиара" и "Дыхание смерти")? Это чем-то обосновано, или у них всех магический урон и нужно поправить тексты?

- руна "Гнев Белиара" стоит аж 3500 золота - дороже, чем руны шестого круга (3000). Думаю, эта руна должна стоить столько же, сколько и все руны третьего круга: 1500 золота. С "Кражей энергии" так же - руна второго круга должна стоить 1000 золота. Короче, какая-то путаница с ценами и кругами рун;

- в описании рун "Большой огненный шар" и "Большая огненная буря" не прописан огненный тип урона;

- в описании всех огненных свитков - магический урон;

- задумалась о работе заклинания "Кража энергии". Оно всегда оставляет противнику-человеку 1 хп, но затем заклинание можно применить ещё раз и с большой вероятностью добить противника. Действительно ли заклинание нелетальное? Нужны ли правки? Может, не давать игроку взять в фокус цель, чье здоровье меньше определенного уровня? Нужно ли сразу переводить цель с 1 хп в состояние нокаута?
Ещё замечу, что в игре есть неиспользуемая строка текста, которую, видимо, следует добавить в описание руны:
const string NAME_Addon_SpellDontKill = "Заклинание не убивает";
 

heckler

Участник форума
Регистрация
25 Апр 2017
Сообщения
413
Благодарности
109
Баллы
210
- почему у некоторых рун прописан "урон магией", а у других - просто "урон" (например, "Гнев Белиара" и "Дыхание смерти")? Это чем-то обосновано, или у них всех магический урон и нужно поправить тексты?

- руна "Гнев Белиара" стоит аж 3500 золота - дороже, чем руны шестого круга (3000). Думаю, эта руна должна стоить столько же, сколько и все руны третьего круга: 1500 золота. С "Кражей энергии" так же - руна второго круга должна стоить 1000 золота. Короче, какая-то путаница с ценами и кругами рун;

Это из аддона всё, не было бы логично цены и строки в описаниях под них подгонять :oops:
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Действительно ли заклинание нелетальное? Нужны ли правки? Может, не давать игроку взять в фокус цель, чье здоровье меньше определенного уровня? Нужно ли сразу переводить цель с 1 хп в состояние нокаута?
Может лучше сделать летальным? Как и Рой насекомых ...
А пока, судя по ограничениям, эти 2 заклинания только на людей работают, и то не на всех (то есть смысла от них весьма мало... хотя они и могут подхватывать несколько близко-стоящих целей, но это скорее недоработка, чем запланированный бонус).
 

heckler

Участник форума
Регистрация
25 Апр 2017
Сообщения
413
Благодарности
109
Баллы
210
Есть баг в анимации жевания и стоящего с закрытой челюстью драконьего снеппера
Clipboard-3.jpg
 
Последнее редактирование:

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
- задумалась о работе заклинания "Кража энергии". Оно всегда оставляет противнику-человеку 1 хп, но затем заклинание можно применить ещё раз и с большой вероятностью добить противника. Действительно ли заклинание нелетальное? Нужны ли правки? Может, не давать игроку взять в фокус цель, чье здоровье меньше определенного уровня? Нужно ли сразу переводить цель с 1 хп в состояние нокаута?
Ещё замечу, что в игре есть неиспользуемая строка текста, которую, видимо, следует добавить в описание руны:
const string NAME_Addon_SpellDontKill = "Заклинание не убивает";
Похоже, что это заклинание летальное, т.к. для него не предусмотрено флага "не убивает" (COLL_DONTKILL). Этот флаг есть только для SPL_Geyser, SPL_Zap, SPL_ChargeZap, SPL_ConcussionBolt, а для SPL_WaterFist предусмотрены исключения: драконы, тролли (1/2 урона), огненные создания (големы, вараны, дьяволы) (2x урон).

P.S.: Если исходить из логики, то свойство "заклинание не убивает" применимо только к людям.
 
Последнее редактирование:

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Кража и Рой не летальные из-за того, что для низкого ХП жертвы в состояниях прописано B_MagicHurtNpc(other,self,self.attribute - 1);
Похоже пираньям было лень прописывать нормальное окончание анимации и переход в состояние смерти )

И сравните ещё длительность Роя с прописанными в состоянии криками жертвы - вопли на 7 и 8 секунде не будут воспроизводиться, так как длительность Роя всего 6 секунд.


Вообще вы зря изменили функцию B_MagicHurtNpc на учёт защиты цели от магии.
Чистый урон от неё раньше как раз и предназначался для подобных состояний, действие которых не является обычной магией:
Рой - стабильный урон насекомыми, которые пытаются залезть под доспехи и ужалить цель,
Кража энергии - эффект вампиризма, который сложно отнести именно к магии,
Коготь Белиара гораздо менее эффективен против серьёзных целей, так как урон его молнии жёстко режется.

Кстати - Смерч полностью бесполезен во 2 круге, так как долго кастуется и сам по себе всегда наносит 0 урона.
 
Последнее редактирование:

Dimus

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

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Да, вижу ... много работы сделали с изменением защиты от магии у монстров и в доспехах. Легче было просто снизить цифры урона в предметах и магии с такой функцией, ну да уже поздно.

Вот вам простенький пример для Кражи Энергии, которая будет убивать.
Тут добавлены ещё вопли жертвы.
Код:
func int ZS_SuckEnergy_Loop()
{
    if(self.attribute[ATR_HITPOINTS] <= 0)
    {
        self.attribute[ATR_HITPOINTS] = 0;
        Npc_StopAni(self,"S_SUCKENERGY_VICTIM");
        AI_StartState(self,ZS_Dead,0,"");
        return LOOP_END;
    };  
    if((Npc_GetStateTime(self) > SPL_TIME_SuckEnergy) || (self.guild > GIL_SEPERATOR_HUM) || (Temp_SuckEnergy_DistToPlayer >= (Npc_GetDistToPlayer(self) + 100)))
    {
        B_StopSuckEnergy();
        return LOOP_END;
    };
    if(Npc_GetStateTime(self) != self.aivar[AIV_SuckEnergyStateTime])
    {
        if(Npc_GetStateTime(self) == 0)
        {
            if(!C_BodyStateContains(self,BS_UNCONSCIOUS))
            {
                AI_PlayAniBS(self,"T_STAND_2_SUCKENERGY_VICTIM",BS_UNCONSCIOUS);
            };
            Wld_PlayEffect("spellFX_SuckEnergy_BloodFly",self,other,0,0,0,FALSE);
        };
        if(Npc_GetStateTime(self) == 2)
        {
            B_Say(self,other,"$Aargh_2");
        }
        else if(Npc_GetStateTime(self) == 3)
        {
            B_Say(self,other,"$Help");
        }
        else if(Npc_GetStateTime(self) == 5)
        {
            B_Say(self,other,"$Aargh_1");
        }
        else if(Npc_GetStateTime(self) == 6)
        {
            B_Say(self,other,"$Aargh_3");
        };
        self.aivar[AIV_SuckEnergyStateTime] = Npc_GetStateTime(self);
        if(self.attribute[ATR_HITPOINTS] >= SPL_SuckEnergy_Damage)
        {
            Npc_ChangeAttribute(other,ATR_HITPOINTS,SPL_SuckEnergy_Damage);
        };
        B_MagicHurtNpc(other,self,SPL_SuckEnergy_Damage);
    };
    return LOOP_CONTINUE;
};
В файле C_CanNpcCollideWithSpell.d условия срабатывания у меня заданы попроще - работает только на людей и не работает на всех остальных.

Реальная длительность заклинания по его анимации - 8 секунд (их нужно указать в описании к руне), а вот в скрипте заклинания, возможно из-за
Код:
if(manaInvested == 0)
    {
        return SPL_RECEIVEINVEST;
    };
нужно поставить на секунду меньше const int SPL_TIME_SuckEnergy = 7;
 

tatun

Участник форума
Регистрация
31 Янв 2009
Сообщения
1.030
Благодарности
272
Баллы
245
Кража и Рой не летальные из-за того, что для низкого ХП жертвы в состояниях прописано B_MagicHurtNpc(other,self,self.attribute - 1);
Похоже пираньям было лень прописывать нормальное окончание анимации и переход в состояние смерти )
Кража вторым кастом убивает.
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Кража вторым кастом убивает.
Восхитительно - оставить цели 1 ХП и добивать эту единичку вторым кастом )

И вроде бы Рой так не добивает в текущих настройках ...
 

tatun

Участник форума
Регистрация
31 Янв 2009
Сообщения
1.030
Благодарности
272
Баллы
245
Восхитительно - оставить цели 1 ХП и добивать эту единичку вторым кастом )
А что? Может ты не хочешь убивать. Или даже в нокаут отправлять. А просто хочешь себе жизни восстановить таким образом.
Ну а второй каст - если тебе нужно убить, особенно когда за тобой бежит толпа.
Я против людей этой руной всегда пользовался. Как получил её, другие руны Когтя мн уже не нужны были. Заклинание читерное, 1 каст забирал все НР палладина (кроме 1).
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Паладин какой-то дохленький, либо урона у заклинания слишком много )
И добивать его в любом случае придётся, так как он обидится )
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.562
Благодарности
4.154
Баллы
915
нужно поставить на секунду меньше const int SPL_TIME_SuckEnergy = 7;
Хмм... В оригинале время действия заклинания const int SPL_TIME_SuckEnergy = 9;

Кто-нибудь из модостроителей проверял, корректно ли работает заклинание "Надувание людей"? Если да, тогда почему бы не задействовать его в игре? Т.к. для него нет учителей и списка ингредиентов, то можно добавить его обработку в функцию C_CanNpcCollideWithSpell, (все ограничения есть в логике заклинания) создать инстанцию свитка или руны (какого круга?) и положить их где-нибудь в мире.
 
Последнее редактирование:

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
При 9 указанных секундах заклинание на самом деле будет работать 10 - проверь по потере ХП у цели.
И сама потеря здоровья тогда будет длиться даже после окончания анимация, в то время, как обиженная цель будет бежать к ГГ.

Когда-то пробовал запустить ZS_Inflate, но текущее запускаться не захотело (или я натупил).
Не стал пытаться его дорабатывать, так как какой-то пользы от заклинания, кроме смешной анимации, придумать не смог.
 

tatun

Участник форума
Регистрация
31 Янв 2009
Сообщения
1.030
Благодарности
272
Баллы
245
Паладин какой-то дохленький, либо урона у заклинания слишком много )
И добивать его в любом случае придётся, так как он обидится )
Заклинание действует вроде 9 сек. снося по 100 hp/сек. игнорируя броню. Если чувака не добивать, то побегает он за тобой, а потом забудет. Если вырубить, то придётся платить штраф 50 золотых. А меч паладина стоит около 800...
 
Последнее редактирование:
Сверху Снизу