From 5f11a6fb09b1c0d95b7600a8f792bc65c61ff7c0 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 25 Nov 2025 10:42:37 -0500 Subject: [PATCH] v3.3.0: fixed skele key deleting keys on depths it wasn't initialized on --- .../items/artifacts/SkeletonKey.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SkeletonKey.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SkeletonKey.java index 8d1e2592d..b5d93b5b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SkeletonKey.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SkeletonKey.java @@ -587,21 +587,27 @@ public class SkeletonKey extends Artifact { } public void processExcessKeys(){ - int keysNeeded = Math.max(0, ironKeysNeeded[Dungeon.depth]); + int keysNeeded = ironKeysNeeded[Dungeon.depth]; boolean removed = false; - while (Notes.keyCount(new IronKey(Dungeon.depth)) > keysNeeded){ - Notes.remove(new IronKey(Dungeon.depth)); - removed = true; + if (keysNeeded >= 0) { + while (Notes.keyCount(new IronKey(Dungeon.depth)) > keysNeeded) { + Notes.remove(new IronKey(Dungeon.depth)); + removed = true; + } } - keysNeeded = Math.max(0, goldenKeysNeeded[Dungeon.depth]); - while (Notes.keyCount(new GoldenKey(Dungeon.depth)) > keysNeeded){ - Notes.remove(new GoldenKey(Dungeon.depth)); - removed = true; + keysNeeded = goldenKeysNeeded[Dungeon.depth]; + if (keysNeeded >= 0) { + while (Notes.keyCount(new GoldenKey(Dungeon.depth)) > keysNeeded) { + Notes.remove(new GoldenKey(Dungeon.depth)); + removed = true; + } } - keysNeeded = Math.max(0, crystalKeysNeeded[Dungeon.depth]); - while (Notes.keyCount(new CrystalKey(Dungeon.depth)) > keysNeeded){ - Notes.remove(new CrystalKey(Dungeon.depth)); - removed = true; + keysNeeded = crystalKeysNeeded[Dungeon.depth]; + if (keysNeeded >= 0) { + while (Notes.keyCount(new CrystalKey(Dungeon.depth)) > keysNeeded) { + Notes.remove(new CrystalKey(Dungeon.depth)); + removed = true; + } } if (removed){ GameScene.updateKeyDisplay();