diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index b921e4f12..a78acb238 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/blobs/Blizzard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blizzard.java index c58393bb5..1a52fb002 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 @@ -64,7 +64,7 @@ public class Blizzard extends Blob { @Override public void use( BlobEmitter emitter ) { super.use( emitter ); - emitter.pour( Speck.factory( Speck.BLIZZARD ), 0.2f ); + emitter.pour( Speck.factory( Speck.BLIZZARD, true ), 0.4f ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Inferno.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Inferno.java index 8b1c76afb..6d6f02128 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Inferno.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Inferno.java @@ -80,7 +80,7 @@ public class Inferno extends Blob { public void use( BlobEmitter emitter ) { super.use( emitter ); - emitter.pour( Speck.factory( Speck.INFERNO ), 0.2f ); + emitter.pour( Speck.factory( Speck.INFERNO, true ), 0.4f ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java index eefffa076..5a474dbe2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java @@ -330,15 +330,15 @@ public class Speck extends Image { break; case INFERNO: - hardlight( 0xFF0000 ); - angularSpeed = Random.Float( -20, +20 ); + hardlight( 0xEE7722 ); + angularSpeed = Random.Float( 200, 300 ) * (Random.Int(2) == 0 ? -1 : 1); angle = Random.Float( 360 ); lifespan = Random.Float( 1f, 3f ); break; case BLIZZARD: hardlight( 0xFFFFFF ); - angularSpeed = Random.Float( -20, +20 ); + angularSpeed = Random.Float( 200, 300 ) * (Random.Int(2) == 0 ? -1 : 1); angle = Random.Float( 360 ); lifespan = Random.Float( 1f, 3f ); break; 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 4a0eec4a3..7470e4941 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 @@ -40,8 +40,6 @@ public class BlizzardBrew extends Brew { @Override public void shatter(int cell) { if (Dungeon.level.heroFOV[cell]) { - setKnown(); - splash( cell ); Sample.INSTANCE.play( Assets.SND_SHATTER ); } 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 48ea5f81e..8839d6529 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.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -31,6 +32,7 @@ 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.noosa.audio.Sample; import com.watabou.utils.PathFinder; public class CausticBrew extends Brew { @@ -43,6 +45,11 @@ public class CausticBrew extends Brew { @Override public void shatter(int cell) { + if (Dungeon.level.heroFOV[cell]) { + splash( cell ); + Sample.INSTANCE.play( Assets.SND_SHATTER ); + } + 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) { 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 bfd230b0d..34c8b96f1 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 @@ -48,7 +48,6 @@ public class AquaBlast extends TargetedSpell { protected void affectTarget(Ballistica bolt, Hero hero) { int cell = bolt.collisionPos; - //TODO perhaps different color based on depth? Splash.at(cell, 0x00AAFF, 10); for (int i : PathFinder.NEIGHBOURS9){ 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 73643c2b4..c5741a750 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 @@ -136,7 +136,6 @@ public class BeaconOfReturning extends Spell { InterlevelScene.returnPos = returnPos; Game.switchScene( InterlevelScene.class ); } - returnDepth = -1; detach(hero.belongings.backpack); } 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 ae7969b2f..1e38f4a7b 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 @@ -21,6 +21,9 @@ package com.shatteredpixel.shatteredpixeldungeon.items.spells; +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; @@ -30,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; +import com.watabou.noosa.audio.Sample; public class CurseInfusion extends InventorySpell { @@ -41,7 +45,8 @@ public class CurseInfusion extends InventorySpell { @Override protected void onItemSelected(Item item) { - //TODO visuals + CellEmitter.get(curUser.pos).burst(ShadowParticle.UP, 5); + Sample.INSTANCE.play(Assets.SND_CURSED); item.cursed = true; if (item instanceof MeleeWeapon || item instanceof Boomerang) { 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 c763e35ee..32193a86b 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 @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -43,6 +44,7 @@ public class FeatherFall extends Spell { Buff.append(hero, FeatherBuff.class, 30f); hero.sprite.operate(hero.pos); Sample.INSTANCE.play(Assets.SND_READ ); + hero.sprite.emitter().burst( Speck.factory( Speck.JET ), 20); GLog.p(Messages.get(this, "light")); 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 72366437a..4843b42cd 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 @@ -60,7 +60,6 @@ public class MagicalPorter extends InventorySpell { } ported.add(result); - //TODO vfx } @Override 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 9c1f9594a..f4a25267c 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 @@ -21,18 +21,22 @@ package com.shatteredpixel.shatteredpixeldungeon.items.spells; +import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArtifactRecharge; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.effects.Lightning; import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; public class ReclaimTrap extends TargetedSpell { @@ -47,8 +51,11 @@ public class ReclaimTrap extends TargetedSpell { if (!t.visible) t.reveal(); t.disarm(); + Sample.INSTANCE.play( Assets.SND_LIGHTNING ); + hero.sprite.parent.addToFront( new Lightning(DungeonTilemap.tileCenterToWorld(t.pos), hero.sprite.center(), null) ); + ScrollOfRecharging.charge(hero); - Buff.affect(hero, Recharging.class, 15f); + Buff.prolong(hero, Recharging.class, 15f); Buff.affect(hero, ArtifactRecharge.class).set( 15 ); } else { 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 e608e83fe..8caa841fe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -67,8 +67,8 @@ public class ItemSpriteSheet { assignItemRect(SEED_HOLDER, 10, 10); assignItemRect(SCROLL_HOLDER, 15, 14); assignItemRect(STONE_HOLDER, 14, 12); - assignItemRect(BREW_HOLDER, 10, 14); - assignItemRect(ELIXIR_HOLDER, 10, 14); + assignItemRect(BREW_HOLDER, 12, 14); + assignItemRect(ELIXIR_HOLDER, 12, 14); assignItemRect(SPELL_HOLDER, 8, 16); } @@ -543,14 +543,14 @@ public class ItemSpriteSheet { public static final int ELIXIR_SURGE = ELIXIRS+6; public static final int ELIXIR_HONEY = ELIXIRS+7; static{ - assignItemRect(ELIXIR_DRAGON, 10, 14); - assignItemRect(ELIXIR_TOXIC, 10, 14); - assignItemRect(ELIXIR_ICY, 10, 14); - assignItemRect(ELIXIR_MIGHT, 10, 14); - assignItemRect(ELIXIR_AQUA, 10, 14); - assignItemRect(ELIXIR_RESTO, 10, 14); - assignItemRect(ELIXIR_SURGE, 10, 14); - assignItemRect(ELIXIR_HONEY, 10, 14); + assignItemRect(ELIXIR_DRAGON, 12, 14); + assignItemRect(ELIXIR_TOXIC, 12, 14); + assignItemRect(ELIXIR_ICY, 12, 14); + assignItemRect(ELIXIR_MIGHT, 12, 14); + assignItemRect(ELIXIR_AQUA, 12, 14); + assignItemRect(ELIXIR_RESTO, 12, 14); + assignItemRect(ELIXIR_SURGE, 12, 14); + assignItemRect(ELIXIR_HONEY, 12, 14); } private static final int BREWS = xy(1, 26); //16 slots @@ -563,14 +563,14 @@ public class ItemSpriteSheet { public static final int BREW_BLIZZARD = BREWS+6; public static final int BREW_SHOCKING = BREWS+7; static{ - assignItemRect(BREW_WICKED, 10, 14); - assignItemRect(BREW_FRIGID, 10, 14); - assignItemRect(BREW_FROSTFIRE, 10, 14); + assignItemRect(BREW_WICKED, 12, 14); + assignItemRect(BREW_FRIGID, 12, 14); + assignItemRect(BREW_FROSTFIRE, 12, 14); - assignItemRect(BREW_CAUSTIC, 10, 14); - assignItemRect(BREW_INFERNAL, 10, 14); - assignItemRect(BREW_BLIZZARD, 10, 14); - assignItemRect(BREW_SHOCKING, 10, 14); + assignItemRect(BREW_CAUSTIC, 12, 14); + assignItemRect(BREW_INFERNAL, 12, 14); + assignItemRect(BREW_BLIZZARD, 12, 14); + assignItemRect(BREW_SHOCKING, 12, 14); } //sprites still pretty WIP private static final int SPELLS = xy(1, 27); //16 slots 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 012f01065..03292e74d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/QuickRecipe.java @@ -347,12 +347,12 @@ public class QuickRecipe extends Component { result.add(new QuickRecipe(new WickedBrew.Recipe())); result.add(new QuickRecipe(new FrigidBrew.Recipe())); result.add(new QuickRecipe(new FrostfireBrew.Recipe())); - result.add(new QuickRecipe(new CausticBrew.Recipe())); result.add(null); result.add(null); result.add(new QuickRecipe(new InfernalBrew.Recipe())); result.add(new QuickRecipe(new BlizzardBrew.Recipe())); result.add(new QuickRecipe(new ShockingBrew.Recipe())); + result.add(new QuickRecipe(new CausticBrew.Recipe())); return result; case 8: result.add(new QuickRecipe(new ElixirOfRestoration.Recipe()));