From 8c3a94037c67494d74570175734d897e3aab5e13 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 31 May 2025 19:12:15 -0400 Subject: [PATCH] v3.1.0: fixed camera following enemies after teleport in specific cases --- SPD-classes/src/main/java/com/watabou/noosa/Camera.java | 4 ++++ .../items/scrolls/ScrollOfTeleportation.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Camera.java b/SPD-classes/src/main/java/com/watabou/noosa/Camera.java index 20aaa1a9c..78f0ac8de 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Camera.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Camera.java @@ -269,6 +269,10 @@ public class Camera extends Gizmo { panIntensity = intensity; } + public synchronized Visual followTarget(){ + return followTarget; + } + public synchronized void setFollowDeadzone( float deadzone ){ followDeadzone = deadzone; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTeleportation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTeleportation.java index e6c38004e..fd65f537b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTeleportation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTeleportation.java @@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.Camera; import com.watabou.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; @@ -299,6 +300,11 @@ public class ScrollOfTeleportation extends Scroll { if (Dungeon.level.heroFOV[pos] || ch == Dungeon.hero ) { ch.sprite.emitter().start(Speck.factory(Speck.LIGHT), 0.2f, 3); + } else { + if (Camera.main.followTarget() == ch.sprite){ + //clear the follow in this case as the teleport target is going out of vision + Camera.main.panFollow(null, 5f); + } } }