diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java index 589bcd600..a3bc7f870 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java @@ -317,7 +317,7 @@ public class Dungeon { PathFinder.setMapSize(level.width(), level.height()); Dungeon.level = level; - DriedRose.restoreGhostHero( level, pos + PathFinder.NEIGHBOURS8[Random.Int(8)]); + DriedRose.restoreGhostHero( level, pos ); Actor.init(); visible = new boolean[level.length()]; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 784d7ca75..ab02d1878 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -256,6 +256,12 @@ public class DriedRose extends Artifact { public static void restoreGhostHero( Level level, int pos ){ if (heldGhost != null){ level.mobs.add( heldGhost ); + + int ghostPos; + do { + ghostPos = pos + PathFinder.NEIGHBOURS8[Random.Int(8)]; + } while (!Level.solid[ghostPos] || level.findMob(ghostPos) != null); + heldGhost.pos = pos; heldGhost = null; }