v2.4.0: adjusted recipes and balance for spells, and 2 brews

This commit is contained in:
Evan Debenham
2024-03-12 12:43:24 -04:00
parent a83be1d286
commit 938a78883f
16 changed files with 55 additions and 58 deletions

View File

@@ -1156,7 +1156,7 @@ items.scrolls.exotic.scrollofpsionicblast.desc=This scroll contains incredible d
###spells
items.spells.alchemize.name=alchemize
items.spells.alchemize.prompt=Alchemize an Item
items.spells.alchemize.desc=This spell contains transmutative powers similar to those found in an alchemy pot. Each cast allows the user to turn an item (or stack of items) into gold or alchemical energy.\n\nAlchemize is sold from shops, and can also be made using alchemy. A scroll is mixed with a runestone or seed to create an arcane catalyst, that catalyst can then be used to create several uses of alchemize.
items.spells.alchemize.desc=This spell contains transmutative powers similar to those found in an alchemy pot. Each cast allows the user to turn an item (or stack of items) into gold or alchemical energy.\n\nA few Alchemize uses are sold from shops, but many more can be made using alchemy by combining a seed, runestone, and a little alchemical energy.
items.spells.alchemize$wndalchemizeitem.sell=Turn into %dg
items.spells.alchemize$wndalchemizeitem.sell_1=Turn 1 into %dg
items.spells.alchemize$wndalchemizeitem.sell_all=Turn all into %dg
@@ -1207,14 +1207,13 @@ items.spells.recycle.desc=This spell contains a lesser form of transmutation mag
items.spells.summonelemental.name=summon elemental
items.spells.summonelemental.ac_imbue=IMBUE
items.spells.summonelemental.summon_limit=You can only have one elemental summoned at a time.
items.spells.summonelemental.imbue_prompt=Imbue an item
items.spells.summonelemental.desc=This spell channels the energy of the elemental embers used to make it, and will allow you to summon a friendly elemental to fight with you! Only one elemental can be summoned at a time, but the spell can be re-cast to return the elemental to you at no cost.
items.spells.summonelemental.desc_newborn=The spell is currently unimbued, and will summon a _newborn elemental_ without a ranged attack. You can imbue an identified potion of liquid flame, potion of frost, scroll of recharging, or scroll of transmutation to power the spell up, causing its next summon to be a full power elemental!
items.spells.summonelemental.desc_fire=The spell is currently hot to the touch, its next summon will be a _fire elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_frost=The spell is currently cold to the touch, its next summon will be a _frost elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_shock=The spell is currently radiating static energy, its next summon will be a _shock elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_chaos=The spell is currently radiating chaotic energy, its next summon will be a _chaos elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_newborn=The spell is currently unimbued, and will summon a _newborn elemental_ without a ranged attack. You can imbue an identified potion of liquid flame, potion of frost, scroll of recharging, or scroll of transmutation to power the spell up, causing future summons to be a full power elemental!
items.spells.summonelemental.desc_fire=The spell is currently hot to the touch, it will summon a _fire elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_frost=The spell is currently cold to the touch, it will summon a _frost elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_shock=The spell is currently radiating static energy, it will summon a _shock elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.summonelemental.desc_chaos=The spell is currently radiating chaotic energy, it will summon a _chaos elemental_. You can imbue a different item, but the spell will lose its current imbue.
items.spells.targetedspell.prompt=Choose a target
items.spells.targetedspell.inv_title=Infuse an item

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -68,7 +68,7 @@ public class CausticBrew extends Brew {
inputs = new Class[]{PotionOfToxicGas.class, GooBlob.class};
inQuantity = new int[]{1, 1};
cost = 0;
cost = 1;
output = CausticBrew.class;
outQuantity = 1;

View File

@@ -153,7 +153,7 @@ public class UnstableBrew extends Brew {
@Override
public int cost(ArrayList<Item> ingredients) {
return 2;
return 1;
}
@Override

View File

@@ -84,7 +84,7 @@ public class Alchemize extends Spell {
@Override
public int cost(ArrayList<Item> ingredients) {
return 6;
return 2;
}
@Override

View File

@@ -226,7 +226,7 @@ public class BeaconOfReturning extends Spell {
inputs = new Class[]{ScrollOfPassage.class};
inQuantity = new int[]{1};
cost = 15;
cost = 12;
output = BeaconOfReturning.class;
outQuantity = 5;

View File

@@ -87,7 +87,7 @@ public class MagicalInfusion extends InventorySpell {
inputs = new Class[]{ScrollOfUpgrade.class};
inQuantity = new int[]{1};
cost = 13;
cost = 12;
output = MagicalInfusion.class;
outQuantity = 1;

View File

@@ -65,12 +65,12 @@ public class PhaseShift extends TargetedSpell {
@Override
public int value() {
return (int)(60 * (quantity/8f));
return (int)(60 * (quantity/6f));
}
@Override
public int energyVal() {
return (int)(12 * (quantity/8f));
return (int)(12 * (quantity/6f));
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
@@ -79,10 +79,10 @@ public class PhaseShift extends TargetedSpell {
inputs = new Class[]{ScrollOfTeleportation.class};
inQuantity = new int[]{1};
cost = 13;
cost = 10;
output = PhaseShift.class;
outQuantity = 8;
outQuantity = 6;
}
}

View File

@@ -115,12 +115,12 @@ public class ReclaimTrap extends TargetedSpell {
@Override
public int value() {
return (int)(60 * (quantity/4f));
return (int)(60 * (quantity/5f));
}
@Override
public int energyVal() {
return (int)(12 * (quantity/4f));
return (int)(12 * (quantity/5f));
}
private static final String STORED_TRAP = "stored_trap";
@@ -143,10 +143,10 @@ public class ReclaimTrap extends TargetedSpell {
inputs = new Class[]{ScrollOfMagicMapping.class, MetalShard.class};
inQuantity = new int[]{1, 1};
cost = 6;
cost = 8;
output = ReclaimTrap.class;
outQuantity = 4;
outQuantity = 5;
}
}

View File

@@ -105,7 +105,7 @@ public class Recycle extends InventorySpell {
inputs = new Class[]{ScrollOfTransmutation.class};
inQuantity = new int[]{1, 1};
cost = 17;
cost = 12;
output = Recycle.class;
outQuantity = 12;

View File

@@ -116,8 +116,6 @@ public class SummonElemental extends Spell {
curUser.sprite.operate(curUser.pos);
curUser.spendAndNext(Actor.TICK);
summonClass = Elemental.AllyNewBornElemental.class;
detach(Dungeon.hero.belongings.backpack);
} else {
@@ -229,10 +227,10 @@ public class SummonElemental extends Spell {
inputs = new Class[]{Embers.class};
inQuantity = new int[]{1};
cost = 15;
cost = 10;
output = SummonElemental.class;
outQuantity = 5;
outQuantity = 6;
}
}

View File

@@ -116,12 +116,12 @@ public class TelekineticGrab extends TargetedSpell {
@Override
public int value() {
return (int)(60 * (quantity/6f));
return (int)(60 * (quantity/8f));
}
@Override
public int energyVal() {
return (int)(12 * (quantity/6f));
return (int)(12 * (quantity/8f));
}
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
@@ -130,10 +130,10 @@ public class TelekineticGrab extends TargetedSpell {
inputs = new Class[]{LiquidMetal.class};
inQuantity = new int[]{10};
cost = 11;
cost = 10;
output = TelekineticGrab.class;
outQuantity = 6;
outQuantity = 8;
}
}

View File

@@ -144,7 +144,7 @@ public class UnstableSpell extends Spell {
@Override
public int cost(ArrayList<Item> ingredients) {
return 2;
return 1;
}
@Override

View File

@@ -29,7 +29,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfMysticalEnergy;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.CursedWand;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
@@ -76,7 +75,7 @@ public class WildEnergy extends TargetedSpell {
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
{
inputs = new Class[]{ScrollOfMysticalEnergy.class, MetalShard.class};
inputs = new Class[]{ScrollOfRecharging.class, MetalShard.class};
inQuantity = new int[]{1, 1};
cost = 4;

View File

@@ -611,35 +611,34 @@ public class ItemSpriteSheet {
//16 free slots
private static final int SPELLS = xy(1, 27); //16 slots
public static final int MAGIC_PORTER = SPELLS+0;
public static final int WILD_ENERGY = SPELLS+0;
public static final int PHASE_SHIFT = SPELLS+1;
public static final int TELE_GRAB = SPELLS+2;
public static final int WILD_ENERGY = SPELLS+3;
public static final int RETURN_BEACON = SPELLS+4;
public static final int SUMMON_ELE = SPELLS+5;
public static final int UNSTABLE_SPELL = SPELLS+3;
public static final int CURSE_INFUSE = SPELLS+5;
public static final int MAGIC_INFUSE = SPELLS+6;
public static final int ALCHEMIZE = SPELLS+7;
public static final int RECYCLE = SPELLS+8;
public static final int RECLAIM_TRAP = SPELLS+10;
public static final int RETURN_BEACON = SPELLS+11;
public static final int SUMMON_ELE = SPELLS+12;
public static final int UNSTABLE_SPELL = SPELLS+8;
public static final int RECLAIM_TRAP = SPELLS+9;
public static final int CURSE_INFUSE = SPELLS+11;
public static final int MAGIC_INFUSE = SPELLS+12;
public static final int ALCHEMIZE = SPELLS+13;
public static final int RECYCLE = SPELLS+14;
static{
assignItemRect(MAGIC_PORTER, 12, 11);
assignItemRect(WILD_ENERGY, 12, 11);
assignItemRect(PHASE_SHIFT, 12, 11);
assignItemRect(TELE_GRAB, 12, 11);
assignItemRect(WILD_ENERGY, 8, 16);
assignItemRect(RETURN_BEACON, 8, 16);
assignItemRect(SUMMON_ELE, 8, 16);
assignItemRect(UNSTABLE_SPELL, 12, 13);
assignItemRect(RECLAIM_TRAP, 11, 11);
assignItemRect(CURSE_INFUSE, 10, 15);
assignItemRect(MAGIC_INFUSE, 10, 15);
assignItemRect(ALCHEMIZE, 10, 15);
assignItemRect(RECYCLE, 10, 15);
assignItemRect(RECLAIM_TRAP, 8, 16);
assignItemRect(RETURN_BEACON, 8, 16);
assignItemRect(SUMMON_ELE, 8, 16);
}
private static final int FOOD = xy(1, 28); //16 slots

View File

@@ -353,8 +353,8 @@ public class QuickRecipe extends Component {
new ArcaneResin()));
return result;
case 7:
result.add(new QuickRecipe(new CausticBrew.Recipe()));
result.add(new QuickRecipe(new UnstableBrew.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Plant.Seed.PlaceHolder())), new UnstableBrew()));
result.add(new QuickRecipe(new CausticBrew.Recipe()));
result.add(new QuickRecipe(new BlizzardBrew.Recipe()));
result.add(new QuickRecipe(new ShockingBrew.Recipe()));
result.add(new QuickRecipe(new InfernalBrew.Recipe()));
@@ -371,19 +371,21 @@ public class QuickRecipe extends Component {
result.add(new QuickRecipe(new ElixirOfFeatherFall.Recipe()));
return result;
case 8:
result.add(new QuickRecipe(new UnstableSpell.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Runestone.PlaceHolder())), new UnstableSpell()));
result.add(new QuickRecipe(new WildEnergy.Recipe()));
result.add(new QuickRecipe(new TelekineticGrab.Recipe()));
result.add(new QuickRecipe(new PhaseShift.Recipe()));
result.add(new QuickRecipe(new WildEnergy.Recipe()));
result.add(new QuickRecipe(new BeaconOfReturning.Recipe()));
result.add(new QuickRecipe(new SummonElemental.Recipe()));
result.add(null);
result.add(new QuickRecipe(new UnstableSpell.Recipe(), new ArrayList<>(Arrays.asList(new Scroll.PlaceHolder(), new Runestone.PlaceHolder())), new UnstableSpell()));
result.add(new QuickRecipe(new ReclaimTrap.Recipe()));
if (!PixelScene.landscape()) result.add(null);
result.add(null);
result.add(new QuickRecipe(new Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8)));
result.add(new QuickRecipe(new MagicalInfusion.Recipe()));
result.add(new QuickRecipe(new CurseInfusion.Recipe()));
result.add(new QuickRecipe(new MagicalInfusion.Recipe()));
result.add(new QuickRecipe(new Recycle.Recipe()));
if (!PixelScene.landscape()) result.add(null);
result.add(null);
result.add(new QuickRecipe(new ReclaimTrap.Recipe()));
result.add(new QuickRecipe(new SummonElemental.Recipe()));
result.add(new QuickRecipe(new BeaconOfReturning.Recipe()));
return result;
}
}