From 56d4a551bfafc2579975cfe184fd0a3a32ca7d3a Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 19 Jul 2022 17:44:27 -0400 Subject: [PATCH] v1.3.2: Yog's lasers can now be evaded with guaranteed dodges --- .../actors/mobs/YogDzewa.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java index 0b73e6cd4..9e13a9707 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java @@ -156,6 +156,11 @@ public class YogDzewa extends Mob { private ArrayList targetedCells = new ArrayList<>(); + @Override + public int attackSkill(Char target) { + return INFINITE_ACCURACY; + } + @Override protected boolean act() { //char logic @@ -216,23 +221,27 @@ public class YogDzewa extends Mob { Dungeon.observe(); } for (Char ch : affected) { - if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)){ - ch.damage(Random.NormalIntRange(30, 50), new Eye.DeathGaze()); - } else { - ch.damage(Random.NormalIntRange(20, 30), new Eye.DeathGaze()); - } - if (ch == Dungeon.hero){ - Statistics.bossScores[4] -= 500; - } - if (Dungeon.level.heroFOV[pos]) { - ch.sprite.flash(); - CellEmitter.center(pos).burst(PurpleParticle.BURST, Random.IntRange(1, 2)); - } - if (!ch.isAlive() && ch == Dungeon.hero) { - Badges.validateDeathFromEnemyMagic(); - Dungeon.fail(getClass()); - GLog.n(Messages.get(Char.class, "kill", name())); + if (hit( this, ch, true )) { + if (Dungeon.isChallenged(Challenges.STRONGER_BOSSES)) { + ch.damage(Random.NormalIntRange(30, 50), new Eye.DeathGaze()); + } else { + ch.damage(Random.NormalIntRange(20, 30), new Eye.DeathGaze()); + } + if (ch == Dungeon.hero) { + Statistics.bossScores[4] -= 500; + } + if (Dungeon.level.heroFOV[pos]) { + ch.sprite.flash(); + CellEmitter.center(pos).burst(PurpleParticle.BURST, Random.IntRange(1, 2)); + } + if (!ch.isAlive() && ch == Dungeon.hero) { + Badges.validateDeathFromEnemyMagic(); + Dungeon.fail(getClass()); + GLog.n(Messages.get(Char.class, "kill", name())); + } + } else { + ch.sprite.showStatus( CharSprite.NEUTRAL, ch.defenseVerb() ); } } targetedCells.clear();