From f733799ee3a063b050e8f209bc5ec67d8343be0c Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 11 Oct 2018 02:19:59 -0400 Subject: [PATCH] v0.7.0: balance adjustments: - Arcane and Shrapnel bomb costs increased to 10 - Rarity of teleport and magic mapping swapped. - Aquatic rejuvenation duration up to 3x HT, from 2x HT - Caustic brew AOE increased to 5x5, from 3x3 - Reclaim trap duration to 15 turns from 10, quantity reduced to 3 from 4 - Curse infusion quantity up to 4 from 3 - Recycle buffed to 6 uses, from 5 - Aqua blast chance to fill a cell with water increased to 80% from 50% - Blizzard brew now stacks freeze duration more quickly - Shocking brew and shock bomb duration up to 20 from 10 - Phase shift quantity up to 6 from 5 - Scroll of foresight buff now increases search radius by 1 --- .../actors/blobs/Blizzard.java | 1 + .../actors/hero/Hero.java | 6 ++++-- .../items/Generator.java | 4 ++-- .../items/bombs/Bomb.java | 4 ++-- .../items/bombs/ShockBomb.java | 2 +- .../items/potions/brews/CausticBrew.java | 20 +++++++++++-------- .../items/potions/brews/ShockingBrew.java | 2 +- .../elixirs/ElixirOfAquaticRejuvenation.java | 2 +- .../items/spells/AquaBlast.java | 2 +- .../items/spells/CurseInfusion.java | 2 +- .../items/spells/PhaseShift.java | 2 +- .../items/spells/ReclaimTrap.java | 6 +++--- .../items/spells/Recycle.java | 2 +- .../messages/actors/actors.properties | 2 +- .../messages/items/items.properties | 2 +- 15 files changed, 33 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blizzard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blizzard.java index 39001a13f..c58393bb5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blizzard.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blizzard.java @@ -54,6 +54,7 @@ public class Blizzard extends Blob { } Freezing.freeze(cell); + Freezing.freeze(cell); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index c6f9bf1e8..c1f1ea869 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -1519,6 +1519,10 @@ public class Hero extends Char { int distance = heroClass == HeroClass.ROGUE ? 2 : 1; + boolean foresight = buff(Foresight.class) != null; + + if (foresight) distance++; + int cx = pos % Dungeon.level.width(); int cy = pos / Dungeon.level.width(); int ax = cx - distance; @@ -1541,8 +1545,6 @@ public class Hero extends Char { TalismanOfForesight.Foresight talisman = buff( TalismanOfForesight.Foresight.class ); boolean cursed = talisman != null && talisman.isCursed(); - boolean foresight = buff(Foresight.class) != null; - for (int y = ay; y <= by; y++) { for (int x = ax, p = ax + y * Dungeon.level.width(); x <= bx; x++, p++) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index 89bea45b2..4c7c3d6b0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -265,13 +265,13 @@ public class Generator { ScrollOfUpgrade.class, //3 drop every chapter, see Dungeon.souNeeded() ScrollOfIdentify.class, ScrollOfRemoveCurse.class, - ScrollOfMagicMapping.class, ScrollOfMirrorImage.class, ScrollOfRecharging.class, + ScrollOfTeleportation.class, ScrollOfLullaby.class, + ScrollOfMagicMapping.class, ScrollOfRage.class, ScrollOfRetribution.class, - ScrollOfTeleportation.class, ScrollOfTerror.class, ScrollOfTransmutation.class }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Bomb.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Bomb.java index 5629bfccd..9ddf439be 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Bomb.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Bomb.java @@ -338,8 +338,8 @@ public class Bomb extends Item { bombCosts.put(RegrowthBomb.class, 6); bombCosts.put(HolyBomb.class, 6); - bombCosts.put(ArcaneBomb.class, 8); - bombCosts.put(ShrapnelBomb.class, 8); + bombCosts.put(ArcaneBomb.class, 10); + bombCosts.put(ShrapnelBomb.class, 10); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/ShockBomb.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/ShockBomb.java index 9c47dceaf..2ae287c24 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/ShockBomb.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/ShockBomb.java @@ -44,7 +44,7 @@ public class ShockBomb extends Bomb { PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { if (PathFinder.distance[i] < Integer.MAX_VALUE) { - GameScene.add(Blob.seed(i, 10, Electricity.class)); + GameScene.add(Blob.seed(i, 20, Electricity.class)); } } Sample.INSTANCE.play(Assets.SND_LIGHTNING); 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 e444c3447..ca8ed0938 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 @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; @@ -29,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Splash; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas; import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.utils.PathFinder; public class CausticBrew extends Brew { @@ -40,15 +42,17 @@ public class CausticBrew extends Brew { @Override public void shatter(int cell) { - for (int offset : PathFinder.NEIGHBOURS9){ - - Splash.at( cell + offset, 0x000000, 5); - Char ch = Actor.findChar(cell + offset); - - if (ch != null){ - Buff.affect(ch, Ooze.class).set( 20f ); + + PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); + for (int i = 0; i < PathFinder.distance.length; i++) { + if (PathFinder.distance[i] < Integer.MAX_VALUE) { + Splash.at( i, 0x000000, 5); + Char ch = Actor.findChar(i); + + if (ch != null){ + Buff.affect(ch, Ooze.class).set( 20f ); + } } - } } 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 e9665b70e..3cdea8fad 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 @@ -48,7 +48,7 @@ public class ShockingBrew extends Brew { PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { if (PathFinder.distance[i] < Integer.MAX_VALUE) { - GameScene.add(Blob.seed(i, 10, Electricity.class)); + GameScene.add(Blob.seed(i, 20, Electricity.class)); } } Sample.INSTANCE.play(Assets.SND_LIGHTNING); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfAquaticRejuvenation.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfAquaticRejuvenation.java index a72173bec..e29b101a1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfAquaticRejuvenation.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfAquaticRejuvenation.java @@ -43,7 +43,7 @@ public class ElixirOfAquaticRejuvenation extends Elixir { @Override public void apply(Hero hero) { - Buff.affect(hero, AquaHealing.class).set(hero.HT * 2); + Buff.affect(hero, AquaHealing.class).set(hero.HT * 3); } public static class AquaHealing extends Buff { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java index 20db503c9..e1058fe84 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/AquaBlast.java @@ -52,7 +52,7 @@ public class AquaBlast extends TargetedSpell { Splash.at(cell, 0x00AAFF, 10); for (int i : PathFinder.NEIGHBOURS9){ - if (i == 0 || Random.Int(2) == 0){ + if (i == 0 || Random.Int(5) != 0){ int terr = Dungeon.level.map[cell + i]; if (terr == Terrain.EMPTY || terr == Terrain.GRASS || terr == Terrain.EMBERS || terr == Terrain.EMPTY_SP || diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/CurseInfusion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/CurseInfusion.java index 09d9a1654..4a92229a8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/CurseInfusion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/CurseInfusion.java @@ -71,7 +71,7 @@ public class CurseInfusion extends InventorySpell { cost = 1; output = CurseInfusion.class; - outQuantity = 3; + outQuantity = 4; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java index b0d5e21d7..938168eb5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/PhaseShift.java @@ -85,7 +85,7 @@ public class PhaseShift extends TargetedSpell { cost = 6; output = PhaseShift.class; - outQuantity = 5; + outQuantity = 6; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java index a60931206..2439720a6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/ReclaimTrap.java @@ -48,8 +48,8 @@ public class ReclaimTrap extends TargetedSpell { t.disarm(); ScrollOfRecharging.charge(hero); - Buff.affect(hero, Recharging.class, 10f); - Buff.affect(hero, ArtifactRecharge.class).set( 10 ); + Buff.affect(hero, Recharging.class, 15f); + Buff.affect(hero, ArtifactRecharge.class).set( 15 ); } else { GLog.w(Messages.get(this, "no_trap")); @@ -65,7 +65,7 @@ public class ReclaimTrap extends TargetedSpell { cost = 8; output = ReclaimTrap.class; - outQuantity = 4; + outQuantity = 3; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java index 427911411..d655fe60f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Recycle.java @@ -78,7 +78,7 @@ public class Recycle extends InventorySpell { cost = 8; output = Recycle.class; - outQuantity = 5; + outQuantity = 6; } } diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties index 978d096af..96135d775 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties @@ -135,7 +135,7 @@ actors.buffs.fireimbue.name=Imbued with Fire actors.buffs.fireimbue.desc=You are imbued with the power of fire!\n\nAll physical attacks will have a chance to light enemies ablaze. Additionally, you are completely immune to the effects of fire.\n\nTurns of fire imbue remaining: %s. actors.buffs.foresight.name=Foresight -actors.buffs.foresight.desc=Your senses are heightened, allowing you to immediately notice anything out of place.\n\nWhile under the effect of foresight, anything that enters your search radius is immediately discovered.\n\nTurns of foresight remaining: %s. +actors.buffs.foresight.desc=Your senses are heightened, allowing you to immediately notice anything out of place.\n\nWhile under the effect of foresight your search radius is increased, and anything that enters your search radius is immediately discovered.\n\nTurns of foresight remaining: %s. actors.buffs.frost.name=Frozen actors.buffs.frost.freezes=%s freezes! diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 8dfb03478..95c40a3e2 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -886,7 +886,7 @@ items.scrolls.exotic.scrollofenchantment.cancel=cancel items.scrolls.exotic.scrollofenchantment.desc=This scroll will infuse a weapon or armor with powerful magical energy. The reader even has some degree of control over which magic is imbued. items.scrolls.exotic.scrollofforesight.name=scroll of foresight -items.scrolls.exotic.scrollofforesight.desc=When this scroll is read, detail of nearby terrain will be constantly fed to the reader's mind in crystal clarity. For the duration of this effect, searching will not be necessary, as the reader will automatically detect everything within their search radius. +items.scrolls.exotic.scrollofforesight.desc=When this scroll is read, the detail of nearby terrain will be constantly fed to the reader's mind in crystal clarity. For the duration of this effect, searching will not be necessary, as the reader will automatically detect everything within an enhanced search radius. items.scrolls.exotic.scrollofmysticalenergy.name=scroll of mystical energy items.scrolls.exotic.scrollofmysticalenergy.desc=The raw magical power bound up in this parchment will, when released, charge a user's equipped artifacts over time.