diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 057ca03e8..823075264 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -526,6 +526,8 @@ public abstract class Char extends Actor { if (defender.buff(MonkEnergy.MonkAbility.Focus.FocusBuff.class) != null && !magic){ defStat = INFINITE_EVASION; + defender.buff(MonkEnergy.MonkAbility.Focus.FocusBuff.class).detach(); + Buff.affect(defender, MonkEnergy.MonkAbility.Focus.FocusActivation.class, 0); } //if accuracy or evasion are large enough, treat them as infinite. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java index 8e7fbaf03..2bbd81405 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java @@ -447,6 +447,16 @@ public class MonkEnergy extends Buff implements ActionIndicator.Action { } } + //tracks just the activation of focus, needed as magical attacks do not trigger it + // but may be dodged normally + public static class FocusActivation extends FlavourBuff { + + { + actPriority = VFX_PRIO; + } + + } + } public static class Dash extends MonkAbility { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 389148276..2d62bb820 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -548,8 +548,8 @@ public class Hero extends Char { return Messages.get(RoundShield.GuardTracker.class, "guarded"); } - if (buff(MonkEnergy.MonkAbility.Focus.FocusBuff.class) != null){ - buff(MonkEnergy.MonkAbility.Focus.FocusBuff.class).detach(); + if (buff(MonkEnergy.MonkAbility.Focus.FocusActivation.class) != null){ + buff(MonkEnergy.MonkAbility.Focus.FocusActivation.class).detach(); if (sprite != null && sprite.visible) { Sample.INSTANCE.play(Assets.Sounds.HIT_PARRY, 1, Random.Float(0.96f, 1.05f)); }