diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java index 674554b69..c58e35cc8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Necromancer.java @@ -37,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportat import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.NecromancerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SkeletonSprite; +import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -263,8 +264,13 @@ public class Necromancer extends Mob { if (enemySeen && Dungeon.level.distance(pos, enemy.pos) <= 4 && mySkeleton == null){ summoningPos = -1; + + //we can summon around blocking terrain, but not through it + PathFinder.buildDistanceMap(pos, BArray.not(Dungeon.level.solid, null), Dungeon.level.distance(pos, enemy.pos)+3); + for (int c : PathFinder.NEIGHBOURS8){ if (Actor.findChar(enemy.pos+c) == null + && PathFinder.distance[enemy.pos+c] != Integer.MAX_VALUE && Dungeon.level.passable[enemy.pos+c] && fieldOfView[enemy.pos+c] && Dungeon.level.trueDistance(pos, enemy.pos+c) < Dungeon.level.trueDistance(pos, summoningPos)){