From a83be1d286ba7fe0d5c634278560802b0fe791f1 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 10 Mar 2024 18:08:29 -0400 Subject: [PATCH] v2.4.0: adjusted recipes and balance for brews and elixirs --- .../assets/messages/actors/actors.properties | 2 +- .../assets/messages/items/items.properties | 2 +- .../actors/buffs/FrostImbue.java | 4 ++-- .../actors/buffs/ToxicImbue.java | 19 ++++++++++++++++--- .../items/potions/brews/AquaBrew.java | 2 +- .../items/potions/brews/BlizzardBrew.java | 2 +- .../items/potions/brews/CausticBrew.java | 2 +- .../items/potions/brews/ShockingBrew.java | 2 +- .../potions/elixirs/ElixirOfDragonsBlood.java | 2 +- .../potions/elixirs/ElixirOfFeatherFall.java | 2 +- .../potions/elixirs/ElixirOfIcyTouch.java | 2 +- .../items/potions/elixirs/ElixirOfMight.java | 2 +- .../potions/elixirs/ElixirOfToxicEssence.java | 6 +++--- .../shatteredpixeldungeon/ui/QuickRecipe.java | 11 ++++++----- 14 files changed, 37 insertions(+), 23 deletions(-) diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 0fc6bbca1..f4f85a3c2 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -378,7 +378,7 @@ actors.buffs.terror.name=terrified actors.buffs.terror.desc=Terror is manipulative magic which forces its target into an uncontrollable panic.\n\nTerrified characters are forced to run away from their opponent, trying to put as many doors and walls between them as possible. The shock of pain will lessen the duration of terror, however.\n\nTurns of terror remaining: %s. actors.buffs.toxicimbue.name=imbued with toxicity -actors.buffs.toxicimbue.desc=You are imbued with poisonous energy!\n\nAs you move around toxic gas will constantly billow forth from you, damaging your enemies. You are immune to toxic gas and poison for the duration of the effect.\n\nTurns of toxic imbue remaining: %s. +actors.buffs.toxicimbue.desc=You are imbued with poisonous energy!\n\nAs you move around toxic gas will constantly billow forth from you, damaging your enemies. You are immune to toxic gas and poison for the duration of the effect, as well as for a few turns afterward.\n\nTurns of toxic imbue remaining: %s. actors.buffs.corrosion.name=corrosion actors.buffs.corrosion.heromsg=You are melting! diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index fbc4ca5ea..a746388f6 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -775,7 +775,7 @@ items.potions.elixirs.elixirofmight$htboost.name=max health boost items.potions.elixirs.elixirofmight$htboost.desc=Your body feels unnaturally strong and healthy.\n\nYour maximum health is boosted for an extended period of time. As you gain levels, the boost will steadily fade.\n\nCurrent boost amount: %d.\nLevels remaining: %d. items.potions.elixirs.elixiroftoxicessence.name=elixir of toxic essence -items.potions.elixirs.elixiroftoxicessence.desc=When consumed, this elixir will imbue the drinker with toxic energy. The drinker will be immune to toxic gas and poison, and will continuously spread toxic gas as they move. +items.potions.elixirs.elixiroftoxicessence.desc=When consumed, this elixir will imbue the drinker with toxic energy. The drinker will continuously spread toxic gas as they move, and will be immune to toxic gas and poison for slightly longer than the duration of the effect. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FrostImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FrostImbue.java index a50a4fc5f..a35853328 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FrostImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FrostImbue.java @@ -36,8 +36,8 @@ public class FrostImbue extends FlavourBuff { public static final float DURATION = 50f; public void proc(Char enemy){ - Buff.affect(enemy, Chill.class, 2f); - enemy.sprite.emitter().burst( SnowParticle.FACTORY, 2 ); + Buff.affect(enemy, Chill.class, 3f); + enemy.sprite.emitter().burst( SnowParticle.FACTORY, 3 ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java index f205e6e76..21d6436c2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; @@ -29,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; import com.watabou.utils.Bundle; +import com.watabou.utils.PathFinder; public class ToxicImbue extends Buff { @@ -62,11 +64,22 @@ public class ToxicImbue extends Buff { @Override public boolean act() { - GameScene.add(Blob.seed(target.pos, 50, ToxicGas.class)); + if (left > 0) { + //spreads 54 units of gas total + int centerVolume = 6; + for (int i : PathFinder.NEIGHBOURS8) { + if (!Dungeon.level.solid[target.pos + i]) { + GameScene.add(Blob.seed(target.pos + i, 6, ToxicGas.class)); + } else { + centerVolume += 6; + } + } + GameScene.add(Blob.seed(target.pos, centerVolume, ToxicGas.class)); + } spend(TICK); left -= TICK; - if (left <= 0){ + if (left <= -5){ detach(); } @@ -75,7 +88,7 @@ public class ToxicImbue extends Buff { @Override public int icon() { - return BuffIndicator.IMBUE; + return left > 0 ? BuffIndicator.IMBUE : BuffIndicator.NONE; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/AquaBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/AquaBrew.java index 6e6b5a79e..3b12bed0b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/AquaBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/AquaBrew.java @@ -62,7 +62,7 @@ public class AquaBrew extends Brew { inputs = new Class[]{PotionOfStormClouds.class}; inQuantity = new int[]{1}; - cost = 11; + cost = 8; output = AquaBrew.class; outQuantity = 8; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java index 447eb0f63..e99484a77 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/BlizzardBrew.java @@ -63,7 +63,7 @@ public class BlizzardBrew extends Brew { inputs = new Class[]{PotionOfFrost.class}; inQuantity = new int[]{1}; - cost = 11; + cost = 8; output = BlizzardBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java index cc352444b..b6d0f7d4f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/CausticBrew.java @@ -68,7 +68,7 @@ public class CausticBrew extends Brew { inputs = new Class[]{PotionOfToxicGas.class, GooBlob.class}; inQuantity = new int[]{1, 1}; - cost = 2; + cost = 0; output = CausticBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java index 3b1604134..598a8fdf8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/ShockingBrew.java @@ -59,7 +59,7 @@ public class ShockingBrew extends Brew { inputs = new Class[]{PotionOfParalyticGas.class}; inQuantity = new int[]{1}; - cost = 14; + cost = 10; output = ShockingBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java index 97c4d2da8..962f3cc6e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfDragonsBlood.java @@ -54,7 +54,7 @@ public class ElixirOfDragonsBlood extends Elixir { inputs = new Class[]{PotionOfDragonsBreath.class}; inQuantity = new int[]{1}; - cost = 14; + cost = 10; output = ElixirOfDragonsBlood.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfFeatherFall.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfFeatherFall.java index c9f1b561b..7de60673e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfFeatherFall.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfFeatherFall.java @@ -86,7 +86,7 @@ public class ElixirOfFeatherFall extends Elixir { inputs = new Class[]{PotionOfLevitation.class}; inQuantity = new int[]{1}; - cost = 17; + cost = 16; output = ElixirOfFeatherFall.class; outQuantity = 2; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java index bec2a3622..25e2c2ad2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java @@ -51,7 +51,7 @@ public class ElixirOfIcyTouch extends Elixir { inputs = new Class[]{PotionOfSnapFreeze.class}; inQuantity = new int[]{1}; - cost = 14; + cost = 6; output = ElixirOfIcyTouch.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java index 12a795d65..2d3a0cb5d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfMight.java @@ -71,7 +71,7 @@ public class ElixirOfMight extends Elixir { inputs = new Class[]{PotionOfStrength.class}; inQuantity = new int[]{1}; - cost = 14; + cost = 16; output = ElixirOfMight.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java index 43dd90916..df71d5421 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfToxicEssence.java @@ -25,7 +25,7 @@ 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.PotionOfToxicGas; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ElixirOfToxicEssence extends Elixir { @@ -48,10 +48,10 @@ public class ElixirOfToxicEssence extends Elixir { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfToxicGas.class}; + inputs = new Class[]{PotionOfCorrosiveGas.class}; inQuantity = new int[]{1}; - cost = 14; + cost = 8; output = ElixirOfToxicEssence.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java index 117bff224..ddb4368f6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java @@ -354,20 +354,21 @@ public class QuickRecipe extends Component { 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 BlizzardBrew.Recipe())); + result.add(new QuickRecipe(new ShockingBrew.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(null); result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe())); result.add(new QuickRecipe(new ElixirOfAquaticRejuvenation.Recipe())); - result.add(new QuickRecipe(new ElixirOfMight.Recipe())); - result.add(new QuickRecipe(new ElixirOfDragonsBlood.Recipe())); + result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe())); result.add(new QuickRecipe(new ElixirOfIcyTouch.Recipe())); result.add(new QuickRecipe(new ElixirOfToxicEssence.Recipe())); + result.add(new QuickRecipe(new ElixirOfDragonsBlood.Recipe())); + result.add(new QuickRecipe(new ElixirOfMight.Recipe())); result.add(new QuickRecipe(new ElixirOfFeatherFall.Recipe())); - result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe())); return result; case 8: result.add(new QuickRecipe(new TelekineticGrab.Recipe()));