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 a30d05891..ed7880ce6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -174,7 +174,21 @@ public abstract class Recipe { new ExoticPotion.PotionToExotic(), new ExoticScroll.ScrollToExotic(), new ArcaneResin.Recipe(), - new Alchemize.Recipe(), + new BlizzardBrew.Recipe(), + new InfernalBrew.Recipe(), + new ShockingBrew.Recipe(), + new ElixirOfDragonsBlood.Recipe(), + new ElixirOfIcyTouch.Recipe(), + new ElixirOfToxicEssence.Recipe(), + new ElixirOfMight.Recipe(), + new MagicalInfusion.Recipe(), + new AquaBlast.Recipe(), + new BeaconOfReturning.Recipe(), + new FeatherFall.Recipe(), + new PhaseShift.Recipe(), + new Recycle.Recipe(), + new TelekineticGrab.Recipe(), + new SummonElemental.Recipe(), new StewedMeat.oneMeat() }; @@ -183,28 +197,14 @@ public abstract class Recipe { new Bomb.EnhanceBomb(), new AlchemicalCatalyst.Recipe(), new ArcaneCatalyst.Recipe(), + new CausticBrew.Recipe(), new ElixirOfArcaneArmor.Recipe(), new ElixirOfAquaticRejuvenation.Recipe(), - new ElixirOfDragonsBlood.Recipe(), - new ElixirOfIcyTouch.Recipe(), - new ElixirOfMight.Recipe(), new ElixirOfHoneyedHealing.Recipe(), - new ElixirOfToxicEssence.Recipe(), - new BlizzardBrew.Recipe(), - new InfernalBrew.Recipe(), - new ShockingBrew.Recipe(), - new CausticBrew.Recipe(), - new AquaBlast.Recipe(), - new BeaconOfReturning.Recipe(), + new Alchemize.Recipe(), new CurseInfusion.Recipe(), - new FeatherFall.Recipe(), - new MagicalInfusion.Recipe(), - new PhaseShift.Recipe(), new ReclaimTrap.Recipe(), - new Recycle.Recipe(), new WildEnergy.Recipe(), - new TelekineticGrab.Recipe(), - new SummonElemental.Recipe(), new StewedMeat.twoMeat() }; 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 e205addfb..30d3d150c 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 @@ -67,10 +67,10 @@ public class BlizzardBrew extends Brew { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfFrost.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfFrost.class}; + inQuantity = new int[]{1}; - cost = 3; + cost = 11; output = BlizzardBrew.class; outQuantity = 1; 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 bee89fcae..98ed00473 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 @@ -68,10 +68,10 @@ public class InfernalBrew extends Brew { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfLiquidFlame.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfLiquidFlame.class}; + inQuantity = new int[]{1}; - cost = 4; + cost = 12; output = InfernalBrew.class; outQuantity = 1; 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 9fffa1098..3cb9d3a33 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 @@ -63,10 +63,10 @@ public class ShockingBrew extends Brew { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfParalyticGas.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfParalyticGas.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 14; output = ShockingBrew.class; outQuantity = 1; 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 0c92c9875..d1e9955f7 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 @@ -58,10 +58,10 @@ public class ElixirOfDragonsBlood extends Elixir { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfDragonsBreath.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfDragonsBreath.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 14; output = ElixirOfDragonsBlood.class; outQuantity = 1; 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 28b31dee5..c6340a334 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 @@ -55,10 +55,10 @@ public class ElixirOfIcyTouch extends Elixir { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfSnapFreeze.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfSnapFreeze.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 14; output = ElixirOfIcyTouch.class; outQuantity = 1; 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 5a9553c9a..e7cf7e4eb 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 @@ -75,10 +75,10 @@ public class ElixirOfMight extends Elixir { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfStrength.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfStrength.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 14; output = ElixirOfMight.class; outQuantity = 1; 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 0562e239b..5d1c5ea6f 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 @@ -55,10 +55,10 @@ public class ElixirOfToxicEssence extends Elixir { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfToxicGas.class, AlchemicalCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfToxicGas.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 14; output = ElixirOfToxicEssence.class; outQuantity = 1; 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 08c71fa05..176777eba 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 @@ -26,7 +26,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; 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.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -37,6 +39,8 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndTradeItem; import com.watabou.noosa.audio.Sample; +import java.util.ArrayList; + public class Alchemize extends Spell { { @@ -56,19 +60,40 @@ public class Alchemize extends Spell { return (int)(40 * (quantity/8f)); } - //TODO also allow alchemical catalyst? Or save that for an elixir/brew? - public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { + //TODO this can't be simple anymore =S + public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe { - { - inputs = new Class[]{ArcaneCatalyst.class}; - inQuantity = new int[]{1}; - - cost = 2; - - output = Alchemize.class; - outQuantity = 8; + @Override + public boolean testIngredients(ArrayList ingredients) { + if (ingredients.size() != 2) return false; + + if (ingredients.get(0) instanceof Plant.Seed && ingredients.get(1) instanceof Runestone){ + return true; + } + + if (ingredients.get(0) instanceof Runestone && ingredients.get(1) instanceof Plant.Seed){ + return true; + } + + return false; + } + + @Override + public int cost(ArrayList ingredients) { + return 6; + } + + @Override + public Item brew(ArrayList ingredients) { + ingredients.get(0).quantity(ingredients.get(0).quantity()-1); + ingredients.get(1).quantity(ingredients.get(1).quantity()-1); + return sampleOutput(null); + } + + @Override + public Item sampleOutput(ArrayList ingredients) { + return new Alchemize().quantity(8); } - } private static WndBag.ItemSelector itemSelector = new WndBag.ItemSelector() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java index 93b8f636d..7469fc1a9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java @@ -56,10 +56,10 @@ public class AquaBlast extends TargetedSpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfStormClouds.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfStormClouds.class}; + inQuantity = new int[]{1}; - cost = 2; + cost = 11; output = AquaBlast.class; outQuantity = 8; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java index d24514533..b8ec233d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java @@ -219,10 +219,10 @@ public class BeaconOfReturning extends Spell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfPassage.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{ScrollOfPassage.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 15; output = BeaconOfReturning.class; outQuantity = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java index 21168502d..5252bfdd9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java @@ -89,10 +89,10 @@ public class FeatherFall extends Spell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfLevitation.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{PotionOfLevitation.class}; + inQuantity = new int[]{1}; - cost = 8; + cost = 17; output = FeatherFall.class; outQuantity = 2; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalInfusion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalInfusion.java index 2a502cd1c..bbd7955bc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalInfusion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalInfusion.java @@ -80,10 +80,10 @@ public class MagicalInfusion extends InventorySpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfUpgrade.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{ScrollOfUpgrade.class}; + inQuantity = new int[]{1}; - cost = 4; + cost = 13; output = MagicalInfusion.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java index 09fa26c35..d7f28663d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java @@ -72,10 +72,10 @@ public class PhaseShift extends TargetedSpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfTeleportation.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{ScrollOfTeleportation.class}; + inQuantity = new int[]{1}; - cost = 4; + cost = 13; output = PhaseShift.class; outQuantity = 8; 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 b3622dcc8..47fc6147b 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 @@ -99,10 +99,10 @@ public class Recycle extends InventorySpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfTransmutation.class, ArcaneCatalyst.class}; + inputs = new Class[]{ScrollOfTransmutation.class}; inQuantity = new int[]{1, 1}; - cost = 8; + cost = 17; output = Recycle.class; outQuantity = 12; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/SummonElemental.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/SummonElemental.java index e2fa928ee..78158e7d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/SummonElemental.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/SummonElemental.java @@ -226,10 +226,10 @@ public class SummonElemental extends Spell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{Embers.class, ArcaneCatalyst.class}; - inQuantity = new int[]{1, 1}; + inputs = new Class[]{Embers.class}; + inQuantity = new int[]{1}; - cost = 6; + cost = 15; output = SummonElemental.class; outQuantity = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java index 7d1454bbd..2f5e73b4c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java @@ -123,10 +123,10 @@ public class TelekineticGrab extends TargetedSpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{LiquidMetal.class, ArcaneCatalyst.class}; - inQuantity = new int[]{10, 1}; + inputs = new Class[]{LiquidMetal.class}; + inQuantity = new int[]{10}; - cost = 2; + cost = 11; output = TelekineticGrab.class; outQuantity = 6; 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 3f4ad3926..5239d0d9f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java @@ -386,7 +386,7 @@ public class QuickRecipe extends Component { result.add(new QuickRecipe(new ReclaimTrap.Recipe())); result.add(new QuickRecipe(new FeatherFall.Recipe())); result.add(null); - result.add(new QuickRecipe(new Alchemize.Recipe())); + result.add(new QuickRecipe(new Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8))); result.add(new QuickRecipe(new MagicalInfusion.Recipe())); result.add(new QuickRecipe(new CurseInfusion.Recipe())); result.add(new QuickRecipe(new Recycle.Recipe()));