diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index c3c9d649d..69030f8bc 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -678,9 +678,6 @@ items.potions.potion.shatter=The flask shatters and the liquid splashes harmless items.potions.potion$placeholder.name=potion items.potions.potion$seedtopotion.name=Random Potion -items.potions.alchemicalcatalyst.name=alchemical catalyst -items.potions.alchemicalcatalyst.desc=This thin vial of magical liquid is made from the deconstructed essence of a potion. The liquid is translucent, and glows with shifting colors of the rainbow.\n\nThis catalyst is primarily useful as an alchemy ingredient, but you can also use it directly to get the effect of a random potion. - items.potions.potionofexperience.name=potion of experience items.potions.potionofexperience.desc=The storied experiences of multitudes of battles reduced to liquid form, this draught will instantly raise your experience level. @@ -744,7 +741,8 @@ items.potions.brews.infernalbrew.desc=When shattered, this brew will unleash a r items.potions.brews.shockingbrew.name=shocking brew items.potions.brews.shockingbrew.desc=When shattered, this brew will unleash an electrical storm in a wide area around the location it breaks at. - +items.potions.brews.unstablebrew.name=unstable brew +items.potions.brews.unstablebrew.desc=This magical brew glows with shifting colors of the rainbow. When drank or thrown it will trigger the effect of a random potion. ###elixirs items.potions.elixirs.elixirofarcanearmor.name=elixir of arcane armor @@ -1166,9 +1164,6 @@ items.spells.alchemize$wndalchemizeitem.energize=Turn into %d energy items.spells.alchemize$wndalchemizeitem.energize_1=Turn 1 into %d energy items.spells.alchemize$wndalchemizeitem.energize_all=Turn all into %d energy -items.spells.arcanecatalyst.name=arcane catalyst -items.spells.arcanecatalyst.desc=This ball of golden dust is made from the deconstructed essence of a scroll. It glimmers in the darkness of the dungeon.\n\nThis catalyst is primarily useful as an alchemy ingredient, but you can also channel the magic directly to get the effect of a random scroll. - items.spells.beaconofreturning.name=beacon of returning items.spells.beaconofreturning.preventing=The strong magic aura of this place prevents you from using the spell! items.spells.beaconofreturning.creatures=The Psychic aura of neighbouring creatures doesn't allow you to teleport at this moment. @@ -1229,6 +1224,9 @@ items.spells.telekineticgrab.cant_grab=You can't grab that. items.spells.telekineticgrab.no_target=There's nothing to grab there. items.spells.telekineticgrab.desc=This spell allows the caster to remotely grab all items at a location, or all thrown weapons stuck to an enemy!\n\nIt can't be used to grab items that someone else owns, or to grab containers like chests. +items.spells.unstablespell.name=unstable spell +items.spells.unstablespell.desc=This small black square crystal has shifting runic symbols on each of its surfaces. When activated, it will trigger the effect of a random scroll. + items.spells.wildenergy.name=wild energy items.spells.wildenergy.desc=This spell contains some of the cursed energy which powered DM-300. When cast, it will recharge your wands and worn artifacts, while also triggering a random cursed wand effect. You are able to choose a direction for this cursed magic to shoot in, however. diff --git a/core/src/main/assets/messages/journal/journal.properties b/core/src/main/assets/messages/journal/journal.properties index 9e48ccb59..f5198805c 100644 --- a/core/src/main/assets/messages/journal/journal.properties +++ b/core/src/main/assets/messages/journal/journal.properties @@ -41,10 +41,8 @@ journal.document.alchemy_guide.bombs.title=Enhanced Bombs journal.document.alchemy_guide.bombs.body=A standard black powder bomb can be mixed with a specific item to create an enhanced bomb. journal.document.alchemy_guide.weapons.title=Enhancing Weapons journal.document.alchemy_guide.weapons.body=Some of the lighter or more magical weapons can be used in alchemy!\n\nEach thrown weapon produces enough liquid metal to fully repair another weapon of the same level and tier.\n\nOne wand will produce enough arcane resin to upgrade two wands of the same level, but no higher than +3. -journal.document.alchemy_guide.catalysts.title=Catalysts -journal.document.alchemy_guide.catalysts.body=Catalysts are made by combining a scroll or potion with a single seed or runestone. If the pair of items match, the alchemical energy cost is removed.\n\nCatalysts are most useful as components in recipes covered in the next two pages, but also can be used in a pinch for a random effect. journal.document.alchemy_guide.brews_elixirs.title=Brews and Elixirs -journal.document.alchemy_guide.brews_elixirs.body=Brews and elixirs are advanced potions which provide a variety of effects, and usually have a single use. +journal.document.alchemy_guide.brews_elixirs.body=Brews and elixirs are advanced potions with a variety of effects, usually with a single use. journal.document.alchemy_guide.spells.title=Spells journal.document.alchemy_guide.spells.body=Spells are contained in crystals and provide a variety of effects, usually with multiple uses. diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index 18f23a337..2f059e15a 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -188,7 +188,7 @@ challenges.no_food_desc=Food's already scarce, but you have to watch your portio challenges.no_armor=Faith is my armor challenges.no_armor_desc=You'll need faith in yourself, as your armor won't do much!\n\n- Base blocking power reduced for all armor except cloth\n- All armor now gains very little blocking when upgraded\n- Earthen guardian's defensive power is also significantly reduced challenges.no_healing=Pharmacophobia -challenges.no_healing_desc=Healing potions sure are handy, unfortunately you're allergic!\n\n- Potions of healing, items made using potions of healing, and sunfruit will poison the hero instead of healing them\n- Alchemical catalysts cannot randomly poison or heal the hero\n- These items still work normally for other characters. +challenges.no_healing_desc=Healing potions sure are handy, unfortunately you're allergic!\n\n- Potions of healing, items that use potions of healing in their recipe, and sunfruit will poison the hero instead of healing them\n- Unstable brews cannot randomly poison or heal the hero\n- These items still work normally for other characters. challenges.no_herbalism=Barren land challenges.no_herbalism_desc=There seems to be no clean water left in this accursed dungeon...\n\n- Dew drops are removed\n- Plants are removed\n- Seeds still appear, but will not take root challenges.swarm_intelligence=Swarm intelligence diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index 349cbd64e..72668e18c 100644 Binary files a/core/src/main/assets/sprites/items.png and b/core/src/main/assets/sprites/items.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 20ce9f7b7..0e6326c22 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -48,6 +48,12 @@ public class ShatteredPixelDungeon extends Game { super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); //pre-v2.4.0 + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew.class, + "com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.spells.UnstableSpell.class, + "com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst" ); com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall.class, "com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall" ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index 37ade20db..4eb297c1e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -26,13 +26,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb; import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; @@ -45,7 +45,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotio import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize; -import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning; import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion; import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion; @@ -54,6 +53,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental; import com.shatteredpixel.shatteredpixeldungeon.items.spells.TelekineticGrab; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.UnstableSpell; import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; @@ -195,12 +195,12 @@ public abstract class Recipe { private static Recipe[] twoIngredientRecipes = new Recipe[]{ new Blandfruit.CookFruit(), new Bomb.EnhanceBomb(), - new AlchemicalCatalyst.Recipe(), - new ArcaneCatalyst.Recipe(), + new UnstableBrew.Recipe(), new CausticBrew.Recipe(), new ElixirOfArcaneArmor.Recipe(), new ElixirOfAquaticRejuvenation.Recipe(), new ElixirOfHoneyedHealing.Recipe(), + new UnstableSpell.Recipe(), new Alchemize.Recipe(), new CurseInfusion.Recipe(), new ReclaimTrap.Recipe(), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java index 54d4d7b63..8e1629f0b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java @@ -115,13 +115,11 @@ public class Potion extends Item { mustThrowPots.add(PotionOfShroudingFog.class); mustThrowPots.add(PotionOfStormClouds.class); - //also all brews, hardcoded + //also all brews except unstable, hardcoded } private static final HashSet> canThrowPots = new HashSet<>(); static{ - canThrowPots.add(AlchemicalCatalyst.class); - canThrowPots.add(PotionOfPurity.class); canThrowPots.add(PotionOfLevitation.class); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java index 546556417..447eb0f63 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blizzard; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java index d2e554f79..ef34a825e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Inferno; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java index db32ae81a..3b1604134 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/AlchemicalCatalyst.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java similarity index 57% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/AlchemicalCatalyst.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java index 2224946a4..3261e52a8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/AlchemicalCatalyst.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java @@ -19,14 +19,25 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.items.potions; +package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews; import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; -import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -35,26 +46,37 @@ import com.watabou.utils.Reflection; import java.util.ArrayList; import java.util.HashMap; -public class AlchemicalCatalyst extends Potion { - +public class UnstableBrew extends Brew { + { - image = ItemSpriteSheet.POTION_CATALYST; - + image = ItemSpriteSheet.BREW_UNSTABLE; } - + + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions(hero); + actions.add(AC_DRINK); + return actions; + } + + @Override + public String defaultAction() { + return AC_CHOOSE; + } + private static HashMap, Float> potionChances = new HashMap<>(); - static{ - potionChances.put(PotionOfHealing.class, 3f); - potionChances.put(PotionOfMindVision.class, 2f); - potionChances.put(PotionOfFrost.class, 2f); - potionChances.put(PotionOfLiquidFlame.class, 2f); - potionChances.put(PotionOfToxicGas.class, 2f); - potionChances.put(PotionOfHaste.class, 2f); - potionChances.put(PotionOfInvisibility.class, 2f); - potionChances.put(PotionOfLevitation.class, 2f); - potionChances.put(PotionOfParalyticGas.class, 2f); - potionChances.put(PotionOfPurity.class, 2f); - potionChances.put(PotionOfExperience.class, 1f); + static { + potionChances.put(PotionOfHealing.class, 3f); + potionChances.put(PotionOfMindVision.class, 2f); + potionChances.put(PotionOfFrost.class, 2f); + potionChances.put(PotionOfLiquidFlame.class, 2f); + potionChances.put(PotionOfToxicGas.class, 2f); + potionChances.put(PotionOfHaste.class, 2f); + potionChances.put(PotionOfInvisibility.class, 2f); + potionChances.put(PotionOfLevitation.class, 2f); + potionChances.put(PotionOfParalyticGas.class, 2f); + potionChances.put(PotionOfPurity.class, 2f); + potionChances.put(PotionOfExperience.class, 1f); } @Override @@ -80,11 +102,12 @@ public class AlchemicalCatalyst extends Potion { public boolean isKnown() { return true; } - + + //lower values, as it's cheaper to make @Override public int value() { return 40 * quantity; -} + } @Override public int energyVal() { @@ -96,36 +119,29 @@ public class AlchemicalCatalyst extends Potion { @Override public boolean testIngredients(ArrayList ingredients) { boolean potion = false; - boolean secondary = false; - + boolean seed = false; + for (Item i : ingredients){ - if (i instanceof Plant.Seed || i instanceof Runestone){ - secondary = true; - //if it is a regular or exotic potion + if (i instanceof Plant.Seed) { + seed = true; + //if it is a regular or exotic potion } else if (ExoticPotion.regToExo.containsKey(i.getClass()) || ExoticPotion.regToExo.containsValue(i.getClass())) { potion = true; } } - - return potion && secondary; + + return potion && seed; } - + @Override public int cost(ArrayList ingredients) { - for (Item i : ingredients){ - if (i instanceof Plant.Seed){ - return 0; - } else if (i instanceof Runestone){ - return 1; - } - } - return 0; + return 2; } - + @Override public Item brew(ArrayList ingredients) { - + for (Item i : ingredients){ i.quantity(i.quantity()-1); } @@ -135,7 +151,7 @@ public class AlchemicalCatalyst extends Potion { @Override public Item sampleOutput(ArrayList ingredients) { - return new AlchemicalCatalyst(); + return new UnstableBrew(); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java index 0660a6c3d..97c4d2da8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java @@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDragonsBreath; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java index bd6c52f1f..bec2a3622 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SnowParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfSnapFreeze; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java index 5b42b2385..12a795d65 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java @@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java index 351347803..43dd90916 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java @@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java index 78786ac38..eb3c6eabc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfWealth.java @@ -31,12 +31,12 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; -import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.UnstableSpell; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -235,7 +235,7 @@ public class RingOfWealth extends Ring { i = Generator.randomUsingDefaults(Generator.Category.SCROLL); return Reflection.newInstance(ExoticScroll.regToExo.get(i.getClass())); case 3: - return Random.Int(2) == 0 ? new ArcaneCatalyst() : new AlchemicalCatalyst(); + return Random.Int(2) == 0 ? new UnstableBrew() : new UnstableSpell(); case 4: return new Bomb(); case 5: diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTransmutation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTransmutation.java index 8f61d37c2..24d0dbc5b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTransmutation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/ScrollOfTransmutation.java @@ -31,7 +31,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir; @@ -75,9 +74,9 @@ public class ScrollOfTransmutation extends InventoryScroll { } else if (item instanceof MissileWeapon){ return item.getClass() != Dart.class; - //all regular or exotic potions. No brews, elixirs, or catalysts + //all regular or exotic potions. No brews or elixirs } else if (item instanceof Potion){ - return !(item instanceof Elixir || item instanceof Brew || item instanceof AlchemicalCatalyst); + return !(item instanceof Elixir || item instanceof Brew); //all regular or exotic scrolls, except itself } else if (item instanceof Scroll){ 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 d48331da8..67e0ebe11 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 @@ -56,13 +56,12 @@ public class Alchemize extends Spell { @Override public int value() { - //cheap, as ingredients are cheap + //lower value, as it's very cheap to make (and also sold at shops) return (int)(20 * (quantity/8f)); } @Override public int energyVal() { - //also cheap, same reason return (int)(4 * (quantity/8f)); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java index 8fad7b2cb..1954c1b1c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java @@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.Transmuting; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir; @@ -51,7 +50,7 @@ public class Recycle extends InventorySpell { @Override protected boolean usableOnItem(Item item) { - return (item instanceof Potion && !(item instanceof Elixir || item instanceof Brew || item instanceof AlchemicalCatalyst)) || + return (item instanceof Potion && !(item instanceof Elixir || item instanceof Brew)) || item instanceof Scroll || item instanceof Plant.Seed || item instanceof Runestone || diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ArcaneCatalyst.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java similarity index 88% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ArcaneCatalyst.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java index 7b2a42d4c..8ea36d076 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ArcaneCatalyst.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java @@ -37,7 +37,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; -import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.utils.Random; import com.watabou.utils.Reflection; @@ -45,10 +44,10 @@ import com.watabou.utils.Reflection; import java.util.ArrayList; import java.util.HashMap; -public class ArcaneCatalyst extends Spell { - +public class UnstableSpell extends Spell { + { - image = ItemSpriteSheet.SCROLL_CATALYST; + image = ItemSpriteSheet.UNSTABLE_SPELL; } private static HashMap, Float> scrollChances = new HashMap<>(); @@ -77,7 +76,8 @@ public class ArcaneCatalyst extends Spell { curItem = s; s.doRead(); } - + + //lower values, as it's cheaper to make @Override public int value() { return 40 * quantity; @@ -89,50 +89,43 @@ public class ArcaneCatalyst extends Spell { } public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe { - + @Override public boolean testIngredients(ArrayList ingredients) { boolean scroll = false; - boolean secondary = false; - + boolean stone = false; + for (Item i : ingredients){ - if (i instanceof Plant.Seed || i instanceof Runestone){ - secondary = true; + if (i instanceof Runestone){ + stone = true; //if it is a regular or exotic potion } else if (ExoticScroll.regToExo.containsKey(i.getClass()) || ExoticScroll.regToExo.containsValue(i.getClass())) { scroll = true; } } - - return scroll && secondary; + + return scroll && stone; } @Override public int cost(ArrayList ingredients) { - for (Item i : ingredients){ - if (i instanceof Plant.Seed){ - return 1; - } else if (i instanceof Runestone){ - return 0; - } - } - return 0; + return 2; } - + @Override public Item brew(ArrayList ingredients) { - + for (Item i : ingredients){ i.quantity(i.quantity()-1); } - + return sampleOutput(null); } - + @Override public Item sampleOutput(ArrayList ingredients) { - return new ArcaneCatalyst(); + return new UnstableSpell(); } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java index 51d4cdb20..ca07a0d59 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java @@ -258,7 +258,6 @@ public enum Document { //given in prison ALCHEMY_GUIDE.pagesStates.put("Bombs", debug ? READ : NOT_FOUND); ALCHEMY_GUIDE.pagesStates.put("Weapons", debug ? READ : NOT_FOUND); - ALCHEMY_GUIDE.pagesStates.put("Catalysts", debug ? READ : NOT_FOUND); ALCHEMY_GUIDE.pagesStates.put("Brews_Elixirs", debug ? READ : NOT_FOUND); ALCHEMY_GUIDE.pagesStates.put("Spells", debug ? READ : NOT_FOUND); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index a0b2f3b2c..f1dc09ab3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -483,13 +483,11 @@ public class ItemSpriteSheet { public static final int SCROLL_BERKANAN = SCROLLS+9; public static final int SCROLL_ODAL = SCROLLS+10; public static final int SCROLL_TIWAZ = SCROLLS+11; - - public static final int SCROLL_CATALYST = SCROLLS+13; - public static final int ARCANE_RESIN = SCROLLS+14; + + public static final int ARCANE_RESIN = SCROLLS+13; static { for (int i = SCROLLS; i < SCROLLS+16; i++) assignItemRect(i, 15, 14); - assignItemRect(SCROLL_CATALYST, 12, 11); assignItemRect(ARCANE_RESIN , 12, 11); } @@ -542,12 +540,11 @@ public class ItemSpriteSheet { public static final int POTION_CHARCOAL = POTIONS+9; public static final int POTION_SILVER = POTIONS+10; public static final int POTION_IVORY = POTIONS+11; - public static final int POTION_CATALYST = POTIONS+13; - public static final int LIQUID_METAL = POTIONS+14; + + public static final int LIQUID_METAL = POTIONS+13; static { for (int i = POTIONS; i < POTIONS+16; i++) assignItemRect(i, 12, 14); - assignItemRect(POTION_CATALYST, 6, 15); assignItemRect(LIQUID_METAL, 8, 15); } @@ -593,6 +590,7 @@ public class ItemSpriteSheet { public static final int BREW_SHOCKING = BREWS+2; public static final int BREW_CAUSTIC = BREWS+3; public static final int BREW_AQUA = BREWS+4; + public static final int BREW_UNSTABLE = BREWS+5; private static final int ELIXIRS = xy(9, 25); //8 slots public static final int ELIXIR_HONEY = ELIXIRS+0; @@ -620,6 +618,7 @@ public class ItemSpriteSheet { public static final int RETURN_BEACON = SPELLS+4; public static final int SUMMON_ELE = SPELLS+5; + public static final int UNSTABLE_SPELL = SPELLS+8; public static final int RECLAIM_TRAP = SPELLS+9; public static final int CURSE_INFUSE = SPELLS+11; @@ -633,7 +632,8 @@ public class ItemSpriteSheet { assignItemRect(WILD_ENERGY, 8, 16); assignItemRect(RETURN_BEACON, 8, 16); assignItemRect(SUMMON_ELE, 8, 16); - + + assignItemRect(UNSTABLE_SPELL, 12, 13); assignItemRect(RECLAIM_TRAP, 11, 11); assignItemRect(CURSE_INFUSE, 10, 15); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java index e83f26cb2..117bff224 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java @@ -35,13 +35,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty; import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; @@ -54,7 +54,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotio import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize; -import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning; import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion; import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion; @@ -63,6 +62,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental; import com.shatteredpixel.shatteredpixeldungeon.items.spells.TelekineticGrab; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.UnstableSpell; import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; @@ -353,19 +353,12 @@ public class QuickRecipe extends Component { new ArcaneResin())); return result; case 7: - result.add(new QuickRecipe(new AlchemicalCatalyst.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Plant.Seed.PlaceHolder())), new AlchemicalCatalyst())); - result.add(new QuickRecipe(new AlchemicalCatalyst.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Runestone.PlaceHolder())), new AlchemicalCatalyst())); - result.add(null); - result.add(null); - result.add(new QuickRecipe(new ArcaneCatalyst.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Runestone.PlaceHolder())), new ArcaneCatalyst())); - result.add(new QuickRecipe(new ArcaneCatalyst.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Plant.Seed.PlaceHolder())), new ArcaneCatalyst())); - return result; - case 8: result.add(new QuickRecipe(new CausticBrew.Recipe())); result.add(new QuickRecipe(new BlizzardBrew.Recipe())); result.add(new QuickRecipe(new InfernalBrew.Recipe())); result.add(new QuickRecipe(new AquaBrew.Recipe())); result.add(new QuickRecipe(new ShockingBrew.Recipe())); + result.add(new QuickRecipe(new UnstableBrew.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Plant.Seed.PlaceHolder())), new UnstableBrew())); result.add(null); result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe())); result.add(new QuickRecipe(new ElixirOfAquaticRejuvenation.Recipe())); @@ -376,13 +369,14 @@ public class QuickRecipe extends Component { result.add(new QuickRecipe(new ElixirOfFeatherFall.Recipe())); result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe())); return result; - case 9: + case 8: result.add(new QuickRecipe(new TelekineticGrab.Recipe())); result.add(new QuickRecipe(new PhaseShift.Recipe())); result.add(new QuickRecipe(new WildEnergy.Recipe())); result.add(new QuickRecipe(new BeaconOfReturning.Recipe())); result.add(new QuickRecipe(new SummonElemental.Recipe())); result.add(null); + result.add(new QuickRecipe(new UnstableSpell.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Runestone.PlaceHolder())), new UnstableSpell())); result.add(new QuickRecipe(new ReclaimTrap.Recipe())); result.add(null); result.add(new QuickRecipe(new Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8))); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java index 5094d38e4..65ebfad87 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java @@ -461,7 +461,7 @@ public class v0_7_X_Changes { "\n" + "This update also made some substantial design changes to enchantments. Since enchantments were more accessible after v0.7.0, I wanted to adjust them to be more about gameplay variety and less about raw damage. Prior to this update several of the most common enchantments were essentially direct increases to damage. Changing this was a good overall direction, but some of the specific changes in v0.7.2 missed the mark, and so I had to revisit enchantment mechanics shortly after.")); - changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.POTION_CATALYST, null), "Catalysts!", + changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.BREW_UNSTABLE, null), "Catalysts!", "Added two new recipes: _Alchemical Catalysts_ and _Arcane Catalysts._\n\n" + "These catalysts are made with any potion/scroll, and a seed/runestone. They replace many specific items for higher-cost recipes. Alchemy should be much more flexible now!\n\n" + "Additional Alchemy Changes:\n\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index 3800ac43a..a0492dcaf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -212,9 +212,9 @@ public class WndJournal extends WndTabbed { public static class AlchemyTab extends Component { private RedButton[] pageButtons; - private static final int NUM_BUTTONS = 10; + private static final int NUM_BUTTONS = 9; - private static final int[] spriteIndexes = {10, 12, 7, 9, 11, 8, 3, 13, 14, 15}; + private static final int[] spriteIndexes = {10, 12, 7, 9, 11, 8, 3, 14, 15}; public static int currentPageIdx = 0; @@ -277,7 +277,7 @@ public class WndJournal extends WndTabbed { if (i == 4){ y += ITEM_HEIGHT; x = 0; - buttonWidth = width()/5; + buttonWidth = width()/4; } } }