diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/HuntressArmor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/HuntressArmor.java index 40792a7b3..a6e435d03 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/HuntressArmor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/HuntressArmor.java @@ -70,7 +70,7 @@ public class HuntressArmor extends ClassArmor { }; ((MissileSprite)curUser.sprite.parent.recycle( MissileSprite.class )). - reset( curUser.pos, mob.pos, proto, callback ); + reset( curUser.sprite, mob.pos, proto, callback ); targets.put( callback, mob ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java index 2e035d620..0087e05bf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java @@ -61,7 +61,7 @@ public class GnollTricksterSprite extends MobSprite { if (!Dungeon.level.adjacent(cell, ch.pos)) { ((MissileSprite)parent.recycle( MissileSprite.class )). - reset( ch.pos, cell, new ParalyticDart(), new Callback() { + reset( this, cell, new ParalyticDart(), new Callback() { @Override public void call() { ch.onAttackComplete(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java index 887e8810c..d5bc76633 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java @@ -46,24 +46,30 @@ import java.util.HashMap; public class MissileSprite extends ItemSprite implements Tweener.Listener { - private static final float SPEED = 240f; + private static final float SPEED = 24f; private Callback callback; public void reset( int from, int to, Item item, Callback listener ) { - reset( DungeonTilemap.tileToWorld( from ), DungeonTilemap.tileToWorld( to ), item, listener); - } - - public void reset( Visual from, Visual to, Item item, Callback listener ) { - reset(from.center(this), to.center(this), item, listener ); + reset(Dungeon.level.solid[from] ? DungeonTilemap.raisedTileCenterToWorld(from) : DungeonTilemap.raisedTileCenterToWorld(from), + Dungeon.level.solid[to] ? DungeonTilemap.raisedTileCenterToWorld(to) : DungeonTilemap.raisedTileCenterToWorld(to), + item, listener); } public void reset( Visual from, int to, Item item, Callback listener ) { - reset(from.center(this), DungeonTilemap.tileToWorld( to ), item, listener ); + reset(from.center(), + Dungeon.level.solid[to] ? DungeonTilemap.raisedTileCenterToWorld(to) : DungeonTilemap.raisedTileCenterToWorld(to), + item, listener ); } - + public void reset( int from, Visual to, Item item, Callback listener ) { - reset(DungeonTilemap.tileToWorld( from ), to.center(this), item, listener ); + reset(Dungeon.level.solid[from] ? DungeonTilemap.raisedTileCenterToWorld(from) : DungeonTilemap.raisedTileCenterToWorld(from), + to.center(), + item, listener ); + } + + public void reset( Visual from, Visual to, Item item, Callback listener ) { + reset(from.center(), to.center(), item, listener ); } public void reset( PointF from, PointF to, Item item, Callback listener) { @@ -108,6 +114,12 @@ public class MissileSprite extends ItemSprite implements Tweener.Listener { originToCenter(); + //adjust points so they work with the center of the missile sprite, not the corner + from.x -= width()/2; + to.x -= width()/2; + from.y -= height()/2; + to.y -= height()/2; + this.callback = listener; point( from ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java index 67cde963d..f26ae46f5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java @@ -81,7 +81,7 @@ public class ScorpioSprite extends MobSprite { idle(); ((MissileSprite)parent.recycle( MissileSprite.class )). - reset( ch.pos, cellToAttack, new ScorpioShot(), new Callback() { + reset( this, cellToAttack, new ScorpioShot(), new Callback() { @Override public void call() { ch.onAttackComplete(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TenguSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TenguSprite.java index 8802f2172..2da8a48f6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TenguSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TenguSprite.java @@ -81,7 +81,7 @@ public class TenguSprite extends MobSprite { if (!Dungeon.level.adjacent( cell, ch.pos )) { ((MissileSprite)parent.recycle( MissileSprite.class )). - reset( ch.pos, cell, new TenguShuriken(), new Callback() { + reset( this, cell, new TenguShuriken(), new Callback() { @Override public void call() { ch.onAttackComplete();