From 5a70a482aec5414845f23ac62e850b9f76396276 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 15 Jun 2023 13:39:11 -0400 Subject: [PATCH] v2.1.2: improved the logic and VFX for sandals active ability --- .../items/artifacts/SandalsOfNature.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SandalsOfNature.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SandalsOfNature.java index 7629e02f6..43d0f9090 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SandalsOfNature.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/SandalsOfNature.java @@ -29,11 +29,13 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; +import com.shatteredpixel.shatteredpixeldungeon.effects.Splash; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; +import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; @@ -52,12 +54,12 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; +import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; -import com.watabou.utils.PathFinder; +import com.watabou.utils.PointF; import com.watabou.utils.Random; import com.watabou.utils.Reflection; @@ -313,17 +315,23 @@ public class SandalsOfNature extends Artifact { @Override public void onSelect(Integer cell) { if (cell != null){ - PathFinder.buildDistanceMap(curUser.pos, BArray.not(Dungeon.level.solid,null), 3); - if (PathFinder.distance[cell] == Integer.MAX_VALUE){ + if (!Dungeon.level.heroFOV[cell] || Dungeon.level.distance(curUser.pos, cell) > 3){ GLog.w(Messages.get(SandalsOfNature.class, "out_of_range")); } else { - CellEmitter.get( cell ).burst( LeafParticle.GENERAL, 6 ); + + Ballistica aim = new Ballistica(curUser.pos, cell, Ballistica.STOP_TARGET); + for (int c : aim.subPath(0, aim.dist)){ + CellEmitter.get( c ).burst( LeafParticle.GENERAL, 6 ); + } + + Splash.at(DungeonTilemap.tileCenterToWorld( cell ), -PointF.PI/2, PointF.PI/2, seedColors.get(curSeedEffect), 6); Invisibility.dispel(curUser); Plant plant = ((Plant.Seed) Reflection.newInstance(curSeedEffect)).couch(cell, null); plant.activate(Actor.findChar(cell)); - Sample.INSTANCE.play(Assets.Sounds.TRAMPLE, 1, Random.Float( 0.96f, 1.05f ) ); + Sample.INSTANCE.play(Assets.Sounds.PLANT); + Sample.INSTANCE.playDelayed(Assets.Sounds.TRAMPLE, 0.25f, 1, Random.Float( 0.96f, 1.05f ) ); charge -= seedChargeReqs.get(curSeedEffect); Talent.onArtifactUsed(Dungeon.hero);