diff --git a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java index 05842b27e..2ce7aa7c7 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/audio/Music.java @@ -99,8 +99,12 @@ public enum Music { public void stop() { if (player != null) { - player.stop(); - player.release(); + try { + player.stop(); + player.release(); + } catch ( Exception e ){ + Game.reportException(e); + } player = null; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java index 8dc42817c..1e153c16c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java @@ -42,10 +42,12 @@ public class ShockingDart extends TippedDart { defender.damage(Random.NormalIntRange(8, 12), this); CharSprite s = defender.sprite; - ArrayList arcs = new ArrayList<>(); - arcs.add(new Lightning.Arc(new PointF(s.x, s.y + s.height/2), new PointF(s.x + s.width, s.y + s.height/2))); - arcs.add(new Lightning.Arc(new PointF(s.x + s.width/2, s.y), new PointF(s.x + s.width/2, s.y + s.height))); - defender.sprite.parent.add( new Lightning( arcs, null ) ); + if (s != null && s.parent != null) { + ArrayList arcs = new ArrayList<>(); + arcs.add(new Lightning.Arc(new PointF(s.x, s.y + s.height / 2), new PointF(s.x + s.width, s.y + s.height / 2))); + arcs.add(new Lightning.Arc(new PointF(s.x + s.width / 2, s.y), new PointF(s.x + s.width / 2, s.y + s.height))); + s.parent.add(new Lightning(arcs, null)); + } return super.proc(attacker, defender, damage); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index dceb7129c..0e32401d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -273,10 +273,15 @@ public abstract class RegularLevel extends Level { @Override public int randomDestination() { + int count = 0; int cell = -1; while (true) { + if (++count > 30) { + return -1; + } + Room room = Random.element( rooms ); if (room == null) { continue; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 408609e1f..0f8c8b03a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -159,6 +159,11 @@ public class GameScene extends PixelScene { @Override public void create() { + if (Dungeon.hero == null){ + ShatteredPixelDungeon.switchNoFade(TitleScene.class); + return; + } + Music.INSTANCE.play( Assets.TUNE, true ); SPDSettings.lastClass(Dungeon.hero.heroClass.ordinal()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java index 1eada9052..21c0acc8f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java @@ -91,7 +91,11 @@ public class WndRanking extends WndTabbed { thread = null; if (error == null) { remove( busy ); - createControls(); + if (Dungeon.hero != null) { + createControls(); + } else { + hide(); + } } else { hide(); Game.scene().add( new WndError( error ) );