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:
Берём допустим паладинский талант Праведная месть, учим на 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: