v2.4.0: replaced catalysts with a new unstable brew and spell
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@@ -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" );
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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<Class<?extends Potion>> canThrowPots = new HashSet<>();
|
||||
static{
|
||||
canThrowPots.add(AlchemicalCatalyst.class);
|
||||
|
||||
canThrowPots.add(PotionOfPurity.class);
|
||||
canThrowPots.add(PotionOfLevitation.class);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -19,14 +19,25 @@
|
||||
* 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.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<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<>();
|
||||
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<Item> 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<Item> 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<Item> ingredients) {
|
||||
|
||||
|
||||
for (Item i : ingredients){
|
||||
i.quantity(i.quantity()-1);
|
||||
}
|
||||
@@ -135,7 +151,7 @@ public class AlchemicalCatalyst extends Potion {
|
||||
|
||||
@Override
|
||||
public Item sampleOutput(ArrayList<Item> ingredients) {
|
||||
return new AlchemicalCatalyst();
|
||||
return new UnstableBrew();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ||
|
||||
|
||||
@@ -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<Class<? extends Scroll>, 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<Item> 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<Item> 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<Item> ingredients) {
|
||||
|
||||
|
||||
for (Item i : ingredients){
|
||||
i.quantity(i.quantity()-1);
|
||||
}
|
||||
|
||||
|
||||
return sampleOutput(null);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Item sampleOutput(ArrayList<Item> ingredients) {
|
||||
return new ArcaneCatalyst();
|
||||
return new UnstableSpell();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -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" +
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user