v2.2.0: fixed throwItems not working with new enclosed crystal areas

This commit is contained in:
Evan Debenham
2023-10-02 11:57:41 -04:00
parent 0142b9a9ef
commit 5b196428be
@@ -81,7 +81,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.MirrorImage;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PrismaticImage; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PrismaticImage;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.AntiMagic; import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.AntiMagic;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Potential; import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Potential;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Viscosity; import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Viscosity;
@@ -113,14 +112,15 @@ import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot;
import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle; import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.watabou.utils.BArray;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.utils.BArray;
import com.watabou.utils.Bundlable; import com.watabou.utils.Bundlable;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
import com.watabou.utils.PathFinder; import com.watabou.utils.PathFinder;
import com.watabou.utils.Random; import com.watabou.utils.Random;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
@@ -172,14 +172,17 @@ public abstract class Char extends Actor {
protected void throwItems(){ protected void throwItems(){
Heap heap = Dungeon.level.heaps.get( pos ); Heap heap = Dungeon.level.heaps.get( pos );
if (heap != null && heap.type == Heap.Type.HEAP) { if (heap != null && heap.type == Heap.Type.HEAP
int n; && !(heap.peek() instanceof Tengu.BombAbility.BombItem)
do { && !(heap.peek() instanceof Tengu.ShockerAbility.ShockerItem)) {
n = pos + PathFinder.NEIGHBOURS8[Random.Int( 8 )]; ArrayList<Integer> candidates = new ArrayList<>();
} while (!Dungeon.level.passable[n] && !Dungeon.level.avoid[n]); for (int n : PathFinder.NEIGHBOURS8){
Item item = heap.peek(); if (Dungeon.level.passable[pos+n]){
if (!(item instanceof Tengu.BombAbility.BombItem || item instanceof Tengu.ShockerAbility.ShockerItem)){ candidates.add(pos+n);
Dungeon.level.drop( heap.pickUp(), n ).sprite.drop( pos ); }
}
if (!candidates.isEmpty()){
Dungeon.level.drop( heap.pickUp(), Random.element(candidates) ).sprite.drop( pos );
} }
} }
} }