From fc319ad420bb12bea7ba2b1f69a73095dc8b904a Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 3 Nov 2020 15:25:51 -0500 Subject: [PATCH] v0.9.1: improved quickslot targeting logic in edge cases --- .../shatteredpixel/shatteredpixeldungeon/items/Item.java | 4 ++++ .../shatteredpixeldungeon/items/wands/Wand.java | 9 +++++++-- .../shatteredpixeldungeon/items/weapon/SpiritBow.java | 7 ++++++- .../shatteredpixeldungeon/ui/QuickSlotButton.java | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java index aed82b5fb..8dbe7ee0e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java @@ -509,6 +509,10 @@ public class Item implements Bundlable { } } + public int targetingPos( Hero user, int dst ){ + return throwPos( user, dst ); + } + public int throwPos( Hero user, int dst){ return new Ballistica( user.pos, dst, Ballistica.PROJECTILE ).collisionPos; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java index ad18216d0..706c8e35f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java @@ -106,8 +106,13 @@ public abstract class Wand extends Item { } } - - protected abstract void onZap( Ballistica attack ); + + @Override + public int targetingPos(Hero user, int dst) { + return new Ballistica( user.pos, dst, collisionProperties ).collisionPos; + } + + protected abstract void onZap(Ballistica attack ); public abstract void onHit( MagesStaff staff, Char attacker, Char defender, int damage); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java index 00e0207bb..dc4032cca 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java @@ -143,6 +143,11 @@ public class SpiritBow extends Weapon { + 2*RingOfSharpshooting.levelDamageBonus(Dungeon.hero) + (curseInfusionBonus ? 2 : 0); } + + @Override + public int targetingPos(Hero user, int dst) { + return knockArrow().targetingPos(user, dst); + } private int targetPos; @@ -255,7 +260,7 @@ public class SpiritBow extends Weapon { public int STRReq(int lvl) { return SpiritBow.this.STRReq(lvl); } - + @Override protected void onThrow( int cell ) { Char enemy = Actor.findChar( cell ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java index 7a4c02e81..3e9e97972 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java @@ -233,7 +233,7 @@ public class QuickSlotButton extends Button implements WndBag.Listener { public static int autoAim(Char target, Item item){ //first try to directly target - if (item.throwPos(Dungeon.hero, target.pos) == target.pos) { + if (item.targetingPos(Dungeon.hero, target.pos) == target.pos) { return target.pos; }