From d521534368d36590f48dc8afdd849626adf5dc9e Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 6 Nov 2023 16:46:45 -0500 Subject: [PATCH] v2.3.0: added new behaviour for rockfall traps for the gnoll quest --- .../levels/traps/RockfallTrap.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java index 65c612f80..ec6375631 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/RockfallTrap.java @@ -27,15 +27,20 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; +import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel; +import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; -import com.watabou.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; +import com.watabou.utils.BArray; import com.watabou.utils.PathFinder; import com.watabou.utils.Point; import com.watabou.utils.Random; @@ -64,7 +69,7 @@ public class RockfallTrap extends Trap { r = ((RegularLevel) Dungeon.level).room(pos); } - if (onGround && r != null){ + if (onGround && r != null && !(Dungeon.level instanceof MiningLevel)){ int cell; for (Point p : r.getPoints()){ cell = Dungeon.level.pointToCell(p); @@ -73,7 +78,7 @@ public class RockfallTrap extends Trap { } } - //if we don't have a room, then just do 5x5 + //do 5x5 if we don't have a room, or are in the mining level } else { PathFinder.buildDistanceMap( pos, BArray.not( Dungeon.level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { @@ -104,6 +109,11 @@ public class RockfallTrap extends Trap { Dungeon.fail( this ); GLog.n( Messages.get(this, "ondeath") ); } + } else if (Dungeon.level instanceof MiningLevel + && Blacksmith.Quest.Type() == Blacksmith.Quest.GNOLL + && Random.Int(2) == 0){ + Level.set( cell, Terrain.MINE_BOULDER ); + GameScene.updateMap(cell); } }