From fefb148f63c518bca2186a019162582ccca6dc5f Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 26 Jul 2025 21:42:36 -0400 Subject: [PATCH] v3.2.0: fixed exploits with thrown weapon upgrading and shops --- .../actors/mobs/npcs/Shopkeeper.java | 4 ++++ .../items/weapon/missiles/MissileWeapon.java | 6 +++--- .../windows/WndTradeItem.java | 20 ++++++++++++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java index 16f056622..cdfbae58b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/Shopkeeper.java @@ -36,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -265,6 +266,9 @@ public class Shopkeeper extends NPC { Item returned = buybackItems.remove(index-2); Dungeon.gold -= returned.value(); Statistics.goldCollected -= returned.value(); + if (returned instanceof MissileWeapon && returned.isUpgradable()){ + Dungeon.hero.buff(MissileWeapon.UpgradedSetTracker.class).levelThresholds.put(((MissileWeapon) returned).setID, returned.level()); + } if (!returned.doPickUp(Dungeon.hero)){ Dungeon.level.drop(returned, Dungeon.hero.pos); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index 73d08d33e..6fdf30125 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -769,7 +769,7 @@ abstract public class MissileWeapon extends Weapon { return true; } - public static final String SET_IDD = "set_ids"; + public static final String SET_IDS = "set_ids"; public static final String SET_LEVELS = "set_levels"; @Override @@ -783,14 +783,14 @@ abstract public class MissileWeapon extends Weapon { levels[i] = levelThresholds.get(ID); i++; } - bundle.put(SET_IDD, IDs); + bundle.put(SET_IDS, IDs); bundle.put(SET_LEVELS, levels); } @Override public void restoreFromBundle(Bundle bundle) { super.restoreFromBundle(bundle); - long[] IDs = bundle.getLongArray(SET_IDD); + long[] IDs = bundle.getLongArray(SET_IDS); int[] levels = bundle.getIntArray(SET_LEVELS); levelThresholds.clear(); for (int i = 0; i