From 5f6285d3d27fc7db3632b9acf5b6f36e5a9801b7 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 19 Feb 2021 21:30:50 -0500 Subject: [PATCH] v0.9.2: fixed save/load errors with Yog vision reduction --- .../actors/mobs/YogDzewa.java | 30 ++++++++++++------- .../levels/NewHallsBossLevel.java | 12 ++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java index 8a2908afc..e0e9f72bd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/YogDzewa.java @@ -41,6 +41,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.TargetedCell; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PurpleParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -315,11 +316,9 @@ public class YogDzewa extends Mob { if (phase < 4 && HP <= HT - 300*phase){ - Dungeon.level.viewDistance = Math.max(1, Dungeon.level.viewDistance-1); - if (Dungeon.hero.buff(Light.class) == null){ - Dungeon.hero.viewDistance = Dungeon.level.viewDistance; - } - Dungeon.observe(); + phase++; + + updateVisibility(Dungeon.level); GLog.n(Messages.get(this, "darkness")); sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "invulnerable")); @@ -344,7 +343,6 @@ public class YogDzewa extends Mob { GameScene.add(fist, 4); Actor.addDelayed( new Pushing( fist, Dungeon.level.exit, fist.pos ), -1 ); - phase++; } LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); @@ -352,6 +350,21 @@ public class YogDzewa extends Mob { } + public void updateVisibility( Level level ){ + if (phase > 1 && isAlive()){ + level.viewDistance = 4 - (phase-1); + } else { + level.viewDistance = 4; + } + level.viewDistance = Math.max(1, level.viewDistance); + if (Dungeon.hero != null) { + if (Dungeon.hero.buff(Light.class) == null) { + Dungeon.hero.viewDistance = level.viewDistance; + } + Dungeon.observe(); + } + } + private YogFist findFist(){ for ( Char c : Actor.chars() ){ if (c instanceof YogFist){ @@ -385,10 +398,7 @@ public class YogDzewa extends Mob { } } - Dungeon.level.viewDistance = 4; - if (Dungeon.hero.buff(Light.class) == null){ - Dungeon.hero.viewDistance = Dungeon.level.viewDistance; - } + updateVisibility(Dungeon.level); GameScene.bossSlain(); Dungeon.level.unseal(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewHallsBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewHallsBossLevel.java index 399a0b4ef..b63d936b7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewHallsBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/NewHallsBossLevel.java @@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Bones; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.YogDzewa; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle; @@ -38,6 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.watabou.noosa.Group; import com.watabou.noosa.Tilemap; +import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -230,6 +232,16 @@ public class NewHallsBossLevel extends Level { Dungeon.observe(); } + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + for (Mob m : mobs){ + if (m instanceof YogDzewa){ + ((YogDzewa) m).updateVisibility(this); + } + } + } + @Override public String tileName( int tile ) { switch (tile) {