From d7e849b3abe435de16af8aa0bb1f9518068ac106 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 14 Aug 2015 17:01:55 -0400 Subject: [PATCH] v0.3.1: quickslot autotarget now targets the closet enemy in multi-enemy situations --- .../shatteredpixeldungeon/actors/hero/Hero.java | 15 ++++++++++++--- .../shatteredpixeldungeon/ui/QuickSlotButton.java | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index d7081ddef..225ef8092 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -939,18 +939,27 @@ public class Hero extends Char { ArrayList visible = new ArrayList(); boolean newMob = false; - + + Mob closest = null; for (Mob m : Dungeon.level.mobs) { if (Level.fieldOfView[ m.pos ] && m.hostile) { visible.add( m ); if (!visibleEnemies.contains( m )) { newMob = true; } + + if (closest == null){ + closest = m; + } else if (distance(closest) > distance(m)) { + closest = m; + } } } - if (visible.size() == 1){ - QuickSlotButton.target(visible.get(0)); + if (closest != null && (QuickSlotButton.lastTarget == null || + !QuickSlotButton.lastTarget.isAlive() || + !Dungeon.visible[QuickSlotButton.lastTarget.pos])){ + QuickSlotButton.target(closest); } if (newMob) { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java index 47db6d907..b96fce51e 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java @@ -48,7 +48,7 @@ public class QuickSlotButton extends Button implements WndBag.Listener { private static Image crossM; private static boolean targeting = false; - private static Char lastTarget= null; + public static Char lastTarget = null; public QuickSlotButton( int slotNum ) { super();