diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/ArmorAbility.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/ArmorAbility.java index e0b633b43..18f1babfe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/ArmorAbility.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/ArmorAbility.java @@ -21,9 +21,11 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor; +import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -62,6 +64,10 @@ public abstract class ArmorAbility implements Bundlable { return targetingPrompt() != null; } + public int targetedPos( Char user, int dst ){ + return new Ballistica( user.pos, dst, Ballistica.PROJECTILE ).collisionPos; + } + public float chargeUse( Hero hero ){ float chargeUse = baseChargeUse; if (hero.hasTalent(Talent.HEROIC_ENERGY)){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/Ratmogrify.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/Ratmogrify.java index 29a3a23de..c6b1499fb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/Ratmogrify.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/Ratmogrify.java @@ -68,6 +68,11 @@ public class Ratmogrify extends ArmorAbility { return Messages.get(this, "prompt"); } + @Override + public int targetedPos(Char user, int dst) { + return dst; + } + @Override protected void activate(ClassArmor armor, Hero hero, Integer target) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java index e0241f760..616f9d039 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WarpBeacon.java @@ -70,6 +70,11 @@ public class WarpBeacon extends ArmorAbility { return super.targetingPrompt(); } + @Override + public int targetedPos(Char user, int dst) { + return dst; + } + @Override protected void activate(ClassArmor armor, Hero hero, Integer target) { if (target == null){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/DeathMark.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/DeathMark.java index b48557bfa..8efb89df3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/DeathMark.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/DeathMark.java @@ -46,13 +46,18 @@ import com.watabou.utils.PathFinder; public class DeathMark extends ArmorAbility { + { + baseChargeUse = 25f; + } + @Override public String targetingPrompt() { return Messages.get(this, "prompt"); } - { - baseChargeUse = 25f; + @Override + public int targetedPos(Char user, int dst) { + return dst; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/SmokeBomb.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/SmokeBomb.java index 0e0845c15..b13ef955b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/SmokeBomb.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/rogue/SmokeBomb.java @@ -67,6 +67,11 @@ public class SmokeBomb extends ArmorAbility { return Messages.get(this, "prompt"); } + @Override + public boolean useTargeting() { + return false; + } + @Override public float chargeUse(Hero hero) { if (!hero.hasTalent(Talent.SHADOW_STEP) || hero.invisible <= 0){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Shockwave.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Shockwave.java index 6e01cd5ce..2ceb46f9d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Shockwave.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Shockwave.java @@ -57,6 +57,11 @@ public class Shockwave extends ArmorAbility { return Messages.get(this, "prompt"); } + @Override + public int targetedPos(Char user, int dst) { + return new Ballistica( user.pos, dst, Ballistica.STOP_SOLID | Ballistica.STOP_TARGET ).collisionPos; + } + @Override protected void activate(ClassArmor armor, Hero hero, Integer target) { if (target == null){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java index 63f2a5ecc..e87b5aef6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java @@ -89,6 +89,11 @@ abstract public class ClassArmor extends Armor { } } + @Override + public int targetingPos(Hero user, int dst) { + return user.armorAbility.targetedPos(user, dst); + } + public static ClassArmor upgrade (Hero owner, Armor armor ) { ClassArmor classArmor = null;