Сообщений: 441
Тем: 15
Зарегистрирован: Oct 2012
Репутация:
3,319
Всем доброго времени суток!
Буквально недавно до меня дошла информация, что в хрониках выше хф эффекты DoT(DamOverTime) и HoT(HealOverTime) могут критовать. оО
Т.е. шанс крита такой же как и при обычной м.атаке, но если, скажем, ДоТ кританет, то его первый первый тик нанесет power * 10, а остальные тики будут наносить стандартно.
Я так посмотрел, что-то как-то мутно и не понятно. Крит маг. урона расчитывается в формулах, в методе calcMDam, но как такое сделать для дотов? :<
Прошу кого-либо помочь с этим, можно наглядно, спасибо.
Сообщений: 199
Тем: 0
Зарегистрирован: Jul 2013
Репутация:
348
Можно в getEffects() в Skill если на оверах. Криты еще могут пробивать некоторые инвулы(мб все, не проверял)
Изменение, кстати, не только в критах, тики эффектов тоже придется переделывать.
Сообщений: 441
Тем: 15
Зарегистрирован: Oct 2012
Репутация:
3,319
Melcor Написал:Можно в getEffects() в Skill если на оверах. Криты еще могут пробивать некоторые инвулы(мб все, не проверял)
Изменение, кстати, не только в критах, тики эффектов тоже придется переделывать.
Так, хорошо, а что с тиками?:Olen':
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
elastic Написал:Прошу кого-либо помочь с этим, можно наглядно, спасибо. да думаю просто достаточно
в onStart эффектов DoT и HoT считаем произошел ли крит, при помощи Formulas.calcMCrit и выставляем соответствующий флаг (хранимый в переменной класса эффекта), затем в onActionTime проверяем состояние этого флага и если оно указывает что крит произошел - увеличиваем эффект в 10 раз и сбрасываем флаг (чтобы в следующие тики снова не произошло увеличения эффекта).
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
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]
просто пример внутри эффекта - реализованный
Сообщений: 406
Тем: 10
Зарегистрирован: Jun 2008
Репутация:
2,862
02-16-2014, 10:44 PM
(Сообщение последний раз редактировалось: 02-16-2014, 10:46 PM Bacek.)
Только есть 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]
просто пример внутри эффекта - реализованный  Зачем каждый тик считать крит. Да и крит может быть только 1-й удар.
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Bacek Написал:Только есть 1 но. Крит проходит и через целестал.
Тут же эффект даже не наложится и не выполнится onActionTime().
Добавлено через 1 минуту
Зачем каждый тик считать крит. Да и крит может быть только 1-й удар.
У меня не л2, у меня каждый тик может быть критом и на целестиал он не должен накладываться.
У меня урон не проходит через целестиал, вообще никакой, только если нету условия в скиле breakInvul.
P.S. я просто показал пример, а не написал для ТС-а всё что необходимо.
Сообщений: 441
Тем: 15
Зарегистрирован: Oct 2012
Репутация:
3,319
Bacek Написал:Только есть 1 но. Крит проходит и через целестал.
Тут же эффект даже не наложится и не выполнится onActionTime().
А вот это уже интересно...
Сообщений: 3,491
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
Я конечно могу ошибаться , но по моему это появилось в GoD
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
elastic Написал:А вот это уже интересно... ну а что интересного то - тут и ежику понятно что ради того чтобы при крите эффект прошел даже через неуязвимость, придется мучать getEffects() класса Skill.
+ этого будет недостаточно - надо будет еще в reduceCurrentHp передавать в данной ситуации информацию о том, что хп надо уменьшить, даже если висит неуязвимость - хотя в принципе для этого думаю будет достаточно нанести дамагу от лица самой цели.
|