v2.3.0: refactored transmute usable on item code, added a pickace check

This commit is contained in:
Evan Debenham
2023-11-15 12:22:19 -05:00
parent b0f37db830
commit b94425b2c4

View File

@@ -36,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Pickaxe;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone;
@@ -47,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWea
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart;
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
@@ -65,16 +67,27 @@ public class ScrollOfTransmutation extends InventoryScroll {
@Override
protected boolean usableOnItem(Item item) {
return item instanceof MeleeWeapon ||
(item instanceof MissileWeapon && (!(item instanceof Dart) || item instanceof TippedDart)) ||
(item instanceof Potion && !(item instanceof Elixir || item instanceof Brew || item instanceof AlchemicalCatalyst)) ||
//the extra check here prevents a single scroll being used on itself
(item instanceof Scroll && (!(item instanceof ScrollOfTransmutation) || item.quantity() > 1)) ||
item instanceof Ring ||
item instanceof Wand ||
item instanceof Plant.Seed ||
item instanceof Runestone ||
item instanceof Artifact;
//all melee weapons, except pickaxe when in a mining level
if (item instanceof MeleeWeapon){
return !(item instanceof Pickaxe && Dungeon.level instanceof MiningLevel);
//all missile weapons except untipped darts
} else if (item instanceof MissileWeapon){
return item.getClass() != Dart.class;
//all regular or exotic potions. No brews, elixirs, or catalysts
} else if (item instanceof Potion){
return !(item instanceof Elixir || item instanceof Brew || item instanceof AlchemicalCatalyst);
//all regular or exotic scrolls, except itself
} else if (item instanceof Scroll){
return item != this || item.quantity() > 1;
//all rings, wands, artifacts, seeds, and runestones
} else {
return item instanceof Ring || item instanceof Wand || item instanceof Artifact
|| item instanceof Plant.Seed || item instanceof Runestone;
}
}
@Override