Gothic Remake Готика ремейк - общие впечатления и обсуждение
  • 44.120
  • 427
Тема для общего обсуждения Gothic 1 Remake: первых впечатлений, ожиданий, атмосферы, визуального стиля, геймплея, боевой системы, персонажей, локаций и отличий от оригинальной Gothic. Здесь можно...
Новости Релиз Of Ash and Steel состоится 6 ноября
  • 11.719
  • 12
Of Ash and Steel: атмосферный экшен выходит 6 ноября 6 ноября станет важной датой для поклонников сложных и атмосферных игр - именно в этот день состоится релиз долгожданного проекта Of Ash and...
Новости В Of Ash and Steel начался закрытый плейтест
  • 14.110
  • 12
Разработчики "Русской Готики" объявили о старте закрытого плейтеста. Если вы оставляли заявку на участие, не забудьте проверить электронную почту или посмотреть свою библиотеку - возможно игра уже...
Новости Анонсирован Atomic Heart II
EthernalBreeze

EthernalBreeze 3.08 (BUILD 7.0.6)

Нет прав доступа на загрузку
Сей мод направлен на расширение Нового Баланса в формат Дьяблоида и схожих рпг игр.

zauronix

Гвардеец
Пользователь VIP
Участник форума
Регистрация
26 Сен 2025
Сообщения
1.879
Реакции
362
Баллы
145
Лучшие ответы
0
@Alex_Leo,
Также надобно трофеи и артефакты мода (кинжал, книжка) исключить из списка скупаемых торгашом на ферме Онара предметов.
он их и не покупает
 

Vidga

Постоялец
Участник форума
Регистрация
17 Янв 2018
Сообщения
69
Реакции
5
Баллы
59
Лучшие ответы
0
ток полная перестановка - там файлы слегка менялись и если прост кинуть поверх, то останется мусор от предыдущей. И ток новая игра - были переписаны индексы абилок и логика аиваров для них. Впрочем попробовать потом можно будет, но возможны баги у уже сгенереных мобов
Кароч если поможет, вылеты в основном с крыс, падальщиков, варанов, кабанов, шныг, волков, причем не обязательно изза аффиксов, могут быть обычные мобы и при их нападении на тебя, будет вылет, возможно да, изза возвратного урона, хотя и хз
 
Автор
Автор
StonedWizzard

StonedWizzard

Рыцарь
Участник форума
Регистрация
10 Июн 2013
Сообщения
2.653
Реакции
2.439
Баллы
434
Лучшие ответы
0
Кароч если поможет, вылеты в основном с крыс, падальщиков, варанов, кабанов, шныг, волков, причем не обязательно изза аффиксов, могут быть обычные мобы и при их нападении на тебя, будет вылет, возможно да, изза возвратного урона, хотя и хз
Там скорей всего та же проблема - во время обработки атаки атакующий дохнет от рефлекта или другого источника, а затем где то в глубинах движка случаются проблемы с контроллером анимаций. Новая система "размазанного" урона должна решить траблу. Проверю как всё отлажу, а то ща спелы мобы не кастовали сначала из-за того, что аллокация динамических структур из скриптов (мой доп. урон) не работал с массивами и вместо 124 байт выделял 44 и структуру считать не выходило. Ща ещё багу со чтением стека в ф-ии поправил, надеюсь теперь структуру считает и дальше будет отрабатывать флоу урона...


Также надобно трофеи и артефакты мода (кинжал, книжка) исключить из списка скупаемых торгашом на ферме Онара предметов.
Если просто в обычном окне торговли, то хз, вроде есть фильтры в недрах двигла для доспехов, но то для нпс, а не гг... короче хз, просто не продавайте. А если случилась такая оказия - марвин в помощь, пока статы хранятся просто в виде глобальных массивов. А вообще отстаньте от меня с артефактами пока - до крафта они будут такими какие есть, а потом я их переведу на рельсы крафта и их можно будет уже развивать немного иначе и более красивым способом.

Да я то могу, а толку если ещё не всё работает. Пару дней на отладку и выдам на тесты новую версию. Может быть быстрее будет, если ошибок и багов будет не много. Покаместь всё работает стабильно и с ощутимой прибавкой fps вплот до того, что массовые зарубы что раньше фризили кадры до 1-2 ща оттаивают гораздо быстрее. Короче стабильно всё, но не всё работает как задумывалось)))
--- Добавлено: ---

Касты излечил)
Осталось немного логику применения кастов поправить, и разобраться с рефлектом - вроде работает, а вроде бы и нет) Там ещё пробежаться туда-сюда через толпы и чем Белиар не пранкует - сегодня и отдам на тесты, если ничё слишком ужасного не вылезет)))
 
Последнее редактирование:

zauronix

Гвардеец
Пользователь VIP
Участник форума
Регистрация
26 Сен 2025
Сообщения
1.879
Реакции
362
Баллы
145
Лучшие ответы
0
@Alex_Leo,
Просьба-предложение: Автор мода, пожалуйста, объедини артефакты кинжал и книжку в один предмет с объединением разнообразия прокачиваемых бафов. А то прокачка мультиклассового ГГ (ловкач+силовик+маг) доступна, а артефакты при этом под разные классы заточены.
А ещё они конфликтуют с эмблемой в новой карме (всмысле всё на один Слот идёт) и что теперь делать?
--- Добавлено: ---

@StonedWizzard, может сделать прокачку одновременно и кинжала и гримуара? А дальше пусть меняется от экипировки..
 
Автор
Автор
StonedWizzard

StonedWizzard

Рыцарь
Участник форума
Регистрация
10 Июн 2013
Сообщения
2.653
Реакции
2.439
Баллы
434
Лучшие ответы
0
А ещё они конфликтуют с эмблемой в новой карме (всмысле всё на один Слот идёт) и что теперь делать?
та всё просто - я новый слот под свои арты сделаю)
та там разберусь, не всё сразу. как займусь крафтом то буду думать. скорей всего сделаю чёт типа переливания опыта. И вообще эти арты будут улучшатся по другому и оба бутут иметь равные возможности, задолбало по отдельности ими управлять. Будут сугубо две+ декорации, на которые можно будет любые свойства накладывать. Посмотрим.
--- Добавлено: ---

Так, рефлект ожил. Вроде теперь уж стабильно - ща ещё мясные тесты прогоню на всякий...
Кста прикол из разряда "не баг, а фича" - думал рефлект делать ограниченым по радиусу... но провтыкал и забыл сделать. Ща посмотрел - без ограничений он смотрится полезней)
 
Последнее редактирование:
Автор
Автор
StonedWizzard

StonedWizzard

Рыцарь
Участник форума
Регистрация
10 Июн 2013
Сообщения
2.653
Реакции
2.439
Баллы
434
Лучшие ответы
0
Итак, свершилось!

Спустя столько времени очередной релиз. Как всегда по уже сложившемуся обычаю скидываю сюда на тесты. Если сборка продержится хоть день без постоянных вылетов - опубликую наконец по-человечески))
На тестах я ни единого вылета за целый день так и не заметил, все стресс тесты показали себя выше всяких ожиданий. Впрочем это не гарантирует прям 100% стабильность, но по идее она, эта стабильность, наконец таки должна поселится среди строк кода (ну или хотя бы её дух)))

Короче, встречайте 3.06 (BUILD 7.0.2)
+ Произведён полный рефакторинг конвейера урона в моде.
+ Скриптовая часть обработки урона так же подверглась существенной переработке. Исправлено множество багов в работе скилов и расчёта урона.
+ Введён новый фреймворк временных эффектов. Более централизованный и гибкий для добавления новых эффектов.
+ Переработана система абилок нпс. Теперь добавление новых абилок в будущем станет лёгким и непринуждённым.
+ Переработан механизм отправки урона из скриптов. Теперь для этого есть отдельная механика, которая позволит отпралять из скриптов аналог дескриптора урона. И даже ставить его в очередь!
+ Устранён баг с каскадным аое уроном.
+ Отражённый урон должен работать корректно.
+ Поправлены ф-ии определения свой-чужой.
+ Поправлен расчёт опыта в мастерства от урона по хп. Выяснилось что там дважды учитывался энергетический щит, из-за чего опыта начислялось меньше чем нужно.
+ Исправлена ф-ия расчёта среза урона от абилок.
+ Исправлен ряд существенных багов в обработке урона.
+ Паутина теперь не должна вызывать эффект замедления. В теории.
+ По идее руны "Жажда крови" и "Жажда убийства" должны качать мастерство. Мобы под действием этих спелов считаются суммонами.
+ Поправлены ф-ии расчёта урона нпс.
+ Исправлена ф-ия поиска нпс в заданном радиусе.
+ Базовая цена перка "Касание скверны" снижена до 100 золотых
+ Базовые требования ресурсов для прокачки артефактов снижена приблизительно в 10 раз.
+ Меню массового потребления пермаентов исправлена и работает.
+ Поправлены мелкие баги в ф-иях поиска предметов по инвентарю. Опять.
+ Доработана и исправлена механика спавна лута в случайных сундуках:
Теперь спавн в пустых судуках будет происходить, даже если опция случайного лута в сундуках отключена (та, что закидывает дополнительное шмотьё при открытии сундука)
Сундуки теперь закрываются на случайную комбинацию при загрузки в него вещей. Можно отключить.
Добавлен мультиспавн в сундуки. Теперь за раз может искать от 1 до 32 сундуков по миру.
Появилась возможность спавнить вещи и в не облутаных сундуках. Как всегда конфиги.
+ Переработана система уникальных идентификаторов нпс (UId) Требуется новая игра! Прошу прощения за это.
+ Каждый нпс получил свой собственный буффер статов/свойств, привязанный к его UId. Это позволяет отвязаться от аиваров из нб.
+ Собственно отвязался от системы аиваров нб, кроме одного. Теперь у меня есть простор для определения своих переменных для каждого отдельного нпс. Новая игра обязательна!
+ Чуть оптимизированы и исправлены временные эффекты. Эгиды должны работать.
+ Расширено меню общей статистики - добавлены показатели кармы и краткая информация о школах и мастерствах.
+ Ещё некоторые мелкие оптимизации кода по всему моду.
+ Исправлена формула расчёта кармы аданоса. Это производная от того как сильно гг молится обоим богам. Пока нигде не нужна, в будущем будет задействована (заменю, если в нб появится своя)
+ Исправлена функция проверки возможности использования предмета у нпс/гг. Она могла приводить к вылетам, когда нпс пытался использовать зачарованное оружие.
+ Исправлены ф-ии бафов/дебафов нпс. Там я налажал с копированием указателя StExt_Self. Менял его, но не возвращал на место.
+ Исправил баг со стриптизом нпс, из-за работы системы дополнительных слотов брони.
+ Починил ошибку с начислением опыта гг от других нпс. Возможно так же исправлены несправедливые реакции нпс на гг.
+ Эффекты абилок теперь корректно определяются при получении урона, что позволяет вытягивать флаги оригинального спела со всеми втекающими и вытекающими.
+ Вроде бы вражеские эффекты не баффают гг. Исходя из логов. Если попадутся бафы на гг - просьба дать знать. Вместе с логами)
+ Небольшие изменения в AI-контроллере нпс. Поиск цели для каста стал более надёжным.
+ Добавлены сопротивления для дотов и отраженного урона. Так же в комплекте идут модификаторы максимума.
+ Расширены статы нпс. Некоторые новые резисты и так по мелочи.
+ Ауры, которые раньше срабатывали при уроне теперь так же срабатывают и при атаке. Работа этих аур перенесена на новые рельсы отложенного урона.
+ Произведены некоторые правки в работе аур.
+ Поправлены сила лечения нпс от свитков и условие проверки уровня хп для применения.
+ Исправлен баг, когда ф-ия перебора могла "терять" указатель на актёров во время перебора.
+ Оптимизированы ф-ии работы с массивами. Скорость доступа к глобальным массивам через ф-ии должно увеличится раз так в 10.
+ Поправил алгоритм расчёта цены предметов. Вроде теперь он должен стать более вменяемым. Плюсом добавил туда капы, дабы цену не раздувало при экстремальных значениях.
+ И ещё куча всего, что я провтыкал добавить в этот список.
--- Добавлено: ---

Ах, да! Забыл добавить - новая игра обязательна!
Я там менял логику работы абилок и индексы аиваров были смещены. У уже сгенереных мобов на старом сейве ожидаемы баги в работе их абилок (впрочем, можете рискнуть, если прям ну очень нужно).
 

Вложения

Последнее редактирование:

Rustam007

Бродяга
Участник форума
Регистрация
16 Май 2018
Сообщения
41
Реакции
8
Баллы
16
Лучшие ответы
0
Автору в помощь с кодом на отражение урона:

func void StExt_OnPostDamage()
{
var int reflectAllowed;
var int damageFlags;
var int dist;

StExt_PrintDebug("StExt_OnPostDamage()", "ENTER", StExt_AttackNpc, StExt_TargetNpc);

// Проверка входящих данных
if (Hlp_IsNULL(StExt_IncomingDamageInfo))
{
StExt_PrintDebug("StExt_OnPostDamage()", "StExt_IncomingDamageInfo instance is Null!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Проверка валидности NPC
if (!Hlp_IsValidNpc(StExt_TargetNpc) || !Hlp_IsValidNpc(StExt_AttackNpc))
{
StExt_PrintDebug("StExt_OnPostDamage()", "Invalid NPC detected!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Проверка актёров
if (!StExt_CheckDamageActors("StExt_OnPostDamage()"))
{
return;
}

StExt_PrintIncomingDamageDebug("STEXT_ONPOSTDAMAGE");

// Инициализация reflect
StExt_InitializeReflectDamage();

if (Hlp_IsNULL(StExt_ReflectDamageInfo))
{
StExt_PrintDebug("StExt_OnPostDamage()", "ReflectDamageInfo NULL!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Получение флагов и типа урона
StExt_ReflectDamageInfo.DamageFlags = StExt_GetDamageFlags(
StExt_TargetNpc,
StExt_AttackNpc,
StExt_NullItem,
StExt_IncomingDamageInfo.SpellId
);

StExt_ReflectDamageInfo.DamageType = StExt_GetDamageType(
StExt_TargetNpc,
StExt_AttackNpc,
StExt_NullItem,
StExt_IncomingDamageInfo.SpellId
);

// Основной обработчик
StExt_PostDamageHandler(StExt_AttackNpc, StExt_TargetNpc, StExt_NullItem);

// Проверка дистанции
dist = npc_getdisttonpc(StExt_TargetNpc, StExt_AttackNpc);
damageFlags = StExt_IncomingDamageInfo.Flags;

// Проверка возможности reflect
reflectAllowed =
(
!StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_ReflectDamage) &&
!StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_Contextual) &&
StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_HasAttacker)
);

// Применение reflect
if (reflectAllowed && Hlp_IsValidNpc(StExt_AttackNpc) && (dist < 800))
{
// Ограничение максимальных целей
if (StExt_ReflectDamageInfo.MaxTargets > 8)
StExt_ReflectDamageInfo.MaxTargets = 8;

// Рассчёт AOE
StExt_ReflectDamageInfo.MaxTargets = StExt_CalcAoeTargets(
StExt_TargetNpc,
StExt_ReflectDamageInfo.DamageFlags,
StExt_ReflectDamageInfo.MaxTargets
);

StExt_ReflectDamageInfo.Radius = StExt_CalcAoeDistance(
StExt_TargetNpc,
StExt_ReflectDamageInfo.DamageFlags
);

// Применяем отражённый урон
StExt_ApplyReflectDamage(StExt_TargetNpc, StExt_AttackNpc);

// Суммирование отражённого урона с жёсткой защитой
int reflectDamage = 0;
if (!Hlp_IsNULL(StExt_ReflectDamageInfo.Damage) && !Hlp_IsNULL(StExt_ReflectDamageInfo.DotDamage))
{
for (int i = 0; i < StExt_ReflectDamageInfo.MaxTargets && i < 8; i++)
{
int dmg = StExt_ReflectDamageInfo.Damage;
int dot = StExt_ReflectDamageInfo.DotDamage;

if (dmg > 10000) dmg = 10000;
if (dot > 5000) dot = 5000;

// Проверяем, что элементы не NULL и не отрицательные
if (dmg < 0) dmg = 0;
if (dot < 0) dot = 0;

reflectDamage += dmg + dot;
}
}

StExt_PrintDebug("StExt_OnPostDamage()", "Reflect Damage Total: " + reflectDamage, StExt_TargetNpc, StExt_AttackNpc);
}
else
{
StExt_PrintDebug(
"StExt_OnPostDamage()",
"Reflect not allowed",
StExt_TargetNpc,
StExt_AttackNpc
);
}

// Завершение reflect
StExt_FinalizeReflectDamage();

StExt_PrintDebug("StExt_OnPostDamage()", "EXIT", StExt_AttackNpc, StExt_TargetNpc);
};

Что делает код с отраженным уроном:
  • Проверка на NULL массивов Damage и DotDamage.
  • Каждый элемент проверяется на отрицательные значения.
  • Жёсткие лимиты: Damage ≤ 10000, DotDamage ≤ 5000, MaxTargets ≤ 8.
    [*]Защита от невалидных NPC и NULL входящих данных.
    [*]Логирование суммы отражённого урона.
 

Rustam007

Бродяга
Участник форума
Регистрация
16 Май 2018
Сообщения
41
Реакции
8
Баллы
16
Лучшие ответы
0
Автору в помощь с кодом на отражение урона:

func void StExt_OnPostDamage()
{
var int reflectAllowed;
var int damageFlags;
var int dist;

StExt_PrintDebug("StExt_OnPostDamage()", "ENTER", StExt_AttackNpc, StExt_TargetNpc);

// Проверка входящих данных
if (Hlp_IsNULL(StExt_IncomingDamageInfo))
{
StExt_PrintDebug("StExt_OnPostDamage()", "StExt_IncomingDamageInfo instance is Null!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Проверка валидности NPC
if (!Hlp_IsValidNpc(StExt_TargetNpc) || !Hlp_IsValidNpc(StExt_AttackNpc))
{
StExt_PrintDebug("StExt_OnPostDamage()", "Invalid NPC detected!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Проверка актёров
if (!StExt_CheckDamageActors("StExt_OnPostDamage()"))
{
return;
}

StExt_PrintIncomingDamageDebug("STEXT_ONPOSTDAMAGE");

// Инициализация reflect
StExt_InitializeReflectDamage();

if (Hlp_IsNULL(StExt_ReflectDamageInfo))
{
StExt_PrintDebug("StExt_OnPostDamage()", "ReflectDamageInfo NULL!", StExt_TargetNpc, StExt_AttackNpc);
return;
}

// Получение флагов и типа урона
StExt_ReflectDamageInfo.DamageFlags = StExt_GetDamageFlags(
StExt_TargetNpc,
StExt_AttackNpc,
StExt_NullItem,
StExt_IncomingDamageInfo.SpellId
);

StExt_ReflectDamageInfo.DamageType = StExt_GetDamageType(
StExt_TargetNpc,
StExt_AttackNpc,
StExt_NullItem,
StExt_IncomingDamageInfo.SpellId
);

// Основной обработчик
StExt_PostDamageHandler(StExt_AttackNpc, StExt_TargetNpc, StExt_NullItem);

// Проверка дистанции
dist = npc_getdisttonpc(StExt_TargetNpc, StExt_AttackNpc);
damageFlags = StExt_IncomingDamageInfo.Flags;

// Проверка возможности reflect
reflectAllowed =
(
!StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_ReflectDamage) &&
!StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_Contextual) &&
StExt_ValueHasFlag(damageFlags, StExt_IncomingDamageFlag_Index_HasAttacker)
);

// Применение reflect
if (reflectAllowed && Hlp_IsValidNpc(StExt_AttackNpc) && (dist < 800))
{
// Ограничение максимальных целей
if (StExt_ReflectDamageInfo.MaxTargets > 8)
StExt_ReflectDamageInfo.MaxTargets = 8;

// Рассчёт AOE
StExt_ReflectDamageInfo.MaxTargets = StExt_CalcAoeTargets(
StExt_TargetNpc,
StExt_ReflectDamageInfo.DamageFlags,
StExt_ReflectDamageInfo.MaxTargets
);

StExt_ReflectDamageInfo.Radius = StExt_CalcAoeDistance(
StExt_TargetNpc,
StExt_ReflectDamageInfo.DamageFlags
);

// Применяем отражённый урон
StExt_ApplyReflectDamage(StExt_TargetNpc, StExt_AttackNpc);

// Суммирование отражённого урона с жёсткой защитой
int reflectDamage = 0;
if (!Hlp_IsNULL(StExt_ReflectDamageInfo.Damage) && !Hlp_IsNULL(StExt_ReflectDamageInfo.DotDamage))
{
for (int i = 0; i < StExt_ReflectDamageInfo.MaxTargets && i < 8; i++)
{
int dmg = StExt_ReflectDamageInfo.Damage;
int dot = StExt_ReflectDamageInfo.DotDamage;


if (dmg > 10000) dmg = 10000;
if (dot > 5000) dot = 5000;


// Проверяем, что элементы не NULL и не отрицательные
if (dmg < 0) dmg = 0;
if (dot < 0) dot = 0;


reflectDamage += dmg + dot;
}
}


StExt_PrintDebug("StExt_OnPostDamage()", "Reflect Damage Total: " + reflectDamage, StExt_TargetNpc, StExt_AttackNpc);
}
else
{
StExt_PrintDebug(
"StExt_OnPostDamage()",
"Reflect not allowed",
StExt_TargetNpc,
StExt_AttackNpc
);
}


// Завершение reflect
StExt_FinalizeReflectDamage();


StExt_PrintDebug("StExt_OnPostDamage()", "EXIT", StExt_AttackNpc, StExt_TargetNpc);
};


Что делает код с отраженным уроном:


    • Проверка на NULL массивов Damage и DotDamage.

    • Каждый элемент проверяется на отрицательные значения.

    • Жёсткие лимиты: Damage ≤ 10000, DotDamage ≤ 5000, MaxTargets ≤ 8.
      [*]Защита от невалидных NPC и NULL входящих данных.
      [*]Логирование суммы отражённого урона.
Возможны ошибки в коде, или недоработки, но тебе виднее, если тебе оно вообще нужно, это для размышления в коде. Главное в игре это стабильность, без вылетов и лагов, багов.
 

the9mm

Наемник
Участник форума
Регистрация
22 Окт 2017
Сообщения
606
Реакции
115
Баллы
105
Лучшие ответы
1
Теперь еще пресеты от Данила надо дождаться=)
 

Icefist

Гвардеец
Участник форума
Регистрация
7 Фев 2018
Сообщения
1.336
Реакции
287
Баллы
206
Лучшие ответы
1
Итак, свершилось!

Спустя столько времени очередной релиз. Как всегда по уже сложившемуся обычаю скидываю сюда на тесты. Если сборка продержится хоть день без постоянных вылетов - опубликую наконец по-человечески))
На тестах я ни единого вылета за целый день так и не заметил, все стресс тесты показали себя выше всяких ожиданий. Впрочем это не гарантирует прям 100% стабильность, но по идее она, эта стабильность, наконец таки должна поселится среди строк кода (ну или хотя бы её дух)))

Короче, встречайте 3.06 (BUILD 7.0.2)
+ Произведён полный рефакторинг конвейера урона в моде.
+ Скриптовая часть обработки урона так же подверглась существенной переработке. Исправлено множество багов в работе скилов и расчёта урона.
+ Введён новый фреймворк временных эффектов. Более централизованный и гибкий для добавления новых эффектов.
+ Переработана система абилок нпс. Теперь добавление новых абилок в будущем станет лёгким и непринуждённым.
+ Переработан механизм отправки урона из скриптов. Теперь для этого есть отдельная механика, которая позволит отпралять из скриптов аналог дескриптора урона. И даже ставить его в очередь!
+ Устранён баг с каскадным аое уроном.
+ Отражённый урон должен работать корректно.
+ Поправлены ф-ии определения свой-чужой.
+ Поправлен расчёт опыта в мастерства от урона по хп. Выяснилось что там дважды учитывался энергетический щит, из-за чего опыта начислялось меньше чем нужно.
+ Исправлена ф-ия расчёта среза урона от абилок.
+ Исправлен ряд существенных багов в обработке урона.
+ Паутина теперь не должна вызывать эффект замедления. В теории.
+ По идее руны "Жажда крови" и "Жажда убийства" должны качать мастерство. Мобы под действием этих спелов считаются суммонами.
+ Поправлены ф-ии расчёта урона нпс.
+ Исправлена ф-ия поиска нпс в заданном радиусе.
+ Базовая цена перка "Касание скверны" снижена до 100 золотых
+ Базовые требования ресурсов для прокачки артефактов снижена приблизительно в 10 раз.
+ Меню массового потребления пермаентов исправлена и работает.
+ Поправлены мелкие баги в ф-иях поиска предметов по инвентарю. Опять.
+ Доработана и исправлена механика спавна лута в случайных сундуках:
Теперь спавн в пустых судуках будет происходить, даже если опция случайного лута в сундуках отключена (та, что закидывает дополнительное шмотьё при открытии сундука)
Сундуки теперь закрываются на случайную комбинацию при загрузки в него вещей. Можно отключить.
Добавлен мультиспавн в сундуки. Теперь за раз может искать от 1 до 32 сундуков по миру.
Появилась возможность спавнить вещи и в не облутаных сундуках. Как всегда конфиги.
+ Переработана система уникальных идентификаторов нпс (UId) Требуется новая игра! Прошу прощения за это.
+ Каждый нпс получил свой собственный буффер статов/свойств, привязанный к его UId. Это позволяет отвязаться от аиваров из нб.
+ Собственно отвязался от системы аиваров нб, кроме одного. Теперь у меня есть простор для определения своих переменных для каждого отдельного нпс. Новая игра обязательна!
+ Чуть оптимизированы и исправлены временные эффекты. Эгиды должны работать.
+ Расширено меню общей статистики - добавлены показатели кармы и краткая информация о школах и мастерствах.
+ Ещё некоторые мелкие оптимизации кода по всему моду.
+ Исправлена формула расчёта кармы аданоса. Это производная от того как сильно гг молится обоим богам. Пока нигде не нужна, в будущем будет задействована (заменю, если в нб появится своя)
+ Исправлена функция проверки возможности использования предмета у нпс/гг. Она могла приводить к вылетам, когда нпс пытался использовать зачарованное оружие.
+ Исправлены ф-ии бафов/дебафов нпс. Там я налажал с копированием указателя StExt_Self. Менял его, но не возвращал на место.
+ Исправил баг со стриптизом нпс, из-за работы системы дополнительных слотов брони.
+ Починил ошибку с начислением опыта гг от других нпс. Возможно так же исправлены несправедливые реакции нпс на гг.
+ Эффекты абилок теперь корректно определяются при получении урона, что позволяет вытягивать флаги оригинального спела со всеми втекающими и вытекающими.
+ Вроде бы вражеские эффекты не баффают гг. Исходя из логов. Если попадутся бафы на гг - просьба дать знать. Вместе с логами)
+ Небольшие изменения в AI-контроллере нпс. Поиск цели для каста стал более надёжным.
+ Добавлены сопротивления для дотов и отраженного урона. Так же в комплекте идут модификаторы максимума.
+ Расширены статы нпс. Некоторые новые резисты и так по мелочи.
+ Ауры, которые раньше срабатывали при уроне теперь так же срабатывают и при атаке. Работа этих аур перенесена на новые рельсы отложенного урона.
+ Произведены некоторые правки в работе аур.
+ Поправлены сила лечения нпс от свитков и условие проверки уровня хп для применения.
+ Исправлен баг, когда ф-ия перебора могла "терять" указатель на актёров во время перебора.
+ Оптимизированы ф-ии работы с массивами. Скорость доступа к глобальным массивам через ф-ии должно увеличится раз так в 10.
+ Поправил алгоритм расчёта цены предметов. Вроде теперь он должен стать более вменяемым. Плюсом добавил туда капы, дабы цену не раздувало при экстремальных значениях.
+ И ещё куча всего, что я провтыкал добавить в этот список.
--- Добавлено: ---

Ах, да! Забыл добавить - новая игра обязательна!
Я там менял логику работы абилок и индексы аиваров были смещены. У уже сгенереных мобов на старом сейве ожидаемы баги в работе их абилок (впрочем, можете рискнуть, если прям ну очень нужно).
На каких скриптах тестить?
 
Сверху Снизу