From 5b959f315c622cfe5c5d868491edec401c753ba6 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 19 Apr 2024 15:05:14 -0400 Subject: [PATCH] v2.4.0: improved 'adjacent enemy' logic for swiftness --- .../items/armor/Armor.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java index c2406fe3f..9213146f9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java @@ -346,11 +346,20 @@ public class Armor extends EquipableItem { if (hasGlyph(Swiftness.class, owner)) { boolean enemyNear = false; - PathFinder.buildDistanceMap(owner.pos, Dungeon.level.passable, 2); + //for each enemy, check if they are adjacent, or within 2 tiles and an adjacent cell is open for (Char ch : Actor.chars()){ - if ( PathFinder.distance[ch.pos] != Integer.MAX_VALUE && owner.alignment != ch.alignment){ - enemyNear = true; - break; + if ( Dungeon.level.distance(ch.pos, owner.pos) <= 2 && owner.alignment != ch.alignment){ + if (Dungeon.level.adjacent(ch.pos, owner.pos)){ + enemyNear = true; + break; + } else { + for (int i : PathFinder.NEIGHBOURS8){ + if (Dungeon.level.adjacent(owner.pos+i, ch.pos) && !Dungeon.level.solid[owner.pos+i]){ + enemyNear = true; + break; + } + } + } } } if (!enemyNear) speed *= (1.2f + 0.04f * buffedLvl()) * glyph.procChanceMultiplier(owner);