From 0c75fbbac11e6661d1b34183e81ba40eae79b7d6 Mon Sep 17 00:00:00 2001 From: "oskar.wiksten" Date: Tue, 30 Aug 2011 21:25:29 +0000 Subject: [PATCH] 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 --- .../gpl/rpg/AndorsTrail/controller/CombatController.java | 6 +++--- .../src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java index 9eb200e00..379cdccc7 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java @@ -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; } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java index 1e8e8fc4c..510fc29a7 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java @@ -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);