From 2879e9ae549935decfa61bbdb8566997cf39060e Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 21 Jul 2023 12:37:41 -0400 Subject: [PATCH] v2.2.0: overhauled logic for item consumption when use has multi steps --- .../items/artifacts/UnstableSpellbook.java | 1 + .../exotic/PotionOfDivineInspiration.java | 22 +++++++++++-------- .../potions/exotic/PotionOfDragonsBreath.java | 10 ++++----- .../items/potions/exotic/PotionOfMastery.java | 11 +++++----- .../items/scrolls/InventoryScroll.java | 10 ++++----- .../items/scrolls/Scroll.java | 2 -- .../items/scrolls/ScrollOfLullaby.java | 3 ++- .../items/scrolls/ScrollOfMagicMapping.java | 3 ++- .../items/scrolls/ScrollOfMirrorImage.java | 1 + .../items/scrolls/ScrollOfRage.java | 1 + .../items/scrolls/ScrollOfRecharging.java | 1 + .../items/scrolls/ScrollOfRemoveCurse.java | 2 ++ .../items/scrolls/ScrollOfRetribution.java | 3 ++- .../items/scrolls/ScrollOfTeleportation.java | 1 + .../items/scrolls/ScrollOfTerror.java | 3 ++- .../scrolls/exotic/ScrollOfAntiMagic.java | 3 ++- .../scrolls/exotic/ScrollOfChallenge.java | 2 ++ .../scrolls/exotic/ScrollOfDivination.java | 3 ++- .../items/scrolls/exotic/ScrollOfDread.java | 2 ++ .../scrolls/exotic/ScrollOfEnchantment.java | 17 +++++++++----- .../scrolls/exotic/ScrollOfForesight.java | 2 ++ .../scrolls/exotic/ScrollOfMetamorphosis.java | 7 +++++- .../exotic/ScrollOfMysticalEnergy.java | 3 ++- .../items/scrolls/exotic/ScrollOfPassage.java | 1 + .../exotic/ScrollOfPrismaticImage.java | 3 ++- .../scrolls/exotic/ScrollOfPsionicBlast.java | 3 ++- .../scrolls/exotic/ScrollOfSirensSong.java | 19 +++++++++++----- .../items/stones/InventoryStone.java | 7 ++---- .../items/stones/StoneOfAugmentation.java | 2 ++ .../items/stones/StoneOfEnchantment.java | 1 + .../items/stones/StoneOfIntuition.java | 5 +++-- 31 files changed, 99 insertions(+), 55 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java index 0b17f23eb..58901c955 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java @@ -153,6 +153,7 @@ public class UnstableSpellbook extends Artifact { handler.detach(); if (index == 1){ Scroll scroll = Reflection.newInstance(ExoticScroll.regToExo.get(fScroll.getClass())); + curItem = scroll; charge--; scroll.anonymize(); scroll.doRead(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDivineInspiration.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDivineInspiration.java index bcbcd1552..a2d40fb43 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDivineInspiration.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDivineInspiration.java @@ -44,11 +44,19 @@ public class PotionOfDivineInspiration extends ExoticPotion { icon = ItemSpriteSheet.Icons.POTION_DIVINE; } + protected static boolean identifiedByUse = false; + @Override //need to override drink so that time isn't spent right away protected void drink(final Hero hero) { - curUser = hero; - curItem = this; + + if (!isKnown()) { + identify(); + curItem = detach( hero.belongings.backpack ); + identifiedByUse = true; + } else { + identifiedByUse = false; + } boolean[] enabled = new boolean[5]; enabled[1] = enabled[2] = enabled[3] = enabled[4] = true; @@ -71,10 +79,6 @@ public class PotionOfDivineInspiration extends ExoticPotion { } } - if (!isIdentified()) { - curItem.detach(curUser.belongings.backpack); - } - GameScene.show(new WndOptions( new ItemSprite(this), Messages.titleCase(trueName()), @@ -96,11 +100,11 @@ public class PotionOfDivineInspiration extends ExoticPotion { if (index != -1){ Buff.affect(curUser, DivineInspirationTracker.class).setBoosted(index+1); - if (isIdentified()) { + if (!identifiedByUse) { curItem.detach(curUser.belongings.backpack); } + identifiedByUse = false; - identify(); curUser.busy(); curUser.sprite.operate(curUser.pos); @@ -132,7 +136,7 @@ public class PotionOfDivineInspiration extends ExoticPotion { @Override public void onBackPressed() { //window can be closed if potion is already IDed - if (isIdentified()){ + if (!identifiedByUse){ super.onBackPressed(); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDragonsBreath.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDragonsBreath.java index ccdb833fe..cfb326c2c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDragonsBreath.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfDragonsBreath.java @@ -60,11 +60,10 @@ public class PotionOfDragonsBreath extends ExoticPotion { @Override //need to override drink so that time isn't spent right away protected void drink(final Hero hero) { - curUser = hero; - curItem = detach( hero.belongings.backpack ); if (!isKnown()) { identify(); + curItem = detach( hero.belongings.backpack ); identifiedByUse = true; } else { identifiedByUse = false; @@ -116,9 +115,10 @@ public class PotionOfDragonsBreath extends ExoticPotion { } ); } }); - } else if (cell == null && !anonymous){ - curItem.collect( curUser.belongings.backpack ); } else if (cell != null) { + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } potionAlreadyUsed = true; identifiedByUse = false; curUser.busy(); @@ -127,8 +127,6 @@ public class PotionOfDragonsBreath extends ExoticPotion { @Override public void call() { - curItem.detach(curUser.belongings.backpack); - curUser.sprite.idle(); curUser.sprite.zap(cell); Sample.INSTANCE.play( Assets.Sounds.BURNING ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfMastery.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfMastery.java index 2ef7b872b..98cf1a18d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfMastery.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/PotionOfMastery.java @@ -49,11 +49,10 @@ public class PotionOfMastery extends ExoticPotion { @Override //need to override drink so that time isn't spent right away protected void drink(final Hero hero) { - curUser = hero; - curItem = detach( hero.belongings.backpack ); if (!isKnown()) { identify(); + curItem = detach( hero.belongings.backpack ); identifiedByUse = true; } else { identifiedByUse = false; @@ -99,8 +98,6 @@ public class PotionOfMastery extends ExoticPotion { } public void onBackPressed() {} } ); - } else if (item == null && !anonymous){ - curItem.collect( curUser.belongings.backpack ); } else if (item != null) { if (item instanceof Weapon) { @@ -114,7 +111,11 @@ public class PotionOfMastery extends ExoticPotion { Sample.INSTANCE.play( Assets.Sounds.DRINK ); curUser.sprite.operate(curUser.pos); - curItem.detach(curUser.belongings.backpack); + + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } + identifiedByUse = false; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/InventoryScroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/InventoryScroll.java index 1f8faec11..1dd165f0c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/InventoryScroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/InventoryScroll.java @@ -40,6 +40,7 @@ public abstract class InventoryScroll extends Scroll { if (!isKnown()) { identify(); + curItem = detach( curUser.belongings.backpack ); identifiedByUse = true; } else { identifiedByUse = false; @@ -109,7 +110,10 @@ public abstract class InventoryScroll extends Scroll { } if (item != null) { - + + if (!identifiedByUse) { + curItem = detach(curUser.belongings.backpack); + } ((InventoryScroll)curItem).onItemSelected( item ); ((InventoryScroll)curItem).readAnimation(); @@ -119,10 +123,6 @@ public abstract class InventoryScroll extends Scroll { ((InventoryScroll)curItem).confirmCancelation(); - } else if (!((Scroll)curItem).anonymous) { - - curItem.collect( curUser.belongings.backpack ); - } else { curUser.spendAndNext( TIME_TO_READ ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index 5b25129fa..7d5d79be3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -171,8 +171,6 @@ public abstract class Scroll extends Item { && !(this instanceof ScrollOfRemoveCurse || this instanceof ScrollOfAntiMagic)){ GLog.n( Messages.get(this, "cursed") ); } else { - curUser = hero; - curItem = detach( hero.belongings.backpack ); doRead(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfLullaby.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfLullaby.java index e925e300c..4260ee2a7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfLullaby.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfLullaby.java @@ -40,7 +40,8 @@ public class ScrollOfLullaby extends Scroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); curUser.sprite.centerEmitter().start( Speck.factory( Speck.NOTE ), 0.3f, 5 ); Sample.INSTANCE.play( Assets.Sounds.LULLABY ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMagicMapping.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMagicMapping.java index cb806db2b..86f27d458 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMagicMapping.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMagicMapping.java @@ -41,7 +41,8 @@ public class ScrollOfMagicMapping extends Scroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); int length = Dungeon.level.length(); int[] map = Dungeon.level.map; boolean[] mapped = Dungeon.level.mapped; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMirrorImage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMirrorImage.java index 3772febd1..a9dd9c678 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMirrorImage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfMirrorImage.java @@ -46,6 +46,7 @@ public class ScrollOfMirrorImage extends Scroll { @Override public void doRead() { + detach(curUser.belongings.backpack); if ( spawnImages(curUser, NIMAGES) > 0){ GLog.i(Messages.get(this, "copies")); } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRage.java index 79d440d4f..2ba83b1ea 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRage.java @@ -42,6 +42,7 @@ public class ScrollOfRage extends Scroll { @Override public void doRead() { + detach(curUser.belongings.backpack); for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { mob.beckon( curUser.pos ); if (mob.alignment != Char.Alignment.ALLY && Dungeon.level.heroFOV[mob.pos]) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java index b344801b9..39afa1f74 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRecharging.java @@ -42,6 +42,7 @@ public class ScrollOfRecharging extends Scroll { @Override public void doRead() { + detach(curUser.belongings.backpack); Buff.affect(curUser, Recharging.class, Recharging.DURATION); charge(curUser); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java index 5e6dec3aa..3b1fd25c4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRemoveCurse.java @@ -50,6 +50,8 @@ public class ScrollOfRemoveCurse extends InventoryScroll { @Override public void doRead() { + + detach(curUser.belongings.backpack); TormentedSpirit spirit = null; for (int i : PathFinder.NEIGHBOURS8){ if (Actor.findChar(curUser.pos+i) instanceof TormentedSpirit){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRetribution.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRetribution.java index 58c41ba51..4293c1018 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRetribution.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfRetribution.java @@ -41,7 +41,8 @@ public class ScrollOfRetribution extends Scroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); GameScene.flash( 0x80FFFFFF ); //scales from 0x to 1x power, maxing at ~10% HP 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 13d78fa92..6edcef6fe 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 @@ -57,6 +57,7 @@ public class ScrollOfTeleportation extends Scroll { @Override public void doRead() { + detach(curUser.belongings.backpack); Sample.INSTANCE.play( Assets.Sounds.READ ); if (teleportPreferringUnseen( curUser )){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java index 54628c489..dc78f1699 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTerror.java @@ -41,7 +41,8 @@ public class ScrollOfTerror extends Scroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); new Flare( 5, 32 ).color( 0xFF0000, true ).show( curUser.sprite, 2f ); Sample.INSTANCE.play( Assets.Sounds.READ ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfAntiMagic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfAntiMagic.java index 35ee780d8..aa6386983 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfAntiMagic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfAntiMagic.java @@ -34,7 +34,8 @@ public class ScrollOfAntiMagic extends ExoticScroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); Buff.affect( curUser, MagicImmune.class, MagicImmune.DURATION ); new Flare( 5, 32 ).color( 0x00FF00, true ).show( curUser.sprite, 2f ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfChallenge.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfChallenge.java index 8ea72d749..e29d47da6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfChallenge.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfChallenge.java @@ -50,6 +50,8 @@ public class ScrollOfChallenge extends ExoticScroll { @Override public void doRead() { + + detach(curUser.belongings.backpack); for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { mob.beckon( curUser.pos ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java index b4fd953e3..079d4fe04 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDivination.java @@ -51,7 +51,8 @@ public class ScrollOfDivination extends ExoticScroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); curUser.sprite.parent.add( new Identification( curUser.sprite.center().offset( 0, -16 ) ) ); Sample.INSTANCE.play( Assets.Sounds.READ ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDread.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDread.java index 4d24a71cf..651f1f267 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDread.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfDread.java @@ -40,6 +40,8 @@ public class ScrollOfDread extends ExoticScroll { @Override public void doRead() { + + detach(curUser.belongings.backpack); new Flare( 5, 32 ).color( 0xFF0000, true ).show( curUser.sprite, 2f ); Sample.INSTANCE.play( Assets.Sounds.READ ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfEnchantment.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfEnchantment.java index 0c31c8ff3..2a7381202 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfEnchantment.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfEnchantment.java @@ -59,6 +59,7 @@ public class ScrollOfEnchantment extends ExoticScroll { public void doRead() { if (!isKnown()) { identify(); + curItem = detach(curUser.belongings.backpack); identifiedByUse = true; } else { identifiedByUse = false; @@ -113,6 +114,10 @@ public class ScrollOfEnchantment extends ExoticScroll { public void onSelect(final Item item) { if (item instanceof Weapon){ + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } + identifiedByUse = false; final Weapon.Enchantment enchants[] = new Weapon.Enchantment[3]; @@ -124,6 +129,10 @@ public class ScrollOfEnchantment extends ExoticScroll { GameScene.show(new WndEnchantSelect((Weapon) item, enchants[0], enchants[1], enchants[2])); } else if (item instanceof Armor) { + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } + identifiedByUse = false; final Armor.Glyph glyphs[] = new Armor.Glyph[3]; @@ -133,12 +142,8 @@ public class ScrollOfEnchantment extends ExoticScroll { glyphs[2] = Armor.Glyph.random( existing, glyphs[0].getClass(), glyphs[1].getClass()); GameScene.show(new WndGlyphSelect((Armor) item, glyphs[0], glyphs[1], glyphs[2])); - } else { - if (!identifiedByUse){ - curItem.collect(); - } else { - ((ScrollOfEnchantment)curItem).confirmCancelation(); - } + } else if (identifiedByUse){ + ((ScrollOfEnchantment)curItem).confirmCancelation(); } } }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java index 31a2fb1b1..ca0aeae82 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfForesight.java @@ -35,6 +35,8 @@ public class ScrollOfForesight extends ExoticScroll { @Override public void doRead() { + + detach(curUser.belongings.backpack); Sample.INSTANCE.play( Assets.Sounds.READ ); Buff.affect(curUser, Foresight.class, Foresight.DURATION); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java index 087bf6f8d..a66bec33a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java @@ -58,6 +58,7 @@ public class ScrollOfMetamorphosis extends ExoticScroll { public void doRead() { if (!isKnown()) { identify(); + curItem = detach(curUser.belongings.backpack); identifiedByUse = true; } else { identifiedByUse = false; @@ -156,7 +157,6 @@ public class ScrollOfMetamorphosis extends ExoticScroll { ((ScrollOfMetamorphosis)curItem).confirmCancelation(this); } else { super.onBackPressed(); - curItem.collect(); } } @@ -193,6 +193,11 @@ public class ScrollOfMetamorphosis extends ExoticScroll { public WndMetamorphReplace(Talent replacing, int tier){ super(); + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } + identifiedByUse = false; + INSTANCE = this; this.replacing = replacing; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java index d38e457fc..bef70a3d4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMysticalEnergy.java @@ -37,7 +37,8 @@ public class ScrollOfMysticalEnergy extends ExoticScroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); //append buff Buff.affect(curUser, ArtifactRecharge.class).set( 30 ).ignoreHornOfPlenty = false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPassage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPassage.java index d9bd82c78..fa52f6a97 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPassage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPassage.java @@ -39,6 +39,7 @@ public class ScrollOfPassage extends ExoticScroll { @Override public void doRead() { + detach(curUser.belongings.backpack); identify(); readAnimation(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPrismaticImage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPrismaticImage.java index 2ec11eabe..15bbc7fb6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPrismaticImage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPrismaticImage.java @@ -39,7 +39,8 @@ public class ScrollOfPrismaticImage extends ExoticScroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); boolean found = false; for (Mob m : Dungeon.level.mobs.toArray(new Mob[0])){ if (m instanceof PrismaticImage){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java index ff82e286f..63b67393b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfPsionicBlast.java @@ -43,7 +43,8 @@ public class ScrollOfPsionicBlast extends ExoticScroll { @Override public void doRead() { - + + detach(curUser.belongings.backpack); GameScene.flash( 0x80FFFFFF ); Sample.INSTANCE.play( Assets.Sounds.BLAST ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfSirensSong.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfSirensSong.java index f4754c3c0..84a2e5e32 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfSirensSong.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfSirensSong.java @@ -44,10 +44,18 @@ public class ScrollOfSirensSong extends ExoticScroll { { icon = ItemSpriteSheet.Icons.SCROLL_SIREN; } + + protected static boolean identifiedByUse = false; @Override public void doRead() { - if (!anonymous) curItem.collect(); //we detach it later + if (!isKnown()) { + identify(); + curItem = detach(curUser.belongings.backpack); + identifiedByUse = true; + } else { + identifiedByUse = false; + } GameScene.selectCell(targeter); } @@ -67,14 +75,12 @@ public class ScrollOfSirensSong extends ExoticScroll { } } - if (target == null && isKnown() && !anonymous){ + if (target == null && !anonymous && !identifiedByUse){ GLog.w(Messages.get(ScrollOfSirensSong.class, "cancel")); return; } else { - detach(curUser.belongings.backpack); - curUser.sprite.centerEmitter().start( Speck.factory( Speck.HEART ), 0.2f, 5 ); Sample.INSTANCE.play( Assets.Sounds.CHARMS ); Sample.INSTANCE.playDelayed( Assets.Sounds.LULLABY, 0.1f ); @@ -99,7 +105,10 @@ public class ScrollOfSirensSong extends ExoticScroll { GLog.w(Messages.get(ScrollOfSirensSong.class, "no_target")); } - identify(); + if (!identifiedByUse) { + curItem.detach(curUser.belongings.backpack); + } + identifiedByUse = false; readAnimation(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/InventoryStone.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/InventoryStone.java index 4a0d5d84c..fe5e51886 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/InventoryStone.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/InventoryStone.java @@ -52,7 +52,6 @@ public abstract class InventoryStone extends Runestone { public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_USE)){ - curItem = detach( hero.belongings.backpack ); activate(curUser.pos); } } @@ -66,7 +65,7 @@ public abstract class InventoryStone extends Runestone { curUser.spend( 1f ); curUser.busy(); curUser.sprite.operate(curUser.pos); - + Sample.INSTANCE.play( Assets.Sounds.READ ); Invisibility.dispel(); } @@ -110,11 +109,9 @@ public abstract class InventoryStone extends Runestone { } if (item != null) { - + ((InventoryStone)curItem).onItemSelected( item ); - } else{ - curItem.collect( curUser.belongings.backpack ); } } }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAugmentation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAugmentation.java index af2f68869..dccf9a6fa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAugmentation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfAugmentation.java @@ -60,6 +60,7 @@ public class StoneOfAugmentation extends InventoryStone { weapon.augment = augment; useAnimation(); ScrollOfUpgrade.upgrade(curUser); + curItem.detach( curUser.belongings.backpack ); } @@ -68,6 +69,7 @@ public class StoneOfAugmentation extends InventoryStone { armor.augment = augment; useAnimation(); ScrollOfUpgrade.upgrade(curUser); + curItem.detach( curUser.belongings.backpack ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfEnchantment.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfEnchantment.java index 389e5164b..ecc1f4083 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfEnchantment.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfEnchantment.java @@ -48,6 +48,7 @@ public class StoneOfEnchantment extends InventoryStone { @Override protected void onItemSelected(Item item) { + curItem.detach( curUser.belongings.backpack ); if (item instanceof Weapon) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java index 9125fea10..0f45166c6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfIntuition.java @@ -66,7 +66,7 @@ public class StoneOfIntuition extends InventoryStone { @Override protected void onItemSelected(Item item) { - + GameScene.show( new WndGuess(item)); } @@ -110,12 +110,13 @@ public class StoneOfIntuition extends InventoryStone { if (curUser.buff(IntuitionUseTracker.class) == null){ GLog.h( Messages.get(WndGuess.class, "preserved") ); - new StoneOfIntuition().collect(); Buff.affect(curUser, IntuitionUseTracker.class); } else { + curItem.detach( curUser.belongings.backpack ); curUser.buff(IntuitionUseTracker.class).detach(); } } else { + curItem.detach( curUser.belongings.backpack ); if (curUser.buff(IntuitionUseTracker.class) != null) { curUser.buff(IntuitionUseTracker.class).detach(); }