mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Only do critical attacks if the attacker both has a non-zero critical chance and a non-zero critical modifier (resolves issue 235)
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@148 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
@@ -378,7 +378,7 @@ public final class CombatController {
|
||||
return getAverageDamagePerHit(attacker, target) * attacker.getAttacksPerTurn();
|
||||
}
|
||||
private static int getTurnsToKillTarget(ActorTraits attacker, ActorTraits target) {
|
||||
if (attacker.hasCriticalMultiplierEffect()) {
|
||||
if (attacker.hasCriticalAttacks()) {
|
||||
if (attacker.damagePotential.max * attacker.criticalMultiplier <= target.damageResistance) return 999;
|
||||
} else {
|
||||
if (attacker.damagePotential.max <= target.damageResistance) return 999;
|
||||
@@ -423,9 +423,9 @@ public final class CombatController {
|
||||
|
||||
int damage = Constants.rollValue(attacker.traits.damagePotential);
|
||||
boolean isCriticalHit = false;
|
||||
if (attacker.traits.hasCriticalChanceEffect()) {
|
||||
if (attacker.traits.hasCriticalAttacks()) {
|
||||
isCriticalHit = Constants.roll100(attacker.traits.criticalChance);
|
||||
if (isCriticalHit && attacker.traits.hasCriticalMultiplierEffect()) {
|
||||
if (isCriticalHit) {
|
||||
damage *= attacker.traits.criticalMultiplier;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ public class CombatTraits {
|
||||
public boolean hasBlockEffect() { return blockChance != 0; }
|
||||
public boolean hasCriticalChanceEffect() { return criticalChance != 0; }
|
||||
public boolean hasCriticalMultiplierEffect() { return criticalMultiplier != 0 && criticalMultiplier != 1; }
|
||||
public boolean hasCriticalAttacks() { return hasCriticalChanceEffect() && hasCriticalMultiplierEffect(); }
|
||||
|
||||
public int getAttacksPerTurn(final int maxAP) {
|
||||
return (int) Math.floor(maxAP / attackCost);
|
||||
|
||||
Reference in New Issue
Block a user