From 92073d8a52373e390c8a1f5739540158a29b2d06 Mon Sep 17 00:00:00 2001 From: Gonk Date: Sat, 1 Feb 2020 00:29:10 +0100 Subject: [PATCH] First draft of the adjusted monster difficulty calculation See https://andorstrail.com/viewtopic.php?f=3&t=6661 --- .../controller/CombatController.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java index d6bbac491..8b66f3d4d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java @@ -25,6 +25,8 @@ import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea; import com.gpl.rpg.AndorsTrail.resource.VisualEffectCollection; import com.gpl.rpg.AndorsTrail.util.Coord; +import static java.lang.Math.max; + public final class CombatController implements VisualEffectCompletedCallback { private final ControllerContext controllers; private final WorldContext world; @@ -485,12 +487,26 @@ public final class CombatController implements VisualEffectCompletedCallback { return true; } private static float getAverageDamagePerHit(Actor attacker, Actor target) { - float result = (float) (getAttackHitChance(attacker, target)) * attacker.getDamagePotential().average() / 100; - if (hasCriticalAttack(attacker, target)) { - result += (float) attacker.getEffectiveCriticalChance() * result * attacker.getCriticalMultiplier() / 100; + int numPossibleOutcomes = attacker.getDamagePotential().max - attacker.getDamagePotential().current + 1; + float avgNonCriticalDamage = 0; + for (int n=0; n 0) { + for (int n=0; n