From 20ed6ab62d2783db93d4fac1dc029ea19e75f51b Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 9 Sep 2022 14:28:00 -0400 Subject: [PATCH] v1.4.0: added checks for a few extra cases of respawn cell being -1 --- .../shatteredpixeldungeon/scenes/GameScene.java | 7 ++++--- .../shatteredpixeldungeon/scenes/InterlevelScene.java | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) 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 6a5336d1e..c67b27965 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -427,14 +427,15 @@ public class GameScene extends PixelScene { if (dropped != null) { for (Item item : dropped) { int pos = Dungeon.level.randomRespawnCell( null ); + if (pos == -1) pos = Dungeon.level.entrance(); if (item instanceof Potion) { - ((Potion)item).shatter( pos ); + ((Potion) item).shatter(pos); } else if (item instanceof Plant.Seed && !Dungeon.isChallenged(Challenges.NO_HERBALISM)) { - Dungeon.level.plant( (Plant.Seed)item, pos ); + Dungeon.level.plant((Plant.Seed) item, pos); } else if (item instanceof Honeypot) { Dungeon.level.drop(((Honeypot) item).shatter(null, pos), pos); } else { - Dungeon.level.drop( item, pos ); + Dungeon.level.drop(item, pos); } } Dungeon.droppedItems.remove( Dungeon.depth ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java index 7426be72d..9b2819833 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -469,11 +469,16 @@ public class InterlevelScene extends PixelScene { Dungeon.hero.resurrect(); level = Dungeon.newLevel(); Dungeon.hero.pos = level.randomRespawnCell(Dungeon.hero); + if (Dungeon.hero.pos == -1) Dungeon.hero.pos = level.entrance(); for (Item i : preservedItems){ - level.drop(i, level.randomRespawnCell(null)); + int pos = level.randomRespawnCell(null); + if (pos == -1) pos = level.entrance(); + level.drop(i, pos); } - level.drop(new LostBackpack(), level.randomRespawnCell(null)); + int pos = level.randomRespawnCell(null); + if (pos == -1) pos = level.entrance(); + level.drop(new LostBackpack(), pos); } else { level = Dungeon.level;