Новости Релиз Of Ash and Steel состоится 6 ноября
  • 8.470
  • 12
Of Ash and Steel: атмосферный экшен выходит 6 ноября 6 ноября станет важной датой для поклонников сложных и атмосферных игр - именно в этот день состоится релиз долгожданного проекта Of Ash and...
Новости В Of Ash and Steel начался закрытый плейтест
  • 12.042
  • 12
Разработчики "Русской Готики" объявили о старте закрытого плейтеста. Если вы оставляли заявку на участие, не забудьте проверить электронную почту или посмотреть свою библиотеку - возможно игра уже...
Новости Анонсирован Atomic Heart II
Новости Анонсирован ремастер Final Fantasy Tactics
  • 6.330
  • 2
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...
EthernalBreeze

EthernalBreeze 3.0.6 (BUILD 7.0.1)

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

StonedWizzard

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

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

StonedWizzard

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

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

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

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

Вложения

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

Rustam007

Бродяга
Участник форума
Регистрация
16 Май 2018
Сообщения
35
Реакции
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
Сообщения
35
Реакции
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
Реакции
113
Баллы
105
Лучшие ответы
1
Теперь еще пресеты от Данила надо дождаться=)
 

Icefist

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

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

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

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

zauronix

Гвардеец
Участник форума
Регистрация
26 Сен 2025
Сообщения
1.320
Реакции
214
Баллы
125
Лучшие ответы
0

DanilaDNL

Наемник
Участник форума
Регистрация
2 Май 2018
Сообщения
931
Реакции
271
Баллы
151
Лучшие ответы
0

zauronix

Гвардеец
Участник форума
Регистрация
26 Сен 2025
Сообщения
1.320
Реакции
214
Баллы
125
Лучшие ответы
0
Итак, свершилось!

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

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

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