v1.2.0: fixed scrolls of enchant not consuming on cancel when un-ided

This commit is contained in:
Evan Debenham 2022-01-18 19:58:07 -05:00
parent afd2cc5927
commit 2db23a6de5

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Enchanting;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.InventoryScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
@ -38,6 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
@ -53,10 +55,16 @@ public class ScrollOfEnchantment extends ExoticScroll {
unique = true; unique = true;
} }
protected static boolean identifiedByUse = false;
@Override @Override
public void doRead() { public void doRead() {
if (!isKnown()) {
identify(); identify();
identifiedByUse = true;
} else {
identifiedByUse = false;
}
GameScene.selectItem( itemSelector ); GameScene.selectItem( itemSelector );
} }
@ -64,6 +72,28 @@ public class ScrollOfEnchantment extends ExoticScroll {
return (item instanceof MeleeWeapon || item instanceof SpiritBow || item instanceof Armor); return (item instanceof MeleeWeapon || item instanceof SpiritBow || item instanceof Armor);
} }
private void confirmCancelation() {
GameScene.show( new WndOptions(new ItemSprite(this),
Messages.titleCase(name()),
Messages.get(InventoryScroll.class, "warning"),
Messages.get(InventoryScroll.class, "yes"),
Messages.get(InventoryScroll.class, "no") ) {
@Override
protected void onSelect( int index ) {
switch (index) {
case 0:
curUser.spendAndNext( TIME_TO_READ );
identifiedByUse = false;
break;
case 1:
GameScene.selectItem(itemSelector);
break;
}
}
public void onBackPressed() {}
} );
}
protected WndBag.ItemSelector itemSelector = new WndBag.ItemSelector() { protected WndBag.ItemSelector itemSelector = new WndBag.ItemSelector() {
@Override @Override
@ -186,8 +216,11 @@ public class ScrollOfEnchantment extends ExoticScroll {
} }
}); });
} else { } else {
//TODO if this can ever be found un-IDed, need logic for that if (!identifiedByUse){
curItem.collect(); curItem.collect();
} else {
((ScrollOfEnchantment)curItem).confirmCancelation();
}
} }
} }
}; };