Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Критование эффектов DoT\HoT
#1
Всем доброго времени суток!
Буквально недавно до меня дошла информация, что в хрониках выше хф эффекты DoT(DamOverTime) и HoT(HealOverTime) могут критовать. оО
Т.е. шанс крита такой же как и при обычной м.атаке, но если, скажем, ДоТ кританет, то его первый первый тик нанесет power * 10, а остальные тики будут наносить стандартно.
Я так посмотрел, что-то как-то мутно и не понятно. Крит маг. урона расчитывается в формулах, в методе calcMDam, но как такое сделать для дотов? :<
Прошу кого-либо помочь с этим, можно наглядно, спасибо.
Ответ
#2
Можно в getEffects() в Skill если на оверах. Криты еще могут пробивать некоторые инвулы(мб все, не проверял)

Изменение, кстати, не только в критах, тики эффектов тоже придется переделывать.
Ответ
#3
Melcor Написал:Можно в getEffects() в Skill если на оверах. Криты еще могут пробивать некоторые инвулы(мб все, не проверял)

Изменение, кстати, не только в критах, тики эффектов тоже придется переделывать.

Так, хорошо, а что с тиками?:Olen':
Ответ
#4
elastic Написал:Прошу кого-либо помочь с этим, можно наглядно, спасибо.
да думаю просто достаточно
в onStart эффектов DoT и HoT считаем произошел ли крит, при помощи Formulas.calcMCrit и выставляем соответствующий флаг (хранимый в переменной класса эффекта), затем в onActionTime проверяем состояние этого флага и если оно указывает что крит произошел - увеличиваем эффект в 10 раз и сбрасываем флаг (чтобы в следующие тики снова не произошло увеличения эффекта).
Ответ
#5
elastic Написал:Всем доброго времени суток!
Буквально недавно до меня дошла информация, что в хрониках выше хф эффекты DoT(DamOverTime) и HoT(HealOverTime) могут критовать. оО
Т.е. шанс крита такой же как и при обычной м.атаке, но если, скажем, ДоТ кританет, то его первый первый тик нанесет power * 10, а остальные тики будут наносить стандартно.
Я так посмотрел, что-то как-то мутно и не понятно. Крит маг. урона расчитывается в формулах, в методе calcMDam, но как такое сделать для дотов? :<
Прошу кого-либо помочь с этим, можно наглядно, спасибо.

[SRC="java"] public boolean onActionTime()
{
if (getEffected().isDead())
return false;

double damage = calc() * getEffected().calcStat(Stats.POISON_RES, 1, null, null);
boolean crit = Formulas.calcCrit(getEffector().getCriticalHit());
//Шанс критического удара DOT эффектом
if(crit)
{
damage *= Rnd.get(100) < getEffector().getCriticalHit() ? 2 : 1;
}
getEffected().reduceCurrentHpByDOT(damage, getEffector(), getSkill());
return true;
}[/SRC]

просто пример внутри эффекта - реализованный Wink
Ответ
#6
Только есть 1 но. Крит проходит и через целестал.
Тут же эффект даже не наложится и не выполнится onActionTime().

Добавлено через 1 минуту
finfan Написал:[SRC="java"] public boolean onActionTime()
{
if (getEffected().isDead())
return false;

double damage = calc() * getEffected().calcStat(Stats.POISON_RES, 1, null, null);
boolean crit = Formulas.calcCrit(getEffector().getCriticalHit());
//Шанс критического удара DOT эффектом
if(crit)
{
damage *= Rnd.get(100) < getEffector().getCriticalHit() ? 2 : 1;
}
getEffected().reduceCurrentHpByDOT(damage, getEffector(), getSkill());
return true;
}[/SRC]

просто пример внутри эффекта - реализованный Wink
Зачем каждый тик считать крит. Да и крит может быть только 1-й удар.
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Ответ
#7
Bacek Написал:Только есть 1 но. Крит проходит и через целестал.
Тут же эффект даже не наложится и не выполнится onActionTime().

Добавлено через 1 минуту

Зачем каждый тик считать крит. Да и крит может быть только 1-й удар.

У меня не л2, у меня каждый тик может быть критом и на целестиал он не должен накладываться.
У меня урон не проходит через целестиал, вообще никакой, только если нету условия в скиле breakInvul.

P.S. я просто показал пример, а не написал для ТС-а всё что необходимо.
Ответ
#8
Bacek Написал:Только есть 1 но. Крит проходит и через целестал.
Тут же эффект даже не наложится и не выполнится onActionTime().

А вот это уже интересно...
Ответ
#9
Я конечно могу ошибаться , но по моему это появилось в GoD
Ответ
#10
elastic Написал:А вот это уже интересно...
ну а что интересного то - тут и ежику понятно что ради того чтобы при крите эффект прошел даже через неуязвимость, придется мучать getEffects() класса Skill.
+ этого будет недостаточно - надо будет еще в reduceCurrentHp передавать в данной ситуации информацию о том, что хп надо уменьшить, даже если висит неуязвимость - хотя в принципе для этого думаю будет достаточно нанести дамагу от лица самой цели.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)