There's really only one thread right now against Parry. There are some who hate the very nature of it (RNG-based mitigation), and some who think it's really valuable. But we all agree that it needs improvement.
I spent a few minutes this morning rereading some of the old threads where the poor nature of Parry was revealed. What we've got for Parry now looks something like this:
Code:
function rng(){//returns random integer 1-100}
$dodge = $enemy->hitRate - ($character->hasBuff("da_dark_dance") ? 20 : 0) + rng() < 100;
$crit = $character->hasBuff("awareness") ? false : $character->hasBuff("raw_intuition") && $enemy->position($character) != 'front' ? true : rng() < $enemy->critRate;
$block = $enemy->position($character) != front || $attack->isMagic ? false : $character->hasBuff("sheltron") ? true : $character->blockRate + ($character->hasBuff("bulwark") ? 60 : 0) > rng();
$parry = $enemy->position($character) != front || $attack->isMagic ? false : $character->hasBuff("raw_intuition") ? true : $character->parryRate + ($character->hasBuff("dark_dance") ? 20 : $character->hasBuff("e_dark_dance") || $character->hasBuff("da_dark_dance") ? 30 : 0) > rng();
// This next part is what we call the combat table.
//
// We're not including things like Living Dead or Hallowed Ground or Rampart,
// since listing all of the various debuffs would make this reeeeeeally long.
//
// Note, it's highly likely that the actual code has a case-switch statement instead
// of a long if/else string, because those are a bit faster.
if($dodge)
{
$damage = 0;
}
else
if($crit)
{
$damage = 1.5 * $attack->damage;
}
else
if($block)
{
$damage = $attack->damage * (100 - $character->blockStrength);
}
else
if($parry)
{
$damage = .8 * $attack->damage;
else
{
$damage = $attack->damage;
}
I'd like to see the combat table changed so that they aren't if/else statements, so you can parry and/or block critical strikes, so an attack can be both parried AND blocked, etc. My idea would look more like this:
Code:
if($dodge)
{
$damage = 0;
}
else
{
$damage = $attack->damage;
if($crit)
{
$damage = 1.5 * $damage;
}
if($block)
{
$damage = $damage * (100 - $character->blockStrength);
}
if($parry)
{
$damage = .8 * $damage;
}
}
This way, the rolls and their sequence are preserved, but we no longer have stats competing with one another. I'd still like to see Parry given a better conversion rate than 35 points to a percent, and maybe given the ability to grow parry mitigation (so instead of .8 * $damage, we could do $damage * (100-$character->parryStrength)).
I did the math in another thread, and even with its poor scaling, Parry is still the best stat for mitigation (yes, even mitigation-by-damage), but it doesn't feel like a very strong stat, and loses its value in magic-heavy fights and fights with prolonged periods of no white damage.