v0.9.4: adjusted alchemy guide for new recipes

This commit is contained in:
Evan Debenham 2021-07-20 15:17:55 -04:00
parent f97abe0ff2
commit 98c25a8fcd
8 changed files with 76 additions and 17 deletions

View File

@ -1146,6 +1146,7 @@ items.wands.wand.cursed=This wand is cursed, making its magic chaotic and random
items.wands.wand.not_cursed=This wand is free of malevolent magic.
items.wands.wand.curse_discover=This %s is cursed!
items.wands.wand.prompt=Choose a location to zap
items.wands.wand$placeholder.name=wand
items.wands.wandofblastwave.name=wand of blast wave
items.wands.wandofblastwave.staff_name=staff of blast wave
@ -1574,6 +1575,7 @@ items.weapon.missiles.missileweapon.durability=Thrown weapons will wear out and
items.weapon.missiles.missileweapon.uses_left=This stack of weapons has _%d/%d_ uses left before one breaks.
items.weapon.missiles.missileweapon.unlimited_uses=_But these are of such high quality that they will effectively last forever._
items.weapon.missiles.missileweapon.about_to_break=Your thrown weapon is about to break.
items.weapon.missiles.missileweapon$placeholder.name=thrown weapon
items.weapon.missiles.shuriken.name=shuriken
items.weapon.missiles.shuriken.desc=Star-shaped pieces of metal with razor-sharp blades. They are lightweight and easy to use on the move. A single shuriken can be thrown instantly after moving.

View File

@ -29,6 +29,8 @@ journal.document.alchemy_guide.energy_food.title=Energy and Food
journal.document.alchemy_guide.energy_food.body=Some recipes require energy from the alchemy pot itself. Energy is used in recipes that produce more than the sum of their ingredients.\n\nNot all energy recipes are especially mystical however. These recipes more resemble traditional cooking than alchemy.
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.exotic_potions.title=Exotic Potions
journal.document.alchemy_guide.exotic_potions.body=Potions can be augmented with two seeds to create exotic potions. They have more powerful effects, but are often useful in different ways.
journal.document.alchemy_guide.exotic_scrolls.title=Exotic Scrolls

View File

@ -508,6 +508,27 @@ public abstract class Wand extends Item {
public int collisionProperties(int target){
return collisionProperties;
}
public static class PlaceHolder extends Wand {
{
image = ItemSpriteSheet.WAND_HOLDER;
}
@Override
public boolean isSimilar(Item item) {
return item instanceof Wand;
}
@Override
public void onZap(Ballistica attack) {}
public void onHit(MagesStaff staff, Char attacker, Char defender, int damage) {}
@Override
public String info() {
return "";
}
}
protected static CellSelector.Listener zapper = new CellSelector.Listener() {

View File

@ -40,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Projecting;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
@ -445,4 +446,21 @@ abstract public class MissileWeapon extends Weapon {
bundleRestoring = false;
durability = bundle.getInt(DURABILITY);
}
public static class PlaceHolder extends MissileWeapon {
{
image = ItemSpriteSheet.MISSILE_HOLDER;
}
@Override
public boolean isSimilar(Item item) {
return item instanceof MissileWeapon;
}
@Override
public String info() {
return "";
}
}
}

View File

@ -118,13 +118,11 @@ public enum Document {
ALCHEMY_GUIDE.pages.put("Stones", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Energy_Food", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Bombs", DeviceCompat.isDebug());
//ALCHEMY_GUIDE.pages.put("Darts", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Weapons", DeviceCompat.isDebug());
//prison
ALCHEMY_GUIDE.pages.put("Exotic_Potions", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Exotic_Scrolls", DeviceCompat.isDebug());
//caves
ALCHEMY_GUIDE.pages.put("Catalysts", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Brews_Elixirs", DeviceCompat.isDebug());
ALCHEMY_GUIDE.pages.put("Spells", DeviceCompat.isDebug());

View File

@ -84,11 +84,9 @@ public class LaboratoryRoom extends SpecialRoom {
}
}
//4 pages in sewers, 6 in prison, 9 in caves+
//5 pages in sewers, 10 in prison+
int chapterTarget;
if (missingPages.size() <= 3){
chapterTarget = 3;
} else if (missingPages.size() <= 5){
if (missingPages.size() <= 5){
chapterTarget = 2;
} else {
chapterTarget = 1;

View File

@ -23,8 +23,10 @@ package com.shatteredpixel.shatteredpixeldungeon.ui;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.ArcaneResin;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.LiquidMetal;
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
@ -62,6 +64,8 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.scenes.AlchemyScene;
@ -309,6 +313,22 @@ public class QuickRecipe extends Component {
}
return result;
case 4:
result.add(new QuickRecipe( new LiquidMetal.Recipe(),
new ArrayList<Item>(Arrays.asList(new MissileWeapon.PlaceHolder())),
new LiquidMetal()));
result.add(new QuickRecipe( new LiquidMetal.Recipe(),
new ArrayList<Item>(Arrays.asList(new MissileWeapon.PlaceHolder().quantity(2))),
new LiquidMetal()));
result.add(new QuickRecipe( new LiquidMetal.Recipe(),
new ArrayList<Item>(Arrays.asList(new MissileWeapon.PlaceHolder().quantity(3))),
new LiquidMetal()));
result.add(null);
result.add(null);
result.add(new QuickRecipe( new ArcaneResin.Recipe(),
new ArrayList<Item>(Arrays.asList(new Wand.PlaceHolder())),
new ArcaneResin()));
return result;
case 5:
r = new ExoticPotion.PotionToExotic();
for (Class<?> cls : Generator.Category.POTION.classes){
Potion pot = (Potion) Reflection.newInstance(cls);
@ -316,7 +336,7 @@ public class QuickRecipe extends Component {
result.add(new QuickRecipe( r, in, r.sampleOutput(in)));
}
return result;
case 5:
case 6:
r = new ExoticScroll.ScrollToExotic();
for (Class<?> cls : Generator.Category.SCROLL.classes){
Scroll scroll = (Scroll) Reflection.newInstance(cls);
@ -324,7 +344,7 @@ public class QuickRecipe extends Component {
result.add(new QuickRecipe( r, in, r.sampleOutput(in)));
}
return result;
case 6:
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);
@ -332,7 +352,7 @@ public class QuickRecipe extends Component {
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 7:
case 8:
result.add(new QuickRecipe(new CausticBrew.Recipe()));
result.add(new QuickRecipe(new InfernalBrew.Recipe()));
result.add(new QuickRecipe(new BlizzardBrew.Recipe()));
@ -347,7 +367,7 @@ public class QuickRecipe extends Component {
result.add(new QuickRecipe(new ElixirOfToxicEssence.Recipe()));
result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe()));
return result;
case 8:
case 9:
result.add(new QuickRecipe(new MagicalPorter.Recipe()));
result.add(new QuickRecipe(new PhaseShift.Recipe()));
result.add(new QuickRecipe(new WildEnergy.Recipe()));

View File

@ -325,9 +325,9 @@ public class WndJournal extends WndTabbed {
public static class AlchemyTab extends Component {
private RedButton[] pageButtons;
private static final int NUM_BUTTONS = 9;
private static final int NUM_BUTTONS = 10;
private static final int[] spriteIndexes = {10, 12, 7, 8, 9, 11, 13, 14, 15};
private static final int[] spriteIndexes = {10, 12, 7, 8, 3, 9, 11, 13, 14, 15};
private static int currentPageIdx = -1;
@ -380,14 +380,14 @@ public class WndJournal extends WndTabbed {
}
} else {
//for first row
float buttonWidth = width()/4;
float buttonWidth = width()/5;
float y = 0;
float x = 0;
for (int i = 0; i < NUM_BUTTONS; i++) {
pageButtons[i].setRect(x, y, buttonWidth, ITEM_HEIGHT);
PixelScene.align(pageButtons[i]);
x += buttonWidth;
if (i == 3){
if (i == 4){
y += ITEM_HEIGHT;
x = 0;
buttonWidth = width()/5;
@ -440,7 +440,7 @@ public class WndJournal extends WndTabbed {
ArrayList<QuickRecipe> toAdd = QuickRecipe.getRecipes(currentPageIdx);
float left;
float top = body.bottom()+1;
float top = body.bottom()+2;
int w;
ArrayList<QuickRecipe> toAddThisRow = new ArrayList<>();
while (!toAdd.isEmpty()){
@ -486,7 +486,7 @@ public class WndJournal extends WndTabbed {
top += 17;
toAddThisRow.clear();
}
top -=1;
top -= 1;
content.setSize(width(), top);
list.setSize(list.width(), list.height());
list.scrollTo(0, 0);