diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index 44015b8c3..a1df69abc 100644 Binary files a/core/src/main/assets/items.png and b/core/src/main/assets/items.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 5aa29440b..a31c64f1c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -40,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EarthImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep; @@ -226,6 +227,8 @@ public abstract class Char extends Actor { buff(FireImbue.class).proc(enemy); if (buff(EarthImbue.class) != null) buff(EarthImbue.class).proc(enemy); + if (buff(FrostImbue.class) != null) + buff(FrostImbue.class).proc(enemy); enemy.sprite.bloodBurstA( sprite.center(), effectiveDamage ); enemy.sprite.flash(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java index b0a27fae5..363443bd1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Combo.java @@ -281,6 +281,8 @@ public class Combo extends Buff implements ActionIndicator.Action { target.buff(FireImbue.class).proc(enemy); if (target.buff(EarthImbue.class) != null) target.buff(EarthImbue.class).proc(enemy); + if (target.buff(FrostImbue.class) != null) + target.buff(FrostImbue.class).proc(enemy); Sample.INSTANCE.play( Assets.SND_HIT, 1, 1, Random.Float( 0.8f, 1.25f ) ); enemy.sprite.bloodBurstA( target.sprite.center(), dmg ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java index c68651d4e..f217cf0e7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/EarthImbue.java @@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; +//pre-0.7.0, otherwise unused public class EarthImbue extends FlavourBuff { { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java index fe44ce6ef..a95d05b7d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FireImbue.java @@ -39,7 +39,7 @@ public class FireImbue extends Buff { announced = true; } - public static final float DURATION = 30f; + public static final float DURATION = 50f; protected float left; 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 new file mode 100644 index 000000000..c7dd10365 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/FrostImbue.java @@ -0,0 +1,68 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2018 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SnowParticle; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; +import com.watabou.noosa.Image; + +public class FrostImbue extends FlavourBuff { + + { + type = buffType.POSITIVE; + announced = true; + } + + public static final float DURATION = 50f; + + public void proc(Char enemy){ + Buff.affect(enemy, Chill.class, 2f); + enemy.sprite.emitter().burst( SnowParticle.FACTORY, 2 ); + } + + @Override + public int icon() { + return BuffIndicator.FROST; + } + + @Override + public void tintIcon(Image icon) { + greyIcon(icon, 5f, cooldown()); + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", dispTurns()); + } + + { + immunities.add( Frost.class ); + immunities.add( Chill.class ); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Ooze.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Ooze.java index 1bfb4063c..061350524 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Ooze.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Ooze.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.utils.Bundle; import com.watabou.utils.Random; public class Ooze extends Buff { @@ -34,6 +35,26 @@ public class Ooze extends Buff { announced = true; } + private float left; + private static final String LEFT = "left"; + + @Override + public void storeInBundle( Bundle bundle ) { + super.storeInBundle( bundle ); + bundle.put( LEFT, left ); + } + + @Override + public void restoreFromBundle( Bundle bundle ) { + super.restoreFromBundle(bundle); + //pre-0.7.0 + if (bundle.contains( LEFT )) { + left = bundle.getFloat(LEFT); + } else { + left = 20; + } + } + @Override public int icon() { return BuffIndicator.OOZE; @@ -51,7 +72,11 @@ public class Ooze extends Buff { @Override public String desc() { - return Messages.get(this, "desc"); + return Messages.get(this, "desc", dispTurns(left)); + } + + public void set(float left){ + this.left = left; } @Override @@ -66,6 +91,10 @@ public class Ooze extends Buff { GLog.n( Messages.get(this, "ondeath") ); } spend( TICK ); + left -= TICK; + if (left <= 0){ + detach(); + } } else { detach(); } 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 93ac05e29..d7755500f 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 @@ -36,7 +36,7 @@ public class ToxicImbue extends Buff { announced = true; } - public static final float DURATION = 30f; + public static final float DURATION = 50f; protected float left; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java index 7db4b4a92..3522f1754 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java @@ -61,7 +61,7 @@ public class FetidRat extends Rat { public int attackProc( Char enemy, int damage ) { damage = super.attackProc( enemy, damage ); if (Random.Int(3) == 0) { - Buff.affect(enemy, Ooze.class); + Buff.affect(enemy, Ooze.class).set( 20f ); } return damage; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index a91d3e404..5ac89966c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -123,7 +123,7 @@ public class Goo extends Mob { public int attackProc( Char enemy, int damage ) { damage = super.attackProc( enemy, damage ); if (Random.Int( 3 ) == 0) { - Buff.affect( enemy, Ooze.class ); + Buff.affect( enemy, Ooze.class ).set( 20f ); enemy.sprite.burst( 0x000000, 5 ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java index 6f574aefb..e0bb8d6a5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java @@ -238,7 +238,7 @@ public class Yog extends Mob { damage = super.attackProc( enemy, damage ); if (Random.Int( 3 ) == 0) { - Buff.affect( enemy, Ooze.class ); + Buff.affect( enemy, Ooze.class ).set( 20f ); enemy.sprite.burst( 0xFF000000, 5 ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index 067c0388d..f78fcbd06 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -37,8 +37,8 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.WickedBrew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfEarthenPower; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfRestoration; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfToxicEssence; @@ -167,7 +167,7 @@ public abstract class Recipe { new Bomb.EnhanceBomb(), new ElixirOfAquaticRejuvenation.Recipe(), new ElixirOfDragonsBlood.Recipe(), - new ElixirOfEarthenPower.Recipe(), + new ElixirOfIcyTouch.Recipe(), new ElixirOfHoneyedHealing.Recipe(), new ElixirOfRestoration.Recipe(), new ElixirOfToxicEssence.Recipe(), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/curses/Corrosion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/curses/Corrosion.java index 31de58b9b..e23f1c1b8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/curses/Corrosion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/curses/Corrosion.java @@ -43,7 +43,7 @@ public class Corrosion extends Armor.Glyph { for (int i : PathFinder.NEIGHBOURS9){ Splash.at(pos+i, 0x000000, 5); if (Actor.findChar(pos+i) != null) - Buff.affect(Actor.findChar(pos+i), Ooze.class); + Buff.affect(Actor.findChar(pos+i), Ooze.class).set( 20f ); } } 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 51957b4dd..0b451ab29 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 @@ -234,7 +234,7 @@ public class Bomb extends Item { public static class Fuse extends Actor{ { - actPriority = BUFF_PRIO; //as if it were a buff + actPriority = BLOB_PRIO+1; //after hero, before other actors } private Bomb bomb; @@ -303,7 +303,7 @@ public class Bomb extends Item { static { validIngredients.put(PotionOfLiquidFlame.class, Firebomb.class); validIngredients.put(PotionOfFrost.class, FrostBomb.class); - validIngredients.put(PotionOfHealing.class, HealingBomb.class); + validIngredients.put(PotionOfHealing.class, RegrowthBomb.class); validIngredients.put(PotionOfInvisibility.class, Flashbang.class); validIngredients.put(ScrollOfRecharging.class, ShockBomb.class); @@ -317,18 +317,18 @@ public class Bomb extends Item { private static final HashMap, Integer> bombCosts = new HashMap<>(); static { - bombCosts.put(Firebomb.class, 2); - bombCosts.put(FrostBomb.class, 1); - bombCosts.put(HealingBomb.class, 4); - bombCosts.put(Flashbang.class, 3); + bombCosts.put(Firebomb.class, 4); + bombCosts.put(FrostBomb.class, 3); + bombCosts.put(RegrowthBomb.class, 6); + bombCosts.put(Flashbang.class, 5); - bombCosts.put(ShockBomb.class, 3); - bombCosts.put(HolyBomb.class, 4); - bombCosts.put(WoollyBomb.class, 1); - bombCosts.put(Noisemaker.class, 2); + bombCosts.put(ShockBomb.class, 5); + bombCosts.put(HolyBomb.class, 6); + bombCosts.put(WoollyBomb.class, 3); + bombCosts.put(Noisemaker.class, 4); - bombCosts.put(ArcaneBomb.class, 6); - bombCosts.put(ShrapnelBomb.class, 6); + bombCosts.put(ArcaneBomb.class, 8); + bombCosts.put(ShrapnelBomb.class, 8); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Flashbang.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Flashbang.java index 189221bc5..02ab68653 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Flashbang.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Flashbang.java @@ -59,7 +59,7 @@ public class Flashbang extends Bomb { Level l = Dungeon.level; for (Char ch : Actor.chars()){ if (ch.fieldOfView != null && ch.fieldOfView[cell]){ - int power = 10 - l.distance(ch.pos, cell); + int power = 15 - 2*l.distance(ch.pos, cell); if (power > 0){ Buff.prolong(ch, Blindness.class, power); Buff.prolong(ch, Cripple.class, power); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java index fe7e60c29..a96ee94fe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/Noisemaker.java @@ -65,7 +65,7 @@ public class Noisemaker extends Bomb { public void set(int cell){ floor = Dungeon.depth; this.cell = cell; - left = 5; + left = 8; } @Override @@ -88,7 +88,7 @@ public class Noisemaker extends Bomb { } if (left > 0) { - spend(TICK * 20f); + spend(TICK * 15f); left--; } else { detach(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/HealingBomb.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java similarity index 54% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/HealingBomb.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java index fc9054d62..32f901853 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/HealingBomb.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/bombs/RegrowthBomb.java @@ -25,20 +25,30 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Regrowth; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing; import com.shatteredpixel.shatteredpixeldungeon.effects.Splash; +import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; +import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; +import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; +import com.watabou.utils.Random; -public class HealingBomb extends Bomb { +import java.util.ArrayList; + +public class RegrowthBomb extends Bomb { { //TODO visuals - image = ItemSpriteSheet.HEAL_BOMB; + image = ItemSpriteSheet.REGROWTH_BOMB; } @Override @@ -54,16 +64,44 @@ public class HealingBomb extends Bomb { //no regular explosion damage + ArrayList plantCandidates = new ArrayList<>(); + 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) { Char ch = Actor.findChar(i); if (ch != null){ - //same as a healing potion - Buff.affect( ch, Healing.class ).setHeal((int)(0.8f*ch.HT + 14), 0.25f, 0); - PotionOfHealing.cure( ch ); + if (ch.alignment == Dungeon.hero.alignment) { + //same as a healing dart + Buff.affect(ch, Healing.class).setHeal((int) (0.5f * ch.HT + 30), 0.25f, 0); + PotionOfHealing.cure(ch); + } + } else if ( Dungeon.level.map[i] == Terrain.EMPTY || + Dungeon.level.map[i] == Terrain.EMBERS || + Dungeon.level.map[i] == Terrain.EMPTY_DECO || + Dungeon.level.map[i] == Terrain.GRASS || + Dungeon.level.map[i] == Terrain.HIGH_GRASS){ + + plantCandidates.add(i); } + GameScene.add( Blob.seed( i, 10, Regrowth.class ) ); } } + + Integer plantPos = Random.element(plantCandidates); + if (plantPos != null){ + Dungeon.level.plant((Plant.Seed) Generator.random(Generator.Category.SEED), plantPos); + plantCandidates.remove(plantPos); + } + + plantPos = Random.element(plantCandidates); + if (plantPos != null){ + if (Random.Int(2) == 0){ + Dungeon.level.plant( new WandOfRegrowth.Dewcatcher.Seed(), plantPos); + } else { + Dungeon.level.plant((Plant.Seed) Generator.random(Generator.Category.SEED), plantPos); + } + plantCandidates.remove(plantPos); + } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Blandfruit.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Blandfruit.java index e0d16ce78..c409dd3b3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Blandfruit.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Blandfruit.java @@ -273,7 +273,7 @@ public class Blandfruit extends Food { @Override public int cost(ArrayList ingredients) { - return 2; + return 3; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Feast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Feast.java index ad9410dc3..c2967645c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Feast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/Feast.java @@ -76,7 +76,7 @@ public class Feast extends Food { @Override public int cost(ArrayList ingredients) { - return 8; + return (int)Hunger.STARVING/50; } @Override 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 ea3daec84..f1b2e3faf 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 @@ -55,7 +55,7 @@ public class BlizzardBrew extends Brew { inputs = new Class[]{PotionOfSnapFreeze.class, PotionOfFrost.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 6; 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 f64eea4e8..e444c3447 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 @@ -46,7 +46,7 @@ public class CausticBrew extends Brew { Char ch = Actor.findChar(cell + offset); if (ch != null){ - Buff.affect(ch, Ooze.class); + Buff.affect(ch, Ooze.class).set( 20f ); } } @@ -58,7 +58,7 @@ public class CausticBrew extends Brew { inputs = new Class[]{PotionOfToxicGas.class, GooBlob.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 8; output = CausticBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/FrostfireBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/FrostfireBrew.java index 3c12b6cee..73879759c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/FrostfireBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/FrostfireBrew.java @@ -75,7 +75,7 @@ public class FrostfireBrew extends Brew { inputs = new Class[]{PotionOfSnapFreeze.class, PotionOfLiquidFlame.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 8; output = FrostfireBrew.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java index 396090106..761591bf6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/brews/InfernalBrew.java @@ -56,7 +56,7 @@ public class InfernalBrew extends Brew { inputs = new Class[]{PotionOfDragonsBreath.class, PotionOfLiquidFlame.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 6; output = InfernalBrew.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 4f1484ce7..e9665b70e 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 @@ -60,7 +60,7 @@ public class ShockingBrew extends Brew { inputs = new Class[]{PotionOfParalyticGas.class, PotionOfStormClouds.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 8; output = ShockingBrew.class; outQuantity = 1; 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 a42a6a5e1..a72173bec 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 @@ -120,7 +120,7 @@ public class ElixirOfAquaticRejuvenation extends Elixir { inputs = new Class[]{PotionOfHealing.class, GooBlob.class}; inQuantity = new int[]{1, 1}; - cost = 3; + cost = 4; output = ElixirOfAquaticRejuvenation.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 e518d7473..43af1c973 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 @@ -56,7 +56,7 @@ public class ElixirOfDragonsBlood extends Elixir { inputs = new Class[]{PotionOfLiquidFlame.class, PotionOfPurity.class}; inQuantity = new int[]{1, 1}; - cost = 4; + cost = 6; output = ElixirOfDragonsBlood.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java index 298d9e89d..89f20b3b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfHoneyedHealing.java @@ -71,7 +71,7 @@ public class ElixirOfHoneyedHealing extends Elixir { inputs = new Class[]{PotionOfHealing.class, Honeypot.ShatteredPot.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 4; output = ElixirOfHoneyedHealing.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java similarity index 76% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java index 7949170ab..60000aa65 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfEarthenPower.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfIcyTouch.java @@ -22,40 +22,40 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EarthImbue; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.effects.particles.EarthParticle; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHaste; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SnowParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -public class ElixirOfEarthenPower extends Elixir { +public class ElixirOfIcyTouch extends Elixir { { //TODO finish visuals - image = ItemSpriteSheet.ELIXIR_EARTH; + image = ItemSpriteSheet.ELIXIR_ICY; } @Override public void apply(Hero hero) { - Buff.affect(hero, EarthImbue.class, EarthImbue.DURATION); - hero.sprite.emitter().burst(EarthParticle.FACTORY, 5); + Buff.affect(hero, FrostImbue.class, FrostImbue.DURATION); + hero.sprite.emitter().burst(SnowParticle.FACTORY, 5); } @Override protected int splashColor() { - return 0xFF603913; + return 0xFF18C3E6; } public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{PotionOfParalyticGas.class, PotionOfHaste.class}; + inputs = new Class[]{PotionOfFrost.class, PotionOfPurity.class}; inQuantity = new int[]{1, 1}; - cost = 4; + cost = 6; - output = ElixirOfEarthenPower.class; + 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 d02631c1c..50b8d6e8e 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 @@ -59,7 +59,7 @@ public class ElixirOfMight extends Elixir { inputs = new Class[]{PotionOfStrength.class}; inQuantity = new int[]{1}; - cost = 12; + cost = 15; 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 c8afd80e4..13adc3e85 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 @@ -53,7 +53,7 @@ public class ElixirOfToxicEssence extends Elixir { inputs = new Class[]{PotionOfToxicGas.class, PotionOfPurity.class}; inQuantity = new int[]{1, 1}; - cost = 4; + cost = 6; output = ElixirOfToxicEssence.class; outQuantity = 1; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java index 384bfdafd..82a8cb633 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/Alchemize.java @@ -64,10 +64,10 @@ public class Alchemize extends Spell implements AlchemyScene.AlchemyProvider { inputs = new Class[]{ScrollOfRecharging.class, PotionOfLiquidFlame.class}; inQuantity = new int[]{1, 1}; - cost = 6; + cost = 10; output = Alchemize.class; - outQuantity = 3; + outQuantity = 5; } } 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 9e3fe5caa..20db503c9 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 @@ -77,7 +77,7 @@ public class AquaBlast extends TargetedSpell { inputs = new Class[]{ScrollOfIdentify.class, PotionOfStormClouds.class}; inQuantity = new int[]{1, 1}; - cost = 4; + cost = 3; output = AquaBlast.class; outQuantity = 8; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java index f8bcb3611..05095e6d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/BeaconOfReturning.java @@ -184,7 +184,7 @@ public class BeaconOfReturning extends Spell { cost = 12; output = BeaconOfReturning.class; - outQuantity = 4; + outQuantity = 3; } } 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 5f120c735..09d9a1654 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 @@ -68,7 +68,7 @@ public class CurseInfusion extends InventorySpell { inputs = new Class[]{ScrollOfRemoveCurse.class, MetalShard.class}; inQuantity = new int[]{1, 1}; - cost = 2; + cost = 1; output = CurseInfusion.class; outQuantity = 3; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java index 0cff96dfc..170824dfe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/FeatherFall.java @@ -61,7 +61,7 @@ public class FeatherFall extends Spell { inputs = new Class[]{ScrollOfLullaby.class, PotionOfLevitation.class}; inQuantity = new int[]{1, 1}; - cost = 8; + cost = 6; output = FeatherFall.class; outQuantity = 2; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalPorter.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalPorter.java index 1af7cda94..cb8dddf53 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalPorter.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/MagicalPorter.java @@ -25,7 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.MerchantsBeacon; -import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMirrorImage; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -66,13 +66,13 @@ public class MagicalPorter extends InventorySpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfMirrorImage.class, MerchantsBeacon.class}; + inputs = new Class[]{ScrollOfIdentify.class, MerchantsBeacon.class}; inQuantity = new int[]{1, 1}; - cost = 2; + cost = 8; output = MagicalPorter.class; - outQuantity = 10; + outQuantity = 8; } } 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 bd84b4dbd..b0d5e21d7 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 @@ -82,10 +82,10 @@ public class PhaseShift extends TargetedSpell { inputs = new Class[]{ScrollOfTeleportation.class, ScrollOfTerror.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 6; output = PhaseShift.class; - outQuantity = 8; + outQuantity = 5; } } 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 64c0528c9..a60931206 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 @@ -62,7 +62,7 @@ public class ReclaimTrap extends TargetedSpell { inputs = new Class[]{ScrollOfRecharging.class, MetalShard.class}; inQuantity = new int[]{1, 1}; - cost = 5; + cost = 8; output = ReclaimTrap.class; outQuantity = 4; 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 63ebc5a58..427911411 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 @@ -25,8 +25,8 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; -import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMirrorImage; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfDivination; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; @@ -72,10 +72,10 @@ public class Recycle extends InventorySpell { public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe { { - inputs = new Class[]{ScrollOfTransmutation.class, ScrollOfMirrorImage.class}; + inputs = new Class[]{ScrollOfTransmutation.class, ScrollOfDivination.class}; inQuantity = new int[]{1, 1}; - cost = 6; + cost = 8; output = Recycle.class; outQuantity = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java index 9bf24eaa6..f0f33a9c8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java @@ -87,7 +87,7 @@ public class WandOfCorrosion extends Wand { // lvl 2 - 60% if (Random.Int( level() + 3 ) >= 2) { - Buff.affect( defender, Ooze.class ); + Buff.affect( defender, Ooze.class ).set( 20f ); CellEmitter.center(defender.pos).burst( CorrosionParticle.SPLASH, 5 ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Chilling.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Chilling.java index e8b0b3a0b..db3d2b059 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Chilling.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/enchantments/Chilling.java @@ -43,6 +43,7 @@ public class Chilling extends Weapon.Enchantment { if (Random.Int( level + 5 ) >= 4) { + //FIXME this should probably stack chilled Buff.prolong( defender, Chill.class, Random.Float( 2f, 3f ) ); Splash.at( defender.sprite.center(), 0xFFB2D6FF, 5); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/OozeTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/OozeTrap.java index 414de4f81..b91f5478d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/OozeTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/OozeTrap.java @@ -39,7 +39,7 @@ public class OozeTrap extends Trap { Char ch = Actor.findChar( pos ); if (ch != null){ - Buff.affect(ch, Ooze.class); + Buff.affect(ch, Ooze.class).set( 20f ); Splash.at( pos, 0x000000, 5); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index 6936d3b9c..be930a894 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -142,7 +142,7 @@ public class ItemSpriteSheet { public static final int DBL_BOMB = BOMBS+1; public static final int FIRE_BOMB = BOMBS+2; public static final int FROST_BOMB = BOMBS+3; - public static final int HEAL_BOMB = BOMBS+4; + public static final int REGROWTH_BOMB = BOMBS+4; public static final int FLASHBANG = BOMBS+5; public static final int SHOCK_BOMB = BOMBS+6; public static final int HOLY_BOMB = BOMBS+7; @@ -156,7 +156,7 @@ public class ItemSpriteSheet { assignItemRect(DBL_BOMB, 14, 13); assignItemRect(FIRE_BOMB, 10, 13); assignItemRect(FROST_BOMB, 10, 13); - assignItemRect(HEAL_BOMB, 10, 13); + assignItemRect(REGROWTH_BOMB, 10, 13); assignItemRect(FLASHBANG, 10, 13); assignItemRect(SHOCK_BOMB, 10, 13); assignItemRect(HOLY_BOMB, 10, 13); @@ -528,7 +528,7 @@ public class ItemSpriteSheet { private static final int ELIXIRS = xy(1, 25); //16 slots public static final int ELIXIR_DRAGON = ELIXIRS+0; public static final int ELIXIR_TOXIC = ELIXIRS+1; - public static final int ELIXIR_EARTH = ELIXIRS+2; + public static final int ELIXIR_ICY = ELIXIRS+2; public static final int ELIXIR_MIGHT = ELIXIRS+3; public static final int ELIXIR_AQUA = ELIXIRS+4; public static final int ELIXIR_RESTO = ELIXIRS+5; @@ -537,7 +537,7 @@ public class ItemSpriteSheet { static{ assignItemRect(ELIXIR_DRAGON, 10, 14); assignItemRect(ELIXIR_TOXIC, 10, 14); - assignItemRect(ELIXIR_EARTH, 10, 14); + assignItemRect(ELIXIR_ICY, 10, 14); assignItemRect(ELIXIR_MIGHT, 10, 14); assignItemRect(ELIXIR_AQUA, 10, 14); assignItemRect(ELIXIR_RESTO, 10, 14); 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 e4f635ae0..978d096af 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 @@ -141,6 +141,9 @@ actors.buffs.frost.name=Frozen actors.buffs.frost.freezes=%s freezes! actors.buffs.frost.desc=Not to be confused with freezing solid, this more benign freezing simply encases the target in ice.\n\nFreezing acts similarly to paralysis, making it impossible for the target to act. Unlike paralysis, freezing is immediately cancelled if the target takes damage, as the ice will shatter.\n\nTurns of freeze remaining: %s. +actors.buffs.frostimbue.name=Imbued with Frost +actors.buffs.frostimbue.desc=You are imbued with icy power!\n\nAll physical attacks will steadily stack chill on enemies. Additionally, you are completely immune to the cold.\n\nTurns of frost imbue remaining: %s. + actors.buffs.fury.name=Furious actors.buffs.fury.heromsg=You become furious! actors.buffs.fury.desc=You are angry, enemies won't like you when you're angry.\n\nA great rage burns within you, increasing the damage you deal with physical attacks by 50%%.\n\nThis rage will last as long as you are injured below 50%% health. @@ -198,7 +201,7 @@ actors.buffs.ooze.name=Caustic ooze actors.buffs.ooze.heromsg=Caustic ooze eats your flesh. Wash it away! actors.buffs.ooze.ondeath=You melt away... actors.buffs.ooze.rankings_desc=Dissolved -actors.buffs.ooze.desc=This sticky acid clings to flesh, slowly melting it away.\n\nOoze will deal consistent damage until it is washed off in water.\n\nOoze does not expire on its own and must be removed with water. +actors.buffs.ooze.desc=This sticky acid clings to flesh, slowly melting it away.\n\nOoze will deal consistent damage over time, but can be immediately washed off in water.\n\nTurns of ooze remaining: %s. actors.buffs.paralysis.name=Paralysed actors.buffs.paralysis.heromsg=You are paralysed! 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 a2e2a9e8a..9def69044 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 @@ -377,9 +377,6 @@ items.bombs.flashbang.desc=This customized bomb will erupt into a burst of blind items.bombs.frostbomb.name=frost bomb items.bombs.frostbomb.desc=This bomb has been modified to burst into a sustained gust of freezing air when it explodes. -items.bombs.healingbomb.name=healing bomb -items.bombs.healingbomb.desc=This customized bomb will splash healing liquid all around it instead of exploding. Anything caught in the burst will be healed a considerable amount. - items.bombs.holybomb.name=holy bomb items.bombs.holybomb.desc=This bomb has been modified to flash holy light when it explodes, dealing bonus damage to undead and demonic enemies. @@ -389,6 +386,9 @@ items.bombs.noisemaker.desc=This customized bomb will repeatedly make noise inst items.bombs.shockbomb.name=shock bomb items.bombs.shockbomb.desc=This bomb has been modified to unleash a storm of electricity around it when it explodes. +items.bombs.regrowthbomb.name=regrowth bomb +items.bombs.regrowthbomb.desc=This customized bomb will splash life-giving liquid all around it instead of exploding. The area caught in the blast with rapidly sprout glass and plants, and any allies caught in the blast will be healed. + items.bombs.shrapnelbomb.name=shrapnel bomb items.bombs.shrapnelbomb.desc=This bomb has been modified with scraps of DM-300's metal, which will fragment and fly everywhere when it explodes. You had better hide behind something when using it... @@ -597,12 +597,12 @@ items.potions.elixirs.elixirofaquaticrejuvenation$aquahealing.desc=You have temp items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood items.potions.elixirs.elixirofdragonsblood.desc=When consumed, this elixir will send fiery power coursing through the drinker's veins. This effect will make the drinker immune to fire, and allow them to set enemies aflame with physical attacks. -items.potions.elixirs.elixirofearthenpower.name=elixir of earthen power -items.potions.elixirs.elixirofearthenpower.desc=When consumed, this elixir will allow the drinker to bend the earth around them to their will. Any physical attack the drinker makes will shift the earth under the target, slowing their movement speed. - items.potions.elixirs.elixirofhoneyedhealing.name=elixir of honeyed healing items.potions.elixirs.elixirofhoneyedhealing.desc=This elixir combines healing with the sweetness of honey. When drank, it will satisfy a small amount of hunger, but it can also be thrown to heal an ally.\n\nCreatures with an affinity for honey might be pacified if this item is used on them. +items.potions.elixirs.elixiroficytouch.name=elixir of icy touch +items.potions.elixirs.elixiroficytouch.desc=When consumed, this elixir will allow the drinker to sap the heat from enemies they attack. This effect will make the drinker immune to the cold, and allow them to chill enemies with physical attacks. + items.potions.elixirs.elixirofmight.name=elixir of might items.potions.elixirs.elixirofmight.msg_1=+1 str, +5 hp items.potions.elixirs.elixirofmight.msg_2=Newfound strength surges through your body. diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties index d05b190e3..8da1e6a65 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal.properties @@ -42,11 +42,11 @@ journal.document.alchemy_guide.heal_elixirs.body=Healing elixirs are also quite journal.document.alchemy_guide.aoe_brews.title=Area of Effect Brews journal.document.alchemy_guide.aoe_brews.body=Area of effect brews spread a harmful effect over a large area. They are more expensive than combination brews, but also more powerful.\n\n\nAn infernal brew is created by mixing a potion of dragon's breath and a potion of liquid flame.\n\nA blizzard brew is created by mixing a potion of snap freeze and a potion of frost.\n\nA shocking brew is created by mixing a potion of paralytic gas and a potion of storm clouds.\n\nA caustic brew is created by mixing a potion of toxic gas and a blob of goo. journal.document.alchemy_guide.imbue_elixirs.title=Imbuing Elixirs -journal.document.alchemy_guide.imbue_elixirs.body=Imbuing Elixirs will imbue the drinker with a unique power which may be temporary or permanent. They are more expensive than healing elixirs, but also more powerful.\n\n\nAn elixir of dragon's blood is created by mixing a potion of liquid flame and a potion of purity.\n\nAn elixir of toxic essence is created by mixing a potion of toxic gas and a potion of purity.\n\nAn elixir of earthen power is created by mixing a potion of paralytic gas and a potion of haste.\n\nAn elixir of might is created by mixing a potion of strength and a large amount of alchemical energy. +journal.document.alchemy_guide.imbue_elixirs.body=Imbuing Elixirs will imbue the drinker with a unique power which may be temporary or permanent. They are more expensive than healing elixirs, but also more powerful.\n\n\nAn elixir of dragon's blood is created by mixing a potion of liquid flame and a potion of purity.\n\nAn elixir of toxic essence is created by mixing a potion of toxic gas and a potion of purity.\n\nAn elixir of icy touch is created by mixing a potion of frost and a potion of purity.\n\nAn elixir of might is created by mixing a potion of strength and a large amount of alchemical energy. journal.document.alchemy_guide.tele_spells.title=Teleportation Spells -journal.document.alchemy_guide.tele_spells.body=Combining certain ingredients in an alchemy pot will cause magical crystals to precipitate out of the water. The energy in these crystals can be channeled to cast spells! Most spells have multiple uses, but the specific amount varies by spell.\n\nTeleportation spells contain magic that changes the positioning of yourself, enemies, or items in various useful ways.\n\n\nMagical porter is created by mixing a scroll of mirror image with a merchant's beacon.\n\nPhase shift is created by mixing a scroll of teleportation with a scroll of terror.\n\nBeacon of returning is created by mixing a scroll of passage, a scroll of magic mapping, and a lot of alchemical energy. +journal.document.alchemy_guide.tele_spells.body=Combining certain ingredients in an alchemy pot will cause magical crystals to precipitate out of the water. The energy in these crystals can be channeled to cast spells! Most spells have multiple uses, but the specific amount varies by spell.\n\nTeleportation spells contain magic that changes the positioning of yourself, enemies, or items in various useful ways.\n\n\nMagical porter is created by mixing a scroll of identification with a merchant's beacon.\n\nPhase shift is created by mixing a scroll of teleportation with a scroll of terror.\n\nBeacon of returning is created by mixing a scroll of passage, a scroll of magic mapping, and a lot of alchemical energy. journal.document.alchemy_guide.item_spells.title=Item Manipulation Spells -journal.document.alchemy_guide.item_spells.body=Item manipulation spells affect the items in your inventory in a variety of different ways.\n\n\nMagical infusion is created by mixing a scroll of upgrade with a stone of enchantment.\n\nCurse infusion is created by mixing a scroll of remove curse with a cursed metal shard.\n\nAlchemize is created by mixing a scroll of recharging with a potion of liquid flame.\n\nRecycle is created by mixing a scroll of transmutation with a scroll of mirror image. +journal.document.alchemy_guide.item_spells.body=Item manipulation spells affect the items in your inventory in a variety of different ways.\n\n\nMagical infusion is created by mixing a scroll of upgrade with a stone of enchantment.\n\nCurse infusion is created by mixing a scroll of remove curse with a cursed metal shard.\n\nAlchemize is created by mixing a scroll of recharging with a potion of liquid flame.\n\nRecycle is created by mixing a scroll of transmutation with a scroll of divination. journal.document.alchemy_guide.enviro_spells.title=Environmental Spells journal.document.alchemy_guide.enviro_spells.body=Environmental spells give you new ways to change or interact with the terrain of the dungeon.\n\n\nReclaim trap is created by mixing a scroll of recharging with a cursed metal shard.\n\nAqua blast is created by mixing a scroll of identify with a potion of storm clouds.\n\nFeather fall is created by mixing a scroll of lullaby, a potion of levitation, and a good amount of alchemical energy.