diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 801f78465..24e7f881d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -950,12 +950,13 @@ public abstract class Level implements Bundlable { return distance( a, b ) == 1; } - public int distNoDiag( int a, int b){ + //uses pythagorean theorum for true distance, as if there was no movement grid + public float trueDistance(int a, int b){ int ax = a % width(); int ay = a / width(); int bx = b % width(); int by = b / width(); - return Math.abs( ax - bx ) + Math.abs( ay - by ); + return (float)Math.sqrt(Math.pow(Math.abs( ax - bx ), 2) + Math.pow(Math.abs( ay - by ), 2)); } //returns true if the input is a valid tile within the level diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java index d8f6ce22b..611270ff8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/DisintegrationTrap.java @@ -60,7 +60,7 @@ public class DisintegrationTrap extends Trap { for (Char ch : Actor.chars()){ Ballistica bolt = new Ballistica(pos, ch.pos, Ballistica.PROJECTILE); if (bolt.collisionPos == ch.pos && - (target == null || Dungeon.level.distNoDiag(pos, ch.pos) < Dungeon.level.distNoDiag(pos, target.pos))){ + (target == null || Dungeon.level.trueDistance(pos, ch.pos) < Dungeon.level.trueDistance(pos, target.pos))){ target = ch; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java index b41b4bb36..6810bdc79 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/GrimTrap.java @@ -57,7 +57,7 @@ public class GrimTrap extends Trap { for (Char ch : Actor.chars()){ Ballistica bolt = new Ballistica(pos, ch.pos, Ballistica.PROJECTILE); if (bolt.collisionPos == ch.pos && - (target == null || Dungeon.level.distNoDiag(pos, ch.pos) < Dungeon.level.distNoDiag(pos, target.pos))){ + (target == null || Dungeon.level.trueDistance(pos, ch.pos) < Dungeon.level.trueDistance(pos, target.pos))){ target = ch; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java index c4d48fe4d..2b878fcd3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java @@ -57,7 +57,7 @@ public class PoisonDartTrap extends Trap { for (Char ch : Actor.chars()){ Ballistica bolt = new Ballistica(pos, ch.pos, Ballistica.PROJECTILE); if (bolt.collisionPos == ch.pos && - (target == null || Dungeon.level.distNoDiag(pos, ch.pos) < Dungeon.level.distNoDiag(pos, target.pos))){ + (target == null || Dungeon.level.trueDistance(pos, ch.pos) < Dungeon.level.trueDistance(pos, target.pos))){ target = ch; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java index eb913f883..4150158dc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java @@ -55,7 +55,7 @@ public class WornDartTrap extends Trap { for (Char ch : Actor.chars()){ Ballistica bolt = new Ballistica(pos, ch.pos, Ballistica.PROJECTILE); if (bolt.collisionPos == ch.pos && - (target == null || Dungeon.level.distNoDiag(pos, ch.pos) < Dungeon.level.distNoDiag(pos, target.pos))){ + (target == null || Dungeon.level.trueDistance(pos, ch.pos) < Dungeon.level.trueDistance(pos, target.pos))){ target = ch; } }