diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index a746388f6..c30a7b924 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1156,7 +1156,7 @@ items.scrolls.exotic.scrollofpsionicblast.desc=This scroll contains incredible d ###spells items.spells.alchemize.name=alchemize items.spells.alchemize.prompt=Alchemize an Item -items.spells.alchemize.desc=This spell contains transmutative powers similar to those found in an alchemy pot. Each cast allows the user to turn an item (or stack of items) into gold or alchemical energy.\n\nAlchemize is sold from shops, and can also be made using alchemy. A scroll is mixed with a runestone or seed to create an arcane catalyst, that catalyst can then be used to create several uses of alchemize. +items.spells.alchemize.desc=This spell contains transmutative powers similar to those found in an alchemy pot. Each cast allows the user to turn an item (or stack of items) into gold or alchemical energy.\n\nA few Alchemize uses are sold from shops, but many more can be made using alchemy by combining a seed, runestone, and a little alchemical energy. items.spells.alchemize$wndalchemizeitem.sell=Turn into %dg items.spells.alchemize$wndalchemizeitem.sell_1=Turn 1 into %dg items.spells.alchemize$wndalchemizeitem.sell_all=Turn all into %dg @@ -1207,14 +1207,13 @@ items.spells.recycle.desc=This spell contains a lesser form of transmutation mag items.spells.summonelemental.name=summon elemental items.spells.summonelemental.ac_imbue=IMBUE -items.spells.summonelemental.summon_limit=You can only have one elemental summoned at a time. items.spells.summonelemental.imbue_prompt=Imbue an item items.spells.summonelemental.desc=This spell channels the energy of the elemental embers used to make it, and will allow you to summon a friendly elemental to fight with you! Only one elemental can be summoned at a time, but the spell can be re-cast to return the elemental to you at no cost. -items.spells.summonelemental.desc_newborn=The spell is currently unimbued, and will summon a _newborn elemental_ without a ranged attack. You can imbue an identified potion of liquid flame, potion of frost, scroll of recharging, or scroll of transmutation to power the spell up, causing its next summon to be a full power elemental! -items.spells.summonelemental.desc_fire=The spell is currently hot to the touch, its next summon will be a _fire elemental_. You can imbue a different item, but the spell will lose its current imbue. -items.spells.summonelemental.desc_frost=The spell is currently cold to the touch, its next summon will be a _frost elemental_. You can imbue a different item, but the spell will lose its current imbue. -items.spells.summonelemental.desc_shock=The spell is currently radiating static energy, its next summon will be a _shock elemental_. You can imbue a different item, but the spell will lose its current imbue. -items.spells.summonelemental.desc_chaos=The spell is currently radiating chaotic energy, its next summon will be a _chaos elemental_. You can imbue a different item, but the spell will lose its current imbue. +items.spells.summonelemental.desc_newborn=The spell is currently unimbued, and will summon a _newborn elemental_ without a ranged attack. You can imbue an identified potion of liquid flame, potion of frost, scroll of recharging, or scroll of transmutation to power the spell up, causing future summons to be a full power elemental! +items.spells.summonelemental.desc_fire=The spell is currently hot to the touch, it will summon a _fire elemental_. You can imbue a different item, but the spell will lose its current imbue. +items.spells.summonelemental.desc_frost=The spell is currently cold to the touch, it will summon a _frost elemental_. You can imbue a different item, but the spell will lose its current imbue. +items.spells.summonelemental.desc_shock=The spell is currently radiating static energy, it will summon a _shock elemental_. You can imbue a different item, but the spell will lose its current imbue. +items.spells.summonelemental.desc_chaos=The spell is currently radiating chaotic energy, it will summon a _chaos elemental_. You can imbue a different item, but the spell will lose its current imbue. items.spells.targetedspell.prompt=Choose a target items.spells.targetedspell.inv_title=Infuse an item diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index 4ec8ce97f..a7a9ad035 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/items/potions/brews/CausticBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java index b6d0f7d4f..7ac3f60b6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java @@ -68,7 +68,7 @@ public class CausticBrew extends Brew { inputs = new Class[]{PotionOfToxicGas.class, GooBlob.class}; inQuantity = new int[]{1, 1}; - cost = 0; + cost = 1; output = CausticBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java index b9a6cfa58..8554f6fd1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/UnstableBrew.java @@ -153,7 +153,7 @@ public class UnstableBrew extends Brew { @Override public int cost(ArrayList ingredients) { - return 2; + return 1; } @Override 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 67e0ebe11..4a51c6c20 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 @@ -84,7 +84,7 @@ public class Alchemize extends Spell { @Override public int cost(ArrayList ingredients) { - return 6; + return 2; } @Override 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 54da26c45..62743e85d 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 @@ -226,7 +226,7 @@ public class BeaconOfReturning extends Spell { inputs = new Class[]{ScrollOfPassage.class}; inQuantity = new int[]{1}; - cost = 15; + cost = 12; output = BeaconOfReturning.class; outQuantity = 5; 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 f1fd861d2..05a6652dc 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 @@ -87,7 +87,7 @@ public class MagicalInfusion extends InventorySpell { inputs = new Class[]{ScrollOfUpgrade.class}; inQuantity = new int[]{1}; - cost = 13; + cost = 12; 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 9f0d020fc..50eab51b9 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 @@ -65,12 +65,12 @@ public class PhaseShift extends TargetedSpell { @Override public int value() { - return (int)(60 * (quantity/8f)); + return (int)(60 * (quantity/6f)); } @Override public int energyVal() { - return (int)(12 * (quantity/8f)); + return (int)(12 * (quantity/6f)); } public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { @@ -79,10 +79,10 @@ public class PhaseShift extends TargetedSpell { inputs = new Class[]{ScrollOfTeleportation.class}; inQuantity = new int[]{1}; - cost = 13; + cost = 10; output = PhaseShift.class; - outQuantity = 8; + outQuantity = 6; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java index 5d1679aa4..d0056e945 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java @@ -115,12 +115,12 @@ public class ReclaimTrap extends TargetedSpell { @Override public int value() { - return (int)(60 * (quantity/4f)); + return (int)(60 * (quantity/5f)); } @Override public int energyVal() { - return (int)(12 * (quantity/4f)); + return (int)(12 * (quantity/5f)); } private static final String STORED_TRAP = "stored_trap"; @@ -143,10 +143,10 @@ public class ReclaimTrap extends TargetedSpell { inputs = new Class[]{ScrollOfMagicMapping.class, MetalShard.class}; inQuantity = new int[]{1, 1}; - cost = 6; + cost = 8; output = ReclaimTrap.class; - outQuantity = 4; + outQuantity = 5; } } 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 1954c1b1c..beb8b92f1 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 @@ -105,7 +105,7 @@ public class Recycle extends InventorySpell { inputs = new Class[]{ScrollOfTransmutation.class}; inQuantity = new int[]{1, 1}; - cost = 17; + cost = 12; 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 78158e7d9..a642b2464 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 @@ -116,8 +116,6 @@ public class SummonElemental extends Spell { curUser.sprite.operate(curUser.pos); curUser.spendAndNext(Actor.TICK); - summonClass = Elemental.AllyNewBornElemental.class; - detach(Dungeon.hero.belongings.backpack); } else { @@ -229,10 +227,10 @@ public class SummonElemental extends Spell { inputs = new Class[]{Embers.class}; inQuantity = new int[]{1}; - cost = 15; + cost = 10; output = SummonElemental.class; - outQuantity = 5; + outQuantity = 6; } } 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 bbe2ce967..3571fd49d 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 @@ -116,12 +116,12 @@ public class TelekineticGrab extends TargetedSpell { @Override public int value() { - return (int)(60 * (quantity/6f)); + return (int)(60 * (quantity/8f)); } @Override public int energyVal() { - return (int)(12 * (quantity/6f)); + return (int)(12 * (quantity/8f)); } public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { @@ -130,10 +130,10 @@ public class TelekineticGrab extends TargetedSpell { inputs = new Class[]{LiquidMetal.class}; inQuantity = new int[]{10}; - cost = 11; + cost = 10; output = TelekineticGrab.class; - outQuantity = 6; + outQuantity = 8; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java index 9b21c6fea..b8e74aef6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/UnstableSpell.java @@ -144,7 +144,7 @@ public class UnstableSpell extends Spell { @Override public int cost(ArrayList ingredients) { - return 2; + return 1; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java index 46b80676e..fa215a424 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/WildEnergy.java @@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; -import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfMysticalEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.CursedWand; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -76,7 +75,7 @@ public class WildEnergy extends TargetedSpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfMysticalEnergy.class, MetalShard.class}; + inputs = new Class[]{ScrollOfRecharging.class, MetalShard.class}; inQuantity = new int[]{1, 1}; cost = 4; 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 634914ad4..e84e8885e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -611,35 +611,34 @@ public class ItemSpriteSheet { //16 free slots private static final int SPELLS = xy(1, 27); //16 slots - public static final int MAGIC_PORTER = SPELLS+0; + public static final int WILD_ENERGY = SPELLS+0; public static final int PHASE_SHIFT = SPELLS+1; public static final int TELE_GRAB = SPELLS+2; - public static final int WILD_ENERGY = SPELLS+3; - public static final int RETURN_BEACON = SPELLS+4; - public static final int SUMMON_ELE = SPELLS+5; + public static final int UNSTABLE_SPELL = SPELLS+3; + + public static final int CURSE_INFUSE = SPELLS+5; + public static final int MAGIC_INFUSE = SPELLS+6; + public static final int ALCHEMIZE = SPELLS+7; + public static final int RECYCLE = SPELLS+8; + + public static final int RECLAIM_TRAP = SPELLS+10; + public static final int RETURN_BEACON = SPELLS+11; + public static final int SUMMON_ELE = SPELLS+12; - public static final int UNSTABLE_SPELL = SPELLS+8; - public static final int RECLAIM_TRAP = SPELLS+9; - - public static final int CURSE_INFUSE = SPELLS+11; - public static final int MAGIC_INFUSE = SPELLS+12; - public static final int ALCHEMIZE = SPELLS+13; - public static final int RECYCLE = SPELLS+14; static{ - assignItemRect(MAGIC_PORTER, 12, 11); + assignItemRect(WILD_ENERGY, 12, 11); assignItemRect(PHASE_SHIFT, 12, 11); assignItemRect(TELE_GRAB, 12, 11); - 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); assignItemRect(MAGIC_INFUSE, 10, 15); assignItemRect(ALCHEMIZE, 10, 15); assignItemRect(RECYCLE, 10, 15); + + assignItemRect(RECLAIM_TRAP, 8, 16); + assignItemRect(RETURN_BEACON, 8, 16); + assignItemRect(SUMMON_ELE, 8, 16); } private static final int FOOD = xy(1, 28); //16 slots 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 ddb4368f6..84be20a30 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java @@ -353,8 +353,8 @@ public class QuickRecipe extends Component { new ArcaneResin())); return result; case 7: - result.add(new QuickRecipe(new CausticBrew.Recipe())); result.add(new QuickRecipe(new UnstableBrew.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Plant.Seed.PlaceHolder())), new UnstableBrew())); + result.add(new QuickRecipe(new CausticBrew.Recipe())); result.add(new QuickRecipe(new BlizzardBrew.Recipe())); result.add(new QuickRecipe(new ShockingBrew.Recipe())); result.add(new QuickRecipe(new InfernalBrew.Recipe())); @@ -371,19 +371,21 @@ public class QuickRecipe extends Component { result.add(new QuickRecipe(new ElixirOfFeatherFall.Recipe())); return result; case 8: + result.add(new QuickRecipe(new UnstableSpell.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Runestone.PlaceHolder())), new UnstableSpell())); + result.add(new QuickRecipe(new WildEnergy.Recipe())); 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())); + if (!PixelScene.landscape()) result.add(null); 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))); - result.add(new QuickRecipe(new MagicalInfusion.Recipe())); result.add(new QuickRecipe(new CurseInfusion.Recipe())); + result.add(new QuickRecipe(new MagicalInfusion.Recipe())); result.add(new QuickRecipe(new Recycle.Recipe())); + if (!PixelScene.landscape()) result.add(null); + result.add(null); + result.add(new QuickRecipe(new ReclaimTrap.Recipe())); + result.add(new QuickRecipe(new SummonElemental.Recipe())); + result.add(new QuickRecipe(new BeaconOfReturning.Recipe())); return result; } }