From 4ee449c9183a297dee0a067200dc1755b6631b4d Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 9 Nov 2017 17:39:55 -0500 Subject: [PATCH] v0.6.2b: fixed bugs and added several safety checks --- .../src/main/java/com/watabou/noosa/audio/Music.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Tengu.java | 7 +++++++ .../shatteredpixeldungeon/effects/BlobEmitter.java | 4 +++- .../effects/particles/FlowParticle.java | 2 +- .../shatteredpixeldungeon/scenes/GameScene.java | 2 +- 5 files changed, 13 insertions(+), 4 deletions(-) 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 06e60ee47..d64a827d6 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 @@ -44,7 +44,7 @@ public enum Music implements MediaPlayer.OnPreparedListener, MediaPlayer.OnError public void play( String assetName, boolean looping ) { - if (isPlaying() && lastPlayed.equals( assetName )) { + if (isPlaying() && lastPlayed != null && lastPlayed.equals( assetName )) { return; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java index 092e992b2..e9078addf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java @@ -165,6 +165,13 @@ public class Tengu extends Mob { private void jump() { Level level = Dungeon.level; + + //incase tengu hasn't had a chance to act yet + if (fieldOfView == null || fieldOfView.length != Dungeon.level.length()){ + fieldOfView = new boolean[Dungeon.level.length()]; + Dungeon.level.updateFieldOfView( this, fieldOfView ); + } + if (enemy == null) enemy = chooseEnemy(); if (enemy == null) return; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java index 01675bda7..c636e6c0d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/BlobEmitter.java @@ -56,7 +56,9 @@ public class BlobEmitter extends Emitter { for (int i = blob.area.left; i < blob.area.right; i++) { for (int j = blob.area.top; j < blob.area.bottom; j++) { cell = i + j*Dungeon.level.width(); - if (map[cell] > 0 && Dungeon.level.heroFOV[cell]) { + if (map[cell] > 0 + && cell < Dungeon.level.heroFOV.length + && Dungeon.level.heroFOV[cell]) { float x = (i + Random.Float()) * size; float y = (j + Random.Float()) * size; factory.emit(this, index, x, y); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/FlowParticle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/FlowParticle.java index 5bcb6c650..2aa9af9dd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/FlowParticle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/FlowParticle.java @@ -96,7 +96,7 @@ public class FlowParticle extends PixelParticle { @Override public void update() { - if (visible = Dungeon.level.heroFOV[pos]) { + if (visible = (pos < Dungeon.level.heroFOV.length && Dungeon.level.heroFOV[pos])) { super.update(); 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 4c74197d5..74cace3df 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -902,7 +902,7 @@ public class GameScene extends PixelScene { } static boolean cancel() { - if (Dungeon.hero.curAction != null || Dungeon.hero.resting) { + if (Dungeon.hero != null || Dungeon.hero.curAction != null || Dungeon.hero.resting) { Dungeon.hero.curAction = null; Dungeon.hero.resting = false;