v1.4.0: improved targeting logic for armor abilities

This commit is contained in:
Evan Debenham
2022-08-15 13:47:42 -04:00
parent 94e7ea0561
commit b5f1513285
7 changed files with 38 additions and 2 deletions

View File

@@ -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)){

View File

@@ -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) {

View File

@@ -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){

View File

@@ -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

View File

@@ -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){

View File

@@ -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){

View File

@@ -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;