v2.4.0: replaced catalysts with a new unstable brew and spell

This commit is contained in:
Evan Debenham
2024-02-25 17:18:10 -05:00
parent 19ac7e7a45
commit a00355b712
25 changed files with 116 additions and 124 deletions

View File

@@ -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$placeholder.name=potion
items.potions.potion$seedtopotion.name=Random 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.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. 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.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.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 ###elixirs
items.potions.elixirs.elixirofarcanearmor.name=elixir of arcane armor 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_1=Turn 1 into %d energy
items.spells.alchemize$wndalchemizeitem.energize_all=Turn all 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.name=beacon of returning
items.spells.beaconofreturning.preventing=The strong magic aura of this place prevents you from using the spell! 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. 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.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.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.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. 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.

View File

@@ -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.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.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.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.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.title=Spells
journal.document.alchemy_guide.spells.body=Spells are contained in crystals and provide a variety of effects, usually with multiple uses. journal.document.alchemy_guide.spells.body=Spells are contained in crystals and provide a variety of effects, usually with multiple uses.

View File

@@ -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=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_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=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=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.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 challenges.swarm_intelligence=Swarm intelligence

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -48,6 +48,12 @@ public class ShatteredPixelDungeon extends Game {
super( sceneClass == null ? WelcomeScene.class : sceneClass, platform ); super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
//pre-v2.4.0 //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.watabou.utils.Bundle.addAlias(
com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall.class, com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall.class,
"com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall" ); "com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall" );

View File

@@ -26,13 +26,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; 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.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; 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.ElixirOfAquaticRejuvenation;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; 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.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize; 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.BeaconOfReturning;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion; import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion; 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.Recycle;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental; import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.TelekineticGrab; 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.spells.WildEnergy;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
@@ -195,12 +195,12 @@ public abstract class Recipe {
private static Recipe[] twoIngredientRecipes = new Recipe[]{ private static Recipe[] twoIngredientRecipes = new Recipe[]{
new Blandfruit.CookFruit(), new Blandfruit.CookFruit(),
new Bomb.EnhanceBomb(), new Bomb.EnhanceBomb(),
new AlchemicalCatalyst.Recipe(), new UnstableBrew.Recipe(),
new ArcaneCatalyst.Recipe(),
new CausticBrew.Recipe(), new CausticBrew.Recipe(),
new ElixirOfArcaneArmor.Recipe(), new ElixirOfArcaneArmor.Recipe(),
new ElixirOfAquaticRejuvenation.Recipe(), new ElixirOfAquaticRejuvenation.Recipe(),
new ElixirOfHoneyedHealing.Recipe(), new ElixirOfHoneyedHealing.Recipe(),
new UnstableSpell.Recipe(),
new Alchemize.Recipe(), new Alchemize.Recipe(),
new CurseInfusion.Recipe(), new CurseInfusion.Recipe(),
new ReclaimTrap.Recipe(), new ReclaimTrap.Recipe(),

View File

@@ -115,13 +115,11 @@ public class Potion extends Item {
mustThrowPots.add(PotionOfShroudingFog.class); mustThrowPots.add(PotionOfShroudingFog.class);
mustThrowPots.add(PotionOfStormClouds.class); mustThrowPots.add(PotionOfStormClouds.class);
//also all brews, hardcoded //also all brews except unstable, hardcoded
} }
private static final HashSet<Class<?extends Potion>> canThrowPots = new HashSet<>(); private static final HashSet<Class<?extends Potion>> canThrowPots = new HashSet<>();
static{ static{
canThrowPots.add(AlchemicalCatalyst.class);
canThrowPots.add(PotionOfPurity.class); canThrowPots.add(PotionOfPurity.class);
canThrowPots.add(PotionOfLevitation.class); canThrowPots.add(PotionOfLevitation.class);

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blizzard; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blizzard;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; 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.items.potions.PotionOfFrost;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Inferno; 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.items.potions.PotionOfLiquidFlame;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; 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.items.potions.PotionOfParalyticGas;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;

View File

@@ -19,14 +19,25 @@
* along with this program. If not, see <http://www.gnu.org/licenses/> * along with this program. If not, see <http://www.gnu.org/licenses/>
*/ */
package com.shatteredpixel.shatteredpixeldungeon.items.potions; package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews;
import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; 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.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.utils.Random; import com.watabou.utils.Random;
@@ -35,26 +46,37 @@ import com.watabou.utils.Reflection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; 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<String> actions(Hero hero) {
ArrayList<String> actions = super.actions(hero);
actions.add(AC_DRINK);
return actions;
}
@Override
public String defaultAction() {
return AC_CHOOSE;
}
private static HashMap<Class<? extends Potion>, Float> potionChances = new HashMap<>(); private static HashMap<Class<? extends Potion>, Float> potionChances = new HashMap<>();
static{ static {
potionChances.put(PotionOfHealing.class, 3f); potionChances.put(PotionOfHealing.class, 3f);
potionChances.put(PotionOfMindVision.class, 2f); potionChances.put(PotionOfMindVision.class, 2f);
potionChances.put(PotionOfFrost.class, 2f); potionChances.put(PotionOfFrost.class, 2f);
potionChances.put(PotionOfLiquidFlame.class, 2f); potionChances.put(PotionOfLiquidFlame.class, 2f);
potionChances.put(PotionOfToxicGas.class, 2f); potionChances.put(PotionOfToxicGas.class, 2f);
potionChances.put(PotionOfHaste.class, 2f); potionChances.put(PotionOfHaste.class, 2f);
potionChances.put(PotionOfInvisibility.class, 2f); potionChances.put(PotionOfInvisibility.class, 2f);
potionChances.put(PotionOfLevitation.class, 2f); potionChances.put(PotionOfLevitation.class, 2f);
potionChances.put(PotionOfParalyticGas.class, 2f); potionChances.put(PotionOfParalyticGas.class, 2f);
potionChances.put(PotionOfPurity.class, 2f); potionChances.put(PotionOfPurity.class, 2f);
potionChances.put(PotionOfExperience.class, 1f); potionChances.put(PotionOfExperience.class, 1f);
} }
@Override @Override
@@ -80,11 +102,12 @@ public class AlchemicalCatalyst extends Potion {
public boolean isKnown() { public boolean isKnown() {
return true; return true;
} }
//lower values, as it's cheaper to make
@Override @Override
public int value() { public int value() {
return 40 * quantity; return 40 * quantity;
} }
@Override @Override
public int energyVal() { public int energyVal() {
@@ -96,36 +119,29 @@ public class AlchemicalCatalyst extends Potion {
@Override @Override
public boolean testIngredients(ArrayList<Item> ingredients) { public boolean testIngredients(ArrayList<Item> ingredients) {
boolean potion = false; boolean potion = false;
boolean secondary = false; boolean seed = false;
for (Item i : ingredients){ for (Item i : ingredients){
if (i instanceof Plant.Seed || i instanceof Runestone){ if (i instanceof Plant.Seed) {
secondary = true; seed = true;
//if it is a regular or exotic potion //if it is a regular or exotic potion
} else if (ExoticPotion.regToExo.containsKey(i.getClass()) } else if (ExoticPotion.regToExo.containsKey(i.getClass())
|| ExoticPotion.regToExo.containsValue(i.getClass())) { || ExoticPotion.regToExo.containsValue(i.getClass())) {
potion = true; potion = true;
} }
} }
return potion && secondary; return potion && seed;
} }
@Override @Override
public int cost(ArrayList<Item> ingredients) { public int cost(ArrayList<Item> ingredients) {
for (Item i : ingredients){ return 2;
if (i instanceof Plant.Seed){
return 0;
} else if (i instanceof Runestone){
return 1;
}
}
return 0;
} }
@Override @Override
public Item brew(ArrayList<Item> ingredients) { public Item brew(ArrayList<Item> ingredients) {
for (Item i : ingredients){ for (Item i : ingredients){
i.quantity(i.quantity()-1); i.quantity(i.quantity()-1);
} }
@@ -135,7 +151,7 @@ public class AlchemicalCatalyst extends Potion {
@Override @Override
public Item sampleOutput(ArrayList<Item> ingredients) { public Item sampleOutput(ArrayList<Item> ingredients) {
return new AlchemicalCatalyst(); return new UnstableBrew();
} }
} }

View File

@@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle; 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.items.potions.exotic.PotionOfDragonsBreath;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SnowParticle; 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.items.potions.exotic.PotionOfSnapFreeze;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;

View File

@@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText; import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;

View File

@@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle; 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.items.potions.PotionOfToxicGas;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;

View File

@@ -31,12 +31,12 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
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.bombs.Bomb; 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.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; 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.stones.StoneOfEnchantment;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@@ -235,7 +235,7 @@ public class RingOfWealth extends Ring {
i = Generator.randomUsingDefaults(Generator.Category.SCROLL); i = Generator.randomUsingDefaults(Generator.Category.SCROLL);
return Reflection.newInstance(ExoticScroll.regToExo.get(i.getClass())); return Reflection.newInstance(ExoticScroll.regToExo.get(i.getClass()));
case 3: case 3:
return Random.Int(2) == 0 ? new ArcaneCatalyst() : new AlchemicalCatalyst(); return Random.Int(2) == 0 ? new UnstableBrew() : new UnstableSpell();
case 4: case 4:
return new Bomb(); return new Bomb();
case 5: case 5:

View File

@@ -31,7 +31,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; 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.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir;
@@ -75,9 +74,9 @@ public class ScrollOfTransmutation extends InventoryScroll {
} else if (item instanceof MissileWeapon){ } else if (item instanceof MissileWeapon){
return item.getClass() != Dart.class; 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){ } 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 //all regular or exotic scrolls, except itself
} else if (item instanceof Scroll){ } else if (item instanceof Scroll){

View File

@@ -56,13 +56,12 @@ public class Alchemize extends Spell {
@Override @Override
public int value() { 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)); return (int)(20 * (quantity/8f));
} }
@Override @Override
public int energyVal() { public int energyVal() {
//also cheap, same reason
return (int)(4 * (quantity/8f)); return (int)(4 * (quantity/8f));
} }

View File

@@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.effects.Transmuting; import com.shatteredpixel.shatteredpixeldungeon.effects.Transmuting;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; 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.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir;
@@ -51,7 +50,7 @@ public class Recycle extends InventorySpell {
@Override @Override
protected boolean usableOnItem(Item item) { 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 Scroll ||
item instanceof Plant.Seed || item instanceof Plant.Seed ||
item instanceof Runestone || item instanceof Runestone ||

View File

@@ -37,7 +37,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.utils.Random; import com.watabou.utils.Random;
import com.watabou.utils.Reflection; import com.watabou.utils.Reflection;
@@ -45,10 +44,10 @@ import com.watabou.utils.Reflection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; 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<Class<? extends Scroll>, Float> scrollChances = new HashMap<>(); private static HashMap<Class<? extends Scroll>, Float> scrollChances = new HashMap<>();
@@ -77,7 +76,8 @@ public class ArcaneCatalyst extends Spell {
curItem = s; curItem = s;
s.doRead(); s.doRead();
} }
//lower values, as it's cheaper to make
@Override @Override
public int value() { public int value() {
return 40 * quantity; return 40 * quantity;
@@ -89,50 +89,43 @@ public class ArcaneCatalyst extends Spell {
} }
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe {
@Override @Override
public boolean testIngredients(ArrayList<Item> ingredients) { public boolean testIngredients(ArrayList<Item> ingredients) {
boolean scroll = false; boolean scroll = false;
boolean secondary = false; boolean stone = false;
for (Item i : ingredients){ for (Item i : ingredients){
if (i instanceof Plant.Seed || i instanceof Runestone){ if (i instanceof Runestone){
secondary = true; stone = true;
//if it is a regular or exotic potion //if it is a regular or exotic potion
} else if (ExoticScroll.regToExo.containsKey(i.getClass()) } else if (ExoticScroll.regToExo.containsKey(i.getClass())
|| ExoticScroll.regToExo.containsValue(i.getClass())) { || ExoticScroll.regToExo.containsValue(i.getClass())) {
scroll = true; scroll = true;
} }
} }
return scroll && secondary; return scroll && stone;
} }
@Override @Override
public int cost(ArrayList<Item> ingredients) { public int cost(ArrayList<Item> ingredients) {
for (Item i : ingredients){ return 2;
if (i instanceof Plant.Seed){
return 1;
} else if (i instanceof Runestone){
return 0;
}
}
return 0;
} }
@Override @Override
public Item brew(ArrayList<Item> ingredients) { public Item brew(ArrayList<Item> ingredients) {
for (Item i : ingredients){ for (Item i : ingredients){
i.quantity(i.quantity()-1); i.quantity(i.quantity()-1);
} }
return sampleOutput(null); return sampleOutput(null);
} }
@Override @Override
public Item sampleOutput(ArrayList<Item> ingredients) { public Item sampleOutput(ArrayList<Item> ingredients) {
return new ArcaneCatalyst(); return new UnstableSpell();
} }
} }
} }

View File

@@ -258,7 +258,6 @@ public enum Document {
//given in prison //given in prison
ALCHEMY_GUIDE.pagesStates.put("Bombs", debug ? READ : NOT_FOUND); ALCHEMY_GUIDE.pagesStates.put("Bombs", debug ? READ : NOT_FOUND);
ALCHEMY_GUIDE.pagesStates.put("Weapons", 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("Brews_Elixirs", debug ? READ : NOT_FOUND);
ALCHEMY_GUIDE.pagesStates.put("Spells", debug ? READ : NOT_FOUND); ALCHEMY_GUIDE.pagesStates.put("Spells", debug ? READ : NOT_FOUND);

View File

@@ -483,13 +483,11 @@ public class ItemSpriteSheet {
public static final int SCROLL_BERKANAN = SCROLLS+9; public static final int SCROLL_BERKANAN = SCROLLS+9;
public static final int SCROLL_ODAL = SCROLLS+10; public static final int SCROLL_ODAL = SCROLLS+10;
public static final int SCROLL_TIWAZ = SCROLLS+11; public static final int SCROLL_TIWAZ = SCROLLS+11;
public static final int SCROLL_CATALYST = SCROLLS+13; public static final int ARCANE_RESIN = SCROLLS+13;
public static final int ARCANE_RESIN = SCROLLS+14;
static { static {
for (int i = SCROLLS; i < SCROLLS+16; i++) for (int i = SCROLLS; i < SCROLLS+16; i++)
assignItemRect(i, 15, 14); assignItemRect(i, 15, 14);
assignItemRect(SCROLL_CATALYST, 12, 11);
assignItemRect(ARCANE_RESIN , 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_CHARCOAL = POTIONS+9;
public static final int POTION_SILVER = POTIONS+10; public static final int POTION_SILVER = POTIONS+10;
public static final int POTION_IVORY = POTIONS+11; 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 { static {
for (int i = POTIONS; i < POTIONS+16; i++) for (int i = POTIONS; i < POTIONS+16; i++)
assignItemRect(i, 12, 14); assignItemRect(i, 12, 14);
assignItemRect(POTION_CATALYST, 6, 15);
assignItemRect(LIQUID_METAL, 8, 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_SHOCKING = BREWS+2;
public static final int BREW_CAUSTIC = BREWS+3; public static final int BREW_CAUSTIC = BREWS+3;
public static final int BREW_AQUA = BREWS+4; 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 private static final int ELIXIRS = xy(9, 25); //8 slots
public static final int ELIXIR_HONEY = ELIXIRS+0; 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 RETURN_BEACON = SPELLS+4;
public static final int SUMMON_ELE = SPELLS+5; 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 RECLAIM_TRAP = SPELLS+9;
public static final int CURSE_INFUSE = SPELLS+11; public static final int CURSE_INFUSE = SPELLS+11;
@@ -633,7 +632,8 @@ public class ItemSpriteSheet {
assignItemRect(WILD_ENERGY, 8, 16); assignItemRect(WILD_ENERGY, 8, 16);
assignItemRect(RETURN_BEACON, 8, 16); assignItemRect(RETURN_BEACON, 8, 16);
assignItemRect(SUMMON_ELE, 8, 16); assignItemRect(SUMMON_ELE, 8, 16);
assignItemRect(UNSTABLE_SPELL, 12, 13);
assignItemRect(RECLAIM_TRAP, 11, 11); assignItemRect(RECLAIM_TRAP, 11, 11);
assignItemRect(CURSE_INFUSE, 10, 15); assignItemRect(CURSE_INFUSE, 10, 15);

View File

@@ -35,13 +35,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty; import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty;
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; 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.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; 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.ElixirOfAquaticRejuvenation;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; 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.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize; 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.BeaconOfReturning;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion; import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion; 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.Recycle;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental; import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.TelekineticGrab; 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.spells.WildEnergy;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
@@ -353,19 +353,12 @@ public class QuickRecipe extends Component {
new ArcaneResin())); new ArcaneResin()));
return result; return result;
case 7: 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 CausticBrew.Recipe()));
result.add(new QuickRecipe(new BlizzardBrew.Recipe())); result.add(new QuickRecipe(new BlizzardBrew.Recipe()));
result.add(new QuickRecipe(new InfernalBrew.Recipe())); result.add(new QuickRecipe(new InfernalBrew.Recipe()));
result.add(new QuickRecipe(new AquaBrew.Recipe())); result.add(new QuickRecipe(new AquaBrew.Recipe()));
result.add(new QuickRecipe(new ShockingBrew.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(null);
result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe())); result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe()));
result.add(new QuickRecipe(new ElixirOfAquaticRejuvenation.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 ElixirOfFeatherFall.Recipe()));
result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe())); result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe()));
return result; return result;
case 9: case 8:
result.add(new QuickRecipe(new TelekineticGrab.Recipe())); result.add(new QuickRecipe(new TelekineticGrab.Recipe()));
result.add(new QuickRecipe(new PhaseShift.Recipe())); result.add(new QuickRecipe(new PhaseShift.Recipe()));
result.add(new QuickRecipe(new WildEnergy.Recipe())); result.add(new QuickRecipe(new WildEnergy.Recipe()));
result.add(new QuickRecipe(new BeaconOfReturning.Recipe())); result.add(new QuickRecipe(new BeaconOfReturning.Recipe()));
result.add(new QuickRecipe(new SummonElemental.Recipe())); result.add(new QuickRecipe(new SummonElemental.Recipe()));
result.add(null); 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(new QuickRecipe(new ReclaimTrap.Recipe()));
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 Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8)));

View File

@@ -461,7 +461,7 @@ public class v0_7_X_Changes {
"\n" + "\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.")); "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" + "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" + "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" + "Additional Alchemy Changes:\n\n" +

View File

@@ -212,9 +212,9 @@ public class WndJournal extends WndTabbed {
public static class AlchemyTab extends Component { public static class AlchemyTab extends Component {
private RedButton[] pageButtons; 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; public static int currentPageIdx = 0;
@@ -277,7 +277,7 @@ public class WndJournal extends WndTabbed {
if (i == 4){ if (i == 4){
y += ITEM_HEIGHT; y += ITEM_HEIGHT;
x = 0; x = 0;
buttonWidth = width()/5; buttonWidth = width()/4;
} }
} }
} }