From 8e713107c9e1de19f0ab0e224f0f5d75cbea5463 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 1 Jul 2022 14:30:25 -0400 Subject: [PATCH] v1.3.0: fixed various errors caused by recent ascension adjustment --- build.gradle | 2 +- .../actors/buffs/AscensionChallenge.java | 2 +- .../shatteredpixeldungeon/levels/Level.java | 20 ++++++++++++------- .../scenes/GameScene.java | 6 ++++-- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index f56ee0310..1e655ba0f 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ allprojects { appName = 'Shattered Pixel Dungeon' appPackageName = 'com.shatteredpixel.shatteredpixeldungeon' - appVersionCode = 637 + appVersionCode = 638 appVersionName = '1.3.0-BETA-3' appJavaCompatibility = JavaVersion.VERSION_1_8 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AscensionChallenge.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AscensionChallenge.java index 27fa718f2..6001a5796 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AscensionChallenge.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/AscensionChallenge.java @@ -213,8 +213,8 @@ public class AscensionChallenge extends Buff { if (!mob.reset()) { Dungeon.level.mobs.remove( mob ); } - Dungeon.level.spawnMob(12); } + Dungeon.level.spawnMob(12); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 2cb1d0c3a..4f3f91417 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -86,6 +86,7 @@ import com.watabou.noosa.Group; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; +import com.watabou.utils.GameMath; import com.watabou.utils.PathFinder; import com.watabou.utils.Point; import com.watabou.utils.Random; @@ -650,11 +651,11 @@ public abstract class Level implements Bundlable { public float respawnCooldown(){ if (Statistics.amuletObtained){ if (Dungeon.depth == 1){ - //very fast spawns on floor 1! 2/4/6/8/10/12, etc. - return (1+Dungeon.level.mobCount()) * (TIME_TO_RESPAWN / 25f); + //very fast spawns on floor 1! 0/2/4/6/8/10/12, etc. + return (Dungeon.level.mobCount()) * (TIME_TO_RESPAWN / 25f); } else { - //respawn time is 5/10/15/20/25/25, etc. - return Math.round(Math.min((1+Dungeon.level.mobCount()) * (TIME_TO_RESPAWN / 10f), TIME_TO_RESPAWN / 2f)); + //respawn time is 5/5/10/15/20/25/25, etc. + return Math.round(GameMath.gate( TIME_TO_RESPAWN/10f, Dungeon.level.mobCount() * (TIME_TO_RESPAWN / 10f), TIME_TO_RESPAWN / 2f)); } } else if (Dungeon.level.feeling == Feeling.DARK){ return 2*TIME_TO_RESPAWN/3f; @@ -664,11 +665,16 @@ public abstract class Level implements Bundlable { } public boolean spawnMob(int disLimit){ - PathFinder.buildDistanceMap(Dungeon.hero.pos, BArray.or(Dungeon.level.passable, Dungeon.level.avoid, null)); + PathFinder.buildDistanceMap(Dungeon.hero.pos, BArray.or(passable, avoid, null)); - Mob mob = Dungeon.level.createMob(); + Mob mob = createMob(); mob.state = mob.WANDERING; - mob.pos = Dungeon.level.randomRespawnCell( mob ); + int tries = 30; + do { + mob.pos = randomRespawnCell(mob); + tries--; + } while ((mob.pos == -1 || PathFinder.distance[mob.pos] < disLimit) && tries > 0); + if (Dungeon.hero.isAlive() && mob.pos != -1 && PathFinder.distance[mob.pos] >= disLimit) { GameScene.add( mob ); if (!mob.buffs(ChampionEnemy.class).isEmpty()){ 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 f08bd3378..e8729c8e3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -938,8 +938,10 @@ public class GameScene extends PixelScene { public static void add( Mob mob ) { Dungeon.level.mobs.add( mob ); - scene.addMobSprite( mob ); - Actor.add( mob ); + if (scene != null) { + scene.addMobSprite(mob); + Actor.add(mob); + } } public static void addSprite( Mob mob ) {