diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Ghoul.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Ghoul.java index 05a7a3cb4..5b820e4e9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Ghoul.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Ghoul.java @@ -264,6 +264,11 @@ public class Ghoul extends Mob { public boolean act() { ghoul.sprite.visible = Dungeon.level.heroFOV[ghoul.pos]; + if (target.fieldOfView == null){ + target.fieldOfView = new boolean[Dungeon.level.length()]; + Dungeon.level.updateFieldOfView( target, target.fieldOfView ); + } + if (!target.fieldOfView[ghoul.pos] && Dungeon.level.distance(ghoul.pos, target.pos) >= 4){ detach(); return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index c1ed9b1a7..b319459c3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -238,7 +238,7 @@ public abstract class Recipe { public static boolean usableInRecipe(Item item){ return !item.cursed - && (!(item instanceof EquipableItem) || item instanceof Dart || item instanceof AlchemistsToolkit) + && (!(item instanceof EquipableItem) || (item instanceof AlchemistsToolkit && item.isIdentified())) && !(item instanceof Wand); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java index 2f88758ec..c0441d15c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java @@ -196,6 +196,11 @@ public class HallsLevel extends RegularLevel { @Override public void update() { + + if (!Dungeon.level.water[pos]){ + killAndErase(); + return; + } if (visible = (pos < Dungeon.level.heroFOV.length && Dungeon.level.heroFOV[pos])) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewCavesBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewCavesBossLevel.java index 053fa2b8e..b3826521b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewCavesBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewCavesBossLevel.java @@ -213,7 +213,7 @@ public class NewCavesBossLevel extends Level { boss.state = boss.WANDERING; do { boss.pos = pointToCell(Random.element(mainArena.getPoints())); - } while (!openSpace[boss.pos] || map[boss.pos] == Terrain.EMPTY_SP || heroFOV[boss.pos]); + } while (!openSpace[boss.pos] || map[boss.pos] == Terrain.EMPTY_SP); GameScene.add( boss ); set( entrance, Terrain.WALL );