PDA

Просмотр полной версии : [patch/dev] Предел роста урона DOT'ов


Insider42
19.06.2010, 12:21
В данный момент есть некая проблема:
Берём допустим паладинский талант Праведная месть, учим на 3 очка.
Выучиваем какой-нибудь спел сильно наращивающий крит, допустим я находил такой, на 50% шанс крита увеличивает, либо же просто одеваемся в "топ" гир.
Идём к манекену, достаем 3 основных способности с которых Праведная месть срабатывает и бъем ими по манекену пока не устанем. Урон от Праведной мести будет возрастать с каждым критом, в итоге может дойти до поднебесных цифр если цикл крита не будет прерван. Такая же проблема у Нечестивой порчи, но т.к. она не работает на чистом мангосе без доп. патча (который вы можете найти в разделе Патчи), бага вы не воспроизведете. А делается он ещё легче чем у паладина, кидаем по кд Лик смерти в одну цель и смотрим как циферки тиков растут, например у меня на сервере разгоняли до 300 000 урона в секунду на боссе.

По моим источникам (с оффа) мне известно что например паладины примерно в обвесе а6-а7 не разгоняют урон тиков более чем 3500/тик (поправить разрешаю), другой паладин (в другом обвесе) назвал иные цифры (одет хуже - цифры меньше). Возникла идея, что на оффе есть некий КАП урона замеряемый в Х (множитель) от возможного урона (полного урона за время всех тиков).
Пока нет точной информации - будем считать что этот множитель равняется 5. Т.е. считаем так:
Урон за время всех тиков * 5 - это и есть предел роста урона тиков.

Патч
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index fe10376..c00a897 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -3974,8 +3974,12 @@ bool Unit::AddAura(Aura *Aur)
{
int32 remainingTicks = aur2->GetAuraMaxTicks() - aur2->GetAuraTicks();
int32 remainingDamage = aur2->GetModifier()->m_amount * remainingTicks;
+ int32 damageCap = aur2->GetModifier()->m_amount * 5;
+ int32 damageIncrease = int32(remainingDamage / Aur->GetAuraMaxTicks());
+ int32 newDamage = Aur->GetModifier()->m_amount + damageIncrease;

- Aur->GetModifier()->m_amount += int32(remainingDamage / Aur->GetAuraMaxTicks());
+ if (newDamage <= damageCap)
+ Aur->GetModifier()->m_amount += damageIncrease;
}
// can be only single (this check done at _each_ aura add
RemoveAura(i2,AURA_REMOVE_BY_STACK);

Жду конструктивной критики :declare:

GriffonHeart
20.06.2010, 07:27
Нужная вещь, но с цифрами не помогу, увы.

Insider42
20.06.2010, 11:41
Как ни странно, но судя по тестам, в случае с Нечестивой порчей это не помогает, а лишь замедляет набор поднебесных циферок DPS. Есть догадки почему?

zhenya
20.06.2010, 12:05
int32 damageCap = aur2->GetModifier()->m_amount * aur2->GetAuraMaxTicks() * 5;
неправильно считается вот это?..

Insider42
20.06.2010, 12:27
да я вот тоже всё удивляюсь, в случае с паладином всё нормально - больше 3к за тик с 4600 силы атаки и оружием уровня А6 разогнать не получилось (с патчем), а вот Нечествая порча даже с патчем продолжает глючить :/ попробую немного другую версию патча Нечестивой порчи, поглядим что будет

Нашёл проблему, исправил, см. первый пост

n0n4m3
21.06.2010, 18:36
As you continue to crit, your previous critical's damage is not lost, however, the duration of RV is reset, and the remainder of your previous crit's damage is tacked onto the new crit's damage.
проблему надо решать правильно tbh