diff --git a/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java b/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java index 64ded2e2d..46019625b 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java @@ -97,7 +97,7 @@ public enum Sample { return play( id, volume, volume, pitch ); } - public long play( Object id, float leftVolume, float rightVolume, float pitch ) { + public synchronized long play( Object id, float leftVolume, float rightVolume, float pitch ) { float volume = Math.max(leftVolume, rightVolume); float pan = rightVolume - leftVolume; if (enabled && ids.containsKey( id )) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Amok.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Amok.java index f3c8295b7..bd37fc389 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Amok.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Amok.java @@ -40,8 +40,9 @@ public class Amok extends FlavourBuff { @Override public void detach() { super.detach(); - if (target instanceof Mob) - ((Mob)target).aggro( null ); + if (target instanceof Mob && target.isAlive()) { + ((Mob) target).aggro(null); + } } @Override 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 5aeb89630..b884cd524 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 @@ -225,6 +225,12 @@ public class Ghoul extends Mob { return true; } + if (Dungeon.level.pit[ghoul.pos]){ + super.detach(); + ghoul.die(this); + return true; + } + turnsToRevive--; if (turnsToRevive <= 0){ ghoul.HP = Math.round(ghoul.HT/10f); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index 146d42dac..dea4a0376 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -227,8 +227,8 @@ public abstract class Mob extends Char { //We are charmed and current enemy is what charmed us } else if (buff(Charm.class) != null && buff(Charm.class).object == enemy.id()) { newEnemy = true; - //we aren't amoked and current enemy is invulnerable to us - } else if (buff( Amok.class ) == null && enemy.isInvulnerable(getClass())) { + //we aren't amoked, current enemy is invulnerable to us, and that enemy isn't affect by aggression + } else if (buff( Amok.class ) == null && enemy.isInvulnerable(getClass()) && enemy.buff(StoneOfAggression.Aggression.class) == null) { newEnemy = true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java index 66c172494..88f054e5e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewTengu.java @@ -274,7 +274,7 @@ public class NewTengu extends Mob { level.distance(newPos, enemy.pos) > 7 || level.distance(newPos, Dungeon.hero.pos) < 5 || level.distance(newPos, Dungeon.hero.pos) > 7 || - level.distance(newPos, pos) < 6 || + level.distance(newPos, pos) < 5 || Actor.findChar(newPos) != null || Dungeon.level.heaps.get(newPos) != null); 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 20452a91e..7e240a1a3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -210,8 +210,8 @@ public abstract class RegularLevel extends Level { do { mob.pos = pointToCell(roomToSpawn.random()); tries--; - } while (tries >= 0 && findMob(mob.pos) != null || !passable[mob.pos] || mob.pos == exit - || (!openSpace[mob.pos] && mob.properties().contains(Char.Property.LARGE))); + } while (tries >= 0 && (findMob(mob.pos) != null || !passable[mob.pos] || mob.pos == exit + || (!openSpace[mob.pos] && mob.properties().contains(Char.Property.LARGE)))); if (tries >= 0) { mobsToSpawn--; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java index 98b66a2f7..9601e90e0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java @@ -88,9 +88,13 @@ public class WndWandmaker extends Window { } private void selectReward( Wandmaker wandmaker, Item item, Wand reward ) { - + + if (reward == null){ + return; + } + hide(); - + item.detach( Dungeon.hero.belongings.backpack ); reward.identify();