From 08a581be4a0a462cc77e53cf9970b28193b35512 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 30 Oct 2025 13:52:49 -0400 Subject: [PATCH] v3.3.0: added a warning to trinket energizing --- .../messages/windows/windows.properties | 3 ++ .../items/spells/Alchemize.java | 29 +++++++++++++++++-- .../windows/WndEnergizeItem.java | 27 +++++++++++++++-- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/core/src/main/assets/messages/windows/windows.properties b/core/src/main/assets/messages/windows/windows.properties index 6109a8619..d5f4c1704 100644 --- a/core/src/main/assets/messages/windows/windows.properties +++ b/core/src/main/assets/messages/windows/windows.properties @@ -62,6 +62,9 @@ windows.wndenergizeitem.prompt=Energize an Item windows.wndenergizeitem.energize=Turn into %d energy windows.wndenergizeitem.energize_1=Turn 1 into %d energy windows.wndenergizeitem.energize_all=Turn all into %d energy +windows.wndenergizeitem.trinket_warn=Are you sure you want to energize your trinket? You'll get 5 energy back but _the trinket will be permanently lost!_ +windows.wndenergizeitem.trinket_yes=Yes, energize it +windows.wndenergizeitem.trinket_no=No, nevermind windows.wnderror.title=ERROR diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java index ff2f2bf25..8bc2789ea 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.Trinket; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -42,6 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; import com.shatteredpixel.shatteredpixeldungeon.windows.WndEnergizeItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoItem; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.shatteredpixel.shatteredpixeldungeon.windows.WndTradeItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndUpgrade; import com.watabou.noosa.audio.Sample; @@ -213,9 +215,30 @@ public class Alchemize extends Spell { RedButton btnEnergize = new RedButton(Messages.get(this, "energize", item.energyVal())) { @Override protected void onClick() { - WndEnergizeItem.energizeAll(item); - hide(); - consumeAlchemize(); + if (item instanceof Trinket){ + GameScene.show(new WndOptions(new ItemSprite(item), Messages.titleCase(item.name()), + Messages.get(WndEnergizeItem.class, "trinket_warn"), + Messages.get(WndEnergizeItem.class, "trinket_yes"), + Messages.get(WndEnergizeItem.class, "trinket_no")){ + + @Override + protected void onSelect(int index) { + if (index == 0) { + WndEnergizeItem.energizeAll(item); + } + } + + @Override + public void hide() { + super.hide(); + WndAlchemizeItem.this.hide(); + } + }); + } else { + WndEnergizeItem.energizeAll(item); + hide(); + consumeAlchemize(); + } } }; btnEnergize.setRect(0, pos + GAP, width, BTN_HEIGHT); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndEnergizeItem.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndEnergizeItem.java index a2541b5fe..a46c72a1d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndEnergizeItem.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndEnergizeItem.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.EnergyCrystal; import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.Trinket; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.AlchemyScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -34,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.Game; public class WndEnergizeItem extends WndInfoItem { @@ -54,8 +56,29 @@ public class WndEnergizeItem extends WndInfoItem { RedButton btnEnergize = new RedButton( Messages.get(this, "energize", item.energyVal()) ) { @Override protected void onClick() { - energizeAll( item ); - hide(); + if (item instanceof Trinket){ + Game.scene().addToFront(new WndOptions(new ItemSprite(item), Messages.titleCase(item.name()), + Messages.get(WndEnergizeItem.class, "trinket_warn"), + Messages.get(WndEnergizeItem.class, "trinket_yes"), + Messages.get(WndEnergizeItem.class, "trinket_no")){ + + @Override + protected void onSelect(int index) { + if (index == 0) { + energizeAll(item); + } + } + + @Override + public void hide() { + super.hide(); + WndEnergizeItem.this.hide(); + } + }); + } else { + energizeAll(item); + hide(); + } } }; btnEnergize.setRect( 0, pos + GAP, width, BTN_HEIGHT );